vfsjs-test 1.0.1 → 1.0.2

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.
Files changed (4) hide show
  1. package/index.html +7 -48
  2. package/main.js +67 -0
  3. package/package.json +1 -1
  4. package/sw.js +34 -10
package/index.html CHANGED
@@ -2,61 +2,20 @@
2
2
  <html lang="en">
3
3
  <head>
4
4
  <meta charset="UTF-8">
5
- <title>Infrared GitHack VFS Engine</title>
6
-
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Infrared Engine Workspace</title>
7
+
7
8
  <link rel="stylesheet" href="live-theme.css">
8
9
  </head>
9
10
  <body style="background: #0f172a; color: #38bdf8; font-family: monospace; padding: 20px;">
10
11
 
11
- <h2>Infrared Native Network Pipeline</h2>
12
- <div id="status" style="background: #020617; border: 1px solid #334155; padding: 15px; height: 120px; color: #f1f5f9; line-height: 1.6;">
13
- > Initializing same-origin network worker...
12
+ <h2>Infrared VFS Operating Matrix</h2>
13
+ <div id="status" style="background: #020617; border: 1px solid #334155; padding: 15px; height: 180px; color: #f1f5f9; line-height: 1.6; overflow-y: auto;">
14
+ > Connecting decoupled operational layer...
14
15
  </div>
15
16
 
16
17
  <script src="index.js"></script>
17
18
 
18
- <script>
19
- async function bootEngine() {
20
- const display = document.getElementById('status');
21
-
22
- try {
23
- const registration = await navigator.serviceWorker.register('./sw.js', { scope: './' });
24
- display.innerHTML += "<br>> Service worker registered successfully.";
25
-
26
- if (!navigator.serviceWorker.controller) {
27
- display.innerHTML += "<br>> Activating worker routing link... (Please refresh if stuck)";
28
- await new Promise(r => navigator.serviceWorker.addEventListener('controllerchange', r, { once: true }));
29
- }
30
- display.innerHTML += "<br>> Link secured. Writing virtual assets to thread...";
31
-
32
- const encoder = new TextEncoder();
33
-
34
- // Match the name exactly to your tag above!
35
- navigator.serviceWorker.controller.postMessage({
36
- type: 'VFS_WRITE',
37
- filename: 'index.js',
38
- content: encoder.encode(`
39
- console.log("SUCCESS: Native index.js caught by VFS!");
40
- document.getElementById('status').innerHTML += "<br>> Virtual index.js execution confirmed.";
41
- `)
42
- });
43
-
44
- navigator.serviceWorker.controller.postMessage({
45
- type: 'VFS_WRITE',
46
- filename: 'live-theme.css',
47
- content: encoder.encode(`body { background: #011627 !important; color: #82aaff !important; }`)
48
- });
49
-
50
- await new Promise(r => setTimeout(r, 100));
51
- display.innerHTML += "<br>> Matrix deployment complete.";
52
-
53
- } catch (err) {
54
- display.innerHTML += `<br>><span style="color: #ef4444;"> Error: ${err.message}</span>`;
55
- console.error(err);
56
- }
57
- }
58
-
59
- bootEngine();
60
- </script>
19
+ <script src="main.js"></script>
61
20
  </body>
62
21
  </html>
