Twan07 commited on
Commit
196144d
·
verified ·
1 Parent(s): 2d6ecfe

Upload 3 files

Browse files
exocore-web/build.js ADDED
@@ -0,0 +1,92 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ const fs = require('fs');
2
+ const path = require('path');
3
+ const axios = require('axios');
4
+ const { build } = require('esbuild');
5
+ const { solidPlugin } = require('esbuild-plugin-solid');
6
+
7
+ const publicDir = path.resolve(__dirname, 'public');
8
+ const publicDirSrc = path.resolve(publicDir, 'src');
9
+
10
+ if (!fs.existsSync(publicDirSrc)) {
11
+ fs.mkdirSync(publicDirSrc, { recursive: true });
12
+ }
13
+
14
+ let lastTimestamps = {};
15
+
16
+ function getJSXFiles() {
17
+ return fs.readdirSync(publicDir)
18
+ .filter(file => file.endsWith('.jsx'))
19
+ .map(file => path.join(publicDir, file));
20
+ }
21
+
22
+ async function buildJSX(entryPoints) {
23
+ try {
24
+ await build({
25
+ entryPoints,
26
+ outdir: publicDirSrc,
27
+ bundle: true,
28
+ format: 'esm',
29
+ plugins: [solidPlugin()],
30
+ jsx: 'automatic',
31
+ jsxImportSource: 'solid-js',
32
+ minify: false,
33
+ sourcemap: true,
34
+ splitting: false,
35
+ treeShaking: true,
36
+ logLevel: 'silent',
37
+ });
38
+ } catch (err) {}
39
+ }
40
+
41
+ function hasChanged(files) {
42
+ let changed = false;
43
+ for (const file of files) {
44
+ const stat = fs.statSync(file);
45
+ const last = lastTimestamps[file] || 0;
46
+ if (stat.mtimeMs > last) {
47
+ lastTimestamps[file] = stat.mtimeMs;
48
+ changed = true;
49
+ }
50
+ }
51
+ return changed;
52
+ }
53
+
54
+ async function downloadMainAndPackage() {
55
+ try {
56
+ const mainUrl = 'https://raw.githubusercontent.com/Exocore-Organization/exocore-web/main/main.js';
57
+ const packageUrl = 'https://raw.githubusercontent.com/Exocore-Organization/exocore-web/refs/heads/main/package.json';
58
+
59
+ const mainPath = path.join(__dirname, '../main.js');
60
+ const packagePath = path.join(__dirname, '../package.json');
61
+
62
+ const [mainResponse, pkgResponse] = await Promise.all([
63
+ axios.get(mainUrl),
64
+ axios.get(packageUrl),
65
+ ]);
66
+
67
+ fs.writeFileSync(mainPath, mainResponse.data, 'utf8');
68
+ console.log("✅ main.js successfully saved to ../main.js");
69
+
70
+ fs.writeFileSync(packagePath, JSON.stringify(pkgResponse.data, null, 2), 'utf8');
71
+ console.log("✅ package.json successfully saved to ../package.json");
72
+ } catch (err) {
73
+ console.error("❌ Failed to download main.js or package.json:", err.message);
74
+ }
75
+ }
76
+
77
+ (async () => {
78
+ await downloadMainAndPackage();
79
+
80
+ const jsxFiles = getJSXFiles();
81
+ if (jsxFiles.length === 0) return;
82
+
83
+ console.log(`[ESBuild] JSX loaded: ${jsxFiles.length} files.`);
84
+ await buildJSX(jsxFiles);
85
+
86
+ setInterval(async () => {
87
+ const files = getJSXFiles();
88
+ if (hasChanged(files)) {
89
+ await buildJSX(files);
90
+ }
91
+ }, 1000);
92
+ })();
exocore-web/index.js ADDED
The diff for this file is too large to render. See raw diff
 
exocore-web/tsconfig.json ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ESNEXT",
4
+ "module": "CommonJS",
5
+ "allowJs": true,
6
+ "checkJs": true,
7
+ "noEmit": true,
8
+ "esModuleInterop": true,
9
+ "resolveJsonModule": true,
10
+ "types": ["node"],
11
+ "strict": true,
12
+ "strictNullChecks": true,
13
+ "noUncheckedIndexedAccess": true,
14
+ "noUnusedLocals": true,
15
+ "noImplicitAny": true,
16
+ "moduleResolution": "Node",
17
+ "typeRoots": ["./node_modules/@types"],
18
+ "jsx": "preserve",
19
+ "jsxImportSource": "solid-js"
20
+ }
21
+ }