@statewalker/webrun-http-browser 0.3.3 → 0.3.4

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 (93) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +321 -51
  3. package/demo/demo-1.html +109 -194
  4. package/demo/demo-2.html +118 -299
  5. package/dist/core/data-calls.d.ts +5 -0
  6. package/dist/core/data-calls.d.ts.map +1 -0
  7. package/dist/core/data-channels.d.ts +17 -0
  8. package/dist/core/data-channels.d.ts.map +1 -0
  9. package/dist/core/index.d.ts +6 -0
  10. package/dist/core/index.d.ts.map +1 -0
  11. package/dist/core/message-target.d.ts +16 -0
  12. package/dist/core/message-target.d.ts.map +1 -0
  13. package/dist/core/registry.d.ts +18 -0
  14. package/dist/core/registry.d.ts.map +1 -0
  15. package/dist/http/http-send-recieve.d.ts +23 -0
  16. package/dist/http/http-send-recieve.d.ts.map +1 -0
  17. package/dist/http/index.d.ts +4 -0
  18. package/dist/http/index.d.ts.map +1 -0
  19. package/dist/index.d.ts +4 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +2541 -807
  22. package/dist/relay/index-sw.d.ts +7 -0
  23. package/dist/relay/index-sw.d.ts.map +1 -0
  24. package/dist/relay/index.d.ts +69 -0
  25. package/dist/relay/index.d.ts.map +1 -0
  26. package/dist/relay/split-service-url.d.ts +13 -0
  27. package/dist/relay/split-service-url.d.ts.map +1 -0
  28. package/dist/relay-sw.d.ts +2 -0
  29. package/dist/relay-sw.d.ts.map +1 -0
  30. package/dist/relay-sw.js +878 -0
  31. package/dist/sw/http-sw-dispatcher.d.ts +28 -0
  32. package/dist/sw/http-sw-dispatcher.d.ts.map +1 -0
  33. package/dist/sw/index.d.ts +3 -0
  34. package/dist/sw/index.d.ts.map +1 -0
  35. package/dist/sw/sw-dispatcher.d.ts +74 -0
  36. package/dist/sw/sw-dispatcher.d.ts.map +1 -0
  37. package/dist/sw-worker.d.ts +2 -0
  38. package/dist/sw-worker.d.ts.map +1 -0
  39. package/dist/sw-worker.js +813 -0
  40. package/dist/sw.d.ts +2 -0
  41. package/dist/sw.d.ts.map +1 -0
  42. package/dist/sw.js +1076 -0
  43. package/package.json +50 -37
  44. package/public/index.html +61 -97
  45. package/public/index.js +7 -4
  46. package/public/sw-worker.js +4 -0
  47. package/public-relay/heartbeat.js +4 -3
  48. package/public-relay/relay-sw.js +4 -6
  49. package/public-relay/relay.html +16 -11
  50. package/src/core/data-calls.ts +46 -0
  51. package/src/core/data-channels.ts +224 -0
  52. package/src/core/index.ts +9 -0
  53. package/src/core/message-target.ts +18 -0
  54. package/src/core/registry.ts +54 -0
  55. package/src/http/http-send-recieve.ts +81 -0
  56. package/src/http/index.ts +7 -0
  57. package/src/index.ts +3 -0
  58. package/src/relay/index-sw.ts +145 -0
  59. package/src/relay/index.ts +261 -0
  60. package/src/relay/split-service-url.ts +30 -0
  61. package/src/relay-sw.ts +7 -0
  62. package/src/sw/http-sw-dispatcher.ts +122 -0
  63. package/src/sw/index.ts +2 -0
  64. package/src/sw/sw-dispatcher.ts +307 -0
  65. package/src/sw-worker.ts +7 -0
  66. package/src/sw.ts +1 -0
  67. package/CHANGELOG.md +0 -1
  68. package/demo/demo-2 copy.html +0 -598
  69. package/demo/demo-3.html +0 -167
  70. package/dist/index-sw-umd.js +0 -798
  71. package/dist/index-sw-umd.min.js +0 -2
  72. package/dist/index-sw.js +0 -791
  73. package/dist/index-sw.min.js +0 -2
  74. package/dist/index-umd.js +0 -853
  75. package/dist/index-umd.min.js +0 -2
  76. package/dist/index.min.js +0 -2
  77. package/index.js +0 -1
  78. package/src/core/data-calls.js +0 -36
  79. package/src/core/data-channels.js +0 -192
  80. package/src/core/data-send-recieve.js +0 -28
  81. package/src/core/errors.js +0 -13
  82. package/src/core/index.js +0 -4
  83. package/src/http/HttpError.js +0 -59
  84. package/src/http/http-send-recieve.js +0 -40
  85. package/src/http/http-stubs.js +0 -135
  86. package/src/http/index.js +0 -3
  87. package/src/http/readable-streams.js +0 -33
  88. package/src/index.js +0 -7
  89. package/src/relay/index-sw.js +0 -216
  90. package/src/relay/index.js +0 -263
  91. package/src/relay/splitServiceUrl.js +0 -24
  92. package/src/sw/http-sw-dispatcher.js +0 -128
  93. 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,3 @@
1
+ export * from "./http-sw-dispatcher.js";
2
+ export * from "./sw-dispatcher.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,CAQ7B;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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sw-worker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sw-worker.d.ts","sourceRoot":"","sources":["../src/sw-worker.ts"],"names":[],"mappings":""}