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
@@ -2,6 +2,7 @@ import type { CallOptions, MethodParams, ServerMethods } from '../utils/index.js
2
2
  import { Presentation } from '../utils/index.js';
3
3
  import { ClientChannel } from './client-channel.js';
4
4
  import { ClientHttp } from './client-http.js';
5
+ import type { BackendOrigins, HttpFetch } from './backend-origin.js';
5
6
  import { ClientSocket } from './client-socket.js';
6
7
  import type { TypeFerryContext } from './context-manager.js';
7
8
  import { ContextManager } from './context-manager.js';
@@ -23,6 +24,14 @@ export type WebSocketRequestParams = {
23
24
  [x: number]: any;
24
25
  };
25
26
  export type ClientOptions = {
27
+ /**
28
+ * Explicit backend origins take precedence over host, port, httpPort and secure.
29
+ */
30
+ backend?: BackendOrigins;
31
+ /**
32
+ * Optional HTTP transport for native cookie storage. Web clients use fetch.
33
+ */
34
+ httpFetch?: HttpFetch;
26
35
  host?: string;
27
36
  port?: number;
28
37
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
@@ -4,3 +4,4 @@ export * from './client-http.js';
4
4
  export * from './client-socket.js';
5
5
  export * from './context-manager.js';
6
6
  export * from './logger.js';
7
+ export * from './backend-origin.js';
@@ -4,4 +4,5 @@ export * from './client-http.js';
4
4
  export * from './client-socket.js';
5
5
  export * from './context-manager.js';
6
6
  export * from './logger.js';
7
+ export * from './backend-origin.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,kBAAkB,CAAA;AAChC,cAAc,eAAe,CAAA;AAC7B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,UAAU,CAAA;AAExB,cAAc,kBAAkB,CAAA"}
@@ -15,7 +15,13 @@ function cloneSpecialTypes(val, internalClone) {
15
15
  if (val._bsontype === 'ObjectId' && isFunction(val.toString)) {
16
16
  return { handled: true, result: val.toString() };
17
17
  }
18
- if (val.constructor.name === 'model' && isObject(val._doc)) {
18
+ /**
19
+ * Embedded documents have different constructors but share document storage
20
+ * and state. Never visit their internal parent backlinks: doing so consumes
21
+ * parent fields in the shared-reference guard before those fields are cloned.
22
+ */
23
+ if ((val.constructor?.name === 'model' || isObjectAndNotNull(val.$__)) &&
24
+ isObjectAndNotNull(val._doc)) {
19
25
  return { handled: true, result: internalClone(val._doc) };
20
26
  }
21
27
  if (EJSON.isBinary(val)) {
@@ -1 +1 @@
1
- {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/ejson/clone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/ejson/clone.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import type { PluginListenerHandle } from '@capacitor/core';
2
+ export interface NativeHTTPRequest {
3
+ url: string;
4
+ method: string;
5
+ headers: Record<string, string>;
6
+ body?: string;
7
+ }
8
+ export interface NativeHTTPResponse {
9
+ status: number;
10
+ statusText: string;
11
+ headers: Record<string, string>;
12
+ body: string;
13
+ }
14
+ export interface NativeAppState {
15
+ isActive: boolean;
16
+ }
17
+ /**
18
+ * Optional iOS bridge. Import only from native application entry points.
19
+ * Origins and callback schemes are pinned by generated native configuration;
20
+ * JavaScript cannot expand the native trust boundary.
21
+ */
22
+ export interface TypeFerryNativePlugin {
23
+ request(options: NativeHTTPRequest): Promise<NativeHTTPResponse>;
24
+ getSession(): Promise<{
25
+ value: string | null;
26
+ }>;
27
+ setSession(options: {
28
+ value: string;
29
+ }): Promise<void>;
30
+ clearSession(): Promise<void>;
31
+ authenticate(options: {
32
+ url: string;
33
+ callbackScheme: string;
34
+ }): Promise<{
35
+ url: string;
36
+ }>;
37
+ acquireWakeLock(): Promise<{
38
+ id: string;
39
+ }>;
40
+ releaseWakeLock(options: {
41
+ id: string;
42
+ }): Promise<void>;
43
+ getState(): Promise<NativeAppState>;
44
+ addListener(eventName: 'appStateChange', listener: (state: NativeAppState) => void): Promise<PluginListenerHandle>;
45
+ beginFile(options: {
46
+ fileName: string;
47
+ size: number;
48
+ }): Promise<{
49
+ id: string;
50
+ }>;
51
+ appendFile(options: {
52
+ id: string;
53
+ offset: number;
54
+ base64: string;
55
+ }): Promise<void>;
56
+ finishFile(options: {
57
+ id: string;
58
+ }): Promise<{
59
+ completed: boolean;
60
+ }>;
61
+ cancelFile(options: {
62
+ id: string;
63
+ }): Promise<void>;
64
+ shareFile(options: {
65
+ url: string;
66
+ fileName: string;
67
+ headers?: Record<string, string>;
68
+ }): Promise<{
69
+ completed: boolean;
70
+ }>;
71
+ }
72
+ export declare const TypeFerryNative: TypeFerryNativePlugin;
73
+ export { NATIVE_FILE_CHUNK_BYTES, NATIVE_FILE_MAX_BYTES, shareNativeFile } from './share-file.js';
74
+ export type { ShareNativeFileOptions } from './share-file.js';
75
+ export { acquireNativeWakeLock } from './wake-lock.js';
76
+ export type { NativeWakeLock } from './wake-lock.js';
@@ -0,0 +1,5 @@
1
+ import { registerPlugin } from '@capacitor/core';
2
+ export const TypeFerryNative = registerPlugin('TypeFerryNative');
3
+ export { NATIVE_FILE_CHUNK_BYTES, NATIVE_FILE_MAX_BYTES, shareNativeFile } from './share-file.js';
4
+ export { acquireNativeWakeLock } from './wake-lock.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/native/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AA2ChD,MAAM,CAAC,MAAM,eAAe,GAAG,cAAc,CAAwB,iBAAiB,CAAC,CAAA;AAEvF,OAAO,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAG9F,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,18 @@
1
+ export declare const NATIVE_FILE_MAX_BYTES: number;
2
+ export declare const NATIVE_FILE_CHUNK_BYTES: number;
3
+ export interface ShareNativeFileOptions {
4
+ signal?: AbortSignal;
5
+ /**
6
+ * Reports bytes staged on device; completion still requires the share sheet.
7
+ */
8
+ onProgress?: (bytes: number) => void;
9
+ }
10
+ /**
11
+ * Shares a local Blob without passing its entire contents over the native bridge.
12
+ * Native staging validates every offset and removes partial files after failure.
13
+ * Cancellation applies during staging; once presented, the system share sheet
14
+ * owns cancellation and returns completed=false when dismissed.
15
+ */
16
+ export declare function shareNativeFile(file: Blob, fileName: string, options?: ShareNativeFileOptions): Promise<{
17
+ completed: boolean;
18
+ }>;
@@ -0,0 +1,41 @@
1
+ import { TypeFerryNative } from './index.js';
2
+ export const NATIVE_FILE_MAX_BYTES = 128 * 1024 * 1024;
3
+ export const NATIVE_FILE_CHUNK_BYTES = 48 * 1024;
4
+ const ENCODING_BLOCK_BYTES = 8192;
5
+ function encode(bytes) {
6
+ const blocks = [];
7
+ for (let index = 0; index < bytes.length; index += ENCODING_BLOCK_BYTES) {
8
+ blocks.push(String.fromCharCode(...bytes.subarray(index, index + ENCODING_BLOCK_BYTES)));
9
+ }
10
+ return btoa(blocks.join(''));
11
+ }
12
+ /**
13
+ * Shares a local Blob without passing its entire contents over the native bridge.
14
+ * Native staging validates every offset and removes partial files after failure.
15
+ * Cancellation applies during staging; once presented, the system share sheet
16
+ * owns cancellation and returns completed=false when dismissed.
17
+ */
18
+ export async function shareNativeFile(file, fileName, options = {}) {
19
+ if (!Number.isSafeInteger(file.size) || file.size < 0 || file.size > NATIVE_FILE_MAX_BYTES) {
20
+ throw new Error('Native file sharing supports files up to 128 MiB.');
21
+ }
22
+ options.signal?.throwIfAborted();
23
+ const { id } = await TypeFerryNative.beginFile({ fileName, size: file.size });
24
+ try {
25
+ for (let offset = 0; offset < file.size; offset += NATIVE_FILE_CHUNK_BYTES) {
26
+ options.signal?.throwIfAborted();
27
+ const bytes = new Uint8Array(await file.slice(offset, offset + NATIVE_FILE_CHUNK_BYTES).arrayBuffer());
28
+ options.signal?.throwIfAborted();
29
+ await TypeFerryNative.appendFile({ id, offset, base64: encode(bytes) });
30
+ options.onProgress?.(offset + bytes.length);
31
+ }
32
+ options.signal?.throwIfAborted();
33
+ return await TypeFerryNative.finishFile({ id });
34
+ }
35
+ catch (error) {
36
+ // Cleanup failure must not hide the original failure; native staging also expires.
37
+ await TypeFerryNative.cancelFile({ id }).catch(() => undefined);
38
+ throw error;
39
+ }
40
+ }
41
+ //# sourceMappingURL=share-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share-file.js","sourceRoot":"","sources":["../../src/native/share-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,CAAC,MAAM,qBAAqB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;AACtD,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,GAAG,IAAI,CAAA;AAChD,MAAM,oBAAoB,GAAG,IAAI,CAAA;AAUjC,SAAS,MAAM,CAAC,KAAiB;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAA;IAE3B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,oBAAoB,EAAE,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAA;IAC1F,CAAC;IAED,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;AAC9B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAU,EAAE,QAAgB,EAAE,UAAkC,EAAE;IACtG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,GAAG,qBAAqB,EAAE,CAAC;QAC3F,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACtE,CAAC;IAED,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;IAEhC,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAE7E,IAAI,CAAC;QACH,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,uBAAuB,EAAE,CAAC;YAC3E,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;YAEhC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,uBAAuB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;YAEtG,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;YAChC,MAAM,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACvE,OAAO,CAAC,UAAU,EAAE,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAC7C,CAAC;QAED,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;QAEhC,OAAO,MAAM,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mFAAmF;QACnF,MAAM,eAAe,CAAC,UAAU,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC/D,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Keeps Capacitor's existing UI delegate intact except for media permission decisions.
3
+ */
4
+ export declare const BRIDGE_VIEW_CONTROLLER_SWIFT: string;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Keeps Capacitor's existing UI delegate intact except for media permission decisions.
3
+ */
4
+ export const BRIDGE_VIEW_CONTROLLER_SWIFT = String.raw `import AVFoundation
5
+ import Capacitor
6
+ import WebKit
7
+
8
+ @objc(TypeFerryBridgeViewController)
9
+ class TypeFerryBridgeViewController: CAPBridgeViewController {
10
+ private var mediaDelegate: TypeFerryMediaDelegate?
11
+
12
+ override func capacitorDidLoad() {
13
+ bridge?.registerPluginInstance(TypeFerryNativePlugin())
14
+ guard let webView = webView, let bridge = bridge else { return }
15
+ let delegate = TypeFerryMediaDelegate(original: webView.uiDelegate, localURL: bridge.config.localURL)
16
+ mediaDelegate = delegate
17
+ webView.uiDelegate = delegate
18
+ }
19
+ }
20
+
21
+ private final class TypeFerryMediaDelegate: NSObject, WKUIDelegate {
22
+ private weak var original: WKUIDelegate?
23
+ private let localURL: URL
24
+
25
+ init(original: WKUIDelegate?, localURL: URL) {
26
+ self.original = original
27
+ self.localURL = localURL
28
+ super.init()
29
+ }
30
+
31
+ override func responds(to selector: Selector!) -> Bool {
32
+ super.responds(to: selector) || (original?.responds(to: selector) ?? false)
33
+ }
34
+
35
+ override func forwardingTarget(for selector: Selector!) -> Any? {
36
+ if original?.responds(to: selector) == true { return original }
37
+ return super.forwardingTarget(for: selector)
38
+ }
39
+
40
+ func webView(_ webView: WKWebView, requestMediaCapturePermissionFor origin: WKSecurityOrigin,
41
+ initiatedByFrame frame: WKFrameInfo, type: WKMediaCaptureType,
42
+ decisionHandler: @escaping (WKPermissionDecision) -> Void) {
43
+ guard let requestURL = frame.request.url,
44
+ TypeFerryMediaPolicy.isTrusted(localURL: localURL, requestURL: requestURL, isMainFrame: frame.isMainFrame),
45
+ origin.protocol == localURL.scheme, origin.host == localURL.host,
46
+ origin.port == (localURL.port ?? 0),
47
+ webView.url.map({ TypeFerryMediaPolicy.isTrusted(localURL: localURL, requestURL: $0, isMainFrame: true) }) == true
48
+ else { decisionHandler(.deny); return }
49
+
50
+ let devices: [AVMediaType]
51
+ switch type {
52
+ case .camera: devices = [.video]
53
+ case .microphone: devices = [.audio]
54
+ case .cameraAndMicrophone: devices = [.video, .audio]
55
+ @unknown default: decisionHandler(.deny); return
56
+ }
57
+ authorize(devices[...]) { [weak webView] decision in
58
+ // A permission prompt can outlive navigation; never grant to a replacement page.
59
+ guard let currentURL = webView?.url,
60
+ TypeFerryMediaPolicy.isTrusted(localURL: self.localURL, requestURL: currentURL, isMainFrame: true)
61
+ else { decisionHandler(.deny); return }
62
+ decisionHandler(decision)
63
+ }
64
+ }
65
+
66
+ private func authorize(_ devices: ArraySlice<AVMediaType>, completion: @escaping (WKPermissionDecision) -> Void) {
67
+ guard let device = devices.first else { completion(.grant); return }
68
+ let usageKey = device == .video ? "NSCameraUsageDescription" : "NSMicrophoneUsageDescription"
69
+ guard let explanation = Bundle.main.object(forInfoDictionaryKey: usageKey) as? String, !explanation.isEmpty
70
+ else { completion(.deny); return }
71
+
72
+ switch AVCaptureDevice.authorizationStatus(for: device) {
73
+ case .authorized: authorize(devices.dropFirst(), completion: completion)
74
+ case .notDetermined:
75
+ AVCaptureDevice.requestAccess(for: device) { [weak self] granted in
76
+ DispatchQueue.main.async {
77
+ guard granted, let self = self else { completion(.deny); return }
78
+ self.authorize(devices.dropFirst(), completion: completion)
79
+ }
80
+ }
81
+ default: completion(.deny)
82
+ }
83
+ }
84
+ }
85
+ `;
86
+ //# sourceMappingURL=bridge-view-controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge-view-controller.js","sourceRoot":"","sources":["../../../src/native/templates/bridge-view-controller.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiFrD,CAAA"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Bounded, sequential native file staging independent of Capacitor and UIKit.
3
+ */
4
+ export declare const FILE_STAGING_SWIFT: string;
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Bounded, sequential native file staging independent of Capacitor and UIKit.
3
+ */
4
+ export const FILE_STAGING_SWIFT = String.raw `import Foundation
5
+
6
+ final class TypeFerryFileStaging {
7
+ static let maximumBytes = 128 * 1024 * 1024
8
+ static let chunkBytes = 48 * 1024
9
+ private struct Pending {
10
+ let id: String
11
+ let url: URL
12
+ let name: String
13
+ let size: Int
14
+ let handle: FileHandle
15
+ var offset: Int
16
+ }
17
+ private var pending: Pending?
18
+
19
+ deinit {
20
+ if let id = pending?.id { cancel(id: id) }
21
+ }
22
+
23
+ func contains(id: String) -> Bool { pending?.id == id }
24
+
25
+ func begin(fileName: String, size: Int) throws -> String {
26
+ guard pending == nil else { throw failure("Another file is already being prepared.") }
27
+ guard size >= 0, size <= Self.maximumBytes else { throw failure("Files must be at most 128 MiB.") }
28
+ guard !fileName.isEmpty, fileName.utf8.count <= 255,
29
+ fileName == URL(fileURLWithPath: fileName).lastPathComponent,
30
+ ![".", ".."].contains(fileName), !fileName.contains("\\"), !fileName.contains("\0")
31
+ else { throw failure("A safe file name is required.") }
32
+
33
+ let id = UUID().uuidString
34
+ let url = FileManager.default.temporaryDirectory.appendingPathComponent("typeferry-share-" + id)
35
+ guard FileManager.default.createFile(atPath: url.path, contents: nil) else { throw failure("Unable to create a temporary file.") }
36
+ do {
37
+ let handle = try FileHandle(forWritingTo: url)
38
+ pending = Pending(id: id, url: url, name: fileName, size: size, handle: handle, offset: 0)
39
+ return id
40
+ } catch {
41
+ try? FileManager.default.removeItem(at: url)
42
+ throw error
43
+ }
44
+ }
45
+
46
+ func append(id: String, offset: Int, base64: String) throws {
47
+ guard var current = pending, current.id == id else { throw failure("The pending file is unavailable.") }
48
+ guard offset == current.offset, base64.utf8.count <= Self.chunkBytes / 3 * 4,
49
+ let data = Data(base64Encoded: base64), !data.isEmpty, data.count <= Self.chunkBytes,
50
+ data.count <= current.size - current.offset else { throw failure("Invalid file chunk or offset.") }
51
+ try current.handle.write(contentsOf: data)
52
+ current.offset += data.count
53
+ pending = current
54
+ }
55
+
56
+ func finish(id: String) throws -> (url: URL, fileName: String) {
57
+ guard let current = pending, current.id == id, current.offset == current.size else {
58
+ throw failure("The pending file is incomplete.")
59
+ }
60
+ try current.handle.close()
61
+ pending = nil
62
+ return (current.url, current.name)
63
+ }
64
+
65
+ func cancel(id: String) {
66
+ guard let current = pending, current.id == id else { return }
67
+ pending = nil
68
+ try? current.handle.close()
69
+ try? FileManager.default.removeItem(at: current.url)
70
+ }
71
+
72
+ private func failure(_ message: String) -> NSError {
73
+ NSError(domain: "TypeFerryFileStaging", code: 1, userInfo: [NSLocalizedDescriptionKey: message])
74
+ }
75
+ }
76
+ `;
77
+ //# sourceMappingURL=file-staging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-staging.js","sourceRoot":"","sources":["../../../src/native/templates/file-staging.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwE3C,CAAA"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Same-origin native transport, with a private cookie jar persisted in Keychain.
3
+ */
4
+ export declare const HTTP_SESSION_SWIFT: string;
@@ -0,0 +1,117 @@
1
+ /**
2
+ * Same-origin native transport, with a private cookie jar persisted in Keychain.
3
+ */
4
+ export const HTTP_SESSION_SWIFT = String.raw `import Foundation
5
+
6
+ final class TypeFerryHTTPSession: NSObject, URLSessionTaskDelegate {
7
+ let backendURL: URL
8
+ private let cookieAccount: String
9
+ private var session: URLSession!
10
+ private let cookieLock = NSLock()
11
+ private var generation = 0
12
+
13
+ init(backendURL: URL) throws {
14
+ self.backendURL = backendURL
15
+ cookieAccount = "cookies:" + backendURL.absoluteString
16
+ super.init()
17
+
18
+ let configuration = Self.makeConfiguration()
19
+ if let data = try TypeFerryKeychain.read(cookieAccount),
20
+ let rows = try PropertyListSerialization.propertyList(from: data, format: nil) as? [[String: Any]] {
21
+ for row in rows {
22
+ let properties = Dictionary(uniqueKeysWithValues: row.map { (HTTPCookiePropertyKey($0.key), $0.value) })
23
+ if let cookie = HTTPCookie(properties: properties),
24
+ cookie.expiresDate.map({ $0 > Date() }) ?? true {
25
+ configuration.httpCookieStorage?.setCookie(cookie)
26
+ }
27
+ }
28
+ }
29
+ session = URLSession(configuration: configuration, delegate: self, delegateQueue: nil)
30
+ }
31
+
32
+ func accepts(_ url: URL) -> Bool {
33
+ TypeFerryMediaPolicy.isTrusted(localURL: backendURL, requestURL: url, isMainFrame: true)
34
+ }
35
+
36
+ func request(_ request: URLRequest, completion: @escaping (Result<(Data, HTTPURLResponse), Error>) -> Void) {
37
+ guard let url = request.url, accepts(url) else { completion(.failure(Self.failure("Untrusted backend URL."))); return }
38
+ let (requestSession, requestGeneration) = snapshot()
39
+ requestSession.dataTask(with: request) { [weak self] data, response, error in
40
+ if let error = error { completion(.failure(error)); return }
41
+ guard let self = self, let response = response as? HTTPURLResponse, let data = data else {
42
+ completion(.failure(Self.failure("The backend returned no response."))); return
43
+ }
44
+ do {
45
+ try self.persistCookies(session: requestSession, generation: requestGeneration)
46
+ completion(.success((data, response)))
47
+ } catch { completion(.failure(error)) }
48
+ }.resume()
49
+ }
50
+
51
+ func download(_ request: URLRequest, completion: @escaping (Result<URL, Error>) -> Void) {
52
+ guard let url = request.url, accepts(url) else { completion(.failure(Self.failure("Untrusted download URL."))); return }
53
+ let (requestSession, requestGeneration) = snapshot()
54
+ requestSession.downloadTask(with: request) { [weak self] location, response, error in
55
+ if let error = error { completion(.failure(error)); return }
56
+ guard let self = self, let location = location, let response = response as? HTTPURLResponse,
57
+ (200..<300).contains(response.statusCode) else {
58
+ completion(.failure(Self.failure("The download failed."))); return
59
+ }
60
+ do {
61
+ try self.persistCookies(session: requestSession, generation: requestGeneration)
62
+ let retained = FileManager.default.temporaryDirectory.appendingPathComponent(UUID().uuidString)
63
+ try FileManager.default.moveItem(at: location, to: retained)
64
+ completion(.success(retained))
65
+ } catch { completion(.failure(error)) }
66
+ }.resume()
67
+ }
68
+
69
+ func clearCookies() throws {
70
+ cookieLock.lock()
71
+ defer { cookieLock.unlock() }
72
+ let previous = session
73
+ generation += 1
74
+ // A fresh cookie jar prevents in-flight Set-Cookie from resurrecting logout.
75
+ session = URLSession(configuration: Self.makeConfiguration(), delegate: self, delegateQueue: nil)
76
+ previous?.invalidateAndCancel()
77
+ try TypeFerryKeychain.delete(cookieAccount)
78
+ }
79
+
80
+ func urlSession(_ session: URLSession, task: URLSessionTask, willPerformHTTPRedirection response: HTTPURLResponse,
81
+ newRequest request: URLRequest, completionHandler: @escaping (URLRequest?) -> Void) {
82
+ guard let url = request.url, accepts(url) else { completionHandler(nil); return }
83
+ completionHandler(request)
84
+ }
85
+
86
+ private func snapshot() -> (URLSession, Int) {
87
+ cookieLock.lock()
88
+ defer { cookieLock.unlock() }
89
+ return (session, generation)
90
+ }
91
+
92
+ private static func makeConfiguration() -> URLSessionConfiguration {
93
+ let configuration = URLSessionConfiguration.ephemeral
94
+ configuration.httpShouldSetCookies = true
95
+ configuration.timeoutIntervalForRequest = 60
96
+ configuration.timeoutIntervalForResource = 300
97
+ return configuration
98
+ }
99
+
100
+ private func persistCookies(session: URLSession, generation: Int) throws {
101
+ cookieLock.lock()
102
+ defer { cookieLock.unlock() }
103
+ guard generation == self.generation else { throw Self.failure("The native session was cleared.") }
104
+ let rows = (session.configuration.httpCookieStorage?.cookies ?? []).compactMap { cookie -> [String: Any]? in
105
+ guard let properties = cookie.properties else { return nil }
106
+ return Dictionary(uniqueKeysWithValues: properties.map { ($0.key.rawValue, $0.value) })
107
+ }
108
+ let data = try PropertyListSerialization.data(fromPropertyList: rows, format: .binary, options: 0)
109
+ try TypeFerryKeychain.write(cookieAccount, data: data)
110
+ }
111
+
112
+ static func failure(_ message: String) -> NSError {
113
+ NSError(domain: "TypeFerryNative", code: 1, userInfo: [NSLocalizedDescriptionKey: message])
114
+ }
115
+ }
116
+ `;
117
+ //# sourceMappingURL=http-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-session.js","sourceRoot":"","sources":["../../../src/native/templates/http-session.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgH3C,CAAA"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Framework-owned Swift source files installed explicitly by the iOS scaffold.
3
+ */
4
+ export declare const IOS_NATIVE_TEMPLATES: Readonly<Record<string, string>>;
@@ -0,0 +1,20 @@
1
+ import { BRIDGE_VIEW_CONTROLLER_SWIFT } from './bridge-view-controller.js';
2
+ import { FILE_STAGING_SWIFT } from './file-staging.js';
3
+ import { HTTP_SESSION_SWIFT } from './http-session.js';
4
+ import { KEYCHAIN_SWIFT } from './keychain.js';
5
+ import { MEDIA_PERMISSION_POLICY_SWIFT } from './media-permission-policy.js';
6
+ import { NATIVE_PLUGIN_SWIFT } from './plugin.js';
7
+ import { WAKE_LOCKS_SWIFT } from './wake-locks.js';
8
+ /**
9
+ * Framework-owned Swift source files installed explicitly by the iOS scaffold.
10
+ */
11
+ export const IOS_NATIVE_TEMPLATES = {
12
+ 'TypeFerryBridgeViewController.swift': BRIDGE_VIEW_CONTROLLER_SWIFT,
13
+ 'TypeFerryMediaPolicy.swift': MEDIA_PERMISSION_POLICY_SWIFT,
14
+ 'TypeFerryWakeLocks.swift': WAKE_LOCKS_SWIFT,
15
+ 'TypeFerryFileStaging.swift': FILE_STAGING_SWIFT,
16
+ 'TypeFerryKeychain.swift': KEYCHAIN_SWIFT,
17
+ 'TypeFerryHTTPSession.swift': HTTP_SESSION_SWIFT,
18
+ 'TypeFerryNativePlugin.swift': NATIVE_PLUGIN_SWIFT,
19
+ };
20
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/native/templates/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAC3C,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAA;AACzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE/C;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqC;IACpE,qCAAqC,EAAE,4BAA4B;IACnE,4BAA4B,EAAE,6BAA6B;IAC3D,0BAA0B,EAAE,gBAAgB;IAC5C,4BAA4B,EAAE,kBAAkB;IAChD,yBAAyB,EAAE,cAAc;IACzC,4BAA4B,EAAE,kBAAkB;IAChD,6BAA6B,EAAE,mBAAmB;CACnD,CAAA"}
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Native-only secrets survive application upgrades without entering web storage.
3
+ */
4
+ export declare const KEYCHAIN_SWIFT: string;