@knockdata/objectexplorer 0.1.0
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/app/assets/AudioConverterWorker.js +1 -0
- package/app/assets/WorkerParser.js +872 -0
- package/app/assets/esm-worker.js +1 -0
- package/app/assets/esm.js +1 -0
- package/app/assets/ffmpeg-core.js +16 -0
- package/app/assets/ffmpeg-core.wasm +0 -0
- package/app/assets/index.css +1 -0
- package/app/assets/index.js +1903 -0
- package/app/assets/search-worker.js +3 -0
- package/app/assets/wasm-worker.js +7800 -0
- package/app/audio/twinkle-twinkle-little-star.mid +0 -0
- package/app/codicon.ttf +0 -0
- package/app/img/128.png +0 -0
- package/app/img/16.png +0 -0
- package/app/img/192.png +0 -0
- package/app/img/256.png +0 -0
- package/app/img/32.png +0 -0
- package/app/img/512.png +0 -0
- package/app/img/64.png +0 -0
- package/app/img/hero.jpg +0 -0
- package/app/img/img.png +0 -0
- package/app/img/screenshot.png +0 -0
- package/app/index.html +50 -0
- package/app/seti.woff +0 -0
- package/app/seti.woff2 +0 -0
- package/app/sounds2/ac4.mp3 +0 -0
- package/app/sounds2/acrash.mp3 +0 -0
- package/app/sounds2/ahihat-foot.mp3 +0 -0
- package/app/sounds2/ahihat.mp3 +0 -0
- package/app/sounds2/akick.mp3 +0 -0
- package/app/sounds2/aopenhat.mp3 +0 -0
- package/app/sounds2/aride.mp3 +0 -0
- package/app/sounds2/asnare-stick.mp3 +0 -0
- package/app/sounds2/asnare.mp3 +0 -0
- package/app/sounds2/atom1.mp3 +0 -0
- package/app/sounds2/atom2.mp3 +0 -0
- package/app/sounds2/atom3.mp3 +0 -0
- package/cli.js +76 -0
- package/demo/.meta.bin +0 -0
- package/demo/README.md +5 -0
- package/demo/employee-data.sav +0 -0
- package/demo/nl_train_stations.parquet +0 -0
- package/demo/synthetic-survival.xpt +0 -0
- package/package.json +28 -0
- package/server/WebServer.mjs +8732 -0
- package/server/sqlite.wasm +0 -0
|
Binary file
|
package/app/codicon.ttf
ADDED
|
Binary file
|
package/app/img/128.png
ADDED
|
Binary file
|
package/app/img/16.png
ADDED
|
Binary file
|
package/app/img/192.png
ADDED
|
Binary file
|
package/app/img/256.png
ADDED
|
Binary file
|
package/app/img/32.png
ADDED
|
Binary file
|
package/app/img/512.png
ADDED
|
Binary file
|
package/app/img/64.png
ADDED
|
Binary file
|
package/app/img/hero.jpg
ADDED
|
Binary file
|
package/app/img/img.png
ADDED
|
Binary file
|
|
Binary file
|
package/app/index.html
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<link href="/img/64.png" rel="icon" type="image/png" />
|
|
7
|
+
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
|
|
8
|
+
<meta name="color-scheme" content="light dark" />
|
|
9
|
+
<title>ObjectExplorer — The VS Code for Cloud Storage</title>
|
|
10
|
+
<style>
|
|
11
|
+
/* paint the window background before any stylesheet loads, following the system setting,
|
|
12
|
+
so startup does not flash white before switching to the app theme */
|
|
13
|
+
:root {
|
|
14
|
+
color-scheme: light dark;
|
|
15
|
+
background: #1f1f1f;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
@media (prefers-color-scheme: light) {
|
|
19
|
+
:root {
|
|
20
|
+
background: #ffffff;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@font-face {
|
|
25
|
+
font-family: 'codicon';
|
|
26
|
+
src: url('/codicon.ttf') format('truetype');
|
|
27
|
+
font-weight: normal;
|
|
28
|
+
font-style: normal;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@font-face {
|
|
32
|
+
font-family: 'seti';
|
|
33
|
+
src: url('/seti.woff') format('woff');
|
|
34
|
+
font-weight: normal;
|
|
35
|
+
font-style: normal;
|
|
36
|
+
}
|
|
37
|
+
</style>
|
|
38
|
+
<script type="module" crossorigin src="/assets/index.js"></script>
|
|
39
|
+
<link rel="stylesheet" crossorigin href="/assets/index.css">
|
|
40
|
+
</head>
|
|
41
|
+
|
|
42
|
+
<body style="width: 100vw; height: 100vh; margin: 0; padding: 0; overflow: hidden;" data-theme='dark'
|
|
43
|
+
class="theme-dark">
|
|
44
|
+
<!-- <svg id="offscreen" style="position: absolute; left: -100%; top: 100%;"></svg> -->
|
|
45
|
+
<div id="app" style="flex-grow: 0"></div>
|
|
46
|
+
<svg id="offscreen" style="position: fixed; left: -100%; top: 100%;"></svg>
|
|
47
|
+
<div id="fixed" style="position: fixed;"></div>
|
|
48
|
+
</body>
|
|
49
|
+
|
|
50
|
+
</html>
|
package/app/seti.woff
ADDED
|
Binary file
|
package/app/seti.woff2
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/cli.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// npx objectexplorer [folder] [port=NNNN]
|
|
3
|
+
// Serves the Explorer app locally from the self-contained bundle, then opens the
|
|
4
|
+
// browser. Full local access: the local filesystem folder provider and cloud
|
|
5
|
+
// connectors are enabled (publicServer is left off, matching the desktop app).
|
|
6
|
+
import path, { resolve } from "node:path"
|
|
7
|
+
import os from "node:os"
|
|
8
|
+
import fs from "node:fs"
|
|
9
|
+
import { fileURLToPath } from "node:url"
|
|
10
|
+
import { spawn } from "node:child_process"
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
const positional = []
|
|
14
|
+
const args = {}
|
|
15
|
+
for (const arg of process.argv.slice(2)) {
|
|
16
|
+
if (arg.includes("=")) {
|
|
17
|
+
const [key, value] = arg.split("=")
|
|
18
|
+
args[key] = value
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
positional.push(arg)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
const port = args.port ? +args.port : 9421
|
|
26
|
+
const mode = args.mode ?? 'prod'
|
|
27
|
+
|
|
28
|
+
const here = path.dirname(fileURLToPath(import.meta.url))
|
|
29
|
+
const bundleDir = path.join(here, "server")
|
|
30
|
+
const appDir = path.join(here, "app")
|
|
31
|
+
|
|
32
|
+
// the demo dataset is its own package (objectexplorer-demo) and is not installed here by
|
|
33
|
+
// default; without it the backend proxies demo requests to objectexplorer.com
|
|
34
|
+
const demoDir = path.join(here, "demo")
|
|
35
|
+
let demoPath = null
|
|
36
|
+
if (fs.existsSync(demoDir)) {
|
|
37
|
+
demoPath = demoDir
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const startFolder = positional[0] ? path.resolve(positional[0]) : process.cwd()
|
|
41
|
+
const userData = path.join(os.homedir(), ".objectexplorer")
|
|
42
|
+
fs.mkdirSync(userData, { recursive: true })
|
|
43
|
+
|
|
44
|
+
// clicking "add folder" in the UI has no native dialog here, so return the folder
|
|
45
|
+
// given on the command line (or the current directory) to make it browsable.
|
|
46
|
+
const openFolder = async () => startFolder
|
|
47
|
+
|
|
48
|
+
const serverPath = mode === "dev" ? "../server/WebServer.js" : path.join(bundleDir, "WebServer.mjs")
|
|
49
|
+
|
|
50
|
+
const { WebServer } = await import(serverPath)
|
|
51
|
+
const server = await WebServer({
|
|
52
|
+
mode,
|
|
53
|
+
appDir,
|
|
54
|
+
publicDir: appDir,
|
|
55
|
+
demoPath,
|
|
56
|
+
userData,
|
|
57
|
+
openFolder,
|
|
58
|
+
port,
|
|
59
|
+
portRetry: true,
|
|
60
|
+
})
|
|
61
|
+
const listenPort = await server.start()
|
|
62
|
+
const url = `http://localhost:${listenPort}`
|
|
63
|
+
console.log(`ObjectExplorer running at ${url}`)
|
|
64
|
+
openBrowser(url)
|
|
65
|
+
|
|
66
|
+
function openBrowser(target) {
|
|
67
|
+
if (process.platform === "darwin") {
|
|
68
|
+
spawn("open", [target], { stdio: "ignore", detached: true }).unref()
|
|
69
|
+
}
|
|
70
|
+
else if (process.platform === "win32") {
|
|
71
|
+
spawn("cmd", ["/c", "start", "", target], { stdio: "ignore", detached: true }).unref()
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
spawn("xdg-open", [target], { stdio: "ignore", detached: true }).unref()
|
|
75
|
+
}
|
|
76
|
+
}
|
package/demo/.meta.bin
ADDED
|
Binary file
|
package/demo/README.md
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# A demo package for holding example file for [ObjectExplorer](ObjectExplorer.com)
|
|
2
|
+
|
|
3
|
+
- nl_train_stations.parquet, railway traffic in the netherlands in parquet format, created from this [blog](https://duckdb.org/2024/05/31/analyzing-railway-traffic-in-the-netherlands)
|
|
4
|
+
- synthetic-survival.xpt
|
|
5
|
+
- employee-data.sav
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/package.json
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@knockdata/objectexplorer",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "The VSCode for Cloud Storage — Explore, Analyze, Search your cloud storage locally with single click",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "ISC",
|
|
7
|
+
"bin": {
|
|
8
|
+
"objectexplorer": "./cli.js"
|
|
9
|
+
},
|
|
10
|
+
"main": "./server/WebServer.mjs",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": "./server/WebServer.mjs",
|
|
13
|
+
"./cli": "./cli.js",
|
|
14
|
+
"./package.json": "./package.json"
|
|
15
|
+
},
|
|
16
|
+
"files": [
|
|
17
|
+
"cli.js",
|
|
18
|
+
"app/**",
|
|
19
|
+
"server/**",
|
|
20
|
+
"demo/**",
|
|
21
|
+
"!**/.*",
|
|
22
|
+
"!**/*.js.map",
|
|
23
|
+
"demo/.meta.bin"
|
|
24
|
+
],
|
|
25
|
+
"engines": {
|
|
26
|
+
"node": ">=20"
|
|
27
|
+
}
|
|
28
|
+
}
|