@modularizer/plat-client 0.4.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.
Files changed (233) hide show
  1. package/dist/args/coerce.d.ts +54 -0
  2. package/dist/args/coerce.d.ts.map +1 -0
  3. package/dist/args/coerce.js +236 -0
  4. package/dist/args/coerce.js.map +1 -0
  5. package/dist/args/index.d.ts +2 -0
  6. package/dist/args/index.d.ts.map +1 -0
  7. package/dist/args/index.js +2 -0
  8. package/dist/args/index.js.map +1 -0
  9. package/dist/args/scalars.d.ts +87 -0
  10. package/dist/args/scalars.d.ts.map +1 -0
  11. package/dist/args/scalars.js +22 -0
  12. package/dist/args/scalars.js.map +1 -0
  13. package/dist/args/validate.d.ts +23 -0
  14. package/dist/args/validate.d.ts.map +1 -0
  15. package/dist/args/validate.js +185 -0
  16. package/dist/args/validate.js.map +1 -0
  17. package/dist/args/z2.d.ts +27 -0
  18. package/dist/args/z2.d.ts.map +1 -0
  19. package/dist/args/z2.js +24 -0
  20. package/dist/args/z2.js.map +1 -0
  21. package/dist/client/css-transport-plugin.d.ts +19 -0
  22. package/dist/client/css-transport-plugin.d.ts.map +1 -0
  23. package/dist/client/css-transport-plugin.js +78 -0
  24. package/dist/client/css-transport-plugin.js.map +1 -0
  25. package/dist/client/file-transport-plugin.d.ts +28 -0
  26. package/dist/client/file-transport-plugin.d.ts.map +1 -0
  27. package/dist/client/file-transport-plugin.js +80 -0
  28. package/dist/client/file-transport-plugin.js.map +1 -0
  29. package/dist/client/http-transport-plugin.d.ts +27 -0
  30. package/dist/client/http-transport-plugin.d.ts.map +1 -0
  31. package/dist/client/http-transport-plugin.js +48 -0
  32. package/dist/client/http-transport-plugin.js.map +1 -0
  33. package/dist/client/index.d.ts +7 -0
  34. package/dist/client/index.d.ts.map +1 -0
  35. package/dist/client/index.js +7 -0
  36. package/dist/client/index.js.map +1 -0
  37. package/dist/client/openapi-client.d.ts +334 -0
  38. package/dist/client/openapi-client.d.ts.map +1 -0
  39. package/dist/client/openapi-client.js +910 -0
  40. package/dist/client/openapi-client.js.map +1 -0
  41. package/dist/client/proxy.d.ts +5 -0
  42. package/dist/client/proxy.d.ts.map +1 -0
  43. package/dist/client/proxy.js +353 -0
  44. package/dist/client/proxy.js.map +1 -0
  45. package/dist/client/request-builder.d.ts +5 -0
  46. package/dist/client/request-builder.d.ts.map +1 -0
  47. package/dist/client/request-builder.js +88 -0
  48. package/dist/client/request-builder.js.map +1 -0
  49. package/dist/client/rpc-transport-plugin.d.ts +17 -0
  50. package/dist/client/rpc-transport-plugin.d.ts.map +1 -0
  51. package/dist/client/rpc-transport-plugin.js +69 -0
  52. package/dist/client/rpc-transport-plugin.js.map +1 -0
  53. package/dist/client/tools.d.ts +69 -0
  54. package/dist/client/tools.d.ts.map +1 -0
  55. package/dist/client/tools.js +122 -0
  56. package/dist/client/tools.js.map +1 -0
  57. package/dist/client/transport-plugin.d.ts +62 -0
  58. package/dist/client/transport-plugin.d.ts.map +1 -0
  59. package/dist/client/transport-plugin.js +40 -0
  60. package/dist/client/transport-plugin.js.map +1 -0
  61. package/dist/client-entry.d.ts +25 -0
  62. package/dist/client-entry.d.ts.map +1 -0
  63. package/dist/client-entry.js +25 -0
  64. package/dist/client-entry.js.map +1 -0
  65. package/dist/client-server-entry.d.ts +13 -0
  66. package/dist/client-server-entry.d.ts.map +1 -0
  67. package/dist/client-server-entry.js +13 -0
  68. package/dist/client-server-entry.js.map +1 -0
  69. package/dist/client-side-python/runtime.d.ts +102 -0
  70. package/dist/client-side-python/runtime.d.ts.map +1 -0
  71. package/dist/client-side-python/runtime.js +595 -0
  72. package/dist/client-side-python/runtime.js.map +1 -0
  73. package/dist/client-side-server/bootstrap.d.ts +3 -0
  74. package/dist/client-side-server/bootstrap.d.ts.map +1 -0
  75. package/dist/client-side-server/bootstrap.js +20 -0
  76. package/dist/client-side-server/bootstrap.js.map +1 -0
  77. package/dist/client-side-server/channel.d.ts +17 -0
  78. package/dist/client-side-server/channel.d.ts.map +1 -0
  79. package/dist/client-side-server/channel.js +38 -0
  80. package/dist/client-side-server/channel.js.map +1 -0
  81. package/dist/client-side-server/identity.d.ts +116 -0
  82. package/dist/client-side-server/identity.d.ts.map +1 -0
  83. package/dist/client-side-server/identity.js +358 -0
  84. package/dist/client-side-server/identity.js.map +1 -0
  85. package/dist/client-side-server/mqtt-webrtc.d.ts +77 -0
  86. package/dist/client-side-server/mqtt-webrtc.d.ts.map +1 -0
  87. package/dist/client-side-server/mqtt-webrtc.js +575 -0
  88. package/dist/client-side-server/mqtt-webrtc.js.map +1 -0
  89. package/dist/client-side-server/protocol.d.ts +49 -0
  90. package/dist/client-side-server/protocol.d.ts.map +1 -0
  91. package/dist/client-side-server/protocol.js +13 -0
  92. package/dist/client-side-server/protocol.js.map +1 -0
  93. package/dist/client-side-server/runtime.d.ts +57 -0
  94. package/dist/client-side-server/runtime.d.ts.map +1 -0
  95. package/dist/client-side-server/runtime.js +188 -0
  96. package/dist/client-side-server/runtime.js.map +1 -0
  97. package/dist/client-side-server/server.d.ts +75 -0
  98. package/dist/client-side-server/server.d.ts.map +1 -0
  99. package/dist/client-side-server/server.js +380 -0
  100. package/dist/client-side-server/server.js.map +1 -0
  101. package/dist/client-side-server/signaling.d.ts +10 -0
  102. package/dist/client-side-server/signaling.d.ts.map +1 -0
  103. package/dist/client-side-server/signaling.js +19 -0
  104. package/dist/client-side-server/signaling.js.map +1 -0
  105. package/dist/client-side-server/source-analysis.d.ts +29 -0
  106. package/dist/client-side-server/source-analysis.d.ts.map +1 -0
  107. package/dist/client-side-server/source-analysis.js +395 -0
  108. package/dist/client-side-server/source-analysis.js.map +1 -0
  109. package/dist/generated/python-browser-sources.d.ts +2 -0
  110. package/dist/generated/python-browser-sources.d.ts.map +1 -0
  111. package/dist/generated/python-browser-sources.js +13 -0
  112. package/dist/generated/python-browser-sources.js.map +1 -0
  113. package/dist/logging.d.ts +9 -0
  114. package/dist/logging.d.ts.map +1 -0
  115. package/dist/logging.js +64 -0
  116. package/dist/logging.js.map +1 -0
  117. package/dist/python-browser-entry.d.ts +2 -0
  118. package/dist/python-browser-entry.d.ts.map +1 -0
  119. package/dist/python-browser-entry.js +2 -0
  120. package/dist/python-browser-entry.js.map +1 -0
  121. package/dist/rpc.d.ts +39 -0
  122. package/dist/rpc.d.ts.map +1 -0
  123. package/dist/rpc.js +2 -0
  124. package/dist/rpc.js.map +1 -0
  125. package/dist/server/authority-server.d.ts +27 -0
  126. package/dist/server/authority-server.d.ts.map +1 -0
  127. package/dist/server/authority-server.js +97 -0
  128. package/dist/server/authority-server.js.map +1 -0
  129. package/dist/server/cache/index.d.ts +2 -0
  130. package/dist/server/cache/index.d.ts.map +1 -0
  131. package/dist/server/cache/index.js +2 -0
  132. package/dist/server/cache/index.js.map +1 -0
  133. package/dist/server/cache/utils.d.ts +30 -0
  134. package/dist/server/cache/utils.d.ts.map +1 -0
  135. package/dist/server/cache/utils.js +116 -0
  136. package/dist/server/cache/utils.js.map +1 -0
  137. package/dist/server/core.d.ts +43 -0
  138. package/dist/server/core.d.ts.map +1 -0
  139. package/dist/server/core.js +215 -0
  140. package/dist/server/core.js.map +1 -0
  141. package/dist/server/operation-registry.d.ts +9 -0
  142. package/dist/server/operation-registry.d.ts.map +1 -0
  143. package/dist/server/operation-registry.js +16 -0
  144. package/dist/server/operation-registry.js.map +1 -0
  145. package/dist/server/param-aliases.d.ts +40 -0
  146. package/dist/server/param-aliases.d.ts.map +1 -0
  147. package/dist/server/param-aliases.js +112 -0
  148. package/dist/server/param-aliases.js.map +1 -0
  149. package/dist/server/rate-limit/index.d.ts +2 -0
  150. package/dist/server/rate-limit/index.d.ts.map +1 -0
  151. package/dist/server/rate-limit/index.js +2 -0
  152. package/dist/server/rate-limit/index.js.map +1 -0
  153. package/dist/server/rate-limit/utils.d.ts +27 -0
  154. package/dist/server/rate-limit/utils.d.ts.map +1 -0
  155. package/dist/server/rate-limit/utils.js +126 -0
  156. package/dist/server/rate-limit/utils.js.map +1 -0
  157. package/dist/server/routing.d.ts +39 -0
  158. package/dist/server/routing.d.ts.map +1 -0
  159. package/dist/server/routing.js +70 -0
  160. package/dist/server/routing.js.map +1 -0
  161. package/dist/server/token-limit/index.d.ts +2 -0
  162. package/dist/server/token-limit/index.d.ts.map +1 -0
  163. package/dist/server/token-limit/index.js +2 -0
  164. package/dist/server/token-limit/index.js.map +1 -0
  165. package/dist/server/token-limit/utils.d.ts +44 -0
  166. package/dist/server/token-limit/utils.d.ts.map +1 -0
  167. package/dist/server/token-limit/utils.js +260 -0
  168. package/dist/server/token-limit/utils.js.map +1 -0
  169. package/dist/server/tools.d.ts +33 -0
  170. package/dist/server/tools.d.ts.map +1 -0
  171. package/dist/server/tools.js +160 -0
  172. package/dist/server/tools.js.map +1 -0
  173. package/dist/server/transports.d.ts +25 -0
  174. package/dist/server/transports.d.ts.map +1 -0
  175. package/dist/server/transports.js +2 -0
  176. package/dist/server/transports.js.map +1 -0
  177. package/dist/shared/tools.d.ts +24 -0
  178. package/dist/shared/tools.d.ts.map +1 -0
  179. package/dist/shared/tools.js +86 -0
  180. package/dist/shared/tools.js.map +1 -0
  181. package/dist/spec/decorators.d.ts +41 -0
  182. package/dist/spec/decorators.d.ts.map +1 -0
  183. package/dist/spec/decorators.js +93 -0
  184. package/dist/spec/decorators.js.map +1 -0
  185. package/dist/spec/index.d.ts +3 -0
  186. package/dist/spec/index.d.ts.map +1 -0
  187. package/dist/spec/index.js +3 -0
  188. package/dist/spec/index.js.map +1 -0
  189. package/dist/spec/metadata.d.ts +5 -0
  190. package/dist/spec/metadata.d.ts.map +1 -0
  191. package/dist/spec/metadata.js +37 -0
  192. package/dist/spec/metadata.js.map +1 -0
  193. package/dist/types/client-route.d.ts +7 -0
  194. package/dist/types/client-route.d.ts.map +1 -0
  195. package/dist/types/client-route.js +2 -0
  196. package/dist/types/client-route.js.map +1 -0
  197. package/dist/types/client.d.ts +81 -0
  198. package/dist/types/client.d.ts.map +1 -0
  199. package/dist/types/client.js +14 -0
  200. package/dist/types/client.js.map +1 -0
  201. package/dist/types/endpoints.d.ts +76 -0
  202. package/dist/types/endpoints.d.ts.map +1 -0
  203. package/dist/types/endpoints.js +2 -0
  204. package/dist/types/endpoints.js.map +1 -0
  205. package/dist/types/errors.d.ts +86 -0
  206. package/dist/types/errors.d.ts.map +1 -0
  207. package/dist/types/errors.js +153 -0
  208. package/dist/types/errors.js.map +1 -0
  209. package/dist/types/http.d.ts +80 -0
  210. package/dist/types/http.d.ts.map +1 -0
  211. package/dist/types/http.js +61 -0
  212. package/dist/types/http.js.map +1 -0
  213. package/dist/types/index.d.ts +10 -0
  214. package/dist/types/index.d.ts.map +1 -0
  215. package/dist/types/index.js +10 -0
  216. package/dist/types/index.js.map +1 -0
  217. package/dist/types/openapi.d.ts +220 -0
  218. package/dist/types/openapi.d.ts.map +1 -0
  219. package/dist/types/openapi.js +11 -0
  220. package/dist/types/openapi.js.map +1 -0
  221. package/dist/types/opts.d.ts +46 -0
  222. package/dist/types/opts.d.ts.map +1 -0
  223. package/dist/types/opts.js +2 -0
  224. package/dist/types/opts.js.map +1 -0
  225. package/dist/types/plugins.d.ts +93 -0
  226. package/dist/types/plugins.d.ts.map +1 -0
  227. package/dist/types/plugins.js +5 -0
  228. package/dist/types/plugins.js.map +1 -0
  229. package/dist/types/tools.d.ts +52 -0
  230. package/dist/types/tools.d.ts.map +1 -0
  231. package/dist/types/tools.js +2 -0
  232. package/dist/types/tools.js.map +1 -0
  233. package/package.json +51 -0
