typeferry 0.9.1 → 0.11.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 (89) hide show
  1. package/README.md +9 -0
  2. package/dist/application/build.d.ts +2 -2
  3. package/dist/application/build.js +8 -2
  4. package/dist/application/build.js.map +1 -1
  5. package/dist/application/cli-arguments.d.ts +6 -1
  6. package/dist/application/cli-arguments.js +9 -1
  7. package/dist/application/cli-arguments.js.map +1 -1
  8. package/dist/application/config.d.ts +47 -1
  9. package/dist/application/config.js +88 -2
  10. package/dist/application/config.js.map +1 -1
  11. package/dist/application/native-project.d.ts +16 -0
  12. package/dist/application/native-project.js +82 -0
  13. package/dist/application/native-project.js.map +1 -0
  14. package/dist/application/native.d.ts +2 -0
  15. package/dist/application/native.js +86 -0
  16. package/dist/application/native.js.map +1 -0
  17. package/dist/application/runtime.d.ts +13 -0
  18. package/dist/application/runtime.js +15 -0
  19. package/dist/application/runtime.js.map +1 -0
  20. package/dist/application/server-build.js +1 -0
  21. package/dist/application/server-build.js.map +1 -1
  22. package/dist/application/vite-config.d.ts +2 -2
  23. package/dist/application/vite-config.js +16 -2
  24. package/dist/application/vite-config.js.map +1 -1
  25. package/dist/auth/client/index.d.ts +4 -0
  26. package/dist/auth/client/index.js +2 -0
  27. package/dist/auth/client/index.js.map +1 -1
  28. package/dist/auth/client/native-http.d.ts +24 -0
  29. package/dist/auth/client/native-http.js +19 -0
  30. package/dist/auth/client/native-http.js.map +1 -0
  31. package/dist/auth/client/native-session.d.ts +34 -0
  32. package/dist/auth/client/native-session.js +65 -0
  33. package/dist/auth/client/native-session.js.map +1 -0
  34. package/dist/auth/index.d.ts +6 -0
  35. package/dist/auth/index.js +3 -0
  36. package/dist/auth/index.js.map +1 -1
  37. package/dist/auth/server/native-handoff.d.ts +69 -0
  38. package/dist/auth/server/native-handoff.js +65 -0
  39. package/dist/auth/server/native-handoff.js.map +1 -0
  40. package/dist/cli/run.js +6 -1
  41. package/dist/cli/run.js.map +1 -1
  42. package/dist/client/backend-origin.d.ts +17 -0
  43. package/dist/client/backend-origin.js +25 -0
  44. package/dist/client/backend-origin.js.map +1 -0
  45. package/dist/client/client-http.js +8 -3
  46. package/dist/client/client-http.js.map +1 -1
  47. package/dist/client/client-socket.js +6 -1
  48. package/dist/client/client-socket.js.map +1 -1
  49. package/dist/client/client.d.ts +9 -0
  50. package/dist/client/client.js.map +1 -1
  51. package/dist/client/index.d.ts +1 -0
  52. package/dist/client/index.js +1 -0
  53. package/dist/client/index.js.map +1 -1
  54. package/dist/ejson/clone.js +7 -1
  55. package/dist/ejson/clone.js.map +1 -1
  56. package/dist/native/index.d.ts +76 -0
  57. package/dist/native/index.js +5 -0
  58. package/dist/native/index.js.map +1 -0
  59. package/dist/native/share-file.d.ts +18 -0
  60. package/dist/native/share-file.js +41 -0
  61. package/dist/native/share-file.js.map +1 -0
  62. package/dist/native/templates/bridge-view-controller.d.ts +4 -0
  63. package/dist/native/templates/bridge-view-controller.js +86 -0
  64. package/dist/native/templates/bridge-view-controller.js.map +1 -0
  65. package/dist/native/templates/file-staging.d.ts +4 -0
  66. package/dist/native/templates/file-staging.js +77 -0
  67. package/dist/native/templates/file-staging.js.map +1 -0
  68. package/dist/native/templates/http-session.d.ts +4 -0
  69. package/dist/native/templates/http-session.js +117 -0
  70. package/dist/native/templates/http-session.js.map +1 -0
  71. package/dist/native/templates/index.d.ts +4 -0
  72. package/dist/native/templates/index.js +20 -0
  73. package/dist/native/templates/index.js.map +1 -0
  74. package/dist/native/templates/keychain.d.ts +4 -0
  75. package/dist/native/templates/keychain.js +48 -0
  76. package/dist/native/templates/keychain.js.map +1 -0
  77. package/dist/native/templates/media-permission-policy.d.ts +4 -0
  78. package/dist/native/templates/media-permission-policy.js +24 -0
  79. package/dist/native/templates/media-permission-policy.js.map +1 -0
  80. package/dist/native/templates/plugin.d.ts +4 -0
  81. package/dist/native/templates/plugin.js +314 -0
  82. package/dist/native/templates/plugin.js.map +1 -0
  83. package/dist/native/templates/wake-locks.d.ts +4 -0
  84. package/dist/native/templates/wake-locks.js +47 -0
  85. package/dist/native/templates/wake-locks.js.map +1 -0
  86. package/dist/native/wake-lock.d.ts +9 -0
  87. package/dist/native/wake-lock.js +17 -0
  88. package/dist/native/wake-lock.js.map +1 -0
  89. package/package.json +18 -2
