@graview/guest 0.1.7 → 0.1.9
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 +86 -0
- package/dist/build.d.ts +43 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +117 -0
- package/dist/build.js.map +1 -0
- package/dist/channel.d.ts +51 -0
- package/dist/channel.d.ts.map +1 -0
- package/dist/channel.js +105 -0
- package/dist/channel.js.map +1 -0
- package/dist/guest.d.ts +2 -22
- package/dist/guest.d.ts.map +1 -1
- package/dist/guest.js +8 -89
- package/dist/guest.js.map +1 -1
- package/dist/host/frame.d.ts.map +1 -1
- package/dist/host/frame.js +1 -6
- package/dist/host/frame.js.map +1 -1
- package/dist/host/index.d.ts +3 -0
- package/dist/host/index.d.ts.map +1 -1
- package/dist/host/index.js.map +1 -1
- package/dist/host/kit.d.ts +85 -0
- package/dist/host/kit.d.ts.map +1 -0
- package/dist/host/kit.js +344 -0
- package/dist/host/kit.js.map +1 -0
- package/dist/host/nonce.d.ts +3 -0
- package/dist/host/nonce.d.ts.map +1 -0
- package/dist/host/nonce.js +7 -0
- package/dist/host/nonce.js.map +1 -0
- package/dist/host/react.d.ts +16 -5
- package/dist/host/react.d.ts.map +1 -1
- package/dist/host/react.js +31 -3
- package/dist/host/react.js.map +1 -1
- package/dist/host/session.d.ts +6 -0
- package/dist/host/session.d.ts.map +1 -1
- package/dist/host/session.js +4 -0
- package/dist/host/session.js.map +1 -1
- package/dist/host/worker.d.ts +96 -0
- package/dist/host/worker.d.ts.map +1 -0
- package/dist/host/worker.js +195 -0
- package/dist/host/worker.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/kit.d.ts +202 -0
- package/dist/kit.d.ts.map +1 -0
- package/dist/kit.js +69 -0
- package/dist/kit.js.map +1 -0
- package/dist/protocol.d.ts +48 -1
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +20 -0
- package/dist/protocol.js.map +1 -1
- package/dist/worker/elements.d.ts +11 -0
- package/dist/worker/elements.d.ts.map +1 -0
- package/dist/worker/elements.js +28 -0
- package/dist/worker/elements.js.map +1 -0
- package/dist/worker/harden.d.ts +39 -0
- package/dist/worker/harden.d.ts.map +1 -0
- package/dist/worker/harden.js +175 -0
- package/dist/worker/harden.js.map +1 -0
- package/dist/worker/index.d.ts +32 -0
- package/dist/worker/index.d.ts.map +1 -0
- package/dist/worker/index.js +92 -0
- package/dist/worker/index.js.map +1 -0
- package/dist/worker/listeners.d.ts +19 -0
- package/dist/worker/listeners.d.ts.map +1 -0
- package/dist/worker/listeners.js +157 -0
- package/dist/worker/listeners.js.map +1 -0
- package/dist/worker/natives.d.ts +7 -0
- package/dist/worker/natives.d.ts.map +1 -0
- package/dist/worker/natives.js +12 -0
- package/dist/worker/natives.js.map +1 -0
- package/package.json +30 -7
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type Listener = (...args: unknown[]) => unknown;
|
|
2
|
+
/** A record as it goes to the host: plain data, each listener an id. */
|
|
3
|
+
export type Plain = string | number | boolean | null | undefined | {
|
|
4
|
+
readonly listener: number;
|
|
5
|
+
} | readonly Plain[] | {
|
|
6
|
+
readonly [key: string]: Plain;
|
|
7
|
+
};
|
|
8
|
+
export interface ListenerLedger {
|
|
9
|
+
/** One batch of Remote DOM mutation records, as plain data for the host; what left the tree is let go. */
|
|
10
|
+
encode(records: readonly unknown[]): Plain[];
|
|
11
|
+
/** The listener an id names, while what it was on is drawn. */
|
|
12
|
+
listener(id: number): Listener | undefined;
|
|
13
|
+
/** How many listener ids are held. */
|
|
14
|
+
readonly listening: number;
|
|
15
|
+
/** How many nodes the host has drawn, as the runtime knows it. */
|
|
16
|
+
readonly nodes: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function createListenerLedger(): ListenerLedger;
|
|
19
|
+
//# sourceMappingURL=listeners.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listeners.d.ts","sourceRoot":"","sources":["../../src/worker/listeners.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;AAEvD,wEAAwE;AACxE,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG;IAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,KAAK,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,GAAG,KAAK,CAAA;CAAE,CAAC;AAOxJ,MAAM,WAAW,cAAc;IAC7B,0GAA0G;IAC1G,MAAM,CAAC,OAAO,EAAE,SAAS,OAAO,EAAE,GAAG,KAAK,EAAE,CAAC;IAC7C,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,sCAAsC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,kEAAkE;IAClE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAgBD,wBAAgB,oBAAoB,IAAI,cAAc,CAwGrD"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* A LISTENER CROSSES AS AN ID, AND IS LET GO (FR-68).
|
|
3
|
+
*
|
|
4
|
+
* A function cannot be cloned into a message, so each listener a worker
|
|
5
|
+
* guest puts on a kit element goes to the host as `{ listener: id }`, and
|
|
6
|
+
* the host hands the id back when the viewer raises the event. Remote DOM
|
|
7
|
+
* makes one function per element and event, so a view that keeps adding
|
|
8
|
+
* and removing elements would hold every one of them, and every element
|
|
9
|
+
* they close over, for as long as the worker lives — and a press already
|
|
10
|
+
* in flight when an element went would still reach it.
|
|
11
|
+
*
|
|
12
|
+
* So the runtime keeps, beside the records it sends, the outline of what
|
|
13
|
+
* the host has drawn: each node's children and the listener ids on it. A
|
|
14
|
+
* node that leaves the tree — removed, inside a removed subtree, or
|
|
15
|
+
* replaced — and a listener taken away or changed give their ids back, and
|
|
16
|
+
* an id given back reaches nothing. Ids only count up, so one never names
|
|
17
|
+
* a second listener.
|
|
18
|
+
*/
|
|
19
|
+
/** Remote DOM's record format (`@remote-dom/core` constants, held to these by a test). */
|
|
20
|
+
const INSERT_CHILD = 0;
|
|
21
|
+
const REMOVE_CHILD = 1;
|
|
22
|
+
const UPDATE_PROPERTY = 3;
|
|
23
|
+
const EVENT_LISTENER = 3;
|
|
24
|
+
const ROOT_ID = "~";
|
|
25
|
+
const isRecord = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
26
|
+
/**
|
|
27
|
+
* Plain data, for anything but a listener's place: a function anywhere else
|
|
28
|
+
* is no value the kit declares, and goes as nothing rather than as an id
|
|
29
|
+
* nobody would ever let go.
|
|
30
|
+
*/
|
|
31
|
+
const plain = (value, depth = 0) => {
|
|
32
|
+
if (value === null || typeof value === "string" || typeof value === "number" || typeof value === "boolean" || value === undefined)
|
|
33
|
+
return value;
|
|
34
|
+
if (depth > 64 || typeof value !== "object")
|
|
35
|
+
return undefined;
|
|
36
|
+
if (Array.isArray(value))
|
|
37
|
+
return value.map((one) => plain(one, depth + 1));
|
|
38
|
+
return Object.fromEntries(Object.entries(value).map(([key, one]) => [key, plain(one, depth + 1)]));
|
|
39
|
+
};
|
|
40
|
+
export function createListenerLedger() {
|
|
41
|
+
const held = new Map();
|
|
42
|
+
const ids = new Map();
|
|
43
|
+
const outline = new Map([[ROOT_ID, { children: [], listeners: new Map() }]]);
|
|
44
|
+
let next = 0;
|
|
45
|
+
const take = (listener) => {
|
|
46
|
+
let id = ids.get(listener);
|
|
47
|
+
if (id === undefined) {
|
|
48
|
+
id = next += 1;
|
|
49
|
+
ids.set(listener, id);
|
|
50
|
+
held.set(id, { listener, count: 0 });
|
|
51
|
+
}
|
|
52
|
+
held.get(id).count += 1;
|
|
53
|
+
return id;
|
|
54
|
+
};
|
|
55
|
+
const give = (id) => {
|
|
56
|
+
const one = held.get(id);
|
|
57
|
+
if (!one)
|
|
58
|
+
return;
|
|
59
|
+
one.count -= 1;
|
|
60
|
+
if (one.count > 0)
|
|
61
|
+
return;
|
|
62
|
+
held.delete(id);
|
|
63
|
+
ids.delete(one.listener);
|
|
64
|
+
};
|
|
65
|
+
const forget = (id) => {
|
|
66
|
+
const node = outline.get(id);
|
|
67
|
+
if (!node)
|
|
68
|
+
return;
|
|
69
|
+
outline.delete(id);
|
|
70
|
+
for (const listener of node.listeners.values())
|
|
71
|
+
give(listener);
|
|
72
|
+
for (const child of node.children)
|
|
73
|
+
forget(child);
|
|
74
|
+
};
|
|
75
|
+
/** A serialized node, kept in the outline when its parent is, with its listeners as ids. */
|
|
76
|
+
const node = (raw, kept, depth = 0) => {
|
|
77
|
+
if (!isRecord(raw) || depth > 64)
|
|
78
|
+
return plain(raw);
|
|
79
|
+
const id = typeof raw["id"] === "string" ? raw["id"] : undefined;
|
|
80
|
+
const keep = kept && id !== undefined && id !== ROOT_ID;
|
|
81
|
+
if (keep)
|
|
82
|
+
forget(id);
|
|
83
|
+
const mine = { children: [], listeners: new Map() };
|
|
84
|
+
if (keep)
|
|
85
|
+
outline.set(id, mine);
|
|
86
|
+
const out = {};
|
|
87
|
+
for (const [key, value] of Object.entries(raw)) {
|
|
88
|
+
if (key === "children" && Array.isArray(value)) {
|
|
89
|
+
out[key] = value.map((child) => {
|
|
90
|
+
const drawn = node(child, keep, depth + 1);
|
|
91
|
+
if (keep && isRecord(child) && typeof child["id"] === "string")
|
|
92
|
+
mine.children.push(child["id"]);
|
|
93
|
+
return drawn;
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
else if (key === "eventListeners" && isRecord(value)) {
|
|
97
|
+
out[key] = Object.fromEntries(Object.entries(value).map(([event, listener]) => {
|
|
98
|
+
if (typeof listener !== "function" || !keep)
|
|
99
|
+
return [event, undefined];
|
|
100
|
+
const taken = take(listener);
|
|
101
|
+
mine.listeners.set(event, taken);
|
|
102
|
+
return [event, { listener: taken }];
|
|
103
|
+
}));
|
|
104
|
+
}
|
|
105
|
+
else
|
|
106
|
+
out[key] = plain(value, depth + 1);
|
|
107
|
+
}
|
|
108
|
+
return out;
|
|
109
|
+
};
|
|
110
|
+
const one = (record) => {
|
|
111
|
+
if (!Array.isArray(record))
|
|
112
|
+
return plain(record);
|
|
113
|
+
const [type, id] = record;
|
|
114
|
+
const at = typeof id === "string" ? outline.get(id) : undefined;
|
|
115
|
+
if (type === INSERT_CHILD) {
|
|
116
|
+
const drawn = node(record[2], at !== undefined);
|
|
117
|
+
const child = isRecord(record[2]) ? record[2]["id"] : undefined;
|
|
118
|
+
if (at && typeof child === "string" && outline.has(child)) {
|
|
119
|
+
const index = Number(record[3]);
|
|
120
|
+
at.children.splice(Number.isInteger(index) && index >= 0 && index <= at.children.length ? index : at.children.length, 0, child);
|
|
121
|
+
}
|
|
122
|
+
return [type, plain(id), drawn, plain(record[3])];
|
|
123
|
+
}
|
|
124
|
+
if (type === REMOVE_CHILD) {
|
|
125
|
+
const index = Number(record[2]);
|
|
126
|
+
if (at && Number.isInteger(index) && index >= 0 && index < at.children.length)
|
|
127
|
+
forget(at.children.splice(index, 1)[0]);
|
|
128
|
+
return plain(record);
|
|
129
|
+
}
|
|
130
|
+
if (type === UPDATE_PROPERTY && record[4] === EVENT_LISTENER) {
|
|
131
|
+
const name = String(record[2]);
|
|
132
|
+
const listener = record[3];
|
|
133
|
+
/* Take the new one before giving back the old, so the same function keeps its id. */
|
|
134
|
+
const taken = at && typeof listener === "function" ? take(listener) : undefined;
|
|
135
|
+
const before = at?.listeners.get(name);
|
|
136
|
+
if (before !== undefined)
|
|
137
|
+
give(before);
|
|
138
|
+
if (taken === undefined)
|
|
139
|
+
at?.listeners.delete(name);
|
|
140
|
+
else
|
|
141
|
+
at.listeners.set(name, taken);
|
|
142
|
+
return [type, plain(id), name, taken === undefined ? undefined : { listener: taken }, EVENT_LISTENER];
|
|
143
|
+
}
|
|
144
|
+
return plain(record);
|
|
145
|
+
};
|
|
146
|
+
return {
|
|
147
|
+
encode: (records) => records.map(one),
|
|
148
|
+
listener: (id) => held.get(id)?.listener,
|
|
149
|
+
get listening() {
|
|
150
|
+
return held.size;
|
|
151
|
+
},
|
|
152
|
+
get nodes() {
|
|
153
|
+
return outline.size - 1;
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=listeners.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listeners.js","sourceRoot":"","sources":["../../src/worker/listeners.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const natives: {
|
|
2
|
+
listen: (heard: (event: MessageEvent) => void) => void;
|
|
3
|
+
unlisten: (heard: (event: MessageEvent) => void) => void;
|
|
4
|
+
post: (message: unknown) => void;
|
|
5
|
+
microtask: (task: () => void) => void;
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=natives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"natives.d.ts","sourceRoot":"","sources":["../../src/worker/natives.ts"],"names":[],"mappings":"AAmBA,eAAO,MAAM,OAAO;oBACF,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;sBAC3B,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;oBAC/B,OAAO;sBACL,MAAM,IAAI;CAC7B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
const scope = globalThis;
|
|
2
|
+
const add = scope.addEventListener;
|
|
3
|
+
const remove = scope.removeEventListener;
|
|
4
|
+
const post = scope.postMessage;
|
|
5
|
+
const microtask = globalThis.queueMicrotask;
|
|
6
|
+
export const natives = {
|
|
7
|
+
listen: (heard) => add.call(scope, "message", heard),
|
|
8
|
+
unlisten: (heard) => remove.call(scope, "message", heard),
|
|
9
|
+
post: (message) => post.call(scope, message),
|
|
10
|
+
microtask: (task) => microtask.call(globalThis, task),
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=natives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"natives.js","sourceRoot":"","sources":["../../src/worker/natives.ts"],"names":[],"mappings":"AAaA,MAAM,KAAK,GAAG,UAAoC,CAAC;AACnD,MAAM,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC;AACnC,MAAM,MAAM,GAAG,KAAK,CAAC,mBAAmB,CAAC;AACzC,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;AAC/B,MAAM,SAAS,GAAG,UAAU,CAAC,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,MAAM,EAAE,CAAC,KAAoC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;IACnF,QAAQ,EAAE,CAAC,KAAoC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;IACxF,IAAI,EAAE,CAAC,OAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC;IACrD,SAAS,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC;CAClE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@graview/guest",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "Guest views: somebody else's React or plain script in a sandboxed frame, shown only what the viewer may see, able only to ask for acts the viewer's seat then applies.",
|
|
5
|
+
"description": "Guest views: somebody else's React or plain script in a sandboxed frame, or a hardened classic worker drawing a component kit, shown only what the viewer may see, able only to ask for acts the viewer's seat then applies.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"graview",
|
|
8
8
|
"context-graph",
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
"interface",
|
|
11
11
|
"iframe",
|
|
12
12
|
"sandbox",
|
|
13
|
-
"guest-view"
|
|
13
|
+
"guest-view",
|
|
14
|
+
"web-worker",
|
|
15
|
+
"remote-dom"
|
|
14
16
|
],
|
|
15
17
|
"main": "./dist/index.js",
|
|
16
18
|
"types": "./dist/index.d.ts",
|
|
@@ -26,25 +28,46 @@
|
|
|
26
28
|
"./host": {
|
|
27
29
|
"types": "./dist/host/index.d.ts",
|
|
28
30
|
"default": "./dist/host/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./host/worker": {
|
|
33
|
+
"types": "./dist/host/worker.d.ts",
|
|
34
|
+
"default": "./dist/host/worker.js"
|
|
35
|
+
},
|
|
36
|
+
"./worker": {
|
|
37
|
+
"types": "./dist/worker/index.d.ts",
|
|
38
|
+
"default": "./dist/worker/index.js"
|
|
39
|
+
},
|
|
40
|
+
"./build": {
|
|
41
|
+
"types": "./dist/build.d.ts",
|
|
42
|
+
"default": "./dist/build.js"
|
|
29
43
|
}
|
|
30
44
|
},
|
|
31
45
|
"dependencies": {
|
|
32
|
-
"@
|
|
33
|
-
"@
|
|
46
|
+
"@remote-dom/core": "1.12.0",
|
|
47
|
+
"@remote-dom/polyfill": "1.6.0",
|
|
48
|
+
"@graview/core": "0.1.9",
|
|
49
|
+
"@graview/react": "0.1.9"
|
|
34
50
|
},
|
|
35
51
|
"peerDependencies": {
|
|
36
|
-
"react": ">=18"
|
|
52
|
+
"react": ">=18",
|
|
53
|
+
"esbuild": ">=0.20"
|
|
37
54
|
},
|
|
38
55
|
"peerDependenciesMeta": {
|
|
39
56
|
"react": {
|
|
40
57
|
"optional": true
|
|
58
|
+
},
|
|
59
|
+
"esbuild": {
|
|
60
|
+
"optional": true
|
|
41
61
|
}
|
|
42
62
|
},
|
|
43
63
|
"files": [
|
|
44
64
|
"dist",
|
|
45
65
|
"README.md"
|
|
46
66
|
],
|
|
47
|
-
"sideEffects":
|
|
67
|
+
"sideEffects": [
|
|
68
|
+
"./dist/worker/*.js",
|
|
69
|
+
"./src/worker/*.ts"
|
|
70
|
+
],
|
|
48
71
|
"repository": {
|
|
49
72
|
"type": "git",
|
|
50
73
|
"url": "git+https://github.com/en-dash-consulting/graview.git",
|