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.
- package/README.md +9 -0
- package/dist/application/build.d.ts +2 -2
- package/dist/application/build.js +8 -2
- package/dist/application/build.js.map +1 -1
- package/dist/application/cli-arguments.d.ts +6 -1
- package/dist/application/cli-arguments.js +9 -1
- package/dist/application/cli-arguments.js.map +1 -1
- package/dist/application/config.d.ts +47 -1
- package/dist/application/config.js +88 -2
- package/dist/application/config.js.map +1 -1
- package/dist/application/native-project.d.ts +16 -0
- package/dist/application/native-project.js +82 -0
- package/dist/application/native-project.js.map +1 -0
- package/dist/application/native.d.ts +2 -0
- package/dist/application/native.js +86 -0
- package/dist/application/native.js.map +1 -0
- package/dist/application/runtime.d.ts +13 -0
- package/dist/application/runtime.js +15 -0
- package/dist/application/runtime.js.map +1 -0
- package/dist/application/server-build.js +1 -0
- package/dist/application/server-build.js.map +1 -1
- package/dist/application/vite-config.d.ts +2 -2
- package/dist/application/vite-config.js +16 -2
- package/dist/application/vite-config.js.map +1 -1
- package/dist/auth/client/index.d.ts +4 -0
- package/dist/auth/client/index.js +2 -0
- package/dist/auth/client/index.js.map +1 -1
- package/dist/auth/client/native-http.d.ts +24 -0
- package/dist/auth/client/native-http.js +19 -0
- package/dist/auth/client/native-http.js.map +1 -0
- package/dist/auth/client/native-session.d.ts +34 -0
- package/dist/auth/client/native-session.js +65 -0
- package/dist/auth/client/native-session.js.map +1 -0
- package/dist/auth/index.d.ts +6 -0
- package/dist/auth/index.js +3 -0
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/server/native-handoff.d.ts +69 -0
- package/dist/auth/server/native-handoff.js +65 -0
- package/dist/auth/server/native-handoff.js.map +1 -0
- package/dist/cli/run.js +6 -1
- package/dist/cli/run.js.map +1 -1
- package/dist/client/backend-origin.d.ts +17 -0
- package/dist/client/backend-origin.js +25 -0
- package/dist/client/backend-origin.js.map +1 -0
- package/dist/client/client-http.js +8 -3
- package/dist/client/client-http.js.map +1 -1
- package/dist/client/client-socket.js +6 -1
- package/dist/client/client-socket.js.map +1 -1
- package/dist/client/client.d.ts +9 -0
- package/dist/client/client.js.map +1 -1
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.js +1 -0
- package/dist/client/index.js.map +1 -1
- package/dist/ejson/clone.js +7 -1
- package/dist/ejson/clone.js.map +1 -1
- package/dist/native/index.d.ts +76 -0
- package/dist/native/index.js +5 -0
- package/dist/native/index.js.map +1 -0
- package/dist/native/share-file.d.ts +18 -0
- package/dist/native/share-file.js +41 -0
- package/dist/native/share-file.js.map +1 -0
- package/dist/native/templates/bridge-view-controller.d.ts +4 -0
- package/dist/native/templates/bridge-view-controller.js +86 -0
- package/dist/native/templates/bridge-view-controller.js.map +1 -0
- package/dist/native/templates/file-staging.d.ts +4 -0
- package/dist/native/templates/file-staging.js +77 -0
- package/dist/native/templates/file-staging.js.map +1 -0
- package/dist/native/templates/http-session.d.ts +4 -0
- package/dist/native/templates/http-session.js +117 -0
- package/dist/native/templates/http-session.js.map +1 -0
- package/dist/native/templates/index.d.ts +4 -0
- package/dist/native/templates/index.js +20 -0
- package/dist/native/templates/index.js.map +1 -0
- package/dist/native/templates/keychain.d.ts +4 -0
- package/dist/native/templates/keychain.js +48 -0
- package/dist/native/templates/keychain.js.map +1 -0
- package/dist/native/templates/media-permission-policy.d.ts +4 -0
- package/dist/native/templates/media-permission-policy.js +24 -0
- package/dist/native/templates/media-permission-policy.js.map +1 -0
- package/dist/native/templates/plugin.d.ts +4 -0
- package/dist/native/templates/plugin.js +314 -0
- package/dist/native/templates/plugin.js.map +1 -0
- package/dist/native/templates/wake-locks.d.ts +4 -0
- package/dist/native/templates/wake-locks.js +47 -0
- package/dist/native/templates/wake-locks.js.map +1 -0
- package/dist/native/wake-lock.d.ts +9 -0
- package/dist/native/wake-lock.js +17 -0
- package/dist/native/wake-lock.js.map +1 -0
- package/package.json +18 -2
package/dist/client/client.d.ts
CHANGED
|
@@ -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":"AAAA,OAAO,OAAO,MAAM,iBAAiB,CAAA;AACrC,OAAO,EAAE,MAAM,cAAc,CAAA;AAE7B,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAG/D,OAAO,EACL,eAAe,EACf,YAAY,EACZ,WAAW,EACX,MAAM,EACN,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,gBAAgB,GACjB,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAsDxD;;;GAGG;AACH,MAAM,OAAO,MAEX,SAAQ,aAAa;IACrB,IAAI,CAAQ;IAEZ,YAAY,CAAc;IAC1B,UAAU,CAAY;IACtB,cAAc,CAAgB;IAC9B,YAAY,CAAc;IAE1B,QAAQ,GAA+B,IAAI,GAAG,EAAE,CAAA;IAEhD,QAAQ,GAAiB,IAAI,GAAG,EAAE,CAAA;IAElC,WAAW,GAAG,KAAK,CAAA;IAEnB,aAAa,GAAG,KAAK,CAAA;IAErB,OAAO,GAAkB;QACvB,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,KAAK;QACb,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,kBAAkB,EAAE,EAAE;QACtB,IAAI,EAAE,EAAE;KACT,CAAA;IAED,sCAAsC;IACtC,MAAM,GAAoB,MAAM,CAAA;IAEhC,YAAY,CAAS;IAErB,iBAAiB,CAAmB;IACpC,SAAS,GAAqB,IAAI,CAAA;IAElC,CAAC,CAAa;IAEd,uFAAuF;IAEvF,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAA;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,KAAuB;QACjC,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,KAAK,CAAA;IACrC,CAAC;IAED,YAAY,UAAyB,EAAE;QACrC,KAAK,CAAC,UAAU,CAAC,CAAA;QAEjB,IAAI,CAAC,CAAC,GAAG,eAAe,CAAC,IAAI,CAA2B,CAAA;QAExD,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;QAE/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAEpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QAE3C,MAAM,OAAO,GACX,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAA;QAChE,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;QACjD,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,GAAG,EAAE,CACxD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CACxC,CAAA;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAA;QAEtC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;QAEnC;;;;;WAKG;QACH,IAAI,CAAC,WAAW,EAAE,CAAA;QAElB,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAA;QAC9C,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAA;QAEzC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAE3D,yBAAyB;QACzB,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC7C,CAAC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QACtC,CAAC;QAED,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACnE,CAAC,CAAC,CAAA;QAEF,IAAI,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,aAAa,EAAE,CAAC;YACvD,aAAa;YACb,MAAM,CAAC,SAAS,GAAG,IAAI,CAAA;QACzB,CAAC;QAED,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QAEF,MAAM,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC,OAAO,CAAA;QACxC,IAAI,CAAC,SAAS,GAAG,eAAe;YAC9B,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,EAAE,eAAe,CAAC;YACtC,CAAC,CAAC,IAAI,CAAA;QACR,IAAI,CAAC,iBAAiB,GAAG,IAAI,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IACtE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAA;IACxC,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,CAAA;IACpC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAA;IAClC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAA;IACnC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAA;IAChC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA;QAE3B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,UAAU,CACpB,QAAQ,CAAC,KAAK,EACd,uBAAuB,EACvB,EAAE,EACF,KAAc,CACf,CAAA;YACD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;QAC1D,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,WAAW;QACT,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAA;IACnC,CAAC;IAED,mCAAmC;IACnC,UAAU,CAAC,OAAgC;QACzC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,mBAAmB,CAAC,OAAgC;QACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;QAC1B,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAA;QAEpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,iCAAiC,CAAC,CAAA;QACnE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,QAAQ,CAAC,KAAK,EACd,8CAA8C,CAC/C,CAAA;QACD,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,CAAC,CAAA;QACnD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,2BAA2B,CAAC,CAAA;IAC/D,CAAC;IAED,mCAAmC;IACnC,aAAa,CAAC,OAAgC;QAC5C,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,mCAAmC;IACnC,YAAY;QACV,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAA;IACpC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;QAE7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAA;QAEvD,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,CAAA;QACzB,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAA;QAEhC,kCAAkC;QAClC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAA;QAChE,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YAC9B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,8BAA8B,EAAE,EAAE,CAAC,CAAA;QAClE,CAAC,CAAC,CAAA;QAEF,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAA;IACjC,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,UAAU;QACd,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAA;YAC5C,OAAM;QACR,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,CAAA;QACxB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAA;QACxB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAA;QAEpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAA;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAA;QAEzB,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAA;QACnC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAA;QAEvD,OAAO,IAAI,CAAA;IACb,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,MAA8B,EAAE,IAAkB;QAC5D,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE;YAC1D,GAAG,IAAI;YACP,IAAI,EAAE,IAAI;SACX,CAAC,CAAA;QAEF,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;QAC/C,CAAC;QAED,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAA;QAC1C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAA;QAC1B,IAAI,CAAC,YAAY,EAAE,CAAA;QACnB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACvC,CAAC;IAED,KAAK,CAAC,sBAAsB;QAC1B,KAAK,MAAM,CAAC,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACxC,MAAM,OAAO,CAAC,WAAW,EAAE,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,IAAI,CAAC,KAAK,EAAE,CAAA;IACrB,CAAC;IAED;;OAEG;IACH,IAAI,CACF,MAAc,EACd,MAAwB,EACxB,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI,KAAkB,EAAE;QAE/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;YAElC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAA;YAEjD,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,EAAE,CAAC;gBACvD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;gBAChC,MAAM,WAAW,GAAG;oBAClB,IAAI,EAAE,WAAW,CAAC,MAAM;oBACxB,IAAI;oBACJ,MAAM;oBACN,MAAM;oBACN,IAAI,EAAE,IAAI;iBACX,CAAA;gBACD,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;YAC3D,CAAC;YAED,2DAA2D;YAC3D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;YAE3C,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;IACJ,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAAC,OAAe;QACjD,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,EAAE,4BAA4B,EAAE;gBACnE,OAAO;aACR,CAAC,CAAA;YACF,MAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAA;QACvE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;QACtD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,WAAW,CACvB,MAAc,EACd,MAAW,EACX,IAAa,EACb,YAAqB,EACrB,OAAe;QAEf,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;QAE5D,2EAA2E;QAC3E,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,YAAY,CAAC,EAAE,CAAC;YACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,CAAA;gBAChC,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAA;gBAClE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;YACnD,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,YAAY,CAAC,WAAW,CACxC,KAAK,EACL,EAAE,MAAM,EAAE,MAAM,EAAE,EAClB,OAAO,CACR,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,0CAA0C;YAC1C,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,YAAY,CAAC,KAAc,CAAC,CAAA;YACnC,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAEO,MAAM,CAAU,oBAAoB,GAAG;QAC7C,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,SAAgC;QACtC,YAAY,EAAE,IAAI;QAClB,UAAU,EAAE,KAAK;QACjB,UAAU,EAAE,CAAC;QACb,qBAAqB,EAAE,IAAI;KAC5B,CAAA;IAEO,oBAAoB,CAAC,OAAqB;QAChD,OAAO,EAAE,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,OAAO,EAAE,CAAA;IACvD,CAAC;IAEO,KAAK,CAAC,SAAS,CACrB,MAAc,EACd,MAAW,EACX,IAAkD;QAElD,IAAI,SAAc,CAAA;QAElB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC;YAC5D,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,WAAW,CAC3B,MAAM,EACN,MAAM,EACN,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,OAAO,CACb,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,SAAS,GAAG,KAAK,CAAA;gBACjB,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;oBAChB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,EAAE;wBAC5D,MAAM;wBACN,OAAO,EAAE,OAAO,GAAG,CAAC;wBACpB,UAAU,EAAE,IAAI,CAAC,UAAU;wBAC3B,KAAK,EAAG,KAAe,CAAC,OAAO;qBAChC,CAAC,CAAA;gBACJ,CAAC;gBACD,IAAI,OAAO,IAAI,IAAI,CAAC,UAAU;oBAAE,MAAM,SAAS,CAAA;gBAC/C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAC1B,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAChD,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CACR,MAAc,EACd,MAAU,EACV,OAAqB;QAErB,MAAM,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;QAE/C,MAAM,iBAAiB,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,WAAW,CAAA;QAC/D,IAAI,iBAAiB;YAAE,MAAM,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAErE,OAAO,IAAI,CAAC,SAAS,CAAI,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;IAChD,CAAC;IAED,KAAK,CAA0B,KAAQ;QACrC,OAAO,IAAwB,CAAA;IACjC,CAAC;IAED,OAAO,CAAmB,OAAU;QAClC,OAAO,IAA0D,CAAA;IACnE,CAAC;IAED,mDAAmD;IACnD,WAAW,CAAC,OAA6B;QACvC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QAChD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,EAAE;YACpD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAA;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;IAC1E,CAAC;IAED;;;OAGG;IACH,IAAI,CAAC,GAAG,IAAsC;QAC5C,IAAI,WAAW,GAAG,EAAE,CAAA;QAEpB,IAAI,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;YACzB,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,SAAS,CAAC,MAAa,CAAC,CAAC,CAAA;QACvD,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;QAEtE,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,IAAI;aACnC,IAAI,CAAC,GAAG,CAAC;aACT,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,GAAG,WAAW,EAAE,CAAA;IAC9C,CAAC;IAED,OAAO,CAAC,OAAwB,UAAU;QACxC,IACE,IAAI,IAAI,IAAI;YACZ,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,UAAU;YACpC,OAAO,IAAI,CAAC,QAAQ,KAAK,UAAU,EACnC,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAA;QACxB,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAA;QAClD,IAAI,IAAI,KAAK,UAAU;YAAE,OAAO,IAAI,CAAA;QAEpC,MAAM,WAAW,GAAG,IAAc,CAAA;QAElC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAA;QAEzE,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,WAAW,CAAC,CAAA;QAC9C,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;QAEvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAA;QAEvC,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;YAC3B,IAAI,IAAI,CAAC,SAAS;gBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAA;YAExC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,GAAW,EAAE,UAAmC,EAAE;QACtD,OAAO,KAAK,CAAC,GAAG,EAAE;YAChB,WAAW,EAAE,SAAkB;YAC/B,OAAO,EAAE;gBACP,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aACvC;YACD,GAAG,OAAO;SACX,CAAC,CAAA;IACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client/index.d.ts
CHANGED
package/dist/client/index.js
CHANGED
package/dist/client/index.js.map
CHANGED
|
@@ -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"}
|
package/dist/ejson/clone.js
CHANGED
|
@@ -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
|
-
|
|
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)) {
|
package/dist/ejson/clone.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clone.js","sourceRoot":"","sources":["../../src/ejson/clone.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAC/B,OAAO,EACL,WAAW,EACX,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,MAAM,GACP,MAAM,SAAS,CAAA;AAEhB,SAAS,cAAc,CAAC,GAAQ;IAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IACzD,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA;IACxD,IAAI,GAAG,YAAY,IAAI;QACrB,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,CAAA;IAC3D,IAAI,GAAG,YAAY,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IAChE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAC3B,CAAC;AAED,SAAS,iBAAiB,CACxB,GAAQ,EACR,aAA8B;IAE9B,IAAI,GAAG,CAAC,SAAS,KAAK,UAAU,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAA;IAClD,CAAC;IAED,
|
|
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,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,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,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,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"}
|