package/main.js ADDED
@@ -0,0 +1,67 @@
1
+ // main.js - Decoupled Controller and Client API
2
+ const display = document.getElementById('status');
3
+
4
+ window.vfs = {
5
+ encoder: new TextEncoder(),
6
+
7
+ add(filename, contentString, customMime = null) {
8
+ if (!navigator.serviceWorker.controller) return false;
9
+
10
+ navigator.serviceWorker.controller.postMessage({
11
+ type: 'VFS_WRITE',
12
+ filename: filename,
13
+ content: this.encoder.encode(contentString),
14
+ mime: customMime
15
+ });
16
+ display.innerHTML += `<br>> VFS Added: <b>${filename}</b> ${customMime ? `[${customMime}]` : ''}`;
17
+ },
18
+
19
+ delete(filename) {
20
+ if (!navigator.serviceWorker.controller) return false;
21
+ navigator.serviceWorker.controller.postMessage({
22
+ type: 'VFS_DELETE',
23
+ filename: filename
24
+ });
25
+ display.innerHTML += `<br>> VFS Deleted: <span style="color: #ef4444;">${filename}</span>`;
26
+ },
27
+
28
+ clear() {
29
+ if (!navigator.serviceWorker.controller) return false;
30
+ navigator.serviceWorker.controller.postMessage({ type: 'VFS_CLEAR' });
31
+ display.innerHTML += `<br>><span style="color: #f59e0b;"> VFS Memory Completely Wiped.</span>`;
32
+ }
33
+ };
34
+
35
+ async function bootEngine() {
36
+ try {
37
+ const registration = await navigator.serviceWorker.register('./sw.js', { scope: './' });
38
+ display.innerHTML += "<br>> Service worker registered successfully.";
39
+
40
+ if (!navigator.serviceWorker.controller) {
41
+ display.innerHTML += "<br>> Activating worker routing link... (Please refresh)";
42
+ await new Promise(r => navigator.serviceWorker.addEventListener('controllerchange', r, { once: true }));
43
+ }
44
+ display.innerHTML += "<br>> Link secured. Executing transaction assertions...";
45
+
46
+ // Run Verification Loop
47
+ vfs.add('live-theme.css', `body { background: #070a13 !important; color: #22d3ee !important; }`);
48
+
49
+ vfs.add('index.js', `
50
+ console.log("VFS Execute: Active out of virtual memory pipeline!");
51
+ document.getElementById('status').innerHTML += "<br>> Virtual index.js routing validated.";
52
+ `, 'text/javascript');
53
+
54
+ // Verify Delete Works
55
+ vfs.add('trash.js', 'console.log("drop")');
56
+ vfs.delete('trash.js');
57
+
58
+ await new Promise(r => setTimeout(r, 100));
59
+ display.innerHTML += "<br>> Matrix deployment complete.";
60
+
61
+ } catch (err) {
62
+ display.innerHTML += `<br>><span style="color: #ef4444;"> Error: ${err.message}</span>`;
63
+ console.error(err);
64
+ }
65
+ }
66
+
67
+ bootEngine();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vfsjs-test",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "description": "",
5
5
  "main": "index.html",
6
6
  "scripts": {
package/sw.js CHANGED
@@ -1,6 +1,12 @@
1
+ // sw.js - Virtual Storage Matrix Kernel
2
+ const vfsStorage = new Map();
1
3
 
2
- const files = new Map();
3
- const defaultMimes = { 'js': 'text/javascript', 'css': 'text/css', 'html': 'text/html' };
4
+ const defaultMimes = {
5
+ 'js': 'text/javascript',
6
+ 'css': 'text/css',
7
+ 'html': 'text/html',
8
+ 'json': 'application/json'
9
+ };
4
10
 
5
11
  self.addEventListener('install', e => e.waitUntil(self.skipWaiting()));
6
12
  self.addEventListener('activate', e => e.waitUntil(self.clients.claim()));
@@ -9,20 +15,38 @@ self.addEventListener('fetch', (event) => {
9
15
  const url = new URL(event.request.url);
10
16
  const filename = url.pathname.split('/').pop().split('?')[0];
11
17
 
12
- // Intercept matching virtual files from local memory
13
- if (files.has(filename)) {
14
- const content = files.get(filename);
18
+ if (vfsStorage.has(filename)) {
19
+ const fileData = vfsStorage.get(filename);
15
20
  const ext = filename.split('.').pop().toLowerCase();
16
-
17
- event.respondWith(new Response(content, {
21
+ const contentType = fileData.mime || defaultMimes[ext] || 'application/octet-stream';
22
+
23
+ event.respondWith(new Response(fileData.content, {
18
24
  status: 200,
19
- headers: { 'Content-Type': defaultMimes[ext] || 'application/octet-stream' }
25
+ headers: {
26
+ 'Content-Type': contentType,
27
+ 'Access-Control-Allow-Origin': '*'
28
+ }
20
29
  }));
21
30
  }
22
31
  });
23
32
 
24
33
  self.addEventListener('message', (event) => {
25
- if (event.data && event.data.type === 'VFS_WRITE') {
26
- files.set(event.data.filename, event.data.content);
34
+ if (!event.data || !event.data.type) return;
35
+
36
+ switch (event.data.type) {
37
+ case 'VFS_WRITE':
38
+ vfsStorage.set(event.data.filename, {
39
+ content: event.data.content,
40
+ mime: event.data.mime || null
41
+ });
42
+ break;
43
+
44
+ case 'VFS_DELETE':
45
+ vfsStorage.delete(event.data.filename);
46
+ break;
47
+
48
+ case 'VFS_CLEAR':
49
+ vfsStorage.clear();
50
+ break;
27
51
  }
28
52
  });