@@ -0,0 +1,38 @@
1
+ export function createRTCDataChannelAdapter(channel) {
2
+ return {
3
+ send(message) {
4
+ channel.send(JSON.stringify(message));
5
+ },
6
+ subscribe(listener) {
7
+ const onMessage = (event) => {
8
+ const raw = typeof event.data === 'string' ? event.data : String(event.data);
9
+ listener(JSON.parse(raw));
10
+ };
11
+ channel.addEventListener('message', onMessage);
12
+ return () => channel.removeEventListener('message', onMessage);
13
+ },
14
+ close() {
15
+ channel.close();
16
+ },
17
+ };
18
+ }
19
+ export function createWeriftDataChannelAdapter(channel) {
20
+ return {
21
+ send(message) {
22
+ channel.send(JSON.stringify(message));
23
+ },
24
+ subscribe(listener) {
25
+ const subscription = channel.onMessage.subscribe((data) => {
26
+ const raw = typeof data === 'string' ? data : data.toString('utf8');
27
+ listener(JSON.parse(raw));
28
+ });
29
+ return () => {
30
+ subscription.unSubscribe();
31
+ };
32
+ },
33
+ close() {
34
+ channel.close();
35
+ },
36
+ };
37
+ }
38
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../../../typescript/src/client-side-server/channel.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,2BAA2B,CAAC,OAAuB;IACjE,OAAO;QACL,IAAI,CAAC,OAAO;YACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QACvC,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAE,EAAE;gBACxC,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gBAC5E,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC,CAAA;YACtD,CAAC,CAAA;YACD,OAAO,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;YAC9C,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QAChE,CAAC;QACD,KAAK;YACH,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,OAMC;IAED,OAAO;QACL,IAAI,CAAC,OAAO;YACV,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;QACvC,CAAC;QACD,SAAS,CAAC,QAAQ;YAChB,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;gBACxD,MAAM,GAAG,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;gBACnE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC,CAAA;YACtD,CAAC,CAAC,CAAA;YACF,OAAO,GAAG,EAAE;gBACV,YAAY,CAAC,WAAW,EAAE,CAAA;YAC5B,CAAC,CAAA;QACH,CAAC;QACD,KAAK;YACH,OAAO,CAAC,KAAK,EAAE,CAAA;QACjB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,116 @@
1
+ export interface ClientSideServerStorageLike {
2
+ getItem(key: string): string | null;
3
+ setItem(key: string, value: string): void;
4
+ removeItem?(key: string): void;
5
+ }
6
+ export interface ClientSideServerExportedKeyPair {
7
+ algorithm: 'ECDSA-P256';
8
+ publicKeyJwk: JsonWebKey;
9
+ privateKeyJwk: JsonWebKey;
10
+ keyId: string;
11
+ createdAt: number;
12
+ }
13
+ export interface ClientSideServerPublicIdentity {
14
+ algorithm: 'ECDSA-P256';
15
+ publicKeyJwk: JsonWebKey;
16
+ keyId: string;
17
+ fingerprint: string;
18
+ createdAt?: number;
19
+ }
20
+ export interface ClientSideServerTrustedServerRecord {
21
+ serverName: string;
22
+ publicKeyJwk: JsonWebKey;
23
+ keyId?: string;
24
+ fingerprint: string;
25
+ trustedAt: number;
26
+ source: 'first-use' | 'authority' | 'manual';
27
+ }
28
+ export interface ClientSideServerSignedAuthorityRecord {
29
+ protocol: 'plat-css-authority-v1';
30
+ serverName: string;
31
+ publicKeyJwk: JsonWebKey;
32
+ keyId?: string;
33
+ authorityName?: string;
34
+ issuedAt: number;
35
+ signature: string;
36
+ }
37
+ export interface GenerateClientSideServerKeyPairOptions {
38
+ keyId?: string;
39
+ }
40
+ export interface ClientSideServerKnownHostsStoreOptions {
41
+ storage?: ClientSideServerStorageLike;
42
+ storageKey?: string;
43
+ }
44
+ export interface ClientSideServerKeyPairStoreOptions {
45
+ storage?: ClientSideServerStorageLike;
46
+ storageKey?: string;
47
+ }
48
+ export interface ClientSideServerAuthorityStoreOptions {
49
+ storage?: ClientSideServerStorageLike;
50
+ storageKey?: string;
51
+ }
52
+ export interface ClientSideServerAuthorityResolverOptions extends ClientSideServerAuthorityStoreOptions {
53
+ authorityPublicKeyJwk: JsonWebKey;
54
+ knownHostsStorage?: ClientSideServerStorageLike;
55
+ knownHostsStorageKey?: string;
56
+ }
57
+ export interface ClientSideServerAuthorityServer {
58
+ authorityName?: string;
59
+ publicKeyJwk: JsonWebKey;
60
+ resolve(serverName: string): Promise<ClientSideServerSignedAuthorityRecord | null>;
61
+ }
62
+ export interface StaticClientSideServerAuthorityRegistryOptions {
63
+ authorityKeyPair: ClientSideServerExportedKeyPair;
64
+ authorityName?: string;
65
+ records?: Record<string, JsonWebKey | ClientSideServerPublicIdentity | ClientSideServerTrustedServerRecord>;
66
+ }
67
+ export interface FetchClientSideServerAuthorityServerOptions {
68
+ baseUrl: string;
69
+ publicKeyJwk: JsonWebKey;
70
+ authorityName?: string;
71
+ resolvePath?: string;
72
+ fetchImpl?: typeof fetch;
73
+ }
74
+ export declare function createInMemoryClientSideServerStorage(initial?: Record<string, string>): ClientSideServerStorageLike;
75
+ export declare function saveTrustedClientSideServerRecordToMap(knownHosts: Record<string, ClientSideServerTrustedServerRecord>, record: ClientSideServerTrustedServerRecord): void;
76
+ export declare function loadTrustedClientSideServerRecordFromMap(knownHosts: Record<string, ClientSideServerTrustedServerRecord> | undefined, serverName: string): ClientSideServerTrustedServerRecord | null;
77
+ export declare function generateClientSideServerIdentityKeyPair(options?: GenerateClientSideServerKeyPairOptions): Promise<ClientSideServerExportedKeyPair>;
78
+ export declare function createClientSideServerKeyId(publicKeyJwk: JsonWebKey): Promise<string>;
79
+ export declare function getClientSideServerPublicKeyFingerprint(publicKeyJwk: JsonWebKey): Promise<string>;
80
+ export declare function signClientSideServerChallenge(keyPair: ClientSideServerExportedKeyPair, challenge: string): Promise<string>;
81
+ export declare function verifyClientSideServerChallenge(publicKeyJwk: JsonWebKey, challenge: string, signature: string): Promise<boolean>;
82
+ export declare function buildClientSideServerIdentityChallenge(input: {
83
+ serverName: string;
84
+ connectionId: string;
85
+ challengeNonce: string;
86
+ }): string;
87
+ export declare function createSignedClientSideServerAuthorityRecord(authorityKeyPair: ClientSideServerExportedKeyPair, input: {
88
+ serverName: string;
89
+ publicKeyJwk: JsonWebKey;
90
+ keyId?: string;
91
+ authorityName?: string;
92
+ issuedAt?: number;
93
+ }): Promise<ClientSideServerSignedAuthorityRecord>;
94
+ export declare function verifySignedClientSideServerAuthorityRecord(record: ClientSideServerSignedAuthorityRecord, authorityPublicKeyJwk: JsonWebKey): Promise<boolean>;
95
+ export declare function toClientSideServerPublicIdentity(keyPair: ClientSideServerExportedKeyPair): Promise<ClientSideServerPublicIdentity>;
96
+ export declare function saveClientSideServerIdentityKeyPair(keyPair: ClientSideServerExportedKeyPair, options?: ClientSideServerKeyPairStoreOptions): void;
97
+ export declare function loadClientSideServerIdentityKeyPair(options?: ClientSideServerKeyPairStoreOptions): ClientSideServerExportedKeyPair | null;
98
+ export declare function getOrCreateClientSideServerIdentityKeyPair(options?: ClientSideServerKeyPairStoreOptions & GenerateClientSideServerKeyPairOptions): Promise<ClientSideServerExportedKeyPair>;
99
+ export declare function saveTrustedClientSideServerRecord(record: ClientSideServerTrustedServerRecord, options?: ClientSideServerKnownHostsStoreOptions): void;
100
+ export declare function loadTrustedClientSideServerRecord(serverName: string, options?: ClientSideServerKnownHostsStoreOptions): ClientSideServerTrustedServerRecord | null;
101
+ export declare function loadAllTrustedClientSideServerRecords(options?: ClientSideServerKnownHostsStoreOptions): Record<string, ClientSideServerTrustedServerRecord>;
102
+ export declare function saveClientSideServerAuthorityRecord(record: ClientSideServerSignedAuthorityRecord, options?: ClientSideServerAuthorityStoreOptions): void;
103
+ export declare function loadClientSideServerAuthorityRecord(serverName: string, options?: ClientSideServerAuthorityStoreOptions): ClientSideServerSignedAuthorityRecord | null;
104
+ export declare function loadAllClientSideServerAuthorityRecords(options?: ClientSideServerAuthorityStoreOptions): Record<string, ClientSideServerSignedAuthorityRecord>;
105
+ export declare function trustClientSideServerOnFirstUse(serverName: string, identity: ClientSideServerPublicIdentity, options?: ClientSideServerKnownHostsStoreOptions): Promise<ClientSideServerTrustedServerRecord>;
106
+ export declare function trustClientSideServerFromAuthorityRecord(record: ClientSideServerSignedAuthorityRecord, authorityPublicKeyJwk: JsonWebKey, options?: ClientSideServerKnownHostsStoreOptions): Promise<ClientSideServerTrustedServerRecord>;
107
+ export declare function createClientSideServerAuthorityResolver(options: ClientSideServerAuthorityResolverOptions): (serverName: string) => Promise<ClientSideServerTrustedServerRecord | null>;
108
+ export declare function createStaticClientSideServerAuthorityRegistry(options: StaticClientSideServerAuthorityRegistryOptions): {
109
+ register(serverName: string, value: JsonWebKey | ClientSideServerPublicIdentity | ClientSideServerTrustedServerRecord): void;
110
+ resolve(serverName: string): Promise<ClientSideServerSignedAuthorityRecord | null>;
111
+ createServer(): ClientSideServerAuthorityServer;
112
+ };
113
+ export declare function createFetchClientSideServerAuthorityServer(options: FetchClientSideServerAuthorityServerOptions): ClientSideServerAuthorityServer;
114
+ export declare function resolveTrustedClientSideServerFromAuthorities(serverName: string, authorityServers: ClientSideServerAuthorityServer[], options?: ClientSideServerKnownHostsStoreOptions): Promise<ClientSideServerTrustedServerRecord | null>;
115
+ export declare function clientSideServerPublicKeysEqual(a: JsonWebKey, b: JsonWebKey): boolean;
116
+ //# sourceMappingURL=identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.d.ts","sourceRoot":"","sources":["../../../typescript/src/client-side-server/identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,358 @@
1
+ export function createInMemoryClientSideServerStorage(initial = {}) {
2
+ const store = new Map(Object.entries(initial));
3
+ return {
4
+ getItem(key) {
5
+ return store.has(key) ? store.get(key) : null;
6
+ },
7
+ setItem(key, value) {
8
+ store.set(key, value);
9
+ },
10
+ removeItem(key) {
11
+ store.delete(key);
12
+ },
13
+ };
14
+ }
15
+ export function saveTrustedClientSideServerRecordToMap(knownHosts, record) {
16
+ knownHosts[record.serverName] = record;
17
+ }
18
+ export function loadTrustedClientSideServerRecordFromMap(knownHosts, serverName) {
19
+ if (!knownHosts)
20
+ return null;
21
+ return knownHosts[serverName] ?? null;
22
+ }
23
+ export async function generateClientSideServerIdentityKeyPair(options = {}) {
24
+ const subtle = await resolveSubtle();
25
+ const keyPair = await subtle.generateKey({
26
+ name: 'ECDSA',
27
+ namedCurve: 'P-256',
28
+ }, true, ['sign', 'verify']);
29
+ const publicKeyJwk = await subtle.exportKey('jwk', keyPair.publicKey);
30
+ const privateKeyJwk = await subtle.exportKey('jwk', keyPair.privateKey);
31
+ return {
32
+ algorithm: 'ECDSA-P256',
33
+ publicKeyJwk,
34
+ privateKeyJwk,
35
+ keyId: options.keyId ?? await createClientSideServerKeyId(publicKeyJwk),
36
+ createdAt: Date.now(),
37
+ };
38
+ }
39
+ export async function createClientSideServerKeyId(publicKeyJwk) {
40
+ const fingerprint = await getClientSideServerPublicKeyFingerprint(publicKeyJwk);
41
+ return `cssk-${fingerprint.slice(0, 16)}`;
42
+ }
43
+ export async function getClientSideServerPublicKeyFingerprint(publicKeyJwk) {
44
+ const subtle = await resolveSubtle();
45
+ const digest = await subtle.digest('SHA-256', toBufferSource(encodeUtf8(stableStringify(publicKeyJwk))));
46
+ return base64UrlEncode(new Uint8Array(digest));
47
+ }
48
+ export async function signClientSideServerChallenge(keyPair, challenge) {
49
+ const subtle = await resolveSubtle();
50
+ const privateKey = await subtle.importKey('jwk', keyPair.privateKeyJwk, {
51
+ name: 'ECDSA',
52
+ namedCurve: 'P-256',
53
+ }, false, ['sign']);
54
+ const signature = await subtle.sign({
55
+ name: 'ECDSA',
56
+ hash: 'SHA-256',
57
+ }, privateKey, toBufferSource(encodeUtf8(challenge)));
58
+ return base64UrlEncode(new Uint8Array(signature));
59
+ }
60
+ export async function verifyClientSideServerChallenge(publicKeyJwk, challenge, signature) {
61
+ const subtle = await resolveSubtle();
62
+ const publicKey = await subtle.importKey('jwk', publicKeyJwk, {
63
+ name: 'ECDSA',
64
+ namedCurve: 'P-256',
65
+ }, false, ['verify']);
66
+ return subtle.verify({
67
+ name: 'ECDSA',
68
+ hash: 'SHA-256',
69
+ }, publicKey, base64UrlDecode(signature), toBufferSource(encodeUtf8(challenge)));
70
+ }
71
+ export function buildClientSideServerIdentityChallenge(input) {
72
+ return `plat-css-identity-v1:${input.serverName}:${input.connectionId}:${input.challengeNonce}`;
73
+ }
74
+ export async function createSignedClientSideServerAuthorityRecord(authorityKeyPair, input) {
75
+ const payload = {
76
+ protocol: 'plat-css-authority-v1',
77
+ serverName: input.serverName,
78
+ publicKeyJwk: input.publicKeyJwk,
79
+ keyId: input.keyId,
80
+ authorityName: input.authorityName,
81
+ issuedAt: input.issuedAt ?? Date.now(),
82
+ };
83
+ const signature = await signClientSideServerChallenge(authorityKeyPair, stableStringify(payload));
84
+ return {
85
+ ...payload,
86
+ signature,
87
+ };
88
+ }
89
+ export async function verifySignedClientSideServerAuthorityRecord(record, authorityPublicKeyJwk) {
90
+ const { signature, ...payload } = record;
91
+ if (payload.protocol !== 'plat-css-authority-v1')
92
+ return false;
93
+ return verifyClientSideServerChallenge(authorityPublicKeyJwk, stableStringify(payload), signature);
94
+ }
95
+ export async function toClientSideServerPublicIdentity(keyPair) {
96
+ return {
97
+ algorithm: keyPair.algorithm,
98
+ publicKeyJwk: keyPair.publicKeyJwk,
99
+ keyId: keyPair.keyId,
100
+ createdAt: keyPair.createdAt,
101
+ fingerprint: await getClientSideServerPublicKeyFingerprint(keyPair.publicKeyJwk),
102
+ };
103
+ }
104
+ export function saveClientSideServerIdentityKeyPair(keyPair, options = {}) {
105
+ const storage = resolveStorage(options.storage);
106
+ if (!storage)
107
+ throw new Error('No storage available to save a client-side server key pair');
108
+ storage.setItem(options.storageKey ?? 'plat-css:keypair', JSON.stringify(keyPair));
109
+ }
110
+ export function loadClientSideServerIdentityKeyPair(options = {}) {
111
+ const storage = resolveStorage(options.storage);
112
+ if (!storage)
113
+ return null;
114
+ const raw = storage.getItem(options.storageKey ?? 'plat-css:keypair');
115
+ if (!raw)
116
+ return null;
117
+ return JSON.parse(raw);
118
+ }
119
+ export async function getOrCreateClientSideServerIdentityKeyPair(options = {}) {
120
+ const existing = loadClientSideServerIdentityKeyPair(options);
121
+ if (existing)
122
+ return existing;
123
+ const created = await generateClientSideServerIdentityKeyPair(options);
124
+ const storage = resolveStorage(options.storage);
125
+ if (storage) {
126
+ storage.setItem(options.storageKey ?? 'plat-css:keypair', JSON.stringify(created));
127
+ }
128
+ return created;
129
+ }
130
+ export function saveTrustedClientSideServerRecord(record, options = {}) {
131
+ const storage = resolveStorage(options.storage);
132
+ if (!storage)
133
+ throw new Error('No storage available to save a trusted client-side server record');
134
+ const all = loadAllTrustedClientSideServerRecords(options);
135
+ all[record.serverName] = record;
136
+ storage.setItem(options.storageKey ?? 'plat-css:known-hosts', JSON.stringify(all));
137
+ }
138
+ export function loadTrustedClientSideServerRecord(serverName, options = {}) {
139
+ const all = loadAllTrustedClientSideServerRecords(options);
140
+ return all[serverName] ?? null;
141
+ }
142
+ export function loadAllTrustedClientSideServerRecords(options = {}) {
143
+ const storage = resolveStorage(options.storage);
144
+ if (!storage)
145
+ return {};
146
+ const raw = storage.getItem(options.storageKey ?? 'plat-css:known-hosts');
147
+ if (!raw)
148
+ return {};
149
+ return JSON.parse(raw);
150
+ }
151
+ export function saveClientSideServerAuthorityRecord(record, options = {}) {
152
+ const storage = resolveStorage(options.storage);
153
+ if (!storage)
154
+ throw new Error('No storage available to save a client-side server authority record');
155
+ const all = loadAllClientSideServerAuthorityRecords(options);
156
+ all[record.serverName] = record;
157
+ storage.setItem(options.storageKey ?? 'plat-css:authority-records', JSON.stringify(all));
158
+ }
159
+ export function loadClientSideServerAuthorityRecord(serverName, options = {}) {
160
+ const all = loadAllClientSideServerAuthorityRecords(options);
161
+ return all[serverName] ?? null;
162
+ }
163
+ export function loadAllClientSideServerAuthorityRecords(options = {}) {
164
+ const storage = resolveStorage(options.storage);
165
+ if (!storage)
166
+ return {};
167
+ const raw = storage.getItem(options.storageKey ?? 'plat-css:authority-records');
168
+ if (!raw)
169
+ return {};
170
+ return JSON.parse(raw);
171
+ }
172
+ export async function trustClientSideServerOnFirstUse(serverName, identity, options = {}) {
173
+ const record = {
174
+ serverName,
175
+ publicKeyJwk: identity.publicKeyJwk,
176
+ keyId: identity.keyId,
177
+ fingerprint: identity.fingerprint,
178
+ trustedAt: Date.now(),
179
+ source: 'first-use',
180
+ };
181
+ saveTrustedClientSideServerRecord(record, options);
182
+ return record;
183
+ }
184
+ export async function trustClientSideServerFromAuthorityRecord(record, authorityPublicKeyJwk, options = {}) {
185
+ const valid = await verifySignedClientSideServerAuthorityRecord(record, authorityPublicKeyJwk);
186
+ if (!valid) {
187
+ throw new Error(`Authority record for ${record.serverName} failed signature verification`);
188
+ }
189
+ const trusted = {
190
+ serverName: record.serverName,
191
+ publicKeyJwk: record.publicKeyJwk,
192
+ keyId: record.keyId,
193
+ fingerprint: await getClientSideServerPublicKeyFingerprint(record.publicKeyJwk),
194
+ trustedAt: Date.now(),
195
+ source: 'authority',
196
+ };
197
+ saveTrustedClientSideServerRecord(trusted, options);
198
+ return trusted;
199
+ }
200
+ export function createClientSideServerAuthorityResolver(options) {
201
+ return async (serverName) => {
202
+ const record = loadClientSideServerAuthorityRecord(serverName, options);
203
+ if (!record)
204
+ return null;
205
+ return trustClientSideServerFromAuthorityRecord(record, options.authorityPublicKeyJwk, {
206
+ storage: options.knownHostsStorage,
207
+ storageKey: options.knownHostsStorageKey,
208
+ });
209
+ };
210
+ }
211
+ export function createStaticClientSideServerAuthorityRegistry(options) {
212
+ const records = new Map();
213
+ for (const [serverName, value] of Object.entries(options.records ?? {})) {
214
+ records.set(serverName, normalizePublicKey(value));
215
+ }
216
+ return {
217
+ register(serverName, value) {
218
+ records.set(serverName, normalizePublicKey(value));
219
+ },
220
+ async resolve(serverName) {
221
+ const publicKeyJwk = records.get(serverName);
222
+ if (!publicKeyJwk)
223
+ return null;
224
+ return createSignedClientSideServerAuthorityRecord(options.authorityKeyPair, {
225
+ serverName,
226
+ publicKeyJwk,
227
+ authorityName: options.authorityName,
228
+ });
229
+ },
230
+ createServer() {
231
+ return {
232
+ authorityName: options.authorityName,
233
+ publicKeyJwk: options.authorityKeyPair.publicKeyJwk,
234
+ resolve: async (serverName) => {
235
+ const publicKeyJwk = records.get(serverName);
236
+ if (!publicKeyJwk)
237
+ return null;
238
+ return createSignedClientSideServerAuthorityRecord(options.authorityKeyPair, {
239
+ serverName,
240
+ publicKeyJwk,
241
+ authorityName: options.authorityName,
242
+ });
243
+ },
244
+ };
245
+ },
246
+ };
247
+ }
248
+ export function createFetchClientSideServerAuthorityServer(options) {
249
+ const fetchImpl = options.fetchImpl ?? fetch;
250
+ if (typeof fetchImpl !== 'function') {
251
+ throw new Error('A fetch implementation is required to create a fetch-backed authority server');
252
+ }
253
+ return {
254
+ authorityName: options.authorityName,
255
+ publicKeyJwk: options.publicKeyJwk,
256
+ async resolve(serverName) {
257
+ const baseUrl = options.baseUrl.replace(/\/+$/, '');
258
+ const resolvePath = (options.resolvePath ?? '/resolveAuthorityHost').replace(/^([^/])/, '/$1');
259
+ const url = new URL(`${baseUrl}${resolvePath}`);
260
+ url.searchParams.set('serverName', serverName);
261
+ const response = await fetchImpl(url.toString(), {
262
+ headers: {
263
+ accept: 'application/json',
264
+ },
265
+ });
266
+ if (!response.ok) {
267
+ throw new Error(`Authority server ${baseUrl} returned ${response.status} ${response.statusText}`);
268
+ }
269
+ const record = await response.json();
270
+ return record;
271
+ },
272
+ };
273
+ }
274
+ export async function resolveTrustedClientSideServerFromAuthorities(serverName, authorityServers, options = {}) {
275
+ for (const authorityServer of authorityServers) {
276
+ try {
277
+ const record = await authorityServer.resolve(serverName);
278
+ if (!record)
279
+ continue;
280
+ return await trustClientSideServerFromAuthorityRecord(record, authorityServer.publicKeyJwk, options);
281
+ }
282
+ catch {
283
+ continue;
284
+ }
285
+ }
286
+ return null;
287
+ }
288
+ export function clientSideServerPublicKeysEqual(a, b) {
289
+ return stableStringify(a) === stableStringify(b);
290
+ }
291
+ function resolveStorage(storage) {
292
+ if (storage)
293
+ return storage;
294
+ if (typeof localStorage !== 'undefined')
295
+ return localStorage;
296
+ return null;
297
+ }
298
+ function normalizePublicKey(value) {
299
+ if ('publicKeyJwk' in value)
300
+ return value.publicKeyJwk;
301
+ return value;
302
+ }
303
+ function stableStringify(value) {
304
+ return JSON.stringify(sortValue(value));
305
+ }
306
+ function sortValue(value) {
307
+ if (Array.isArray(value))
308
+ return value.map(sortValue);
309
+ if (value && typeof value === 'object') {
310
+ return Object.fromEntries(Object.entries(value)
311
+ .sort(([a], [b]) => a.localeCompare(b))
312
+ .map(([key, child]) => [key, sortValue(child)]));
313
+ }
314
+ return value;
315
+ }
316
+ function encodeUtf8(value) {
317
+ return new TextEncoder().encode(value);
318
+ }
319
+ function base64UrlEncode(bytes) {
320
+ const base64 = typeof Buffer !== 'undefined'
321
+ ? Buffer.from(bytes).toString('base64')
322
+ : bytesToBase64(bytes);
323
+ return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
324
+ }
325
+ function base64UrlDecode(value) {
326
+ const padded = value.replace(/-/g, '+').replace(/_/g, '/').padEnd(Math.ceil(value.length / 4) * 4, '=');
327
+ if (typeof Buffer !== 'undefined') {
328
+ return new Uint8Array(Buffer.from(padded, 'base64'));
329
+ }
330
+ return base64ToBytes(padded);
331
+ }
332
+ async function resolveSubtle() {
333
+ if (globalThis.crypto?.subtle)
334
+ return globalThis.crypto.subtle;
335
+ const dynamicImport = new Function('m', 'return import(m)');
336
+ const cryptoModule = await dynamicImport('node:crypto');
337
+ if (cryptoModule.webcrypto?.subtle)
338
+ return cryptoModule.webcrypto.subtle;
339
+ throw new Error('Web Crypto subtle API is not available in this environment');
340
+ }
341
+ function bytesToBase64(bytes) {
342
+ let binary = '';
343
+ for (const byte of bytes)
344
+ binary += String.fromCharCode(byte);
345
+ return btoa(binary);
346
+ }
347
+ function base64ToBytes(base64) {
348
+ const binary = atob(base64);
349
+ const bytes = new Uint8Array(binary.length);
350
+ for (let index = 0; index < binary.length; index += 1) {
351
+ bytes[index] = binary.charCodeAt(index);
352
+ }
353
+ return bytes;
354
+ }
355
+ function toBufferSource(bytes) {
356
+ return bytes.buffer.slice(bytes.byteOffset, bytes.byteOffset + bytes.byteLength);
357
+ }
358
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"identity.js","sourceRoot":"","sources":["../../../typescript/src/client-side-server/identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import type { IClientOptions } from 'mqtt';
2
+ import type { OpenAPIClientTransportPlugin } from '../client/transport-plugin';
3
+ import { type ClientSideServerChannel } from './channel';
4
+ import { type ClientSideServerAuthorityServer, type ClientSideServerExportedKeyPair, type ClientSideServerSignedAuthorityRecord, type ClientSideServerStorageLike, type ClientSideServerTrustedServerRecord } from './identity';
5
+ import { type ClientSideServerPeerMessage } from './protocol';
6
+ import { type ClientSideServerAddress } from './signaling';
7
+ import type { PLATClientSideServer } from './server';
8
+ export declare const DEFAULT_CLIENT_SIDE_SERVER_MQTT_BROKER = "wss://broker.emqx.io:8084/mqtt";
9
+ export declare const DEFAULT_CLIENT_SIDE_SERVER_MQTT_TOPIC = "mrtchat/plat-css";
10
+ export declare const DEFAULT_CLIENT_SIDE_SERVER_ICE_SERVERS: RTCIceServer[];
11
+ export interface ClientSideServerMQTTWebRTCOptions {
12
+ mqttBroker?: string;
13
+ mqttTopic?: string;
14
+ mqttOptions?: IClientOptions;
15
+ iceServers?: RTCIceServer[];
16
+ connectionTimeoutMs?: number;
17
+ announceIntervalMs?: number;
18
+ clientIdPrefix?: string;
19
+ identity?: ClientSideServerIdentityOptions;
20
+ }
21
+ export interface ClientSideServerMQTTWebRTCServerOptions extends ClientSideServerMQTTWebRTCOptions {
22
+ serverName: string;
23
+ server: PLATClientSideServer;
24
+ }
25
+ export interface ClientSideServerIdentityOptions {
26
+ keyPair?: ClientSideServerExportedKeyPair;
27
+ storage?: ClientSideServerStorageLike;
28
+ keyPairStorageKey?: string;
29
+ knownHosts?: Record<string, ClientSideServerTrustedServerRecord>;
30
+ knownHostsStorage?: ClientSideServerStorageLike;
31
+ knownHostsStorageKey?: string;
32
+ trustOnFirstUse?: boolean;
33
+ authority?: {
34
+ publicKeyJwk: JsonWebKey;
35
+ authorityName?: string;
36
+ };
37
+ authorityServers?: ClientSideServerAuthorityServer[];
38
+ authorityResolver?: (serverName: string) => Promise<ClientSideServerTrustedServerRecord | null>;
39
+ authorityRecord?: ClientSideServerSignedAuthorityRecord;
40
+ }
41
+ export interface ClientSideServerPeerSession extends ClientSideServerChannel {
42
+ readonly address: ClientSideServerAddress;
43
+ readonly connectionId: string;
44
+ readonly peerId: string;
45
+ readonly connectedAt: number;
46
+ isOpen(): boolean;
47
+ sendPeer(event: string, data?: unknown): Promise<void>;
48
+ subscribePeer(listener: (message: ClientSideServerPeerMessage) => void | Promise<void>): () => void;
49
+ }
50
+ export interface ClientSideServerPeerPool {
51
+ connect(address: string | ClientSideServerAddress): Promise<ClientSideServerPeerSession>;
52
+ close(address: string | ClientSideServerAddress): Promise<void>;
53
+ closeAll(): Promise<void>;
54
+ }
55
+ export declare class ClientSideServerMQTTWebRTCServer {
56
+ private options;
57
+ private mqtt?;
58
+ private readonly serverInstanceId;
59
+ private readonly unsubscribeByConnection;
60
+ private readonly peers;
61
+ private readonly pendingCandidates;
62
+ private announceTimer?;
63
+ private identityKeyPair?;
64
+ private publicIdentity?;
65
+ constructor(options: ClientSideServerMQTTWebRTCServerOptions);
66
+ get connectionUrl(): string;
67
+ start(): Promise<void>;
68
+ stop(): Promise<void>;
69
+ private announce;
70
+ private onMessage;
71
+ private acceptOffer;
72
+ private ensureIdentity;
73
+ }
74
+ export declare function createClientSideServerMQTTWebRTCTransportPlugin(options?: ClientSideServerMQTTWebRTCOptions): OpenAPIClientTransportPlugin;
75
+ export declare function createClientSideServerMQTTWebRTCPeerPool(options?: ClientSideServerMQTTWebRTCOptions): ClientSideServerPeerPool;
76
+ export declare function createClientSideServerMQTTWebRTCServer(options: ClientSideServerMQTTWebRTCServerOptions): ClientSideServerMQTTWebRTCServer;
77
+ //# sourceMappingURL=mqtt-webrtc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mqtt-webrtc.d.ts","sourceRoot":"","sources":["../../../typescript/src/client-side-server/mqtt-webrtc.ts"],"names":[],"mappings":"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"}