pinokiod 3.9.0 → 3.9.3
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/:w +1247 -0
- package/kernel/api/filepicker/index.js +59 -0
- package/kernel/api/fs/index.js +6 -4
- package/kernel/api/index.js +123 -37
- package/kernel/api/input/index.js +2 -0
- package/kernel/api/web/index.js +6 -0
- package/kernel/bin/caddy.js +127 -0
- package/kernel/bin/cloudflared.js +1 -0
- package/kernel/bin/conda.js +10 -2
- package/kernel/bin/cuda.js +0 -16
- package/kernel/bin/ffmpeg.js +4 -6
- package/kernel/bin/git.js +55 -29
- package/kernel/bin/gxx.js +8 -6
- package/kernel/bin/huggingface.js +4 -5
- package/kernel/bin/index.js +347 -88
- package/kernel/bin/node.js +13 -6
- package/kernel/bin/py.js +1 -1
- package/kernel/bin/setup.js +146 -0
- package/kernel/bin/uv.js +4 -5
- package/kernel/bin/zip.js +7 -8
- package/kernel/connect/index.js +25 -0
- package/kernel/connect/providers/github/README.md +11 -0
- package/kernel/connect/providers/x/README.md +96 -0
- package/kernel/connect/providers/x/index.js +152 -0
- package/kernel/environment.js +50 -1
- package/kernel/index.js +152 -32
- package/kernel/info.js +4 -2
- package/kernel/kv.js +38 -0
- package/kernel/loader.js +13 -3
- package/kernel/peer.js +161 -0
- package/kernel/procs.js +116 -0
- package/kernel/prototype.js +62 -0
- package/kernel/router/common.js +42 -0
- package/kernel/router/connector.js +81 -0
- package/kernel/router/index.js +235 -0
- package/kernel/router/localhost_home_router.js +84 -0
- package/kernel/router/localhost_port_router.js +15 -0
- package/kernel/router/localhost_variable_router.js +37 -0
- package/kernel/router/peer_home_router.js +15 -0
- package/kernel/router/peer_peer_router.js +26 -0
- package/kernel/router/peer_port_router.js +45 -0
- package/kernel/router/peer_variable_router.js +46 -0
- package/kernel/router/processor.js +31 -0
- package/kernel/shell.js +141 -60
- package/kernel/shells.js +32 -17
- package/kernel/store.js +58 -0
- package/kernel/sysinfo.js +0 -1
- package/kernel/util.js +143 -36
- package/package.json +4 -1
- package/pipe/index.js +0 -2
- package/script/index.js +12 -0
- package/server/index.js +1473 -553
- package/server/public/Socket.js +5 -1
- package/server/public/SourceCodePro-Regular.ttf +0 -0
- package/server/public/SpaceMono-Bold.ttf +0 -0
- package/server/public/SpaceMono-BoldItalic.ttf +0 -0
- package/server/public/SpaceMono-Italic.ttf +0 -0
- package/server/public/SpaceMono-Regular.ttf +0 -0
- package/server/public/commander.js +40 -0
- package/server/public/common.js +60 -0
- package/server/public/dropzone-min.js +2 -0
- package/server/public/dropzone.css +1 -0
- package/server/public/filepond-plugin-file-validate-type.min.js +9 -0
- package/server/public/filepond-plugin-image-crop.min.js +9 -0
- package/server/public/filepond-plugin-image-edit.min.css +8 -0
- package/server/public/filepond-plugin-image-edit.min.js +9 -0
- package/server/public/filepond-plugin-image-exif-orientation.min.js +9 -0
- package/server/public/filepond-plugin-image-preview.min.css +8 -0
- package/server/public/filepond-plugin-image-preview.min.js +9 -0
- package/server/public/filepond-plugin-image-resize.min.js +9 -0
- package/server/public/filepond-plugin-image-transform.min.js +9 -0
- package/server/public/filepond.min.css +8 -0
- package/server/public/filepond.min.js +9 -0
- package/server/public/fscreator.js +174 -0
- package/server/public/fseditor.js +212 -0
- package/server/public/github.png +0 -0
- package/server/public/highlight-js.js +81 -0
- package/server/public/highlight.css +9 -0
- package/server/public/highlight.js +1244 -0
- package/server/public/install.js +17 -20
- package/server/public/modalinput.js +105 -9
- package/server/public/opener.js +3 -1
- package/server/public/pinokio-black.png +0 -0
- package/server/public/pinokio-black2.png +0 -0
- package/server/public/redoc.standalone.js +1832 -0
- package/server/public/style.css +215 -17
- package/server/public/swagger-ui-bundle.js +2 -0
- package/server/public/swagger-ui.css +3 -0
- package/server/public/x.js +63 -0
- package/server/socket.js +136 -39
- package/server/views/404.ejs +0 -1
- package/server/views/app.ejs +368 -98
- package/server/views/bootstrap.ejs +22 -19
- package/server/views/connect/x.ejs +324 -0
- package/server/views/connect.ejs +197 -0
- package/server/views/download.ejs +7 -1
- package/server/views/editor.ejs +68 -9
- package/server/views/explore.ejs +13 -10
- package/server/views/file_explorer.ejs +10 -37
- package/server/views/github.ejs +218 -0
- package/server/views/help.ejs +4 -3
- package/server/views/index.ejs +275 -121
- package/server/views/install.ejs +56 -29
- package/server/views/keys.ejs +276 -0
- package/server/views/network.ejs +889 -0
- package/server/views/partials/dynamic.ejs +9 -0
- package/server/views/partials/menu.ejs +7 -1
- package/server/views/prototype/index.ejs +311 -0
- package/server/views/prototype/show.ejs +383 -0
- package/server/views/redoc.ejs +18 -0
- package/server/views/required_env_editor.ejs +11 -2
- package/server/views/settings.ejs +38 -10
- package/server/views/setup.ejs +254 -0
- package/server/views/setup_home.ejs +192 -0
- package/server/views/shell.ejs +781 -0
- package/server/views/swaggerui.ejs +19 -0
- package/server/views/terminal.ejs +174 -42
- package/LICENSE +0 -7
- package/server/views/proxy.ejs +0 -405
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
const FSEditor = async ({title, description, old_path, icon, iconpath, redirect, copy, move, edit }) => {
|
|
2
|
+
console.log({ icon, iconpath })
|
|
3
|
+
const compare = async (file1, file2) => {
|
|
4
|
+
if (file1.size !== file2.size) return false;
|
|
5
|
+
console.log({ file1, file2 })
|
|
6
|
+
const buffer1 = await file1.arrayBuffer();
|
|
7
|
+
const buffer2 = await file2.arrayBuffer();
|
|
8
|
+
const view1 = new Uint8Array(buffer1);
|
|
9
|
+
const view2 = new Uint8Array(buffer2);
|
|
10
|
+
for (let i = 0; i < view1.length; i++) {
|
|
11
|
+
if (view1[i] !== view2[i]) return false;
|
|
12
|
+
}
|
|
13
|
+
return true;
|
|
14
|
+
}
|
|
15
|
+
let dirty
|
|
16
|
+
let mode
|
|
17
|
+
let new_path
|
|
18
|
+
let initial_file
|
|
19
|
+
let title_label
|
|
20
|
+
let file_type
|
|
21
|
+
let folderpath_html = ""
|
|
22
|
+
if (copy) {
|
|
23
|
+
mode = "copy"
|
|
24
|
+
title_label = "Copy to"
|
|
25
|
+
} else if (move) {
|
|
26
|
+
mode = "move"
|
|
27
|
+
title_label = "Move to"
|
|
28
|
+
} else {
|
|
29
|
+
mode = "edit"
|
|
30
|
+
title_label = "Edit"
|
|
31
|
+
}
|
|
32
|
+
if (copy || move) {
|
|
33
|
+
folderpath_html = `<div class='folder-row'>
|
|
34
|
+
<label for='new-folder-description'>Folder Path</label>
|
|
35
|
+
<div class='field-row'>
|
|
36
|
+
<label>/api/</label>
|
|
37
|
+
<input id="new-folder-path" class="swal2-input" placeholder="Folder Path" value="${old_path}" />
|
|
38
|
+
</div>
|
|
39
|
+
</div>`
|
|
40
|
+
}
|
|
41
|
+
let result = await Swal.fire({
|
|
42
|
+
title: title_label,
|
|
43
|
+
html: `<div class='filepond-wrapper'>
|
|
44
|
+
<div class='avatar-field'>
|
|
45
|
+
<input id='new-folder-image' type="file" class="filepond" name="avatar" accept="image/png, image/jpeg, image/gif" />
|
|
46
|
+
</div>
|
|
47
|
+
<div class='folder-rows'>
|
|
48
|
+
${folderpath_html}
|
|
49
|
+
<div class='folder-row'>
|
|
50
|
+
<label for='new-folder-title'>Title</label>
|
|
51
|
+
<input id="new-folder-title" class="swal2-input" placeholder="Folder Name" value="${title}" />
|
|
52
|
+
</div>
|
|
53
|
+
<div class='folder-row'>
|
|
54
|
+
<label for='new-folder-description'>Description</label>
|
|
55
|
+
<textarea id="new-folder-description" class="swal2-input" placeholder="Folder Description">${description}</textarea>
|
|
56
|
+
</div>
|
|
57
|
+
</div>
|
|
58
|
+
</div>`,
|
|
59
|
+
allowOutsideClick: true,
|
|
60
|
+
focusConfirm: false,
|
|
61
|
+
// showCancelButton: true,
|
|
62
|
+
confirmButtonText: 'Save',
|
|
63
|
+
didOpen: () => {
|
|
64
|
+
const textarea = document.querySelector("#new-folder-description")
|
|
65
|
+
textarea.style.height = 'auto';
|
|
66
|
+
textarea.style.height = textarea.scrollHeight + 'px';
|
|
67
|
+
textarea.addEventListener('input', () => {
|
|
68
|
+
textarea.style.height = textarea.scrollHeight + 'px';
|
|
69
|
+
});
|
|
70
|
+
FilePond.registerPlugin(
|
|
71
|
+
FilePondPluginFileValidateType,
|
|
72
|
+
FilePondPluginImageExifOrientation,
|
|
73
|
+
FilePondPluginImagePreview,
|
|
74
|
+
FilePondPluginImageCrop,
|
|
75
|
+
FilePondPluginImageResize,
|
|
76
|
+
FilePondPluginImageTransform,
|
|
77
|
+
FilePondPluginImageEdit
|
|
78
|
+
);
|
|
79
|
+
pond = FilePond.create(
|
|
80
|
+
document.querySelector('#new-folder-image'),
|
|
81
|
+
{
|
|
82
|
+
allowReplace: true,
|
|
83
|
+
allowRevert: true,
|
|
84
|
+
allowRemove: true,
|
|
85
|
+
|
|
86
|
+
allowImageCrop: true,
|
|
87
|
+
allowImageEdit: true,
|
|
88
|
+
allowImageTransform: true,
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
labelIdle: `Drag & Drop your picture or <span class="filepond--label-action">Browse</span>`,
|
|
92
|
+
imagePreviewHeight: 170,
|
|
93
|
+
imageCropAspectRatio: '1:1',
|
|
94
|
+
imageResizeTargetWidth: 200,
|
|
95
|
+
imageResizeTargetHeight: 200,
|
|
96
|
+
stylePanelLayout: 'compact circle',
|
|
97
|
+
instantUpload: false,
|
|
98
|
+
server: {
|
|
99
|
+
// process: {
|
|
100
|
+
// url: '/pinokio/upload', // optional if same as above
|
|
101
|
+
process: async (fieldName, file, metadata, load, error, progress, abort) => {
|
|
102
|
+
const formData = new FormData();
|
|
103
|
+
|
|
104
|
+
console.log("upload", { dirty })
|
|
105
|
+
if (dirty) {
|
|
106
|
+
formData.append("icon_dirty", true)
|
|
107
|
+
}
|
|
108
|
+
formData.append("icon_path", iconpath)
|
|
109
|
+
let title = Swal.getPopup().querySelector('#new-folder-title').value
|
|
110
|
+
let description = Swal.getPopup().querySelector('#new-folder-description').value
|
|
111
|
+
let folder_path_el = Swal.getPopup().querySelector('#new-folder-path')
|
|
112
|
+
formData.append("title", title)
|
|
113
|
+
formData.append("description", description)
|
|
114
|
+
formData.append("old_path", old_path)
|
|
115
|
+
let path
|
|
116
|
+
if (folder_path_el) {
|
|
117
|
+
path = folder_path_el.value
|
|
118
|
+
formData.append("new_path", path)
|
|
119
|
+
} else {
|
|
120
|
+
path = old_path
|
|
121
|
+
formData.append("new_path", old_path)
|
|
122
|
+
}
|
|
123
|
+
if (mode === "copy") {
|
|
124
|
+
formData.append("copy", true)
|
|
125
|
+
} else if (mode === "move") {
|
|
126
|
+
formData.append("move", true)
|
|
127
|
+
}
|
|
128
|
+
if (edit) {
|
|
129
|
+
formData.append("edit", true)
|
|
130
|
+
}
|
|
131
|
+
new_path = path
|
|
132
|
+
|
|
133
|
+
try {
|
|
134
|
+
let response = await fetch('/pinokio/upload', {
|
|
135
|
+
method: 'POST',
|
|
136
|
+
body: formData
|
|
137
|
+
}).then(res => res.json())
|
|
138
|
+
if (response.error) {
|
|
139
|
+
alert(response.error)
|
|
140
|
+
} else {
|
|
141
|
+
Swal.close()
|
|
142
|
+
if (new_path) {
|
|
143
|
+
location.href = redirect(new_path)
|
|
144
|
+
} else {
|
|
145
|
+
location.href = location.href
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
} catch (e) {
|
|
149
|
+
alert(e.message)
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
abort: () => {
|
|
153
|
+
abort();
|
|
154
|
+
}
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
onaddfile(error, file) {
|
|
159
|
+
console.log({ file, initial_file })
|
|
160
|
+
if (initial_file) {
|
|
161
|
+
compare(initial_file.file, file.file).then((same) => {
|
|
162
|
+
if (same) {
|
|
163
|
+
// don't do anything
|
|
164
|
+
} else {
|
|
165
|
+
dirty = true
|
|
166
|
+
// make sure the image mime type is transformed into the same type as the existing image
|
|
167
|
+
pond.setOptions({
|
|
168
|
+
imageTransformOutputMimeType: initial_file.fileType
|
|
169
|
+
})
|
|
170
|
+
}
|
|
171
|
+
initial_file = file
|
|
172
|
+
})
|
|
173
|
+
} else {
|
|
174
|
+
initial_file = file
|
|
175
|
+
}
|
|
176
|
+
},
|
|
177
|
+
// onprocessfile(error, file) {
|
|
178
|
+
// console.log("onprocessfile")
|
|
179
|
+
// if (error) {
|
|
180
|
+
// alert(error.body)
|
|
181
|
+
// } else {
|
|
182
|
+
// Swal.close()
|
|
183
|
+
// if (new_path) {
|
|
184
|
+
// location.href = redirect(new_path)
|
|
185
|
+
// } else {
|
|
186
|
+
// location.href = location.href
|
|
187
|
+
// }
|
|
188
|
+
// }
|
|
189
|
+
// },
|
|
190
|
+
files: [
|
|
191
|
+
{
|
|
192
|
+
type: 'local',
|
|
193
|
+
source: icon,
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
}
|
|
197
|
+
);
|
|
198
|
+
},
|
|
199
|
+
preConfirm: () => {
|
|
200
|
+
if (mode === "copy") {
|
|
201
|
+
let new_path = Swal.getPopup().querySelector('#new-folder-path').value
|
|
202
|
+
if (new_path === old_path) {
|
|
203
|
+
alert("Please specify a new folder name to copy to")
|
|
204
|
+
return false
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
pond.processFile()
|
|
208
|
+
return false
|
|
209
|
+
}
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/*! `javascript` grammar compiled for Highlight.js 11.11.1 */
|
|
2
|
+
(()=>{var e=(()=>{"use strict"
|
|
3
|
+
;const e="[A-Za-z$_][0-9A-Za-z$_]*",n=["as","in","of","if","for","while","finally","var","new","function","do","return","void","else","break","catch","instanceof","with","throw","case","default","try","switch","continue","typeof","delete","let","yield","const","class","debugger","async","await","static","import","from","export","extends","using"],a=["true","false","null","undefined","NaN","Infinity"],t=["Object","Function","Boolean","Symbol","Math","Date","Number","BigInt","String","RegExp","Array","Float32Array","Float64Array","Int8Array","Uint8Array","Uint8ClampedArray","Int16Array","Int32Array","Uint16Array","Uint32Array","BigInt64Array","BigUint64Array","Set","Map","WeakSet","WeakMap","ArrayBuffer","SharedArrayBuffer","Atomics","DataView","JSON","Promise","Generator","GeneratorFunction","AsyncFunction","Reflect","Proxy","Intl","WebAssembly"],s=["Error","EvalError","InternalError","RangeError","ReferenceError","SyntaxError","TypeError","URIError"],r=["setInterval","setTimeout","clearInterval","clearTimeout","require","exports","eval","isFinite","isNaN","parseFloat","parseInt","decodeURI","decodeURIComponent","encodeURI","encodeURIComponent","escape","unescape"],c=["arguments","this","super","console","window","document","localStorage","sessionStorage","module","global"],i=[].concat(r,t,s)
|
|
4
|
+
;return o=>{const l=o.regex,d=e,b={begin:/<[A-Za-z0-9\\._:-]+/,
|
|
5
|
+
end:/\/[A-Za-z0-9\\._:-]+>|\/>/,isTrulyOpeningTag:(e,n)=>{
|
|
6
|
+
const a=e[0].length+e.index,t=e.input[a]
|
|
7
|
+
;if("<"===t||","===t)return void n.ignoreMatch();let s
|
|
8
|
+
;">"===t&&(((e,{after:n})=>{const a="</"+e[0].slice(1)
|
|
9
|
+
;return-1!==e.input.indexOf(a,n)})(e,{after:a})||n.ignoreMatch())
|
|
10
|
+
;const r=e.input.substring(a)
|
|
11
|
+
;((s=r.match(/^\s*=/))||(s=r.match(/^\s+extends\s+/))&&0===s.index)&&n.ignoreMatch()
|
|
12
|
+
}},g={$pattern:e,keyword:n,literal:a,built_in:i,"variable.language":c
|
|
13
|
+
},u="[0-9](_?[0-9])*",m=`\\.(${u})`,E="0|[1-9](_?[0-9])*|0[0-7]*[89][0-9]*",A={
|
|
14
|
+
className:"number",variants:[{
|
|
15
|
+
begin:`(\\b(${E})((${m})|\\.)?|(${m}))[eE][+-]?(${u})\\b`},{
|
|
16
|
+
begin:`\\b(${E})\\b((${m})\\b|\\.)?|(${m})\\b`},{
|
|
17
|
+
begin:"\\b(0|[1-9](_?[0-9])*)n\\b"},{
|
|
18
|
+
begin:"\\b0[xX][0-9a-fA-F](_?[0-9a-fA-F])*n?\\b"},{
|
|
19
|
+
begin:"\\b0[bB][0-1](_?[0-1])*n?\\b"},{begin:"\\b0[oO][0-7](_?[0-7])*n?\\b"},{
|
|
20
|
+
begin:"\\b0[0-7]+n?\\b"}],relevance:0},y={className:"subst",begin:"\\$\\{",
|
|
21
|
+
end:"\\}",keywords:g,contains:[]},h={begin:".?html`",end:"",starts:{end:"`",
|
|
22
|
+
returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"xml"}},_={
|
|
23
|
+
begin:".?css`",end:"",starts:{end:"`",returnEnd:!1,
|
|
24
|
+
contains:[o.BACKSLASH_ESCAPE,y],subLanguage:"css"}},N={begin:".?gql`",end:"",
|
|
25
|
+
starts:{end:"`",returnEnd:!1,contains:[o.BACKSLASH_ESCAPE,y],
|
|
26
|
+
subLanguage:"graphql"}},f={className:"string",begin:"`",end:"`",
|
|
27
|
+
contains:[o.BACKSLASH_ESCAPE,y]},p={className:"comment",
|
|
28
|
+
variants:[o.COMMENT(/\/\*\*(?!\/)/,"\\*/",{relevance:0,contains:[{
|
|
29
|
+
begin:"(?=@[A-Za-z]+)",relevance:0,contains:[{className:"doctag",
|
|
30
|
+
begin:"@[A-Za-z]+"},{className:"type",begin:"\\{",end:"\\}",excludeEnd:!0,
|
|
31
|
+
excludeBegin:!0,relevance:0},{className:"variable",begin:d+"(?=\\s*(-)|$)",
|
|
32
|
+
endsParent:!0,relevance:0},{begin:/(?=[^\n])\s/,relevance:0}]}]
|
|
33
|
+
}),o.C_BLOCK_COMMENT_MODE,o.C_LINE_COMMENT_MODE]
|
|
34
|
+
},v=[o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,_,N,f,{match:/\$\d+/},A]
|
|
35
|
+
;y.contains=v.concat({begin:/\{/,end:/\}/,keywords:g,contains:["self"].concat(v)
|
|
36
|
+
});const S=[].concat(p,y.contains),w=S.concat([{begin:/(\s*)\(/,end:/\)/,
|
|
37
|
+
keywords:g,contains:["self"].concat(S)}]),R={className:"params",begin:/(\s*)\(/,
|
|
38
|
+
end:/\)/,excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w},O={variants:[{
|
|
39
|
+
match:[/class/,/\s+/,d,/\s+/,/extends/,/\s+/,l.concat(d,"(",l.concat(/\./,d),")*")],
|
|
40
|
+
scope:{1:"keyword",3:"title.class",5:"keyword",7:"title.class.inherited"}},{
|
|
41
|
+
match:[/class/,/\s+/,d],scope:{1:"keyword",3:"title.class"}}]},k={relevance:0,
|
|
42
|
+
match:l.either(/\bJSON/,/\b[A-Z][a-z]+([A-Z][a-z]*|\d)*/,/\b[A-Z]{2,}([A-Z][a-z]+|\d)+([A-Z][a-z]*)*/,/\b[A-Z]{2,}[a-z]+([A-Z][a-z]+|\d)*([A-Z][a-z]*)*/),
|
|
43
|
+
className:"title.class",keywords:{_:[...t,...s]}},I={variants:[{
|
|
44
|
+
match:[/function/,/\s+/,d,/(?=\s*\()/]},{match:[/function/,/\s*(?=\()/]}],
|
|
45
|
+
className:{1:"keyword",3:"title.function"},label:"func.def",contains:[R],
|
|
46
|
+
illegal:/%/},x={
|
|
47
|
+
match:l.concat(/\b/,(T=[...r,"super","import"].map((e=>e+"\\s*\\(")),
|
|
48
|
+
l.concat("(?!",T.join("|"),")")),d,l.lookahead(/\s*\(/)),
|
|
49
|
+
className:"title.function",relevance:0};var T;const C={
|
|
50
|
+
begin:l.concat(/\./,l.lookahead(l.concat(d,/(?![0-9A-Za-z$_(])/))),end:d,
|
|
51
|
+
excludeBegin:!0,keywords:"prototype",className:"property",relevance:0},M={
|
|
52
|
+
match:[/get|set/,/\s+/,d,/(?=\()/],className:{1:"keyword",3:"title.function"},
|
|
53
|
+
contains:[{begin:/\(\)/},R]
|
|
54
|
+
},B="(\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)|"+o.UNDERSCORE_IDENT_RE+")\\s*=>",$={
|
|
55
|
+
match:[/const|var|let/,/\s+/,d,/\s*/,/=\s*/,/(async\s*)?/,l.lookahead(B)],
|
|
56
|
+
keywords:"async",className:{1:"keyword",3:"title.function"},contains:[R]}
|
|
57
|
+
;return{name:"JavaScript",aliases:["js","jsx","mjs","cjs"],keywords:g,exports:{
|
|
58
|
+
PARAMS_CONTAINS:w,CLASS_REFERENCE:k},illegal:/#(?![$_A-z])/,
|
|
59
|
+
contains:[o.SHEBANG({label:"shebang",binary:"node",relevance:5}),{
|
|
60
|
+
label:"use_strict",className:"meta",relevance:10,
|
|
61
|
+
begin:/^\s*['"]use (strict|asm)['"]/
|
|
62
|
+
},o.APOS_STRING_MODE,o.QUOTE_STRING_MODE,h,_,N,f,p,{match:/\$\d+/},A,k,{
|
|
63
|
+
scope:"attr",match:d+l.lookahead(":"),relevance:0},$,{
|
|
64
|
+
begin:"("+o.RE_STARTERS_RE+"|\\b(case|return|throw)\\b)\\s*",
|
|
65
|
+
keywords:"return throw case",relevance:0,contains:[p,o.REGEXP_MODE,{
|
|
66
|
+
className:"function",begin:B,returnBegin:!0,end:"\\s*=>",contains:[{
|
|
67
|
+
className:"params",variants:[{begin:o.UNDERSCORE_IDENT_RE,relevance:0},{
|
|
68
|
+
className:null,begin:/\(\s*\)/,skip:!0},{begin:/(\s*)\(/,end:/\)/,
|
|
69
|
+
excludeBegin:!0,excludeEnd:!0,keywords:g,contains:w}]}]},{begin:/,/,relevance:0
|
|
70
|
+
},{match:/\s+/,relevance:0},{variants:[{begin:"<>",end:"</>"},{
|
|
71
|
+
match:/<[A-Za-z0-9\\._:-]+\s*\/>/},{begin:b.begin,
|
|
72
|
+
"on:begin":b.isTrulyOpeningTag,end:b.end}],subLanguage:"xml",contains:[{
|
|
73
|
+
begin:b.begin,end:b.end,skip:!0,contains:["self"]}]}]},I,{
|
|
74
|
+
beginKeywords:"while if switch catch for"},{
|
|
75
|
+
begin:"\\b(?!function)"+o.UNDERSCORE_IDENT_RE+"\\([^()]*(\\([^()]*(\\([^()]*\\)[^()]*)*\\)[^()]*)*\\)\\s*\\{",
|
|
76
|
+
returnBegin:!0,label:"func.def",contains:[R,o.inherit(o.TITLE_MODE,{begin:d,
|
|
77
|
+
className:"title.function"})]},{match:/\.\.\./,relevance:0},C,{match:"\\$"+d,
|
|
78
|
+
relevance:0},{match:[/\bconstructor(?=\s*\()/],className:{1:"title.function"},
|
|
79
|
+
contains:[R]},x,{relevance:0,match:/\b[A-Z][A-Z_0-9]+\b/,
|
|
80
|
+
className:"variable.constant"},O,M,{match:/\$[(.]/}]}}})()
|
|
81
|
+
;hljs.registerLanguage("javascript",e)})();
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
Theme: Default
|
|
3
|
+
Description: Original highlight.js style
|
|
4
|
+
Author: (c) Ivan Sagalaev <maniac@softwaremaniacs.org>
|
|
5
|
+
Maintainer: @highlightjs/core-team
|
|
6
|
+
Website: https://highlightjs.org/
|
|
7
|
+
License: see project LICENSE
|
|
8
|
+
Touched: 2021
|
|
9
|
+
*/pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#f3f3f3;color:#444}.hljs-comment{color:#697070}.hljs-punctuation,.hljs-tag{color:#444a}.hljs-tag .hljs-attr,.hljs-tag .hljs-name{color:#444}.hljs-attribute,.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-name,.hljs-selector-tag{font-weight:700}.hljs-deletion,.hljs-number,.hljs-quote,.hljs-selector-class,.hljs-selector-id,.hljs-string,.hljs-template-tag,.hljs-type{color:#800}.hljs-section,.hljs-title{color:#800;font-weight:700}.hljs-link,.hljs-operator,.hljs-regexp,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-symbol,.hljs-template-variable,.hljs-variable{color:#ab5656}.hljs-literal{color:#695}.hljs-addition,.hljs-built_in,.hljs-bullet,.hljs-code{color:#397300}.hljs-meta{color:#1f7199}.hljs-meta .hljs-string{color:#38a}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}
|