@modularizer/plat 0.8.0 → 0.10.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/README.md +75 -0
- package/dist/client-entry.d.ts +1 -0
- package/dist/client-entry.d.ts.map +1 -1
- package/dist/client-entry.js +1 -0
- package/dist/client-entry.js.map +1 -1
- package/dist/client-server-entry.d.ts +5 -0
- package/dist/client-server-entry.d.ts.map +1 -1
- package/dist/client-server-entry.js +5 -0
- package/dist/client-server-entry.js.map +1 -1
- package/dist/client-side-python/runtime.d.ts +1 -0
- package/dist/client-side-python/runtime.d.ts.map +1 -1
- package/dist/client-side-python/runtime.js +18 -1
- package/dist/client-side-python/runtime.js.map +1 -1
- package/dist/client-side-server/channel.d.ts +1 -1
- package/dist/client-side-server/channel.d.ts.map +1 -1
- package/dist/client-side-server/channel.js +113 -4
- package/dist/client-side-server/channel.js.map +1 -1
- package/dist/client-side-server/identity.d.ts +80 -17
- package/dist/client-side-server/identity.d.ts.map +1 -1
- package/dist/client-side-server/identity.js +212 -31
- package/dist/client-side-server/identity.js.map +1 -1
- package/dist/client-side-server/mqtt-webrtc.d.ts +38 -6
- package/dist/client-side-server/mqtt-webrtc.d.ts.map +1 -1
- package/dist/client-side-server/mqtt-webrtc.js +843 -68
- package/dist/client-side-server/mqtt-webrtc.js.map +1 -1
- package/dist/client-side-server/plat-bridge.d.ts +40 -0
- package/dist/client-side-server/plat-bridge.d.ts.map +1 -0
- package/dist/client-side-server/plat-bridge.js +876 -0
- package/dist/client-side-server/plat-bridge.js.map +1 -0
- package/dist/client-side-server/plat-fetch.d.ts +33 -0
- package/dist/client-side-server/plat-fetch.d.ts.map +1 -0
- package/dist/client-side-server/plat-fetch.js +199 -0
- package/dist/client-side-server/plat-fetch.js.map +1 -0
- package/dist/client-side-server/plat-service-worker-client.d.ts +30 -0
- package/dist/client-side-server/plat-service-worker-client.d.ts.map +1 -0
- package/dist/client-side-server/plat-service-worker-client.js +141 -0
- package/dist/client-side-server/plat-service-worker-client.js.map +1 -0
- package/dist/client-side-server/plat-service-worker.d.ts +35 -0
- package/dist/client-side-server/plat-service-worker.d.ts.map +1 -0
- package/dist/client-side-server/plat-service-worker.js +292 -0
- package/dist/client-side-server/plat-service-worker.js.map +1 -0
- package/dist/client-side-server/protocol.d.ts +90 -3
- package/dist/client-side-server/protocol.d.ts.map +1 -1
- package/dist/client-side-server/protocol.js +110 -0
- package/dist/client-side-server/protocol.js.map +1 -1
- package/dist/client-side-server/runtime.d.ts +9 -0
- package/dist/client-side-server/runtime.d.ts.map +1 -1
- package/dist/client-side-server/runtime.js +44 -13
- package/dist/client-side-server/runtime.js.map +1 -1
- package/dist/client-side-server/secure-crypto.d.ts +35 -0
- package/dist/client-side-server/secure-crypto.d.ts.map +1 -0
- package/dist/client-side-server/secure-crypto.js +171 -0
- package/dist/client-side-server/secure-crypto.js.map +1 -0
- package/dist/client-side-server/server.d.ts +17 -0
- package/dist/client-side-server/server.d.ts.map +1 -1
- package/dist/client-side-server/server.js +111 -7
- package/dist/client-side-server/server.js.map +1 -1
- package/dist/client-side-server/signaling.d.ts +1 -0
- package/dist/client-side-server/signaling.d.ts.map +1 -1
- package/dist/client-side-server/signaling.js.map +1 -1
- package/dist/generated/python-browser-sources.js +4 -4
- package/dist/generated/python-browser-sources.js.map +1 -1
- package/dist/server/authority-server.d.ts +4 -4
- package/dist/server/authority-server.d.ts.map +1 -1
- package/dist/server/authority-server.js +23 -21
- package/dist/server/authority-server.js.map +1 -1
- package/dist/server/core.d.ts +8 -0
- package/dist/server/core.d.ts.map +1 -1
- package/dist/server/core.js +21 -0
- package/dist/server/core.js.map +1 -1
- package/dist/server/server.d.ts +4 -0
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +81 -2
- package/dist/server/server.js.map +1 -1
- package/dist/static/file-response.d.ts +42 -0
- package/dist/static/file-response.d.ts.map +1 -0
- package/dist/static/file-response.js +57 -0
- package/dist/static/file-response.js.map +1 -0
- package/dist/static/glob-match.d.ts +16 -0
- package/dist/static/glob-match.d.ts.map +1 -0
- package/dist/static/glob-match.js +48 -0
- package/dist/static/glob-match.js.map +1 -0
- package/dist/static/index.d.ts +9 -0
- package/dist/static/index.d.ts.map +1 -0
- package/dist/static/index.js +6 -0
- package/dist/static/index.js.map +1 -0
- package/dist/static/mime-types.d.ts +6 -0
- package/dist/static/mime-types.d.ts.map +1 -0
- package/dist/static/mime-types.js +74 -0
- package/dist/static/mime-types.js.map +1 -0
- package/dist/static/static-folder.d.ts +69 -0
- package/dist/static/static-folder.d.ts.map +1 -0
- package/dist/static/static-folder.js +206 -0
- package/dist/static/static-folder.js.map +1 -0
- package/dist/static/virtual-file-system.d.ts +45 -0
- package/dist/static/virtual-file-system.d.ts.map +1 -0
- package/dist/static/virtual-file-system.js +100 -0
- package/dist/static/virtual-file-system.js.map +1 -0
- package/package.json +5 -1
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a value implements the VirtualFileSystem interface.
|
|
3
|
+
*/
|
|
4
|
+
export function isVirtualFileSystem(value) {
|
|
5
|
+
return (value != null &&
|
|
6
|
+
typeof value === 'object' &&
|
|
7
|
+
'list' in value && typeof value.list === 'function' &&
|
|
8
|
+
'read' in value && typeof value.read === 'function');
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* VFS backed by Node.js filesystem. Used when StaticFolder is given a directory path string.
|
|
12
|
+
*/
|
|
13
|
+
export class NodeFileSystem {
|
|
14
|
+
root;
|
|
15
|
+
constructor(directory) {
|
|
16
|
+
// Resolve to absolute path at construction time
|
|
17
|
+
const path = require('node:path');
|
|
18
|
+
this.root = path.resolve(directory);
|
|
19
|
+
}
|
|
20
|
+
resolveSafe(subPath) {
|
|
21
|
+
const path = require('node:path');
|
|
22
|
+
// Reject paths with .. segments to prevent directory traversal
|
|
23
|
+
const normalized = path.normalize(subPath);
|
|
24
|
+
if (normalized.startsWith('..') || path.isAbsolute(normalized)) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const resolved = path.resolve(this.root, normalized);
|
|
28
|
+
// Verify the resolved path is still within root
|
|
29
|
+
if (!resolved.startsWith(this.root + path.sep) && resolved !== this.root) {
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
return resolved;
|
|
33
|
+
}
|
|
34
|
+
async list(subPath) {
|
|
35
|
+
const fs = require('node:fs/promises');
|
|
36
|
+
const path = require('node:path');
|
|
37
|
+
const dir = subPath ? this.resolveSafe(subPath) : this.root;
|
|
38
|
+
if (!dir)
|
|
39
|
+
return [];
|
|
40
|
+
try {
|
|
41
|
+
const entries = await fs.readdir(dir, { withFileTypes: true });
|
|
42
|
+
return entries.map((e) => e.isDirectory() ? e.name + '/' : e.name);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return [];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
async read(subPath) {
|
|
49
|
+
const fs = require('node:fs/promises');
|
|
50
|
+
const resolved = this.resolveSafe(subPath);
|
|
51
|
+
if (!resolved)
|
|
52
|
+
return null;
|
|
53
|
+
try {
|
|
54
|
+
return await fs.readFile(resolved);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* VFS backed by an in-memory file map.
|
|
63
|
+
* Keys are paths like 'index.html' or 'css/style.css'.
|
|
64
|
+
* Values can be raw content or objects with a read() method for lazy evaluation.
|
|
65
|
+
*/
|
|
66
|
+
export class MemoryFileSystem {
|
|
67
|
+
files;
|
|
68
|
+
constructor(files) {
|
|
69
|
+
this.files = files;
|
|
70
|
+
}
|
|
71
|
+
list(subPath) {
|
|
72
|
+
const prefix = subPath ? (subPath.endsWith('/') ? subPath : subPath + '/') : '';
|
|
73
|
+
const seen = new Set();
|
|
74
|
+
for (const key of Object.keys(this.files)) {
|
|
75
|
+
if (!key.startsWith(prefix))
|
|
76
|
+
continue;
|
|
77
|
+
const rest = key.slice(prefix.length);
|
|
78
|
+
const slashIndex = rest.indexOf('/');
|
|
79
|
+
if (slashIndex === -1) {
|
|
80
|
+
// Direct file in this directory
|
|
81
|
+
seen.add(rest);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// Subdirectory
|
|
85
|
+
seen.add(rest.slice(0, slashIndex) + '/');
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return Array.from(seen);
|
|
89
|
+
}
|
|
90
|
+
async read(subPath) {
|
|
91
|
+
const entry = this.files[subPath];
|
|
92
|
+
if (entry === undefined)
|
|
93
|
+
return null;
|
|
94
|
+
if (typeof entry === 'string' || entry instanceof Uint8Array)
|
|
95
|
+
return entry;
|
|
96
|
+
// Lazy read() object
|
|
97
|
+
return entry.read();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=virtual-file-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtual-file-system.js","sourceRoot":"","sources":["../../src/static/virtual-file-system.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@modularizer/plat",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "Protocol and Language Agnostic Tooling Yielding Universal Semantics",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": {
|
|
@@ -38,6 +38,10 @@
|
|
|
38
38
|
"./python-browser": {
|
|
39
39
|
"import": "./dist/python-browser-entry.js",
|
|
40
40
|
"types": "./dist/python-browser-entry.d.ts"
|
|
41
|
+
},
|
|
42
|
+
"./static": {
|
|
43
|
+
"import": "./dist/static/index.js",
|
|
44
|
+
"types": "./dist/static/index.d.ts"
|
|
41
45
|
}
|
|
42
46
|
},
|
|
43
47
|
"files": [
|