bimba-cli 0.4.0 → 0.4.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.
- package/.gitattributes +1 -0
- package/package.json +1 -1
- package/plugin.js +1 -1
- package/serve.js +165 -25
- package/bun.lock +0 -161
package/.gitattributes
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* text=auto eol=lf
|
package/package.json
CHANGED
package/plugin.js
CHANGED
|
@@ -87,7 +87,7 @@ plugin(imbaPlugin);
|
|
|
87
87
|
// -------------------------------------------------------------------------------
|
|
88
88
|
|
|
89
89
|
// print an error generated by the imba compiler
|
|
90
|
-
function printerr(err) {
|
|
90
|
+
export function printerr(err) {
|
|
91
91
|
|
|
92
92
|
// halper function to produce empty strings
|
|
93
93
|
const fill = (len = 0) => {return new Array(len + 1).join(' ')}
|
package/serve.js
CHANGED
|
@@ -3,6 +3,7 @@ import * as compiler from 'imba/compiler'
|
|
|
3
3
|
import { watch, existsSync } from 'fs'
|
|
4
4
|
import path from 'path'
|
|
5
5
|
import { theme } from './utils.js'
|
|
6
|
+
import { printerr } from './plugin.js'
|
|
6
7
|
|
|
7
8
|
const hmrClient = `
|
|
8
9
|
<script>
|
|
@@ -35,34 +36,94 @@ const hmrClient = `
|
|
|
35
36
|
el.innerHTML = '';
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
if (el instanceof cls) { found.push(el); break; }
|
|
50
|
-
}
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
found.forEach(resetElement);
|
|
54
|
-
_updated.clear();
|
|
55
|
-
imba.commit();
|
|
56
|
-
});
|
|
57
|
-
} else if (data.type === 'reload') {
|
|
58
|
-
location.reload();
|
|
39
|
+
let _connected = false;
|
|
40
|
+
let _overlay = null;
|
|
41
|
+
|
|
42
|
+
function showError(file, errors) {
|
|
43
|
+
if (!_overlay) {
|
|
44
|
+
_overlay = document.createElement('div');
|
|
45
|
+
_overlay.id = '__bimba_error__';
|
|
46
|
+
const s = _overlay.style;
|
|
47
|
+
s.cssText = 'position:fixed;inset:0;z-index:99999;background:rgba(0,0,0,.85);display:flex;align-items:center;justify-content:center;font-family:monospace;padding:24px;box-sizing:border-box';
|
|
48
|
+
_overlay.addEventListener('click', (e) => { if (e.target === _overlay) clearError(); });
|
|
49
|
+
document.body.appendChild(_overlay);
|
|
59
50
|
}
|
|
60
|
-
|
|
51
|
+
_overlay.innerHTML = \`
|
|
52
|
+
<div style="background:#1a1a1a;border:1px solid #ff4444;border-radius:8px;max-width:860px;width:100%;max-height:90vh;overflow:auto;box-shadow:0 0 40px rgba(255,68,68,.3)">
|
|
53
|
+
<div style="background:#ff4444;color:#fff;padding:10px 16px;font-size:13px;font-weight:600;display:flex;justify-content:space-between;align-items:center">
|
|
54
|
+
<span>Compile error — \${file}</span>
|
|
55
|
+
<span onclick="document.getElementById('__bimba_error__').remove();document.getElementById('__bimba_error__')&&(window.__bimba_overlay__=null)" style="cursor:pointer;opacity:.7;font-size:16px">✕</span>
|
|
56
|
+
</div>
|
|
57
|
+
\${errors.map(err => \`
|
|
58
|
+
<div style="padding:16px;border-bottom:1px solid #333">
|
|
59
|
+
<div style="color:#ff8080;font-size:13px;margin-bottom:10px">\${err.message}\${err.line ? \` <span style="color:#888">line \${err.line}</span>\` : ''}</div>
|
|
60
|
+
\${err.snippet ? \`<pre style="margin:0;padding:10px;background:#111;border-radius:4px;font-size:12px;line-height:1.6;color:#ccc;overflow-x:auto;white-space:pre">\${err.snippet.replace(/</g,'<')}</pre>\` : ''}
|
|
61
|
+
</div>
|
|
62
|
+
\`).join('')}
|
|
63
|
+
</div>
|
|
64
|
+
\`;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
function clearError() {
|
|
68
|
+
if (_overlay) { _overlay.remove(); _overlay = null; }
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function connect() {
|
|
72
|
+
const ws = new WebSocket('ws://' + location.host + '/__hmr__');
|
|
73
|
+
ws.onopen = () => {
|
|
74
|
+
if (_connected) {
|
|
75
|
+
location.reload();
|
|
76
|
+
} else {
|
|
77
|
+
_connected = true;
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
ws.onmessage = (e) => {
|
|
81
|
+
const data = JSON.parse(e.data);
|
|
82
|
+
if (data.type === 'update') {
|
|
83
|
+
clearError();
|
|
84
|
+
_updated.clear();
|
|
85
|
+
import('/' + data.file + '?t=' + Date.now()).then(() => {
|
|
86
|
+
const updatedClasses = [..._updated].map(n => _registry.get(n)).filter(Boolean);
|
|
87
|
+
const found = [];
|
|
88
|
+
if (updatedClasses.length) {
|
|
89
|
+
document.querySelectorAll('*').forEach(el => {
|
|
90
|
+
for (const cls of updatedClasses) {
|
|
91
|
+
if (el instanceof cls) { found.push(el); break; }
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
found.forEach(resetElement);
|
|
96
|
+
_updated.clear();
|
|
97
|
+
imba.commit();
|
|
98
|
+
});
|
|
99
|
+
} else if (data.type === 'reload') {
|
|
100
|
+
location.reload();
|
|
101
|
+
} else if (data.type === 'error') {
|
|
102
|
+
showError(data.file, data.errors);
|
|
103
|
+
} else if (data.type === 'clear-error') {
|
|
104
|
+
clearError();
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
ws.onclose = () => {
|
|
108
|
+
setTimeout(connect, 1000);
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
connect();
|
|
61
113
|
</script>`
|
|
62
114
|
|
|
115
|
+
const _compileCache = new Map()
|
|
116
|
+
|
|
63
117
|
async function compileFile(filepath) {
|
|
64
|
-
const
|
|
65
|
-
|
|
118
|
+
const file = Bun.file(filepath)
|
|
119
|
+
const stat = await file.stat()
|
|
120
|
+
const mtime = stat.mtime.getTime()
|
|
121
|
+
const cached = _compileCache.get(filepath)
|
|
122
|
+
if (cached && cached.mtime === mtime) return { ...cached.result, cached: true }
|
|
123
|
+
const code = await file.text()
|
|
124
|
+
const result = compiler.compile(code, { sourcePath: filepath, platform: 'browser', sourcemap: 'inline' })
|
|
125
|
+
_compileCache.set(filepath, { mtime, result })
|
|
126
|
+
return result
|
|
66
127
|
}
|
|
67
128
|
|
|
68
129
|
function findHtml(flagHtml) {
|
|
@@ -123,10 +184,66 @@ export function serve(entrypoint, flags) {
|
|
|
123
184
|
const sockets = new Set()
|
|
124
185
|
let importMapTag = null
|
|
125
186
|
|
|
187
|
+
let _lastLines = 0
|
|
188
|
+
let _fadeTimers = []
|
|
189
|
+
let _fadeId = 0
|
|
190
|
+
|
|
191
|
+
function cancelFade() {
|
|
192
|
+
_fadeTimers.forEach(t => clearTimeout(t))
|
|
193
|
+
_fadeTimers = []
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
function printStatus(file, state, errors) {
|
|
197
|
+
cancelFade()
|
|
198
|
+
if (_lastLines > 0) {
|
|
199
|
+
process.stdout.write(`\x1b[${_lastLines}A\x1b[J`)
|
|
200
|
+
_lastLines = 0
|
|
201
|
+
}
|
|
202
|
+
const now = new Date().toLocaleTimeString('ru-RU', { hour: '2-digit', minute: '2-digit', second: '2-digit' })
|
|
203
|
+
const status = state === 'ok' ? theme.success(' ok ') : theme.failure(' fail ')
|
|
204
|
+
process.stdout.write(` ${theme.folder(now)} ${theme.filename(file)} ${status}\n`)
|
|
205
|
+
_lastLines = 1
|
|
206
|
+
if (errors?.length) {
|
|
207
|
+
for (const err of errors) {
|
|
208
|
+
printerr(err)
|
|
209
|
+
_lastLines += 5
|
|
210
|
+
}
|
|
211
|
+
} else {
|
|
212
|
+
const myId = ++_fadeId
|
|
213
|
+
const c = (text, col) => `\x1b[2;38;5;${col}m${text}\x1b[0m`
|
|
214
|
+
const steps = [
|
|
215
|
+
[5000, 255],
|
|
216
|
+
[5500, 253],
|
|
217
|
+
[6000, 251],
|
|
218
|
+
[6500, 249],
|
|
219
|
+
[7000, 246],
|
|
220
|
+
[7500, 244],
|
|
221
|
+
[8000, 242],
|
|
222
|
+
[9000, null],
|
|
223
|
+
].map(([delay, col]) => [delay, col !== null
|
|
224
|
+
? ` ${c(now, col)} ${c(file, col)} ${c('ok', col)}`
|
|
225
|
+
: null
|
|
226
|
+
])
|
|
227
|
+
for (const [delay, line] of steps) {
|
|
228
|
+
_fadeTimers.push(setTimeout(() => {
|
|
229
|
+
if (_fadeId !== myId || _lastLines !== 1) return
|
|
230
|
+
if (line !== null) {
|
|
231
|
+
process.stdout.write(`\x1b[1A\x1b[2K${line}\n`)
|
|
232
|
+
} else {
|
|
233
|
+
process.stdout.write(`\x1b[1A\x1b[2K`)
|
|
234
|
+
_lastLines = 0
|
|
235
|
+
}
|
|
236
|
+
}, delay))
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
const _debounce = new Map()
|
|
126
242
|
watch(srcDir, { recursive: true }, (_event, filename) => {
|
|
127
243
|
if (!filename || !filename.endsWith('.imba')) return
|
|
244
|
+
if (_debounce.has(filename)) return
|
|
245
|
+
_debounce.set(filename, setTimeout(() => _debounce.delete(filename), 50))
|
|
128
246
|
const rel = path.join(path.relative('.', srcDir), filename).replaceAll('\\', '/')
|
|
129
|
-
// console.log(theme.action('changed: ') + theme.filename(rel))
|
|
130
247
|
for (const socket of sockets)
|
|
131
248
|
socket.send(JSON.stringify({ type: 'update', file: rel }))
|
|
132
249
|
})
|
|
@@ -154,8 +271,22 @@ export function serve(entrypoint, flags) {
|
|
|
154
271
|
if (pathname.endsWith('.imba')) {
|
|
155
272
|
try {
|
|
156
273
|
const out = await compileFile('.' + pathname)
|
|
274
|
+
const file = pathname.replace(/^\//, '')
|
|
275
|
+
if (out.errors?.length) {
|
|
276
|
+
if (!out.cached) {
|
|
277
|
+
printStatus(file, 'fail', out.errors)
|
|
278
|
+
const payload = JSON.stringify({ type: 'error', file, errors: out.errors.map(e => ({ message: e.message, line: e.range?.start?.line, snippet: e.toSnippet() })) })
|
|
279
|
+
for (const socket of sockets) socket.send(payload)
|
|
280
|
+
}
|
|
281
|
+
return new Response(out.errors.map(e => e.message).join('\n'), { status: 500 })
|
|
282
|
+
}
|
|
283
|
+
if (!out.cached) {
|
|
284
|
+
printStatus(file, 'ok')
|
|
285
|
+
for (const socket of sockets) socket.send(JSON.stringify({ type: 'clear-error' }))
|
|
286
|
+
}
|
|
157
287
|
return new Response(out.js, { headers: { 'Content-Type': 'application/javascript' } })
|
|
158
288
|
} catch (e) {
|
|
289
|
+
console.error(theme.failure('Compile error: ') + theme.filename(pathname) + '\n' + e.message)
|
|
159
290
|
return new Response(e.message, { status: 500 })
|
|
160
291
|
}
|
|
161
292
|
}
|
|
@@ -165,6 +296,15 @@ export function serve(entrypoint, flags) {
|
|
|
165
296
|
if (await htmlDirFile.exists()) return new Response(htmlDirFile)
|
|
166
297
|
const file = Bun.file('.' + pathname)
|
|
167
298
|
if (await file.exists()) return new Response(file)
|
|
299
|
+
|
|
300
|
+
// SPA fallback: serve index.html only for URL-like paths (no file extension)
|
|
301
|
+
const lastSegment = pathname.split('/').pop()
|
|
302
|
+
if (!lastSegment.includes('.')) {
|
|
303
|
+
let html = await Bun.file(htmlPath).text()
|
|
304
|
+
if (!importMapTag) importMapTag = await buildImportMap()
|
|
305
|
+
html = transformHtml(html, entrypoint, importMapTag)
|
|
306
|
+
return new Response(html, { headers: { 'Content-Type': 'text/html' } })
|
|
307
|
+
}
|
|
168
308
|
return new Response('Not Found', { status: 404 })
|
|
169
309
|
},
|
|
170
310
|
|
package/bun.lock
DELETED
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"lockfileVersion": 1,
|
|
3
|
-
"configVersion": 1,
|
|
4
|
-
"workspaces": {
|
|
5
|
-
"": {
|
|
6
|
-
"name": "bimba-cli",
|
|
7
|
-
"devDependencies": {
|
|
8
|
-
"imba": "latest",
|
|
9
|
-
},
|
|
10
|
-
},
|
|
11
|
-
},
|
|
12
|
-
"packages": {
|
|
13
|
-
"@antfu/install-pkg": ["@antfu/install-pkg@0.1.1", "", { "dependencies": { "execa": "^5.1.1", "find-up": "^5.0.0" } }, "sha512-LyB/8+bSfa0DFGC06zpCEfs89/XoWZwws5ygEa5D+Xsm3OfI+aXQ86VgVG7Acyef+rSZ5HE7J8rrxzrQeM3PjQ=="],
|
|
14
|
-
|
|
15
|
-
"@esbuild/android-arm": ["@esbuild/android-arm@0.15.18", "", { "os": "android", "cpu": "arm" }, "sha512-5GT+kcs2WVGjVs7+boataCkO5Fg0y4kCjzkB5bAip7H4jfnOS3dA6KPiww9W1OEKTKeAcUVhdZGvgI65OXmUnw=="],
|
|
16
|
-
|
|
17
|
-
"@esbuild/linux-loong64": ["@esbuild/linux-loong64@0.15.18", "", { "os": "linux", "cpu": "none" }, "sha512-L4jVKS82XVhw2nvzLg/19ClLWg0y27ulRwuP7lcyL6AbUWB5aPglXY3M21mauDQMDfRLs8cQmeT03r/+X3cZYQ=="],
|
|
18
|
-
|
|
19
|
-
"anymatch": ["anymatch@3.1.3", "", { "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" } }, "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw=="],
|
|
20
|
-
|
|
21
|
-
"binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="],
|
|
22
|
-
|
|
23
|
-
"braces": ["braces@3.0.3", "", { "dependencies": { "fill-range": "^7.1.1" } }, "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA=="],
|
|
24
|
-
|
|
25
|
-
"chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="],
|
|
26
|
-
|
|
27
|
-
"colord": ["colord@2.9.3", "", {}, "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw=="],
|
|
28
|
-
|
|
29
|
-
"cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="],
|
|
30
|
-
|
|
31
|
-
"debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
|
|
32
|
-
|
|
33
|
-
"dotenv": ["dotenv@16.6.1", "", {}, "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow=="],
|
|
34
|
-
|
|
35
|
-
"envinfo": ["envinfo@7.21.0", "", { "bin": { "envinfo": "dist/cli.js" } }, "sha512-Lw7I8Zp5YKHFCXL7+Dz95g4CcbMEpgvqZNNq3AmlT5XAV6CgAAk6gyAMqn2zjw08K9BHfcNuKrMiCPLByGafow=="],
|
|
36
|
-
|
|
37
|
-
"esbuild": ["esbuild@0.15.18", "", { "optionalDependencies": { "@esbuild/android-arm": "0.15.18", "@esbuild/linux-loong64": "0.15.18", "esbuild-android-64": "0.15.18", "esbuild-android-arm64": "0.15.18", "esbuild-darwin-64": "0.15.18", "esbuild-darwin-arm64": "0.15.18", "esbuild-freebsd-64": "0.15.18", "esbuild-freebsd-arm64": "0.15.18", "esbuild-linux-32": "0.15.18", "esbuild-linux-64": "0.15.18", "esbuild-linux-arm": "0.15.18", "esbuild-linux-arm64": "0.15.18", "esbuild-linux-mips64le": "0.15.18", "esbuild-linux-ppc64le": "0.15.18", "esbuild-linux-riscv64": "0.15.18", "esbuild-linux-s390x": "0.15.18", "esbuild-netbsd-64": "0.15.18", "esbuild-openbsd-64": "0.15.18", "esbuild-sunos-64": "0.15.18", "esbuild-windows-32": "0.15.18", "esbuild-windows-64": "0.15.18", "esbuild-windows-arm64": "0.15.18" }, "bin": { "esbuild": "bin/esbuild" } }, "sha512-x/R72SmW3sSFRm5zrrIjAhCeQSAWoni3CmHEqfQrZIQTM3lVCdehdwuIqaOtfC2slvpdlLa62GYoN8SxT23m6Q=="],
|
|
38
|
-
|
|
39
|
-
"esbuild-android-64": ["esbuild-android-64@0.15.18", "", { "os": "android", "cpu": "x64" }, "sha512-wnpt3OXRhcjfIDSZu9bnzT4/TNTDsOUvip0foZOUBG7QbSt//w3QV4FInVJxNhKc/ErhUxc5z4QjHtMi7/TbgA=="],
|
|
40
|
-
|
|
41
|
-
"esbuild-android-arm64": ["esbuild-android-arm64@0.15.18", "", { "os": "android", "cpu": "arm64" }, "sha512-G4xu89B8FCzav9XU8EjsXacCKSG2FT7wW9J6hOc18soEHJdtWu03L3TQDGf0geNxfLTtxENKBzMSq9LlbjS8OQ=="],
|
|
42
|
-
|
|
43
|
-
"esbuild-darwin-64": ["esbuild-darwin-64@0.15.18", "", { "os": "darwin", "cpu": "x64" }, "sha512-2WAvs95uPnVJPuYKP0Eqx+Dl/jaYseZEUUT1sjg97TJa4oBtbAKnPnl3b5M9l51/nbx7+QAEtuummJZW0sBEmg=="],
|
|
44
|
-
|
|
45
|
-
"esbuild-darwin-arm64": ["esbuild-darwin-arm64@0.15.18", "", { "os": "darwin", "cpu": "arm64" }, "sha512-tKPSxcTJ5OmNb1btVikATJ8NftlyNlc8BVNtyT/UAr62JFOhwHlnoPrhYWz09akBLHI9nElFVfWSTSRsrZiDUA=="],
|
|
46
|
-
|
|
47
|
-
"esbuild-freebsd-64": ["esbuild-freebsd-64@0.15.18", "", { "os": "freebsd", "cpu": "x64" }, "sha512-TT3uBUxkteAjR1QbsmvSsjpKjOX6UkCstr8nMr+q7zi3NuZ1oIpa8U41Y8I8dJH2fJgdC3Dj3CXO5biLQpfdZA=="],
|
|
48
|
-
|
|
49
|
-
"esbuild-freebsd-arm64": ["esbuild-freebsd-arm64@0.15.18", "", { "os": "freebsd", "cpu": "arm64" }, "sha512-R/oVr+X3Tkh+S0+tL41wRMbdWtpWB8hEAMsOXDumSSa6qJR89U0S/PpLXrGF7Wk/JykfpWNokERUpCeHDl47wA=="],
|
|
50
|
-
|
|
51
|
-
"esbuild-linux-32": ["esbuild-linux-32@0.15.18", "", { "os": "linux", "cpu": "ia32" }, "sha512-lphF3HiCSYtaa9p1DtXndiQEeQDKPl9eN/XNoBf2amEghugNuqXNZA/ZovthNE2aa4EN43WroO0B85xVSjYkbg=="],
|
|
52
|
-
|
|
53
|
-
"esbuild-linux-64": ["esbuild-linux-64@0.15.18", "", { "os": "linux", "cpu": "x64" }, "sha512-hNSeP97IviD7oxLKFuii5sDPJ+QHeiFTFLoLm7NZQligur8poNOWGIgpQ7Qf8Balb69hptMZzyOBIPtY09GZYw=="],
|
|
54
|
-
|
|
55
|
-
"esbuild-linux-arm": ["esbuild-linux-arm@0.15.18", "", { "os": "linux", "cpu": "arm" }, "sha512-UH779gstRblS4aoS2qpMl3wjg7U0j+ygu3GjIeTonCcN79ZvpPee12Qun3vcdxX+37O5LFxz39XeW2I9bybMVA=="],
|
|
56
|
-
|
|
57
|
-
"esbuild-linux-arm64": ["esbuild-linux-arm64@0.15.18", "", { "os": "linux", "cpu": "arm64" }, "sha512-54qr8kg/6ilcxd+0V3h9rjT4qmjc0CccMVWrjOEM/pEcUzt8X62HfBSeZfT2ECpM7104mk4yfQXkosY8Quptug=="],
|
|
58
|
-
|
|
59
|
-
"esbuild-linux-mips64le": ["esbuild-linux-mips64le@0.15.18", "", { "os": "linux", "cpu": "none" }, "sha512-Mk6Ppwzzz3YbMl/ZZL2P0q1tnYqh/trYZ1VfNP47C31yT0K8t9s7Z077QrDA/guU60tGNp2GOwCQnp+DYv7bxQ=="],
|
|
60
|
-
|
|
61
|
-
"esbuild-linux-ppc64le": ["esbuild-linux-ppc64le@0.15.18", "", { "os": "linux", "cpu": "ppc64" }, "sha512-b0XkN4pL9WUulPTa/VKHx2wLCgvIAbgwABGnKMY19WhKZPT+8BxhZdqz6EgkqCLld7X5qiCY2F/bfpUUlnFZ9w=="],
|
|
62
|
-
|
|
63
|
-
"esbuild-linux-riscv64": ["esbuild-linux-riscv64@0.15.18", "", { "os": "linux", "cpu": "none" }, "sha512-ba2COaoF5wL6VLZWn04k+ACZjZ6NYniMSQStodFKH/Pu6RxzQqzsmjR1t9QC89VYJxBeyVPTaHuBMCejl3O/xg=="],
|
|
64
|
-
|
|
65
|
-
"esbuild-linux-s390x": ["esbuild-linux-s390x@0.15.18", "", { "os": "linux", "cpu": "s390x" }, "sha512-VbpGuXEl5FCs1wDVp93O8UIzl3ZrglgnSQ+Hu79g7hZu6te6/YHgVJxCM2SqfIila0J3k0csfnf8VD2W7u2kzQ=="],
|
|
66
|
-
|
|
67
|
-
"esbuild-netbsd-64": ["esbuild-netbsd-64@0.15.18", "", { "os": "none", "cpu": "x64" }, "sha512-98ukeCdvdX7wr1vUYQzKo4kQ0N2p27H7I11maINv73fVEXt2kyh4K4m9f35U1K43Xc2QGXlzAw0K9yoU7JUjOg=="],
|
|
68
|
-
|
|
69
|
-
"esbuild-openbsd-64": ["esbuild-openbsd-64@0.15.18", "", { "os": "openbsd", "cpu": "x64" }, "sha512-yK5NCcH31Uae076AyQAXeJzt/vxIo9+omZRKj1pauhk3ITuADzuOx5N2fdHrAKPxN+zH3w96uFKlY7yIn490xQ=="],
|
|
70
|
-
|
|
71
|
-
"esbuild-sunos-64": ["esbuild-sunos-64@0.15.18", "", { "os": "sunos", "cpu": "x64" }, "sha512-On22LLFlBeLNj/YF3FT+cXcyKPEI263nflYlAhz5crxtp3yRG1Ugfr7ITyxmCmjm4vbN/dGrb/B7w7U8yJR9yw=="],
|
|
72
|
-
|
|
73
|
-
"esbuild-windows-32": ["esbuild-windows-32@0.15.18", "", { "os": "win32", "cpu": "ia32" }, "sha512-o+eyLu2MjVny/nt+E0uPnBxYuJHBvho8vWsC2lV61A7wwTWC3jkN2w36jtA+yv1UgYkHRihPuQsL23hsCYGcOQ=="],
|
|
74
|
-
|
|
75
|
-
"esbuild-windows-64": ["esbuild-windows-64@0.15.18", "", { "os": "win32", "cpu": "x64" }, "sha512-qinug1iTTaIIrCorAUjR0fcBk24fjzEedFYhhispP8Oc7SFvs+XeW3YpAKiKp8dRpizl4YYAhxMjlftAMJiaUw=="],
|
|
76
|
-
|
|
77
|
-
"esbuild-windows-arm64": ["esbuild-windows-arm64@0.15.18", "", { "os": "win32", "cpu": "arm64" }, "sha512-q9bsYzegpZcLziq0zgUi5KqGVtfhjxGbnksaBFYmWLxeV/S1fK4OLdq2DFYnXcLMjlZw2L0jLsk1eGoB522WXQ=="],
|
|
78
|
-
|
|
79
|
-
"execa": ["execa@5.1.1", "", { "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", "is-stream": "^2.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^4.0.1", "onetime": "^5.1.2", "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" } }, "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg=="],
|
|
80
|
-
|
|
81
|
-
"fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
|
|
82
|
-
|
|
83
|
-
"fill-range": ["fill-range@7.1.1", "", { "dependencies": { "to-regex-range": "^5.0.1" } }, "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg=="],
|
|
84
|
-
|
|
85
|
-
"find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
|
|
86
|
-
|
|
87
|
-
"fsevents": ["fsevents@2.3.3", "", { "os": "darwin" }, "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw=="],
|
|
88
|
-
|
|
89
|
-
"get-port": ["get-port@5.1.1", "", {}, "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ=="],
|
|
90
|
-
|
|
91
|
-
"get-stream": ["get-stream@6.0.1", "", {}, "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg=="],
|
|
92
|
-
|
|
93
|
-
"glob-parent": ["glob-parent@5.1.2", "", { "dependencies": { "is-glob": "^4.0.1" } }, "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow=="],
|
|
94
|
-
|
|
95
|
-
"human-signals": ["human-signals@2.1.0", "", {}, "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw=="],
|
|
96
|
-
|
|
97
|
-
"imba": ["imba@2.0.0-alpha.247", "", { "dependencies": { "@antfu/install-pkg": "^0.1.1", "chokidar": "^3.4.3", "colord": "^2.9.3", "cross-spawn": "^7.0.3", "debug": "^4.3.4", "dotenv": "^16.0.3", "envinfo": "^7.8.1", "esbuild": "^0.15.2", "fdir": "^6.1.0", "get-port": "^5.1.1", "local-pkg": "^0.4.2", "lodash.mergewith": "^4.6.2", "prompts": "^2.4.2" }, "peerDependencies": { "@testing-library/dom": "*", "@testing-library/jest-dom": "*", "vite": "*", "vite-node": "*", "vitest": "*" }, "optionalPeers": ["@testing-library/dom", "@testing-library/jest-dom", "vite", "vite-node", "vitest"], "bin": { "imba": "bin/imba", "imbac": "bin/imbac" } }, "sha512-wrM2yDk78nnXC5kS1Br0hcsLgHjoIRNEX0XIsDNNNqVOjwAe6L63I0UjiJlXvLukhAMRV07acBv9kE9lH95YnQ=="],
|
|
98
|
-
|
|
99
|
-
"is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="],
|
|
100
|
-
|
|
101
|
-
"is-extglob": ["is-extglob@2.1.1", "", {}, "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ=="],
|
|
102
|
-
|
|
103
|
-
"is-glob": ["is-glob@4.0.3", "", { "dependencies": { "is-extglob": "^2.1.1" } }, "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg=="],
|
|
104
|
-
|
|
105
|
-
"is-number": ["is-number@7.0.0", "", {}, "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="],
|
|
106
|
-
|
|
107
|
-
"is-stream": ["is-stream@2.0.1", "", {}, "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg=="],
|
|
108
|
-
|
|
109
|
-
"isexe": ["isexe@2.0.0", "", {}, "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw=="],
|
|
110
|
-
|
|
111
|
-
"kleur": ["kleur@3.0.3", "", {}, "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w=="],
|
|
112
|
-
|
|
113
|
-
"local-pkg": ["local-pkg@0.4.3", "", {}, "sha512-SFppqq5p42fe2qcZQqqEOiVRXl+WCP1MdT6k7BDEW1j++sp5fIY+/fdRQitvKgB5BrBcmrs5m/L0v2FrU5MY1g=="],
|
|
114
|
-
|
|
115
|
-
"locate-path": ["locate-path@6.0.0", "", { "dependencies": { "p-locate": "^5.0.0" } }, "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw=="],
|
|
116
|
-
|
|
117
|
-
"lodash.mergewith": ["lodash.mergewith@4.6.2", "", {}, "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ=="],
|
|
118
|
-
|
|
119
|
-
"merge-stream": ["merge-stream@2.0.0", "", {}, "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w=="],
|
|
120
|
-
|
|
121
|
-
"mimic-fn": ["mimic-fn@2.1.0", "", {}, "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="],
|
|
122
|
-
|
|
123
|
-
"ms": ["ms@2.1.3", "", {}, "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA=="],
|
|
124
|
-
|
|
125
|
-
"normalize-path": ["normalize-path@3.0.0", "", {}, "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="],
|
|
126
|
-
|
|
127
|
-
"npm-run-path": ["npm-run-path@4.0.1", "", { "dependencies": { "path-key": "^3.0.0" } }, "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw=="],
|
|
128
|
-
|
|
129
|
-
"onetime": ["onetime@5.1.2", "", { "dependencies": { "mimic-fn": "^2.1.0" } }, "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg=="],
|
|
130
|
-
|
|
131
|
-
"p-limit": ["p-limit@3.1.0", "", { "dependencies": { "yocto-queue": "^0.1.0" } }, "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ=="],
|
|
132
|
-
|
|
133
|
-
"p-locate": ["p-locate@5.0.0", "", { "dependencies": { "p-limit": "^3.0.2" } }, "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw=="],
|
|
134
|
-
|
|
135
|
-
"path-exists": ["path-exists@4.0.0", "", {}, "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="],
|
|
136
|
-
|
|
137
|
-
"path-key": ["path-key@3.1.1", "", {}, "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q=="],
|
|
138
|
-
|
|
139
|
-
"picomatch": ["picomatch@2.3.2", "", {}, "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA=="],
|
|
140
|
-
|
|
141
|
-
"prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="],
|
|
142
|
-
|
|
143
|
-
"readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="],
|
|
144
|
-
|
|
145
|
-
"shebang-command": ["shebang-command@2.0.0", "", { "dependencies": { "shebang-regex": "^3.0.0" } }, "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA=="],
|
|
146
|
-
|
|
147
|
-
"shebang-regex": ["shebang-regex@3.0.0", "", {}, "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A=="],
|
|
148
|
-
|
|
149
|
-
"signal-exit": ["signal-exit@3.0.7", "", {}, "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ=="],
|
|
150
|
-
|
|
151
|
-
"sisteransi": ["sisteransi@1.0.5", "", {}, "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg=="],
|
|
152
|
-
|
|
153
|
-
"strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="],
|
|
154
|
-
|
|
155
|
-
"to-regex-range": ["to-regex-range@5.0.1", "", { "dependencies": { "is-number": "^7.0.0" } }, "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ=="],
|
|
156
|
-
|
|
157
|
-
"which": ["which@2.0.2", "", { "dependencies": { "isexe": "^2.0.0" }, "bin": { "node-which": "./bin/node-which" } }, "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA=="],
|
|
158
|
-
|
|
159
|
-
"yocto-queue": ["yocto-queue@0.1.0", "", {}, "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="],
|
|
160
|
-
}
|
|
161
|
-
}
|