@@ -1 +1 @@
1
- {"version":3,"file":"server-build.js","sourceRoot":"","sources":["../../src/application/server-build.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAM5B,MAAM,UAAU,wBAAwB,CACtC,MAAiC;IAEjC,MAAM,YAAY,GAAiB;QACjC,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;SACxD;QACD,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,IAAI,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,CAAC,MAAM,EACnB,QAAQ,EACR,WAAW,CACZ;QACD,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QAClC,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;QAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;KAC5B,CAAA;IAED,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY,CAAA;AACtE,CAAC"}
1
+ {"version":3,"file":"server-build.js","sourceRoot":"","sources":["../../src/application/server-build.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAM5B,MAAM,UAAU,wBAAwB,CACtC,MAAiC;IAEjC,MAAM,YAAY,GAAiB;QACjC,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3C,WAAW,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;SACxD;QACD,MAAM,EAAE,KAAK;QACb,OAAO,EAAE,IAAI,CAAC,IAAI,CAChB,MAAM,CAAC,IAAI,EACX,MAAM,CAAC,KAAK,CAAC,MAAM,EACnB,QAAQ,EACR,WAAW,CACZ;QACD,QAAQ,EAAE,MAAM;QAChB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;QAClC,SAAS,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE;QAChC,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;KAC5B,CAAA;IAED,OAAO,MAAM,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,YAAY,CAAC,IAAI,YAAY,CAAA;AACtE,CAAC"}
@@ -1,3 +1,3 @@
1
1
  import type { InlineConfig } from "vite";
2
- import type { ResolvedApplicationConfig } from "./config.js";
3
- export declare function createViteConfig(config: ResolvedApplicationConfig, command: "develop" | "build"): InlineConfig;
2
+ import type { ApplicationTarget, ResolvedApplicationConfig } from "./config.js";
3
+ export declare function createViteConfig(config: ResolvedApplicationConfig, command: "develop" | "build", target?: ApplicationTarget): InlineConfig;
@@ -2,7 +2,7 @@ import path from "node:path";
2
2
  import tailwindcss from "@tailwindcss/vite";
3
3
  import react from "@vitejs/plugin-react";
4
4
  import { createTypeFerryDevProxy } from "./proxy.js";
5
- export function createViteConfig(config, command) {
5
+ export function createViteConfig(config, command, target = "web") {
6
6
  const plugins = [react(), tailwindcss()];
7
7
  if (command === "develop") {
8
8
  plugins.unshift(createTypeFerryDevProxy(config.development.serverPort, config.development.proxyRoutes));
@@ -39,6 +39,20 @@ export function createViteConfig(config, command) {
39
39
  },
40
40
  },
41
41
  };
42
- return config.extensions.vite?.(viteConfig, { command }) ?? viteConfig;
42
+ if (target === 'ios') {
43
+ const ios = config.client.targets.ios;
44
+ if (!ios)
45
+ throw new Error('No iOS application target configured');
46
+ viteConfig.build = { ...viteConfig.build, outDir: '../dist/ios-web' };
47
+ viteConfig.define = { __TYPEFERRY_RUNTIME__: JSON.stringify({ target, backendOrigin: ios.backend.origin }) };
48
+ }
49
+ const extended = config.extensions.vite?.(viteConfig, { command, target }) ?? viteConfig;
50
+ if (target === 'ios' && extended.define?.__TYPEFERRY_RUNTIME__ !== viteConfig.define?.__TYPEFERRY_RUNTIME__) {
51
+ throw new Error('iOS public runtime metadata must be preserved by Vite extensions');
52
+ }
53
+ if (target === 'ios' && extended.build?.outDir !== '../dist/ios-web') {
54
+ throw new Error('iOS output must remain isolated in dist/ios-web');
55
+ }
56
+ return extended;
43
57
  }
44
58
  //# sourceMappingURL=vite-config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"vite-config.js","sourceRoot":"","sources":["../../src/application/vite-config.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,WAAW,MAAM,mBAAmB,CAAC;AAC5C,OAAO,KAAK,MAAM,sBAAsB,CAAC;AAIzC,OAAO,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,UAAU,gBAAgB,CAC9B,MAAiC,EACjC,OAA4B;IAE5B,MAAM,OAAO,GAAmB,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACzD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,OAAO,CACb,uBAAuB,CACrB,MAAM,CAAC,WAAW,CAAC,UAAU,EAC7B,MAAM,CAAC,WAAW,CAAC,WAAW,CAC/B,CACF,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAiB;QAC/B,UAAU,EAAE,KAAK;QACjB,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;QACjD,OAAO;QACP,MAAM,EAAE;YACN,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,UAAU;YACnC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACtB,KAAK,EAAE;gBACL,OAAO,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;aAC3C;SACF;QACD,OAAO,EAAE;YACP,gBAAgB,EAAE,IAAI;YACtB,KAAK,EAAE;gBACL,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC;gBACtD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,CAAC;gBAChE,GAAG,EAAE,MAAM,CAAC,IAAI;aACjB;SACF;QACD,KAAK,EAAE;YACL,MAAM,EAAE,IAAI,CAAC,QAAQ,CACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAC3C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,QAAQ,CAAC,CACtD;YACD,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM;YAC3B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,UAAU;YAClC,aAAa,EAAE;gBACb,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC;aACjE;SACF;KACF,CAAC;IAEF,OAAO,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,IAAI,UAAU,CAAC;AACzE,CAAC"}
1
+ {"version":3,"file":"vite-config.js","sourceRoot":"","sources":["../../src/application/vite-config.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,6 @@
1
1
  export { broadcastTokenRefresh, setupCrossTabSync } from './cross-tab-sync.js';
2
2
  export { refreshAccessToken, setupTokenRefreshOnExpiry } from './token-refresh.js';
3
+ export { authenticateNativeSession } from './native-session.js';
4
+ export type { NativeAccessSession, NativeSessionOptions } from './native-session.js';
5
+ export { createNativeHttpFetch } from './native-http.js';
6
+ export type { NativeHttpBridge } from './native-http.js';
@@ -1,3 +1,5 @@
1
1
  export { broadcastTokenRefresh, setupCrossTabSync } from './cross-tab-sync.js';
2
2
  export { refreshAccessToken, setupTokenRefreshOnExpiry } from './token-refresh.js';
3
+ export { authenticateNativeSession } from './native-session.js';
4
+ export { createNativeHttpFetch } from './native-http.js';
3
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/auth/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAA;AAE5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA"}
@@ -0,0 +1,24 @@
1
+ import type { HttpFetch } from '../../client/backend-origin.js';
2
+ /**
3
+ * Text-only native transport. Its implementation must pin the backend origin,
4
+ * persist cookies privately, reject off-origin redirects and hide Set-Cookie.
5
+ */
6
+ export interface NativeHttpBridge {
7
+ request(options: {
8
+ url: string;
9
+ method: string;
10
+ headers: Record<string, string>;
11
+ body?: string;
12
+ }): Promise<{
13
+ status: number;
14
+ statusText: string;
15
+ headers: Record<string, string>;
16
+ body: string;
17
+ }>;
18
+ }
19
+ /**
20
+ * Adapts native private-cookie HTTP to ClientOptions.httpFetch. This boundary is
21
+ * for RPC and auth JSON, not binary uploads/downloads. Cancellation is checked
22
+ * before and after the native operation; it does not undo server-side effects.
23
+ */
24
+ export declare function createNativeHttpFetch(bridge: NativeHttpBridge): HttpFetch;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Adapts native private-cookie HTTP to ClientOptions.httpFetch. This boundary is
3
+ * for RPC and auth JSON, not binary uploads/downloads. Cancellation is checked
4
+ * before and after the native operation; it does not undo server-side effects.
5
+ */
6
+ export function createNativeHttpFetch(bridge) {
7
+ return async (url, options = {}) => {
8
+ options.signal?.throwIfAborted();
9
+ if (options.body != null && typeof options.body !== 'string') {
10
+ throw new Error('Native HTTP adapter supports text request bodies only');
11
+ }
12
+ const headers = Object.fromEntries(new Headers(options.headers).entries());
13
+ const result = await bridge.request({ url, method: options.method ?? 'GET', headers, ...(typeof options.body === 'string' ? { body: options.body } : {}) });
14
+ options.signal?.throwIfAborted();
15
+ const body = [204, 205, 304].includes(result.status) ? null : result.body;
16
+ return new Response(body, { status: result.status, statusText: result.statusText, headers: result.headers });
17
+ };
18
+ }
19
+ //# sourceMappingURL=native-http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-http.js","sourceRoot":"","sources":["../../../src/auth/client/native-http.ts"],"names":[],"mappings":"AAeA;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAwB;IAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,GAAG,EAAE,EAAE,EAAE;QACjC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;QAEhC,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC7D,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAA;QAC1E,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;QAC1E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAE3J,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;QAEhC,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAA;QAEzE,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IAC9G,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,34 @@
1
+ import type { HttpFetch } from '../../client/backend-origin.js';
2
+ /**
3
+ * Public access context returned by the application exchange endpoint.
4
+ * The refresh credential stays in the native HTTP cookie store.
5
+ */
6
+ export interface NativeAccessSession {
7
+ token: string;
8
+ exp: number;
9
+ iat: number;
10
+ }
11
+ /**
12
+ * An external system-browser handoff and its application-owned endpoints.
13
+ * httpFetch must use the same private native cookie store as the RPC client.
14
+ */
15
+ export interface NativeSessionOptions {
16
+ backendOrigin: string;
17
+ authorizationPath: string;
18
+ exchangePath: string;
19
+ redirectUri: string;
20
+ authenticate(options: {
21
+ url: string;
22
+ callbackScheme: string;
23
+ }): Promise<{
24
+ url: string;
25
+ }>;
26
+ httpFetch: HttpFetch;
27
+ }
28
+ /**
29
+ * Authenticates in an external browser with PKCE S256 and a fresh state value.
30
+ * Exchanges the returned code through native HTTP to establish its private
31
+ * refresh cookie. The caller installs the returned access context on its Client.
32
+ * No refresh credential or PKCE verifier is placed in a callback URL.
33
+ */
34
+ export declare function authenticateNativeSession(options: NativeSessionOptions): Promise<NativeAccessSession>;
@@ -0,0 +1,65 @@
1
+ import { resolveBackendOrigins } from '../../client/backend-origin.js';
2
+ function base64Url(bytes) {
3
+ return btoa(String.fromCharCode(...bytes)).replaceAll('+', '-').replaceAll('/', '_').replaceAll('=', '');
4
+ }
5
+ function endpoint(path, origin) {
6
+ const url = new URL(path, origin);
7
+ if (url.origin !== origin || url.username || url.password || url.hash) {
8
+ throw new Error('Native authentication endpoint must use the backend origin');
9
+ }
10
+ return url;
11
+ }
12
+ function readCallback(value, expected, state) {
13
+ const callback = new URL(value);
14
+ const codes = callback.searchParams.getAll('code');
15
+ const states = callback.searchParams.getAll('state');
16
+ if (callback.protocol !== expected.protocol || callback.host !== expected.host || callback.pathname !== expected.pathname || callback.username || callback.password || callback.hash || codes.length !== 1 || states.length !== 1 || states[0] !== state || !/^[A-Za-z0-9_-]{43}$/.test(codes[0]) || callback.searchParams.has('error')) {
17
+ throw new Error('Invalid native authentication callback');
18
+ }
19
+ return codes[0];
20
+ }
21
+ function isAccessSession(value) {
22
+ if (typeof value !== 'object' || value === null)
23
+ return false;
24
+ return 'token' in value && typeof value.token === 'string' && value.token.length > 0
25
+ && 'exp' in value && typeof value.exp === 'number' && Number.isFinite(value.exp)
26
+ && 'iat' in value && typeof value.iat === 'number' && Number.isFinite(value.iat)
27
+ && value.exp > value.iat;
28
+ }
29
+ /**
30
+ * Authenticates in an external browser with PKCE S256 and a fresh state value.
31
+ * Exchanges the returned code through native HTTP to establish its private
32
+ * refresh cookie. The caller installs the returned access context on its Client.
33
+ * No refresh credential or PKCE verifier is placed in a callback URL.
34
+ */
35
+ export async function authenticateNativeSession(options) {
36
+ const origin = resolveBackendOrigins({ httpOrigin: options.backendOrigin }).httpOrigin;
37
+ const authorization = endpoint(options.authorizationPath, origin);
38
+ const exchange = endpoint(options.exchangePath, origin);
39
+ const redirect = new URL(options.redirectUri);
40
+ if (!redirect.protocol.includes('.') || redirect.username || redirect.password || redirect.search || redirect.hash) {
41
+ throw new Error('Native redirect URI must use a reverse-domain app scheme without credentials, query or fragment');
42
+ }
43
+ const verifier = base64Url(crypto.getRandomValues(new Uint8Array(32)));
44
+ const state = base64Url(crypto.getRandomValues(new Uint8Array(32)));
45
+ const digest = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(verifier));
46
+ authorization.searchParams.set('redirect_uri', options.redirectUri);
47
+ authorization.searchParams.set('code_challenge', base64Url(new Uint8Array(digest)));
48
+ authorization.searchParams.set('code_challenge_method', 'S256');
49
+ authorization.searchParams.set('state', state);
50
+ const callback = await options.authenticate({ url: authorization.href, callbackScheme: redirect.protocol.slice(0, -1) });
51
+ const code = readCallback(callback.url, redirect, state);
52
+ const response = await options.httpFetch(exchange.href, {
53
+ method: 'POST',
54
+ credentials: 'include',
55
+ headers: { 'Content-Type': 'application/json', Accept: 'application/json' },
56
+ body: JSON.stringify({ code, codeVerifier: verifier, redirectUri: options.redirectUri }),
57
+ });
58
+ if (!response.ok)
59
+ throw new Error(`Native authentication exchange failed (${response.status})`);
60
+ const result = await response.json();
61
+ if (!isAccessSession(result))
62
+ throw new Error('Invalid native access session');
63
+ return { token: result.token, exp: result.exp, iat: result.iat };
64
+ }
65
+ //# sourceMappingURL=native-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-session.js","sourceRoot":"","sources":["../../../src/auth/client/native-session.ts"],"names":[],"mappings":"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"}
@@ -5,3 +5,9 @@ export { decodeToken, signAccessToken, verifyAccessToken, } from './server/jwt-u
5
5
  export { InMemorySessionManager } from './server/session-manager.js';
6
6
  export { broadcastTokenRefresh, setupCrossTabSync, } from './client/cross-tab-sync.js';
7
7
  export { refreshAccessToken, setupTokenRefreshOnExpiry, } from './client/token-refresh.js';
8
+ export { NativeAuthHandoff } from './server/native-handoff.js';
9
+ export type { NativeAuthGrant, NativeAuthGrantConsume, NativeAuthGrantStore, NativeAuthHandoffOptions } from './server/native-handoff.js';
10
+ export { authenticateNativeSession } from './client/native-session.js';
11
+ export type { NativeAccessSession, NativeSessionOptions } from './client/native-session.js';
12
+ export { createNativeHttpFetch } from './client/native-http.js';
13
+ export type { NativeHttpBridge } from './client/native-http.js';
@@ -6,4 +6,7 @@ export { InMemorySessionManager } from './server/session-manager.js';
6
6
  // Client utilities
7
7
  export { broadcastTokenRefresh, setupCrossTabSync, } from './client/cross-tab-sync.js';
8
8
  export { refreshAccessToken, setupTokenRefreshOnExpiry, } from './client/token-refresh.js';
9
+ export { NativeAuthHandoff } from './server/native-handoff.js';
10
+ export { authenticateNativeSession } from './client/native-session.js';
11
+ export { createNativeHttpFetch } from './client/native-http.js';
9
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAcA,mBAAmB;AACnB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACL,WAAW,EACX,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,mBAAmB;AACnB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAcA,mBAAmB;AACnB,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EACL,WAAW,EACX,eAAe,EACf,iBAAiB,GAClB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAEjE,mBAAmB;AACnB,OAAO,EACL,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAE3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAA;AAEnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Application-owned identity intent, bound to one native authorization attempt.
3
+ * Store the hash, never the plaintext authorization code or a refresh token.
4
+ */
5
+ export interface NativeAuthGrant<T> {
6
+ codeHash: string;
7
+ challenge: string;
8
+ redirectUri: string;
9
+ expiresAt: number;
10
+ value: T;
11
+ }
12
+ /**
13
+ * Atomic consume predicate. All fields must match and expiresAt must exceed now.
14
+ */
15
+ export interface NativeAuthGrantConsume {
16
+ codeHash: string;
17
+ challenge: string;
18
+ redirectUri: string;
19
+ now: number;
20
+ }
21
+ /**
22
+ * Durable shared storage contract for deployments with multiple server processes.
23
+ * consume must atomically delete and return only a grant matching every predicate;
24
+ * failed verification must leave the valid grant intact. Purge expired grants.
25
+ */
26
+ export interface NativeAuthGrantStore<T> {
27
+ create(grant: NativeAuthGrant<T>): Promise<void>;
28
+ consume(request: NativeAuthGrantConsume): Promise<T | null>;
29
+ }
30
+ /**
31
+ * Server integration for an application-authenticated browser-to-native handoff.
32
+ */
33
+ export interface NativeAuthHandoffOptions<T> {
34
+ store: NativeAuthGrantStore<T>;
35
+ redirectUris: readonly string[];
36
+ now?: () => number;
37
+ }
38
+ /**
39
+ * Issues short-lived, single-use codes protected by PKCE S256. Call authorize
40
+ * only after authenticating the browser user. After exchange, create a separate
41
+ * native session and set its refresh cookie on the exchange HTTP response.
42
+ * This helper does not authenticate users or register public HTTP endpoints.
43
+ */
44
+ export declare class NativeAuthHandoff<T> {
45
+ private readonly options;
46
+ private readonly now;
47
+ private readonly redirectUris;
48
+ constructor(options: NativeAuthHandoffOptions<T>);
49
+ /**
50
+ * Validates a registered callback and S256 challenge, then persists an intent.
51
+ * Pass only application-authorized identity data as value.
52
+ */
53
+ authorize(request: {
54
+ value: T;
55
+ challenge: string;
56
+ redirectUri: string;
57
+ state: string;
58
+ }): Promise<string>;
59
+ /**
60
+ * Consumes exactly one matching code. The verifier must never be sent through
61
+ * the browser redirect; receive it only in the native exchange POST body.
62
+ */
63
+ exchange(request: {
64
+ code: string;
65
+ verifier: string;
66
+ redirectUri: string;
67
+ }): Promise<T>;
68
+ private validateRedirect;
69
+ }
@@ -0,0 +1,65 @@
1
+ import { createHash, randomBytes } from 'node:crypto';
2
+ const CODE_PATTERN = /^[A-Za-z0-9_-]{43}$/;
3
+ const VERIFIER_PATTERN = /^[A-Za-z0-9._~-]{43,128}$/;
4
+ const GRANT_LIFETIME_MS = 120_000;
5
+ /**
6
+ * Issues short-lived, single-use codes protected by PKCE S256. Call authorize
7
+ * only after authenticating the browser user. After exchange, create a separate
8
+ * native session and set its refresh cookie on the exchange HTTP response.
9
+ * This helper does not authenticate users or register public HTTP endpoints.
10
+ */
11
+ export class NativeAuthHandoff {
12
+ options;
13
+ now;
14
+ redirectUris;
15
+ constructor(options) {
16
+ this.options = options;
17
+ this.now = options.now ?? Date.now;
18
+ this.redirectUris = new Set(options.redirectUris);
19
+ for (const uri of this.redirectUris) {
20
+ const url = new URL(uri);
21
+ if (!url.protocol.includes('.') || url.username || url.password || url.search || url.hash) {
22
+ throw new Error('Native redirect URI must use a reverse-domain app scheme without credentials, query or fragment');
23
+ }
24
+ }
25
+ }
26
+ /**
27
+ * Validates a registered callback and S256 challenge, then persists an intent.
28
+ * Pass only application-authorized identity data as value.
29
+ */
30
+ async authorize(request) {
31
+ this.validateRedirect(request.redirectUri);
32
+ if (!CODE_PATTERN.test(request.challenge))
33
+ throw new Error('Invalid native authorization challenge');
34
+ if (!request.state || request.state.length > 512)
35
+ throw new Error('Invalid native authorization state');
36
+ const code = randomBytes(32).toString('base64url');
37
+ const codeHash = createHash('sha256').update(code).digest('hex');
38
+ await this.options.store.create({ codeHash, challenge: request.challenge, redirectUri: request.redirectUri, expiresAt: this.now() + GRANT_LIFETIME_MS, value: request.value });
39
+ const callback = new URL(request.redirectUri);
40
+ callback.searchParams.set('code', code);
41
+ callback.searchParams.set('state', request.state);
42
+ return callback.href;
43
+ }
44
+ /**
45
+ * Consumes exactly one matching code. The verifier must never be sent through
46
+ * the browser redirect; receive it only in the native exchange POST body.
47
+ */
48
+ async exchange(request) {
49
+ this.validateRedirect(request.redirectUri);
50
+ if (!CODE_PATTERN.test(request.code) || !VERIFIER_PATTERN.test(request.verifier)) {
51
+ throw new Error('Invalid or expired native authorization code');
52
+ }
53
+ const codeHash = createHash('sha256').update(request.code).digest('hex');
54
+ const challenge = createHash('sha256').update(request.verifier).digest('base64url');
55
+ const value = await this.options.store.consume({ codeHash, challenge, redirectUri: request.redirectUri, now: this.now() });
56
+ if (value === null)
57
+ throw new Error('Invalid or expired native authorization code');
58
+ return value;
59
+ }
60
+ validateRedirect(redirectUri) {
61
+ if (!this.redirectUris.has(redirectUri))
62
+ throw new Error('Unregistered native redirect URI');
63
+ }
64
+ }
65
+ //# sourceMappingURL=native-handoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-handoff.js","sourceRoot":"","sources":["../../../src/auth/server/native-handoff.ts"],"names":[],"mappings":"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"}
package/dist/cli/run.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { runNative } from '../application/native.js';
1
2
  import { runBuild } from '../application/build.js';
2
3
  import { parseCliArguments } from '../application/cli-arguments.js';
3
4
  import { loadApplicationConfig } from '../application/config.js';
@@ -9,7 +10,11 @@ export async function runCli(arguments_) {
9
10
  const root = await findApplicationRoot(process.cwd());
10
11
  const config = await loadApplicationConfig(root);
11
12
  if (parsed.command === 'build') {
12
- await runBuild(config);
13
+ await runBuild(config, parsed.target);
14
+ return;
15
+ }
16
+ if (parsed.command === 'native') {
17
+ await runNative(config, parsed.action);
13
18
  return;
14
19
  }
15
20
  if (parsed.command === 'develop') {
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAA6B;IACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAEhD,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtB,OAAM;IACR,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QAChD,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAA;AAC5E,CAAC"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAA;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,UAA6B;IACxD,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAA;IAC5C,MAAM,IAAI,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;IACrD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAA;IAEhD,IAAI,MAAM,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QACrC,OAAM;IACR,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAA;QACtC,OAAM;IACR,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,eAAe,CAAC,CAAA;QAChD,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAA;AAC5E,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Explicit backend locations for clients running outside their server origin.
3
+ * Paths remain owned by the protocol and application, not by these origins.
4
+ */
5
+ export interface BackendOrigins {
6
+ httpOrigin: string;
7
+ webSocketOrigin?: string;
8
+ }
9
+ /**
10
+ * Validates explicit origins without including potentially secret input in errors.
11
+ * The WebSocket origin defaults to the HTTP host with the corresponding scheme.
12
+ */
13
+ export declare function resolveBackendOrigins(backend: BackendOrigins): Required<BackendOrigins>;
14
+ /**
15
+ * Fetch-compatible request boundary that native hosts can implement privately.
16
+ */
17
+ export type HttpFetch = (url: string, options?: RequestInit) => Promise<Response>;
@@ -0,0 +1,25 @@
1
+ function validateOrigin(value, protocols, message) {
2
+ let url;
3
+ try {
4
+ url = new URL(value);
5
+ }
6
+ catch {
7
+ throw new Error(message);
8
+ }
9
+ if (!protocols.includes(url.protocol) || url.username || url.password || url.pathname !== '/' || url.search || url.hash) {
10
+ throw new Error(message);
11
+ }
12
+ return url;
13
+ }
14
+ /**
15
+ * Validates explicit origins without including potentially secret input in errors.
16
+ * The WebSocket origin defaults to the HTTP host with the corresponding scheme.
17
+ */
18
+ export function resolveBackendOrigins(backend) {
19
+ const http = validateOrigin(backend.httpOrigin, ['http:', 'https:'], 'HTTP backend must be an HTTP(S) origin');
20
+ const inferredSocket = new URL(http);
21
+ inferredSocket.protocol = http.protocol === 'https:' ? 'wss:' : 'ws:';
22
+ const socket = validateOrigin(backend.webSocketOrigin ?? inferredSocket.origin, ['ws:', 'wss:'], 'WebSocket backend must be a WS(S) origin');
23
+ return { httpOrigin: http.origin, webSocketOrigin: socket.origin };
24
+ }
25
+ //# sourceMappingURL=backend-origin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backend-origin.js","sourceRoot":"","sources":["../../src/client/backend-origin.ts"],"names":[],"mappings":"AASA,SAAS,cAAc,CAAC,KAAa,EAAE,SAA4B,EAAE,OAAe;IAClF,IAAI,GAAQ,CAAA;IAEZ,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAED,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;QACxH,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IAC1B,CAAC;IAED,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAuB;IAC3D,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,wCAAwC,CAAC,CAAA;IAC9G,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAA;IAEpC,cAAc,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAA;IAErE,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,IAAI,cAAc,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,0CAA0C,CAAC,CAAA;IAE5I,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,CAAA;AACpE,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { EJSON } from '../ejson/index.js';
2
2
  import { CLIENT_ID_HEADER_KEY, ClientEvents, PayloadType, Presentation, TOKEN_HEADER_KEY, } from '../utils/index.js';
3
3
  import { LogLevel } from './logger.js';
4
+ import { resolveBackendOrigins } from './backend-origin.js';
4
5
  /**
5
6
  * Preserves an unsuccessful HTTP response status across the RPC boundary.
6
7
  */
@@ -34,7 +35,11 @@ export class ClientHttp {
34
35
  * routes through Vite's proxy which forwards to the TypeFerry server.
35
36
  */
36
37
  const hasHttpPort = 'httpPort' in this.client.options;
37
- if (hasHttpPort && !this.client.options.httpPort) {
38
+ if (this.client.options.backend) {
39
+ this.host = resolveBackendOrigins(this.client.options.backend).httpOrigin;
40
+ this.protocol = new URL(this.host).protocol + '//';
41
+ }
42
+ else if (hasHttpPort && !this.client.options.httpPort) {
38
43
  // Use page origin (same-origin cookies via Vite proxy in dev)
39
44
  this.host =
40
45
  typeof window !== 'undefined'
@@ -56,8 +61,8 @@ export class ClientHttp {
56
61
  }
57
62
  async request(payload, resolve, reject) {
58
63
  try {
59
- // @ts-ignore
60
- const data = await fetch(this.uri, {
64
+ const httpFetch = this.client.options.httpFetch ?? fetch;
65
+ const data = await httpFetch(this.uri, {
61
66
  method: 'POST',
62
67
  headers: {
63
68
  [CLIENT_ID_HEADER_KEY]: this.client.uuid,
@@ -1 +1 @@
1
- {"version":3,"file":"client-http.js","sourceRoot":"","sources":["../../src/client/client-http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-http.js","sourceRoot":"","sources":["../../src/client/client-http.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { TYPEFERRY_WS_PATH, ClientEvents, MessageType, Presentation, isAuthMessage, isEventMessage, isPingMessage, isRpcResponse, } from '../utils/index.js';
2
2
  import EventEmitter2 from '../utils/event-emitter.js';
3
3
  import { LogLevel } from './logger.js';
4
+ import { resolveBackendOrigins } from './backend-origin.js';
4
5
  const MAX_RECONNECT_ATTEMPTS = 10;
5
6
  const BASE_RECONNECT_DELAY = 500;
6
7
  const MAX_RECONNECT_DELAY = 10000;
@@ -40,7 +41,11 @@ export class ClientSocket extends EventEmitter2 {
40
41
  Object.assign(this.options, options ?? {});
41
42
  const wsProtocol = this.client.options.secure ? 'wss://' : 'ws://';
42
43
  this.protocol = this.client.options.secure ? 'https://' : 'http://';
43
- if (this.client.options.port) {
44
+ if (this.client.options.backend) {
45
+ this.uri = resolveBackendOrigins(this.client.options.backend).webSocketOrigin;
46
+ this.protocol = this.uri.startsWith('wss:') ? 'https://' : 'http://';
47
+ }
48
+ else if (this.client.options.port) {
44
49
  this.uri = `${wsProtocol}${this.client.options.host}:${this.client.options.port}`;
45
50
  }
46
51
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"client-socket.js","sourceRoot":"","sources":["../../src/client/client-socket.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client-socket.js","sourceRoot":"","sources":["../../src/client/client-socket.ts"],"names":[],"mappings":"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"}