@statewalker/webrun-http-browser 0.3.3 → 0.4.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.
- package/README.md +406 -51
- package/demo/demo-1.html +109 -194
- package/demo/demo-2.html +118 -299
- package/dist/core/data-calls.d.ts +5 -0
- package/dist/core/data-calls.d.ts.map +1 -0
- package/dist/core/data-channels.d.ts +17 -0
- package/dist/core/data-channels.d.ts.map +1 -0
- package/dist/core/index.d.ts +6 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/message-target.d.ts +2 -0
- package/dist/core/message-target.d.ts.map +1 -0
- package/dist/core/registry.d.ts +18 -0
- package/dist/core/registry.d.ts.map +1 -0
- package/dist/http/http-send-recieve.d.ts +36 -0
- package/dist/http/http-send-recieve.d.ts.map +1 -0
- package/dist/http/index.d.ts +4 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2670 -807
- package/dist/relay/index-sw.d.ts +7 -0
- package/dist/relay/index-sw.d.ts.map +1 -0
- package/dist/relay/index.d.ts +69 -0
- package/dist/relay/index.d.ts.map +1 -0
- package/dist/relay/split-service-url.d.ts +13 -0
- package/dist/relay/split-service-url.d.ts.map +1 -0
- package/dist/relay-sw.d.ts +2 -0
- package/dist/relay-sw.d.ts.map +1 -0
- package/dist/relay-sw.js +1660 -0
- package/dist/sw/http-sw-dispatcher.d.ts +28 -0
- package/dist/sw/http-sw-dispatcher.d.ts.map +1 -0
- package/dist/sw/index.d.ts +3 -0
- package/dist/sw/index.d.ts.map +1 -0
- package/dist/sw/sw-dispatcher.d.ts +74 -0
- package/dist/sw/sw-dispatcher.d.ts.map +1 -0
- package/dist/sw-worker.d.ts +2 -0
- package/dist/sw-worker.d.ts.map +1 -0
- package/dist/sw-worker.js +1597 -0
- package/dist/sw.d.ts +2 -0
- package/dist/sw.d.ts.map +1 -0
- package/dist/sw.js +1883 -0
- package/package.json +51 -37
- package/public/index.html +61 -97
- package/public/index.js +7 -4
- package/public/sw-worker.js +4 -0
- package/public-relay/heartbeat.js +4 -3
- package/public-relay/relay-sw.js +4 -6
- package/public-relay/relay.html +16 -11
- package/src/core/data-calls.ts +46 -0
- package/src/core/data-channels.ts +262 -0
- package/src/core/index.ts +9 -0
- package/src/core/message-target.ts +8 -0
- package/src/core/registry.ts +54 -0
- package/src/http/http-send-recieve.ts +94 -0
- package/src/http/index.ts +7 -0
- package/src/index.ts +3 -0
- package/src/relay/index-sw.ts +145 -0
- package/src/relay/index.ts +261 -0
- package/src/relay/split-service-url.ts +30 -0
- package/src/relay-sw.ts +7 -0
- package/src/sw/http-sw-dispatcher.ts +122 -0
- package/src/sw/index.ts +2 -0
- package/src/sw/sw-dispatcher.ts +332 -0
- package/src/sw-worker.ts +7 -0
- package/src/sw.ts +1 -0
- package/CHANGELOG.md +0 -1
- package/LICENSE +0 -21
- package/demo/demo-2 copy.html +0 -598
- package/demo/demo-3.html +0 -167
- package/dist/index-sw-umd.js +0 -798
- package/dist/index-sw-umd.min.js +0 -2
- package/dist/index-sw.js +0 -791
- package/dist/index-sw.min.js +0 -2
- package/dist/index-umd.js +0 -853
- package/dist/index-umd.min.js +0 -2
- package/dist/index.min.js +0 -2
- package/index.js +0 -1
- package/src/core/data-calls.js +0 -36
- package/src/core/data-channels.js +0 -192
- package/src/core/data-send-recieve.js +0 -28
- package/src/core/errors.js +0 -13
- package/src/core/index.js +0 -4
- package/src/http/HttpError.js +0 -59
- package/src/http/http-send-recieve.js +0 -40
- package/src/http/http-stubs.js +0 -135
- package/src/http/index.js +0 -3
- package/src/http/readable-streams.js +0 -33
- package/src/index.js +0 -7
- package/src/relay/index-sw.js +0 -216
- package/src/relay/index.js +0 -263
- package/src/relay/splitServiceUrl.js +0 -24
- package/src/sw/http-sw-dispatcher.js +0 -128
- package/src/sw/sw-dispatcher.js +0 -264
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { HttpHandler } from "@statewalker/webrun-http-streams";
|
|
2
|
+
import { SwPortDispatcher, type SwPortDispatcherOptions, SwPortHandler, type SwPortHandlerOptions } from "./sw-dispatcher.js";
|
|
3
|
+
export interface SwHttpAdapterOptions extends Omit<SwPortHandlerOptions, "bindPort"> {
|
|
4
|
+
bindPort?: SwPortHandlerOptions["bindPort"];
|
|
5
|
+
}
|
|
6
|
+
export interface SwHttpRegistration {
|
|
7
|
+
baseUrl: string;
|
|
8
|
+
prefix: string;
|
|
9
|
+
remove(): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare class SwHttpAdapter extends SwPortHandler {
|
|
12
|
+
private readonly _handlers;
|
|
13
|
+
private _cleanupRequestChannel?;
|
|
14
|
+
constructor(options: SwHttpAdapterOptions);
|
|
15
|
+
protected _setCommunicationPort(port: MessagePort): Promise<void>;
|
|
16
|
+
private _handleHttpRequest;
|
|
17
|
+
/**
|
|
18
|
+
* Registers an HTTP handler on a prefix. Returns the resulting base URL and a
|
|
19
|
+
* disposer.
|
|
20
|
+
*/
|
|
21
|
+
register(prefix: string, handler: HttpHandler): Promise<SwHttpRegistration>;
|
|
22
|
+
}
|
|
23
|
+
export declare class SwHttpDispatcher extends SwPortDispatcher {
|
|
24
|
+
start(): void;
|
|
25
|
+
private _handleFetchEvent;
|
|
26
|
+
}
|
|
27
|
+
export declare function startHttpDispatcher(options: SwPortDispatcherOptions): () => void;
|
|
28
|
+
//# sourceMappingURL=http-sw-dispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http-sw-dispatcher.d.ts","sourceRoot":"","sources":["../../src/sw/http-sw-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,aAAa,EACb,KAAK,oBAAoB,EAC1B,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAAC,oBAAoB,EAAE,UAAU,CAAC;IAClF,QAAQ,CAAC,EAAE,oBAAoB,CAAC,UAAU,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAkC;IAC5D,OAAO,CAAC,sBAAsB,CAAC,CAAa;IAE5C,YAAY,OAAO,EAAE,oBAAoB,EAKxC;IAED,UAAyB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/E;YAEa,kBAAkB;IAUhC;;;OAGG;IACG,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYhF;CACF;AAED,qBAAa,gBAAiB,SAAQ,gBAAgB;IACpD,KAAK,IAAI,IAAI,CAGZ;IAED,OAAO,CAAC,iBAAiB;CA2C1B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,IAAI,CAMhF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sw/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export interface SwPortHandlerOptions {
|
|
2
|
+
key: string;
|
|
3
|
+
scope?: string;
|
|
4
|
+
serviceWorkerUrl?: string;
|
|
5
|
+
bindPort: (port: MessagePort) => void | Promise<void>;
|
|
6
|
+
}
|
|
7
|
+
interface ChannelInfo {
|
|
8
|
+
key: string;
|
|
9
|
+
clientId?: string;
|
|
10
|
+
port?: MessagePort;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Page-side counterpart: registers a ServiceWorker and sets up a
|
|
14
|
+
* MessageChannel with it, re-establishing the connection after SW wake-ups.
|
|
15
|
+
*/
|
|
16
|
+
export declare class SwPortHandler {
|
|
17
|
+
readonly options: SwPortHandlerOptions;
|
|
18
|
+
private _serviceWorkerUrl?;
|
|
19
|
+
private _serviceWorker?;
|
|
20
|
+
private _registrationPromise?;
|
|
21
|
+
private _cleanupRegistrations?;
|
|
22
|
+
constructor(options: SwPortHandlerOptions);
|
|
23
|
+
get key(): string;
|
|
24
|
+
get scope(): string;
|
|
25
|
+
get rootUrl(): URL;
|
|
26
|
+
get serviceWorkerUrl(): string;
|
|
27
|
+
protected _newCommunicationChannel(): Promise<[MessagePort, MessagePort]>;
|
|
28
|
+
protected _setCommunicationPort(port: MessagePort): Promise<void>;
|
|
29
|
+
protected _updateCommunicationChannel(): Promise<void>;
|
|
30
|
+
protected _getRegistrationInfo(): ChannelInfo;
|
|
31
|
+
start(): Promise<void>;
|
|
32
|
+
stop(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export interface SwPortDispatcherOptions {
|
|
35
|
+
self: ServiceWorkerGlobalScope;
|
|
36
|
+
log?: (...args: unknown[]) => void;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* ServiceWorker-side counterpart: maintains an index of connected clients keyed by
|
|
40
|
+
* clientId, persisted in IndexedDB so it can reclaim ports across SW restarts.
|
|
41
|
+
*/
|
|
42
|
+
export declare class SwPortDispatcher {
|
|
43
|
+
readonly self: ServiceWorkerGlobalScope;
|
|
44
|
+
readonly log: (...args: unknown[]) => void;
|
|
45
|
+
readonly handlersIndex: Map<string, ChannelInfo>;
|
|
46
|
+
/**
|
|
47
|
+
* Set of keys that were registered at some point on this SW (sticky —
|
|
48
|
+
* survives client closures + SW wake-ups via IndexedDB). Lets the fetch
|
|
49
|
+
* handler distinguish "site URL whose owner is gone → 404" from
|
|
50
|
+
* "unknown URL under scope → pass through to the network".
|
|
51
|
+
*/
|
|
52
|
+
readonly claimedKeys: Set<string>;
|
|
53
|
+
private _cleanup?;
|
|
54
|
+
private _activationPromise?;
|
|
55
|
+
constructor({ self, log }: SwPortDispatcherOptions);
|
|
56
|
+
get scope(): string;
|
|
57
|
+
/**
|
|
58
|
+
* Look up the active channel for a key. Returns `undefined` when there
|
|
59
|
+
* is no registration (or the registering client has gone away — stale
|
|
60
|
+
* entries are pruned in place).
|
|
61
|
+
*/
|
|
62
|
+
loadChannelInfo(key: string): Promise<ChannelInfo | undefined>;
|
|
63
|
+
/** Whether `key` has ever been registered on this SW. */
|
|
64
|
+
isClaimedKey(key: string): boolean;
|
|
65
|
+
start(): void;
|
|
66
|
+
stop(): Promise<void>;
|
|
67
|
+
private _checkActivation;
|
|
68
|
+
private _activate;
|
|
69
|
+
private _updateChannelInfo;
|
|
70
|
+
private _loadClientIds;
|
|
71
|
+
private _updateClientIds;
|
|
72
|
+
}
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=sw-dispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sw-dispatcher.d.ts","sourceRoot":"","sources":["../../src/sw/sw-dispatcher.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvD;AAED,UAAU,WAAW;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;IACvC,OAAO,CAAC,iBAAiB,CAAC,CAAS;IACnC,OAAO,CAAC,cAAc,CAAC,CAAgB;IACvC,OAAO,CAAC,oBAAoB,CAAC,CAAgB;IAC7C,OAAO,CAAC,qBAAqB,CAAC,CAAa;IAE3C,YAAY,OAAO,EAAE,oBAAoB,EAIxC;IAED,IAAI,GAAG,IAAI,MAAM,CAEhB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,OAAO,IAAI,GAAG,CAEjB;IAED,IAAI,gBAAgB,IAAI,MAAM,CAa7B;IAED,UAAgB,wBAAwB,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,CAG9E;IAED,UAAgB,qBAAqB,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAEtE;IAED,UAAgB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAU3D;IAED,SAAS,CAAC,oBAAoB,IAAI,WAAW,CAE5C;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA8B3B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAU1B;CACF;AAiCD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,wBAAwB,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;CACpC;AAED;;;GAGG;AACH,qBAAa,gBAAgB;IAC3B,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IAC3C,QAAQ,CAAC,aAAa,2BAAkC;IACxD;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,cAAqB;IACzC,OAAO,CAAC,QAAQ,CAAC,CAAa;IAC9B,OAAO,CAAC,kBAAkB,CAAC,CAAgB;IAE3C,YAAY,EAAE,IAAI,EAAE,GAAc,EAAE,EAAE,uBAAuB,EAG5D;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED;;;;OAIG;IACG,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAgBnE;IAED,yDAAyD;IACzD,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEjC;IAED,KAAK,IAAI,IAAI,CA2BZ;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAK1B;IAED,OAAO,CAAC,gBAAgB;YAOV,SAAS;YAgBT,kBAAkB;YAWlB,cAAc;YAOd,gBAAgB;CAY/B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sw-worker.d.ts","sourceRoot":"","sources":["../src/sw-worker.ts"],"names":[],"mappings":""}
|