@mittwald/flow-remote-core 0.2.0-alpha.237 → 0.2.0-alpha.239
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/dist/js/core/src/file.mjs +16 -0
- package/dist/js/core/src/file.mjs.map +1 -0
- package/dist/js/index-node.mjs +5 -8
- package/dist/js/index-node.mjs.map +1 -1
- package/dist/js/index.mjs +4 -7
- package/dist/js/index.mjs.map +1 -1
- package/dist/js/{connection → remote-core/src/connection}/connectHostRenderRoot.mjs +2 -0
- package/dist/js/remote-core/src/connection/connectHostRenderRoot.mjs.map +1 -0
- package/dist/js/{connection → remote-core/src/connection}/connectRemoteIframe.mjs +2 -0
- package/dist/js/remote-core/src/connection/connectRemoteIframe.mjs.map +1 -0
- package/dist/js/remote-core/src/connection/types.mjs.map +1 -0
- package/dist/js/remote-core/src/error.mjs.map +1 -0
- package/dist/js/remote-core/src/ext-bridge/implementation.mjs.map +1 -0
- package/dist/js/remote-core/src/serialization/FlowThreadSerialization.mjs +57 -0
- package/dist/js/remote-core/src/serialization/FlowThreadSerialization.mjs.map +1 -0
- package/dist/js/remote-core/src/serialization/Serializer.mjs +32 -0
- package/dist/js/remote-core/src/serialization/Serializer.mjs.map +1 -0
- package/dist/js/remote-core/src/serialization/serializers/dataTransferText.mjs +21 -0
- package/dist/js/remote-core/src/serialization/serializers/dataTransferText.mjs.map +1 -0
- package/dist/js/remote-core/src/serialization/serializers/date.mjs +16 -0
- package/dist/js/remote-core/src/serialization/serializers/date.mjs.map +1 -0
- package/dist/js/remote-core/src/serialization/serializers/file.mjs +42 -0
- package/dist/js/remote-core/src/serialization/serializers/file.mjs.map +1 -0
- package/dist/js/remote-core/src/serialization/serializers/index.mjs +4 -0
- package/dist/js/remote-core/src/serialization/serializers/index.mjs.map +1 -0
- package/dist/js/remote-core/src/shim.mjs.map +1 -0
- package/dist/types/connection/connectHostRenderRoot.d.ts.map +1 -1
- package/dist/types/connection/connectRemoteIframe.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -3
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/serialization/FlowThreadSerialization.d.ts +7 -0
- package/dist/types/serialization/FlowThreadSerialization.d.ts.map +1 -0
- package/dist/types/serialization/Serializer.d.ts +28 -0
- package/dist/types/serialization/Serializer.d.ts.map +1 -0
- package/dist/types/serialization/serializers/dataTransferText.d.ts +3 -0
- package/dist/types/serialization/serializers/dataTransferText.d.ts.map +1 -0
- package/dist/types/serialization/serializers/date.d.ts +4 -0
- package/dist/types/serialization/serializers/date.d.ts.map +1 -0
- package/dist/types/serialization/serializers/file.d.ts +12 -0
- package/dist/types/serialization/serializers/file.d.ts.map +1 -0
- package/dist/types/serialization/serializers/index.d.ts +4 -0
- package/dist/types/serialization/serializers/index.d.ts.map +1 -0
- package/package.json +12 -4
- package/dist/js/connection/connectHostRenderRoot.mjs.map +0 -1
- package/dist/js/connection/connectRemoteIframe.mjs.map +0 -1
- package/dist/js/connection/types.mjs.map +0 -1
- package/dist/js/error.mjs.map +0 -1
- package/dist/js/events/FlowRemoteEvent.mjs +0 -10
- package/dist/js/events/FlowRemoteEvent.mjs.map +0 -1
- package/dist/js/events/index.mjs +0 -13
- package/dist/js/events/index.mjs.map +0 -1
- package/dist/js/events/serializers.mjs +0 -25
- package/dist/js/events/serializers.mjs.map +0 -1
- package/dist/js/ext-bridge/implementation.mjs.map +0 -1
- package/dist/js/shim.mjs.map +0 -1
- package/dist/js/utils/eventValueTransformer.mjs +0 -21
- package/dist/js/utils/eventValueTransformer.mjs.map +0 -1
- package/dist/js/utils/file.mjs +0 -19
- package/dist/js/utils/file.mjs.map +0 -1
- package/dist/js/utils/helper.mjs +0 -20
- package/dist/js/utils/helper.mjs.map +0 -1
- package/dist/js/utils/promise.mjs +0 -28
- package/dist/js/utils/promise.mjs.map +0 -1
- package/dist/types/events/FlowRemoteEvent.d.ts +0 -4
- package/dist/types/events/FlowRemoteEvent.d.ts.map +0 -1
- package/dist/types/events/index.d.ts +0 -5
- package/dist/types/events/index.d.ts.map +0 -1
- package/dist/types/events/serializers.d.ts +0 -5
- package/dist/types/events/serializers.d.ts.map +0 -1
- package/dist/types/utils/eventValueTransformer.d.ts +0 -2
- package/dist/types/utils/eventValueTransformer.d.ts.map +0 -1
- package/dist/types/utils/file.d.ts +0 -2
- package/dist/types/utils/file.d.ts.map +0 -1
- package/dist/types/utils/helper.d.ts +0 -2
- package/dist/types/utils/helper.d.ts.map +0 -1
- package/dist/types/utils/promise.d.ts +0 -6
- package/dist/types/utils/promise.d.ts.map +0 -1
- package/dist/types/utils/promise.test.d.ts +0 -2
- package/dist/types/utils/promise.test.d.ts.map +0 -1
- /package/dist/js/{connection → remote-core/src/connection}/types.mjs +0 -0
- /package/dist/js/{error.mjs → remote-core/src/error.mjs} +0 -0
- /package/dist/js/{ext-bridge → remote-core/src/ext-bridge}/implementation.mjs +0 -0
- /package/dist/js/{shim.mjs → remote-core/src/shim.mjs} +0 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import invariant from 'invariant';
|
|
2
|
+
|
|
3
|
+
const Key = "mittwald.flow-core.file.awaitedArrayBuffer";
|
|
4
|
+
function isFileWithAwaitedArrayBuffer(file) {
|
|
5
|
+
return Key in file;
|
|
6
|
+
}
|
|
7
|
+
const getAwaitArrayBuffer = (file) => {
|
|
8
|
+
invariant(
|
|
9
|
+
isFileWithAwaitedArrayBuffer(file),
|
|
10
|
+
"Could not get awaited ArrayBuffer from file"
|
|
11
|
+
);
|
|
12
|
+
return file[Key];
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export { getAwaitArrayBuffer };
|
|
16
|
+
//# sourceMappingURL=file.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.mjs","sources":["../../../../../core/src/file.ts"],"sourcesContent":["import invariant from \"invariant\";\n\nconst Key = \"mittwald.flow-core.file.awaitedArrayBuffer\";\n\nexport type FileWithAwaitedArrayBuffer = File & {\n [Key]: ArrayBuffer;\n};\n\nfunction isFileWithAwaitedArrayBuffer(\n file: File | FileWithAwaitedArrayBuffer,\n): file is FileWithAwaitedArrayBuffer {\n return Key in file;\n}\n\nexport const addAwaitedArrayBuffer = async (file: File) => {\n const arrayBuffer = await file.arrayBuffer();\n Object.assign(file, { [Key]: arrayBuffer });\n};\n\nexport const getAwaitArrayBuffer = (\n file: File | FileWithAwaitedArrayBuffer,\n) => {\n invariant(\n isFileWithAwaitedArrayBuffer(file),\n \"Could not get awaited ArrayBuffer from file\",\n );\n return file[Key];\n};\n"],"names":[],"mappings":";;AAEA,MAAM,GAAM,GAAA,4CAAA;AAMZ,SAAS,6BACP,IACoC,EAAA;AACpC,EAAA,OAAO,GAAO,IAAA,IAAA;AAChB;AAOa,MAAA,mBAAA,GAAsB,CACjC,IACG,KAAA;AACH,EAAA,SAAA;AAAA,IACE,6BAA6B,IAAI,CAAA;AAAA,IACjC;AAAA,GACF;AACA,EAAA,OAAO,KAAK,GAAG,CAAA;AACjB;;;;"}
|
package/dist/js/index-node.mjs
CHANGED
|
@@ -1,10 +1,7 @@
|
|
|
1
|
-
import './shim.mjs';
|
|
1
|
+
import './remote-core/src/shim.mjs';
|
|
2
2
|
export { RemoteElement, RemoteEvent } from '@mittwald/remote-dom-core/elements';
|
|
3
|
-
export { connectHostRenderRoot, connectHostRenderRootRef } from './connection/connectHostRenderRoot.mjs';
|
|
4
|
-
export { connectRemoteIframe, connectRemoteIframeRef } from './connection/connectRemoteIframe.mjs';
|
|
5
|
-
export { Version } from './connection/types.mjs';
|
|
6
|
-
export { RemoteError } from './error.mjs';
|
|
7
|
-
export { mapEventHandler } from './events/index.mjs';
|
|
8
|
-
export { FlowRemoteEvent } from './events/FlowRemoteEvent.mjs';
|
|
9
|
-
export { pick, primitiveFlat, standard } from './events/serializers.mjs';
|
|
3
|
+
export { connectHostRenderRoot, connectHostRenderRootRef } from './remote-core/src/connection/connectHostRenderRoot.mjs';
|
|
4
|
+
export { connectRemoteIframe, connectRemoteIframeRef } from './remote-core/src/connection/connectRemoteIframe.mjs';
|
|
5
|
+
export { Version } from './remote-core/src/connection/types.mjs';
|
|
6
|
+
export { RemoteError } from './remote-core/src/error.mjs';
|
|
10
7
|
//# sourceMappingURL=index-node.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-node.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index-node.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
package/dist/js/index.mjs
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
export { RemoteElement, RemoteEvent } from '@mittwald/remote-dom-core/elements';
|
|
2
|
-
export { connectHostRenderRoot, connectHostRenderRootRef } from './connection/connectHostRenderRoot.mjs';
|
|
3
|
-
export { connectRemoteIframe, connectRemoteIframeRef } from './connection/connectRemoteIframe.mjs';
|
|
4
|
-
export { Version } from './connection/types.mjs';
|
|
5
|
-
export { RemoteError } from './error.mjs';
|
|
6
|
-
export { mapEventHandler } from './events/index.mjs';
|
|
7
|
-
export { FlowRemoteEvent } from './events/FlowRemoteEvent.mjs';
|
|
8
|
-
export { pick, primitiveFlat, standard } from './events/serializers.mjs';
|
|
2
|
+
export { connectHostRenderRoot, connectHostRenderRootRef } from './remote-core/src/connection/connectHostRenderRoot.mjs';
|
|
3
|
+
export { connectRemoteIframe, connectRemoteIframeRef } from './remote-core/src/connection/connectRemoteIframe.mjs';
|
|
4
|
+
export { Version } from './remote-core/src/connection/types.mjs';
|
|
5
|
+
export { RemoteError } from './remote-core/src/error.mjs';
|
|
9
6
|
//# sourceMappingURL=index.mjs.map
|
package/dist/js/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Version } from './types.mjs';
|
|
2
2
|
import { RemoteError } from '../error.mjs';
|
|
3
|
+
import { FlowThreadSerialization } from '../serialization/FlowThreadSerialization.mjs';
|
|
3
4
|
import '@mittwald/remote-dom-core/elements';
|
|
4
5
|
import { ThreadNestedIframe } from '@quilted/threads';
|
|
5
6
|
|
|
@@ -7,6 +8,7 @@ const incompatibleParentFrameError = () => new RemoteError("Could not find any c
|
|
|
7
8
|
const connectHostRenderRoot = async (options) => {
|
|
8
9
|
const { root, onPathnameChanged } = options;
|
|
9
10
|
const connection = new ThreadNestedIframe({
|
|
11
|
+
serialization: new FlowThreadSerialization(),
|
|
10
12
|
exports: {
|
|
11
13
|
render: (connection2) => import('@mittwald/remote-dom-core/elements').then(
|
|
12
14
|
({ RemoteMutationObserver }) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectHostRenderRoot.mjs","sources":["../../../../../src/connection/connectHostRenderRoot.ts"],"sourcesContent":["import {\n Version,\n type HostExports,\n type RemoteExports,\n type RemoteToHostConnection,\n} from \"@/connection/types\";\nimport { RemoteError } from \"@/error\";\nimport { FlowThreadSerialization } from \"@/serialization/FlowThreadSerialization\";\nimport { type RemoteConnection } from \"@mittwald/remote-dom-core/elements\";\nimport { ThreadNestedIframe } from \"@quilted/threads\";\n\ninterface Options {\n root: HTMLDivElement;\n onPathnameChanged?: (pathname: string) => void;\n}\n\nconst incompatibleParentFrameError = () =>\n new RemoteError(\"Could not find any compatible parent frame\");\n\nexport const connectHostRenderRoot = async (\n options: Options,\n): Promise<RemoteToHostConnection> => {\n const { root, onPathnameChanged } = options;\n\n const connection = new ThreadNestedIframe<HostExports, RemoteExports>({\n serialization: new FlowThreadSerialization(),\n exports: {\n render: (connection: RemoteConnection) =>\n import(\"@mittwald/remote-dom-core/elements\").then(\n ({ RemoteMutationObserver }) => {\n const observer = new RemoteMutationObserver(connection);\n observer.observe(root);\n },\n ),\n setPathname: async (pathname) => {\n onPathnameChanged?.(pathname);\n },\n },\n });\n\n if (connection.parent === window) {\n throw incompatibleParentFrameError();\n }\n\n try {\n await connection.imports.setIsReady(Version.v3);\n\n if (typeof mwExtBridge !== \"undefined\") {\n mwExtBridge.connection = connection.imports;\n await mwExtBridge.readiness.setIsReady();\n }\n\n return connection;\n } catch (error) {\n if (\n error instanceof Error &&\n /No '.*' method is exported from this thread/.test(error.message)\n ) {\n throw incompatibleParentFrameError();\n }\n throw error;\n }\n};\n\nexport const connectHostRenderRootRef =\n (opts: Omit<Options, \"root\">) => (ref: HTMLDivElement | null) => {\n if (ref === null) {\n return;\n }\n if (\"__remoteConnection\" in ref) {\n return ref[\"__remoteConnection\"] as Promise<RemoteToHostConnection>;\n }\n\n const connection = connectHostRenderRoot({\n root: ref,\n ...opts,\n });\n Object.assign(ref, { __remoteConnection: connection });\n return connection;\n };\n"],"names":["connection"],"mappings":";;;;;;AAgBA,MAAM,4BAA+B,GAAA,MACnC,IAAI,WAAA,CAAY,4CAA4C,CAAA;AAEjD,MAAA,qBAAA,GAAwB,OACnC,OACoC,KAAA;AACpC,EAAM,MAAA,EAAE,IAAM,EAAA,iBAAA,EAAsB,GAAA,OAAA;AAEpC,EAAM,MAAA,UAAA,GAAa,IAAI,kBAA+C,CAAA;AAAA,IACpE,aAAA,EAAe,IAAI,uBAAwB,EAAA;AAAA,IAC3C,OAAS,EAAA;AAAA,MACP,MAAQ,EAAA,CAACA,WACP,KAAA,OAAO,oCAAoC,CAAE,CAAA,IAAA;AAAA,QAC3C,CAAC,EAAE,sBAAA,EAA6B,KAAA;AAC9B,UAAM,MAAA,QAAA,GAAW,IAAI,sBAAA,CAAuBA,WAAU,CAAA;AACtD,UAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA;AACvB,OACF;AAAA,MACF,WAAA,EAAa,OAAO,QAAa,KAAA;AAC/B,QAAA,iBAAA,GAAoB,QAAQ,CAAA;AAAA;AAC9B;AACF,GACD,CAAA;AAED,EAAI,IAAA,UAAA,CAAW,WAAW,MAAQ,EAAA;AAChC,IAAA,MAAM,4BAA6B,EAAA;AAAA;AAGrC,EAAI,IAAA;AACF,IAAA,MAAM,UAAW,CAAA,OAAA,CAAQ,UAAW,CAAA,OAAA,CAAQ,EAAE,CAAA;AAE9C,IAAI,IAAA,OAAO,gBAAgB,WAAa,EAAA;AACtC,MAAA,WAAA,CAAY,aAAa,UAAW,CAAA,OAAA;AACpC,MAAM,MAAA,WAAA,CAAY,UAAU,UAAW,EAAA;AAAA;AAGzC,IAAO,OAAA,UAAA;AAAA,WACA,KAAO,EAAA;AACd,IAAA,IACE,iBAAiB,KACjB,IAAA,6CAAA,CAA8C,IAAK,CAAA,KAAA,CAAM,OAAO,CAChE,EAAA;AACA,MAAA,MAAM,4BAA6B,EAAA;AAAA;AAErC,IAAM,MAAA,KAAA;AAAA;AAEV;AAEO,MAAM,wBACX,GAAA,CAAC,IAAgC,KAAA,CAAC,GAA+B,KAAA;AAC/D,EAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,IAAA;AAAA;AAEF,EAAA,IAAI,wBAAwB,GAAK,EAAA;AAC/B,IAAA,OAAO,IAAI,oBAAoB,CAAA;AAAA;AAGjC,EAAA,MAAM,aAAa,qBAAsB,CAAA;AAAA,IACvC,IAAM,EAAA,GAAA;AAAA,IACN,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAA,CAAO,MAAO,CAAA,GAAA,EAAK,EAAE,kBAAA,EAAoB,YAAY,CAAA;AACrD,EAAO,OAAA,UAAA;AACT;;;;"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { emptyImplementation } from '../ext-bridge/implementation.mjs';
|
|
2
|
+
import { FlowThreadSerialization } from '../serialization/FlowThreadSerialization.mjs';
|
|
2
3
|
import { ThreadIframe } from '@quilted/threads';
|
|
3
4
|
|
|
4
5
|
const connectRemoteIframe = (opts) => {
|
|
@@ -12,6 +13,7 @@ const connectRemoteIframe = (opts) => {
|
|
|
12
13
|
} = opts;
|
|
13
14
|
const result = {
|
|
14
15
|
thread: new ThreadIframe(iframe, {
|
|
16
|
+
serialization: new FlowThreadSerialization(),
|
|
15
17
|
exports: {
|
|
16
18
|
...extBridgeImplementation,
|
|
17
19
|
setIsReady: async (version = 1) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectRemoteIframe.mjs","sources":["../../../../../src/connection/connectRemoteIframe.ts"],"sourcesContent":["import type {\n HostExports,\n HostToRemoteConnection,\n NavigationState,\n RemoteExports,\n} from \"@/connection/types\";\nimport { emptyImplementation } from \"@/ext-bridge/implementation\";\nimport { FlowThreadSerialization } from \"@/serialization/FlowThreadSerialization\";\nimport type { ExtBridgeConnectionApi } from \"@mittwald/ext-bridge\";\nimport type { RemoteConnection } from \"@mittwald/remote-dom-core/elements\";\nimport { ThreadIframe } from \"@quilted/threads\";\n\ninterface Options {\n connection: RemoteConnection;\n iframe: HTMLIFrameElement;\n onReady?: () => void;\n onError?: (error: string) => void;\n onNavigationStateChanged?: (state: NavigationState) => void;\n extBridgeImplementation?: ExtBridgeConnectionApi;\n}\n\nexport const connectRemoteIframe = (opts: Options): HostToRemoteConnection => {\n const {\n connection,\n iframe,\n onReady,\n onError,\n onNavigationStateChanged,\n extBridgeImplementation = emptyImplementation,\n } = opts;\n\n const result = {\n thread: new ThreadIframe<RemoteExports, HostExports>(iframe, {\n serialization: new FlowThreadSerialization(),\n exports: {\n ...extBridgeImplementation,\n setIsReady: async (version = 1) => {\n result.version = version;\n onReady?.();\n },\n setError: async (error: string) => {\n onError?.(error);\n },\n setNavigationState: async (state) => {\n onNavigationStateChanged?.(state);\n },\n },\n }),\n version: 0,\n };\n\n result.thread.imports.render(connection);\n return result;\n};\n\nexport const connectRemoteIframeRef =\n (opts: Omit<Options, \"iframe\">) => (ref: HTMLIFrameElement | null) => {\n if (!ref) {\n return;\n }\n\n if (\"__remoteConnection\" in ref) {\n return ref[\"__remoteConnection\"] as HostToRemoteConnection;\n }\n\n const connection = connectRemoteIframe({\n iframe: ref,\n ...opts,\n });\n Object.assign(ref, { __remoteConnection: connection });\n return connection;\n };\n"],"names":[],"mappings":";;;;AAqBa,MAAA,mBAAA,GAAsB,CAAC,IAA0C,KAAA;AAC5E,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,wBAAA;AAAA,IACA,uBAA0B,GAAA;AAAA,GACxB,GAAA,IAAA;AAEJ,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,MAAA,EAAQ,IAAI,YAAA,CAAyC,MAAQ,EAAA;AAAA,MAC3D,aAAA,EAAe,IAAI,uBAAwB,EAAA;AAAA,MAC3C,OAAS,EAAA;AAAA,QACP,GAAG,uBAAA;AAAA,QACH,UAAA,EAAY,OAAO,OAAA,GAAU,CAAM,KAAA;AACjC,UAAA,MAAA,CAAO,OAAU,GAAA,OAAA;AACjB,UAAU,OAAA,IAAA;AAAA,SACZ;AAAA,QACA,QAAA,EAAU,OAAO,KAAkB,KAAA;AACjC,UAAA,OAAA,GAAU,KAAK,CAAA;AAAA,SACjB;AAAA,QACA,kBAAA,EAAoB,OAAO,KAAU,KAAA;AACnC,UAAA,wBAAA,GAA2B,KAAK,CAAA;AAAA;AAClC;AACF,KACD,CAAA;AAAA,IACD,OAAS,EAAA;AAAA,GACX;AAEA,EAAO,MAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,MAAA,CAAO,UAAU,CAAA;AACvC,EAAO,OAAA,MAAA;AACT;AAEO,MAAM,sBACX,GAAA,CAAC,IAAkC,KAAA,CAAC,GAAkC,KAAA;AACpE,EAAA,IAAI,CAAC,GAAK,EAAA;AACR,IAAA;AAAA;AAGF,EAAA,IAAI,wBAAwB,GAAK,EAAA;AAC/B,IAAA,OAAO,IAAI,oBAAoB,CAAA;AAAA;AAGjC,EAAA,MAAM,aAAa,mBAAoB,CAAA;AAAA,IACrC,MAAQ,EAAA,GAAA;AAAA,IACR,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAA,CAAO,MAAO,CAAA,GAAA,EAAK,EAAE,kBAAA,EAAoB,YAAY,CAAA;AACrD,EAAO,OAAA,UAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":["../../../../../src/connection/types.ts"],"sourcesContent":["import type { ExtBridgeConnectionApi } from \"@mittwald/ext-bridge\";\nimport type { RemoteConnection } from \"@mittwald/remote-dom-core\";\nimport type { ThreadIframe, ThreadNestedIframe } from \"@quilted/threads\";\n\nexport interface NavigationState {\n pathname: string;\n isPending: boolean;\n}\n\nexport interface HostExports extends ExtBridgeConnectionApi {\n setIsReady: (version?: Version) => Promise<void>;\n setError: (error: string) => Promise<void>;\n setNavigationState: (state: NavigationState) => Promise<void>;\n}\n\nexport interface RemoteExports {\n render: (connection: RemoteConnection) => Promise<void>;\n setPathname: (pathname: string) => Promise<void>;\n}\n\nexport type RemoteToHostConnection = ThreadNestedIframe<\n HostExports,\n RemoteExports\n>;\n\nexport interface HostToRemoteConnection {\n version: Version;\n thread: ThreadIframe<RemoteExports, HostExports>;\n}\n\nexport enum Version {\n vUnknown = 0,\n v1 = 1,\n v2 = 2,\n v3 = 3,\n}\n"],"names":["Version"],"mappings":"AA8BY,IAAA,OAAA,qBAAAA,QAAL,KAAA;AACL,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,cAAW,CAAX,CAAA,GAAA,UAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAL,CAAA,GAAA,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAL,CAAA,GAAA,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAL,CAAA,GAAA,IAAA;AAJU,EAAAA,OAAAA,QAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.mjs","sources":["../../../../src/error.ts"],"sourcesContent":["export class RemoteError extends Error {\n constructor(message: string) {\n super(message);\n this.message = message;\n }\n}\n\nRemoteError.prototype.name = \"RemoteError\";\n"],"names":[],"mappings":"AAAO,MAAM,oBAAoB,KAAM,CAAA;AAAA,EACrC,YAAY,OAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AAEnB;AAEA,WAAA,CAAY,UAAU,IAAO,GAAA,aAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"implementation.mjs","sources":["../../../../../src/ext-bridge/implementation.ts"],"sourcesContent":["import { RemoteError } from \"@/error\";\nimport type { ExtBridgeConnectionApi } from \"@mittwald/ext-bridge\";\n\nexport const emptyImplementation = new Proxy(\n {},\n {\n get() {\n throw new RemoteError(\"Missing implementation for mittwald.extBridge\");\n },\n },\n) as ExtBridgeConnectionApi;\n"],"names":[],"mappings":";;AAGO,MAAM,sBAAsB,IAAI,KAAA;AAAA,EACrC,EAAC;AAAA,EACD;AAAA,IACE,GAAM,GAAA;AACJ,MAAM,MAAA,IAAI,YAAY,+CAA+C,CAAA;AAAA;AACvE;AAEJ;;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { ThreadSerializationStructuredClone } from '@quilted/threads';
|
|
2
|
+
import * as index from './serializers/index.mjs';
|
|
3
|
+
import { isObjectType } from 'remeda';
|
|
4
|
+
|
|
5
|
+
const serializers = Object.values(index);
|
|
6
|
+
class FlowThreadSerialization extends ThreadSerializationStructuredClone {
|
|
7
|
+
constructor() {
|
|
8
|
+
const options = {
|
|
9
|
+
serialize: (val, serialize) => {
|
|
10
|
+
try {
|
|
11
|
+
if (this.isSerializableByBase(val)) {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
if (this.omitSerialization(val)) {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
for (const serializer of serializers) {
|
|
18
|
+
const serialization = serializer.serialize(val);
|
|
19
|
+
if (serialization.applied) {
|
|
20
|
+
return serialization.result;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (isObjectType(val)) {
|
|
24
|
+
return serialize({ ...val });
|
|
25
|
+
}
|
|
26
|
+
} catch (error) {
|
|
27
|
+
console.error("Error while serializing", error);
|
|
28
|
+
throw error;
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
deserialize: (val, serialize) => {
|
|
32
|
+
try {
|
|
33
|
+
for (const serializer of serializers) {
|
|
34
|
+
const deserialization = serializer.deserialize(val);
|
|
35
|
+
if (deserialization.applied) {
|
|
36
|
+
return deserialization.result.value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return serialize(val);
|
|
40
|
+
} catch (error) {
|
|
41
|
+
console.error("Error while deserializing", error);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
super(options);
|
|
47
|
+
}
|
|
48
|
+
isSerializableByBase(val) {
|
|
49
|
+
return val instanceof Map || val instanceof Set || Array.isArray(val) || typeof val === "function";
|
|
50
|
+
}
|
|
51
|
+
omitSerialization(val) {
|
|
52
|
+
return val instanceof HTMLElement || val === window;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
export { FlowThreadSerialization };
|
|
57
|
+
//# sourceMappingURL=FlowThreadSerialization.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowThreadSerialization.mjs","sources":["../../../../../src/serialization/FlowThreadSerialization.ts"],"sourcesContent":["import {\n ThreadSerializationStructuredClone,\n type ThreadSerializationOptions,\n} from \"@quilted/threads\";\nimport * as serializerModules from \"./serializers\";\nimport { isObjectType } from \"remeda\";\n\nconst serializers = Object.values(serializerModules);\n\nexport class FlowThreadSerialization extends ThreadSerializationStructuredClone {\n public constructor() {\n const options: ThreadSerializationOptions = {\n serialize: (val, serialize) => {\n try {\n if (this.isSerializableByBase(val)) {\n return;\n }\n if (this.omitSerialization(val)) {\n return null;\n }\n for (const serializer of serializers) {\n const serialization = serializer.serialize(val as never);\n if (serialization.applied) {\n return serialization.result;\n }\n }\n if (isObjectType(val)) {\n return serialize({ ...val });\n }\n } catch (error) {\n console.error(\"Error while serializing\", error);\n throw error;\n }\n },\n deserialize: (val, serialize) => {\n try {\n for (const serializer of serializers) {\n const deserialization = serializer.deserialize(val as never);\n if (deserialization.applied) {\n return deserialization.result.value;\n }\n }\n return serialize(val);\n } catch (error) {\n console.error(\"Error while deserializing\", error);\n throw error;\n }\n },\n };\n super(options);\n }\n\n private isSerializableByBase(val: unknown) {\n return (\n val instanceof Map ||\n val instanceof Set ||\n Array.isArray(val) ||\n typeof val === \"function\"\n );\n }\n\n private omitSerialization(val: unknown) {\n return val instanceof HTMLElement || val === window;\n }\n}\n"],"names":["serializerModules"],"mappings":";;;;AAOA,MAAM,WAAA,GAAc,MAAO,CAAA,MAAA,CAAOA,KAAiB,CAAA;AAE5C,MAAM,gCAAgC,kCAAmC,CAAA;AAAA,EACvE,WAAc,GAAA;AACnB,IAAA,MAAM,OAAsC,GAAA;AAAA,MAC1C,SAAA,EAAW,CAAC,GAAA,EAAK,SAAc,KAAA;AAC7B,QAAI,IAAA;AACF,UAAI,IAAA,IAAA,CAAK,oBAAqB,CAAA,GAAG,CAAG,EAAA;AAClC,YAAA;AAAA;AAEF,UAAI,IAAA,IAAA,CAAK,iBAAkB,CAAA,GAAG,CAAG,EAAA;AAC/B,YAAO,OAAA,IAAA;AAAA;AAET,UAAA,KAAA,MAAW,cAAc,WAAa,EAAA;AACpC,YAAM,MAAA,aAAA,GAAgB,UAAW,CAAA,SAAA,CAAU,GAAY,CAAA;AACvD,YAAA,IAAI,cAAc,OAAS,EAAA;AACzB,cAAA,OAAO,aAAc,CAAA,MAAA;AAAA;AACvB;AAEF,UAAI,IAAA,YAAA,CAAa,GAAG,CAAG,EAAA;AACrB,YAAA,OAAO,SAAU,CAAA,EAAE,GAAG,GAAA,EAAK,CAAA;AAAA;AAC7B,iBACO,KAAO,EAAA;AACd,UAAQ,OAAA,CAAA,KAAA,CAAM,2BAA2B,KAAK,CAAA;AAC9C,UAAM,MAAA,KAAA;AAAA;AACR,OACF;AAAA,MACA,WAAA,EAAa,CAAC,GAAA,EAAK,SAAc,KAAA;AAC/B,QAAI,IAAA;AACF,UAAA,KAAA,MAAW,cAAc,WAAa,EAAA;AACpC,YAAM,MAAA,eAAA,GAAkB,UAAW,CAAA,WAAA,CAAY,GAAY,CAAA;AAC3D,YAAA,IAAI,gBAAgB,OAAS,EAAA;AAC3B,cAAA,OAAO,gBAAgB,MAAO,CAAA,KAAA;AAAA;AAChC;AAEF,UAAA,OAAO,UAAU,GAAG,CAAA;AAAA,iBACb,KAAO,EAAA;AACd,UAAQ,OAAA,CAAA,KAAA,CAAM,6BAA6B,KAAK,CAAA;AAChD,UAAM,MAAA,KAAA;AAAA;AACR;AACF,KACF;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAAA;AACf,EAEQ,qBAAqB,GAAc,EAAA;AACzC,IACE,OAAA,GAAA,YAAe,OACf,GAAe,YAAA,GAAA,IACf,MAAM,OAAQ,CAAA,GAAG,CACjB,IAAA,OAAO,GAAQ,KAAA,UAAA;AAAA;AAEnB,EAEQ,kBAAkB,GAAc,EAAA;AACtC,IAAO,OAAA,GAAA,YAAe,eAAe,GAAQ,KAAA,MAAA;AAAA;AAEjD;;;;"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
const Key = "mittwald.flow-remote-core.serializer.name";
|
|
2
|
+
class Serializer {
|
|
3
|
+
constructor(options) {
|
|
4
|
+
this.options = options;
|
|
5
|
+
}
|
|
6
|
+
apply(val, strategy) {
|
|
7
|
+
if (strategy.isApplicable(val)) {
|
|
8
|
+
return {
|
|
9
|
+
applied: true,
|
|
10
|
+
result: {
|
|
11
|
+
[Key]: this.options.name,
|
|
12
|
+
value: strategy.apply(val)
|
|
13
|
+
}
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
return {
|
|
17
|
+
applied: false
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
serialize(val) {
|
|
21
|
+
return this.apply(val, this.options.serialize);
|
|
22
|
+
}
|
|
23
|
+
deserialize(val) {
|
|
24
|
+
return this.apply(val, {
|
|
25
|
+
apply: (serialization) => this.options.deserialize.apply(serialization.value),
|
|
26
|
+
isApplicable: (val2) => !!val2 && typeof val2 === "object" && Key in val2 && val2[Key] === this.options.name
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export { Serializer };
|
|
32
|
+
//# sourceMappingURL=Serializer.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Serializer.mjs","sources":["../../../../../src/serialization/Serializer.ts"],"sourcesContent":["interface SerializationStrategy<TIn, TOut> {\n isApplicable: (val: unknown) => val is TIn;\n apply: (val: TIn) => TOut;\n}\n\nconst Key = \"mittwald.flow-remote-core.serializer.name\";\n\nexport interface SuccessfulSerializationResult<T> {\n value: T;\n [Key]: string;\n}\n\nexport type SerializationResult<T> =\n | { applied: true; result: SuccessfulSerializationResult<T> }\n | { applied: false };\n\nexport class Serializer<TIn, TOut> {\n public constructor(\n private options: {\n name: string;\n serialize: SerializationStrategy<TIn, TOut>;\n deserialize: Pick<SerializationStrategy<TOut, TIn>, \"apply\">;\n },\n ) {}\n\n private apply<TIn, TOut>(\n val: unknown,\n strategy: SerializationStrategy<TIn, TOut>,\n ): SerializationResult<TOut> {\n if (strategy.isApplicable(val)) {\n return {\n applied: true,\n result: {\n [Key]: this.options.name,\n value: strategy.apply(val),\n },\n };\n }\n return {\n applied: false,\n };\n }\n\n public serialize(val: unknown): SerializationResult<TOut> {\n return this.apply<TIn, TOut>(val, this.options.serialize);\n }\n\n public deserialize(val: unknown): SerializationResult<TIn> {\n return this.apply(val, {\n apply: (serialization: SuccessfulSerializationResult<TOut>) =>\n this.options.deserialize.apply(serialization.value),\n\n isApplicable: (val): val is SuccessfulSerializationResult<TOut> =>\n !!val &&\n typeof val === \"object\" &&\n Key in val &&\n val[Key] === this.options.name,\n });\n }\n}\n"],"names":["val"],"mappings":"AAKA,MAAM,GAAM,GAAA,2CAAA;AAWL,MAAM,UAAsB,CAAA;AAAA,EAC1B,YACG,OAKR,EAAA;AALQ,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA;AAKP,EAEK,KAAA,CACN,KACA,QAC2B,EAAA;AAC3B,IAAI,IAAA,QAAA,CAAS,YAAa,CAAA,GAAG,CAAG,EAAA;AAC9B,MAAO,OAAA;AAAA,QACL,OAAS,EAAA,IAAA;AAAA,QACT,MAAQ,EAAA;AAAA,UACN,CAAC,GAAG,GAAG,IAAA,CAAK,OAAQ,CAAA,IAAA;AAAA,UACpB,KAAA,EAAO,QAAS,CAAA,KAAA,CAAM,GAAG;AAAA;AAC3B,OACF;AAAA;AAEF,IAAO,OAAA;AAAA,MACL,OAAS,EAAA;AAAA,KACX;AAAA;AACF,EAEO,UAAU,GAAyC,EAAA;AACxD,IAAA,OAAO,IAAK,CAAA,KAAA,CAAiB,GAAK,EAAA,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA;AAC1D,EAEO,YAAY,GAAwC,EAAA;AACzD,IAAO,OAAA,IAAA,CAAK,MAAM,GAAK,EAAA;AAAA,MACrB,KAAA,EAAO,CAAC,aACN,KAAA,IAAA,CAAK,QAAQ,WAAY,CAAA,KAAA,CAAM,cAAc,KAAK,CAAA;AAAA,MAEpD,YAAc,EAAA,CAACA,IACb,KAAA,CAAC,CAACA,IACF,IAAA,OAAOA,IAAQ,KAAA,QAAA,IACf,OAAOA,IACPA,IAAAA,IAAAA,CAAI,GAAG,CAAA,KAAM,KAAK,OAAQ,CAAA;AAAA,KAC7B,CAAA;AAAA;AAEL;;;;"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Serializer } from '../Serializer.mjs';
|
|
2
|
+
|
|
3
|
+
const dataTransferTextSerializer = new Serializer({
|
|
4
|
+
name: "DataTransferText",
|
|
5
|
+
serialize: {
|
|
6
|
+
isApplicable: (val) => {
|
|
7
|
+
return val instanceof DataTransfer && val.types.every((type) => type === "text/plain");
|
|
8
|
+
},
|
|
9
|
+
apply: (dataTransfer) => dataTransfer.getData("text")
|
|
10
|
+
},
|
|
11
|
+
deserialize: {
|
|
12
|
+
apply: (asString) => {
|
|
13
|
+
const dataTransfer = new DataTransfer();
|
|
14
|
+
dataTransfer.setData("text", asString);
|
|
15
|
+
return dataTransfer;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
export { dataTransferTextSerializer };
|
|
21
|
+
//# sourceMappingURL=dataTransferText.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataTransferText.mjs","sources":["../../../../../../src/serialization/serializers/dataTransferText.ts"],"sourcesContent":["import { Serializer } from \"@/serialization/Serializer\";\n\nexport const dataTransferTextSerializer = new Serializer<DataTransfer, string>({\n name: \"DataTransferText\",\n serialize: {\n isApplicable: (val): val is DataTransfer => {\n return (\n val instanceof DataTransfer &&\n val.types.every((type) => type === \"text/plain\")\n );\n },\n apply: (dataTransfer) => dataTransfer.getData(\"text\"),\n },\n deserialize: {\n apply: (asString) => {\n const dataTransfer = new DataTransfer();\n dataTransfer.setData(\"text\", asString);\n return dataTransfer;\n },\n },\n});\n"],"names":[],"mappings":";;AAEa,MAAA,0BAAA,GAA6B,IAAI,UAAiC,CAAA;AAAA,EAC7E,IAAM,EAAA,kBAAA;AAAA,EACN,SAAW,EAAA;AAAA,IACT,YAAA,EAAc,CAAC,GAA6B,KAAA;AAC1C,MACE,OAAA,GAAA,YAAe,gBACf,GAAI,CAAA,KAAA,CAAM,MAAM,CAAC,IAAA,KAAS,SAAS,YAAY,CAAA;AAAA,KAEnD;AAAA,IACA,KAAO,EAAA,CAAC,YAAiB,KAAA,YAAA,CAAa,QAAQ,MAAM;AAAA,GACtD;AAAA,EACA,WAAa,EAAA;AAAA,IACX,KAAA,EAAO,CAAC,QAAa,KAAA;AACnB,MAAM,MAAA,YAAA,GAAe,IAAI,YAAa,EAAA;AACtC,MAAa,YAAA,CAAA,OAAA,CAAQ,QAAQ,QAAQ,CAAA;AACrC,MAAO,OAAA,YAAA;AAAA;AACT;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { parseDate, CalendarDate } from '@internationalized/date';
|
|
2
|
+
import { Serializer } from '../Serializer.mjs';
|
|
3
|
+
|
|
4
|
+
const calendarDateSerializer = new Serializer({
|
|
5
|
+
name: "CalendarDate",
|
|
6
|
+
serialize: {
|
|
7
|
+
isApplicable: (val) => val instanceof CalendarDate,
|
|
8
|
+
apply: (date) => date.toString()
|
|
9
|
+
},
|
|
10
|
+
deserialize: {
|
|
11
|
+
apply: (asString) => parseDate(asString)
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export { calendarDateSerializer };
|
|
16
|
+
//# sourceMappingURL=date.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.mjs","sources":["../../../../../../src/serialization/serializers/date.ts"],"sourcesContent":["import { CalendarDate } from \"@internationalized/date\";\nimport { parseDate } from \"@internationalized/date\";\nimport { Serializer } from \"@/serialization/Serializer\";\n\nexport const calendarDateSerializer = new Serializer<CalendarDate, string>({\n name: \"CalendarDate\",\n serialize: {\n isApplicable: (val) => val instanceof CalendarDate,\n apply: (date) => date.toString(),\n },\n deserialize: {\n apply: (asString) => parseDate(asString),\n },\n});\n"],"names":[],"mappings":";;;AAIa,MAAA,sBAAA,GAAyB,IAAI,UAAiC,CAAA;AAAA,EACzE,IAAM,EAAA,cAAA;AAAA,EACN,SAAW,EAAA;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAAQ,GAAe,YAAA,YAAA;AAAA,IACtC,KAAO,EAAA,CAAC,IAAS,KAAA,IAAA,CAAK,QAAS;AAAA,GACjC;AAAA,EACA,WAAa,EAAA;AAAA,IACX,KAAO,EAAA,CAAC,QAAa,KAAA,SAAA,CAAU,QAAQ;AAAA;AAE3C,CAAC;;;;"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TRANSFERABLE } from '@quilted/threads';
|
|
2
|
+
import { Serializer } from '../Serializer.mjs';
|
|
3
|
+
import { getAwaitArrayBuffer } from '../../../../core/src/file.mjs';
|
|
4
|
+
|
|
5
|
+
const serialize = (file) => ({
|
|
6
|
+
name: file.name,
|
|
7
|
+
type: file.type,
|
|
8
|
+
lastModified: file.lastModified,
|
|
9
|
+
content: getAwaitArrayBuffer(file),
|
|
10
|
+
[TRANSFERABLE]: 1
|
|
11
|
+
});
|
|
12
|
+
const deserialize = (file) => new File([file.content], file.name, {
|
|
13
|
+
lastModified: file.lastModified,
|
|
14
|
+
type: file.type
|
|
15
|
+
});
|
|
16
|
+
const fileSerializer = new Serializer({
|
|
17
|
+
name: "File",
|
|
18
|
+
deserialize: {
|
|
19
|
+
apply: deserialize
|
|
20
|
+
},
|
|
21
|
+
serialize: {
|
|
22
|
+
isApplicable: (something) => something instanceof File,
|
|
23
|
+
apply: serialize
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
const fileListSerializer = new Serializer({
|
|
27
|
+
name: "FileList",
|
|
28
|
+
deserialize: {
|
|
29
|
+
apply: (files) => {
|
|
30
|
+
const dataTransfer = new DataTransfer();
|
|
31
|
+
files.map(deserialize).forEach((f) => dataTransfer.items.add(f));
|
|
32
|
+
return dataTransfer.files;
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
serialize: {
|
|
36
|
+
isApplicable: (something) => something instanceof FileList,
|
|
37
|
+
apply: (fileList) => Array.from(fileList).map(serialize)
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
export { fileListSerializer, fileSerializer };
|
|
42
|
+
//# sourceMappingURL=file.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.mjs","sources":["../../../../../../src/serialization/serializers/file.ts"],"sourcesContent":["import { TRANSFERABLE } from \"@quilted/threads\";\nimport { Serializer } from \"@/serialization/Serializer\";\nimport { getAwaitArrayBuffer } from \"@mittwald/flow-core\";\n\nexport interface SerializedFile {\n name: string;\n type: string;\n lastModified: number;\n content: ArrayBuffer;\n [TRANSFERABLE]: number;\n}\n\nconst serialize = (file: File) => ({\n name: file.name,\n type: file.type,\n lastModified: file.lastModified,\n content: getAwaitArrayBuffer(file),\n [TRANSFERABLE]: 1,\n});\n\nconst deserialize = (file: SerializedFile) =>\n new File([file.content], file.name, {\n lastModified: file.lastModified,\n type: file.type,\n });\n\nexport const fileSerializer = new Serializer<File, SerializedFile>({\n name: \"File\",\n deserialize: {\n apply: deserialize,\n },\n serialize: {\n isApplicable: (something) => something instanceof File,\n apply: serialize,\n },\n});\n\nexport const fileListSerializer = new Serializer<FileList, SerializedFile[]>({\n name: \"FileList\",\n deserialize: {\n apply: (files) => {\n const dataTransfer = new DataTransfer();\n files.map(deserialize).forEach((f) => dataTransfer.items.add(f));\n return dataTransfer.files;\n },\n },\n serialize: {\n isApplicable: (something) => something instanceof FileList,\n apply: (fileList) => Array.from(fileList).map(serialize),\n },\n});\n"],"names":[],"mappings":";;;;AAYA,MAAM,SAAA,GAAY,CAAC,IAAgB,MAAA;AAAA,EACjC,MAAM,IAAK,CAAA,IAAA;AAAA,EACX,MAAM,IAAK,CAAA,IAAA;AAAA,EACX,cAAc,IAAK,CAAA,YAAA;AAAA,EACnB,OAAA,EAAS,oBAAoB,IAAI,CAAA;AAAA,EACjC,CAAC,YAAY,GAAG;AAClB,CAAA,CAAA;AAEA,MAAM,WAAA,GAAc,CAAC,IAAA,KACnB,IAAI,IAAA,CAAK,CAAC,IAAK,CAAA,OAAO,CAAG,EAAA,IAAA,CAAK,IAAM,EAAA;AAAA,EAClC,cAAc,IAAK,CAAA,YAAA;AAAA,EACnB,MAAM,IAAK,CAAA;AACb,CAAC,CAAA;AAEU,MAAA,cAAA,GAAiB,IAAI,UAAiC,CAAA;AAAA,EACjE,IAAM,EAAA,MAAA;AAAA,EACN,WAAa,EAAA;AAAA,IACX,KAAO,EAAA;AAAA,GACT;AAAA,EACA,SAAW,EAAA;AAAA,IACT,YAAA,EAAc,CAAC,SAAA,KAAc,SAAqB,YAAA,IAAA;AAAA,IAClD,KAAO,EAAA;AAAA;AAEX,CAAC;AAEY,MAAA,kBAAA,GAAqB,IAAI,UAAuC,CAAA;AAAA,EAC3E,IAAM,EAAA,UAAA;AAAA,EACN,WAAa,EAAA;AAAA,IACX,KAAA,EAAO,CAAC,KAAU,KAAA;AAChB,MAAM,MAAA,YAAA,GAAe,IAAI,YAAa,EAAA;AACtC,MAAM,KAAA,CAAA,GAAA,CAAI,WAAW,CAAA,CAAE,OAAQ,CAAA,CAAC,MAAM,YAAa,CAAA,KAAA,CAAM,GAAI,CAAA,CAAC,CAAC,CAAA;AAC/D,MAAA,OAAO,YAAa,CAAA,KAAA;AAAA;AACtB,GACF;AAAA,EACA,SAAW,EAAA;AAAA,IACT,YAAA,EAAc,CAAC,SAAA,KAAc,SAAqB,YAAA,QAAA;AAAA,IAClD,KAAA,EAAO,CAAC,QAAa,KAAA,KAAA,CAAM,KAAK,QAAQ,CAAA,CAAE,IAAI,SAAS;AAAA;AAE3D,CAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shim.mjs","sources":["../../../../src/shim.ts"],"sourcesContent":["import { HTMLElement, customElements } from \"@lit-labs/ssr-dom-shim\";\n\nglobalThis.HTMLElement = HTMLElement;\nglobalThis.customElements = customElements;\nglobalThis.MutationObserver = class MutationObserver {\n public constructor() {\n // mocked\n }\n public disconnect() {\n // mocked\n }\n public observe() {\n // mocked\n }\n public takeRecords() {\n return [];\n }\n};\n"],"names":[],"mappings":";;AAEA,UAAA,CAAW,WAAc,GAAA,WAAA;AACzB,UAAA,CAAW,cAAiB,GAAA,cAAA;AAC5B,UAAW,CAAA,gBAAA,GAAmB,MAAM,gBAAiB,CAAA;AAAA,EAC5C,WAAc,GAAA;AAAA;AAErB,EACO,UAAa,GAAA;AAAA;AAEpB,EACO,OAAU,GAAA;AAAA;AAEjB,EACO,WAAc,GAAA;AACnB,IAAA,OAAO,EAAC;AAAA;AAEZ,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectHostRenderRoot.d.ts","sourceRoot":"","sources":["../../../src/connection/connectHostRenderRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"connectHostRenderRoot.d.ts","sourceRoot":"","sources":["../../../src/connection/connectHostRenderRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,oBAAoB,CAAC;AAM5B,UAAU,OAAO;IACf,IAAI,EAAE,cAAc,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAKD,eAAO,MAAM,qBAAqB,GAChC,SAAS,OAAO,KACf,OAAO,CAAC,sBAAsB,CAyChC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAClC,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,cAAc,GAAG,IAAI,gDAc3D,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectRemoteIframe.d.ts","sourceRoot":"","sources":["../../../src/connection/connectRemoteIframe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,eAAe,EAEhB,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"connectRemoteIframe.d.ts","sourceRoot":"","sources":["../../../src/connection/connectRemoteIframe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,eAAe,EAEhB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,UAAU,OAAO;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,IAAI,CAAC;IAC5D,uBAAuB,CAAC,EAAE,sBAAsB,CAAC;CAClD;AAED,eAAO,MAAM,mBAAmB,GAAI,MAAM,OAAO,KAAG,sBAgCnD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAChC,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,iBAAiB,GAAG,IAAI,uCAehE,CAAC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
1
|
export { RemoteElement, RemoteEvent, type RemoteElementConstructor, } from '@mittwald/remote-dom-core/elements';
|
|
2
2
|
export * from './connection';
|
|
3
3
|
export * from './error';
|
|
4
|
-
export * from './events';
|
|
5
|
-
export * from './events/FlowRemoteEvent';
|
|
6
|
-
export * from './events/serializers';
|
|
7
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAC5C,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ThreadSerializationStructuredClone } from '@quilted/threads';
|
|
2
|
+
export declare class FlowThreadSerialization extends ThreadSerializationStructuredClone {
|
|
3
|
+
constructor();
|
|
4
|
+
private isSerializableByBase;
|
|
5
|
+
private omitSerialization;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=FlowThreadSerialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowThreadSerialization.d.ts","sourceRoot":"","sources":["../../../src/serialization/FlowThreadSerialization.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAEnC,MAAM,kBAAkB,CAAC;AAM1B,qBAAa,uBAAwB,SAAQ,kCAAkC;;IA2C7E,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,iBAAiB;CAG1B"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
interface SerializationStrategy<TIn, TOut> {
|
|
2
|
+
isApplicable: (val: unknown) => val is TIn;
|
|
3
|
+
apply: (val: TIn) => TOut;
|
|
4
|
+
}
|
|
5
|
+
declare const Key = "mittwald.flow-remote-core.serializer.name";
|
|
6
|
+
export interface SuccessfulSerializationResult<T> {
|
|
7
|
+
value: T;
|
|
8
|
+
[Key]: string;
|
|
9
|
+
}
|
|
10
|
+
export type SerializationResult<T> = {
|
|
11
|
+
applied: true;
|
|
12
|
+
result: SuccessfulSerializationResult<T>;
|
|
13
|
+
} | {
|
|
14
|
+
applied: false;
|
|
15
|
+
};
|
|
16
|
+
export declare class Serializer<TIn, TOut> {
|
|
17
|
+
private options;
|
|
18
|
+
constructor(options: {
|
|
19
|
+
name: string;
|
|
20
|
+
serialize: SerializationStrategy<TIn, TOut>;
|
|
21
|
+
deserialize: Pick<SerializationStrategy<TOut, TIn>, "apply">;
|
|
22
|
+
});
|
|
23
|
+
private apply;
|
|
24
|
+
serialize(val: unknown): SerializationResult<TOut>;
|
|
25
|
+
deserialize(val: unknown): SerializationResult<TIn>;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=Serializer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Serializer.d.ts","sourceRoot":"","sources":["../../../src/serialization/Serializer.ts"],"names":[],"mappings":"AAAA,UAAU,qBAAqB,CAAC,GAAG,EAAE,IAAI;IACvC,YAAY,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,GAAG,IAAI,GAAG,CAAC;IAC3C,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3B;AAED,QAAA,MAAM,GAAG,8CAA8C,CAAC;AAExD,MAAM,WAAW,6BAA6B,CAAC,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC;IACT,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAC7B;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,6BAA6B,CAAC,CAAC,CAAC,CAAA;CAAE,GAC3D;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAEvB,qBAAa,UAAU,CAAC,GAAG,EAAE,IAAI;IAE7B,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,WAAW,EAAE,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC;KAC9D;IAGH,OAAO,CAAC,KAAK;IAkBN,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAAC,IAAI,CAAC;IAIlD,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC;CAY3D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dataTransferText.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/dataTransferText.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,eAAO,MAAM,0BAA0B,kCAkBrC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,eAAO,MAAM,sBAAsB,kCASjC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TRANSFERABLE } from '@quilted/threads';
|
|
2
|
+
import { Serializer } from '../Serializer';
|
|
3
|
+
export interface SerializedFile {
|
|
4
|
+
name: string;
|
|
5
|
+
type: string;
|
|
6
|
+
lastModified: number;
|
|
7
|
+
content: ArrayBuffer;
|
|
8
|
+
[TRANSFERABLE]: number;
|
|
9
|
+
}
|
|
10
|
+
export declare const fileSerializer: Serializer<File, SerializedFile>;
|
|
11
|
+
export declare const fileListSerializer: Serializer<FileList, SerializedFile[]>;
|
|
12
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAGxD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;IACrB,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;CACxB;AAgBD,eAAO,MAAM,cAAc,kCASzB,CAAC;AAEH,eAAO,MAAM,kBAAkB,wCAa7B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mittwald/flow-remote-core",
|
|
3
|
-
"version": "0.2.0-alpha.
|
|
3
|
+
"version": "0.2.0-alpha.239",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Core functionality to setup a remote/host environment",
|
|
6
6
|
"homepage": "https://mittwald.github.io/flow",
|
|
@@ -23,16 +23,20 @@
|
|
|
23
23
|
"clean": "rimraf dist",
|
|
24
24
|
"test": "exit 0",
|
|
25
25
|
"test:compile": "tsc --noEmit",
|
|
26
|
-
"test:unit": "vitest run"
|
|
26
|
+
"test:unit": "vitest run --passWithNoTests"
|
|
27
27
|
},
|
|
28
28
|
"dependencies": {
|
|
29
29
|
"@lit-labs/ssr-dom-shim": "^1.3.0",
|
|
30
30
|
"@mittwald/remote-dom-core": "1.7.0-mittwald.3",
|
|
31
31
|
"@quilted/threads": "^3.1.3",
|
|
32
|
+
"@types/invariant": "^2.2.37",
|
|
33
|
+
"invariant": "^2.2.4",
|
|
32
34
|
"remeda": "^2.22.3"
|
|
33
35
|
},
|
|
34
36
|
"devDependencies": {
|
|
35
|
-
"@
|
|
37
|
+
"@internationalized/date": "^3.8.1",
|
|
38
|
+
"@mittwald/ext-bridge": "0.2.0-alpha.239",
|
|
39
|
+
"@mittwald/flow-core": "",
|
|
36
40
|
"@mittwald/typescript-config": "",
|
|
37
41
|
"@types/node": "^22.15.23",
|
|
38
42
|
"nx": "^20.8.2",
|
|
@@ -47,12 +51,16 @@
|
|
|
47
51
|
"vitest": "^3.1.4"
|
|
48
52
|
},
|
|
49
53
|
"peerDependencies": {
|
|
54
|
+
"@internationalized/date": "^3.8.1",
|
|
50
55
|
"@mittwald/ext-bridge": "*"
|
|
51
56
|
},
|
|
52
57
|
"peerDependenciesMeta": {
|
|
53
58
|
"@mittwald/ext-bridge": {
|
|
54
59
|
"optional": true
|
|
60
|
+
},
|
|
61
|
+
"@internationalized/date": {
|
|
62
|
+
"optional": true
|
|
55
63
|
}
|
|
56
64
|
},
|
|
57
|
-
"gitHead": "
|
|
65
|
+
"gitHead": "1903fb83db3497c3b948399effa27d97ebb60977"
|
|
58
66
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connectHostRenderRoot.mjs","sources":["../../../src/connection/connectHostRenderRoot.ts"],"sourcesContent":["import {\n Version,\n type HostExports,\n type RemoteExports,\n type RemoteToHostConnection,\n} from \"@/connection/types\";\nimport { RemoteError } from \"@/error\";\nimport { type RemoteConnection } from \"@mittwald/remote-dom-core/elements\";\nimport { ThreadNestedIframe } from \"@quilted/threads\";\n\ninterface Options {\n root: HTMLDivElement;\n onPathnameChanged?: (pathname: string) => void;\n}\n\nconst incompatibleParentFrameError = () =>\n new RemoteError(\"Could not find any compatible parent frame\");\n\nexport const connectHostRenderRoot = async (\n options: Options,\n): Promise<RemoteToHostConnection> => {\n const { root, onPathnameChanged } = options;\n\n const connection = new ThreadNestedIframe<HostExports, RemoteExports>({\n exports: {\n render: (connection: RemoteConnection) =>\n import(\"@mittwald/remote-dom-core/elements\").then(\n ({ RemoteMutationObserver }) => {\n const observer = new RemoteMutationObserver(connection);\n observer.observe(root);\n },\n ),\n setPathname: async (pathname) => {\n onPathnameChanged?.(pathname);\n },\n },\n });\n\n if (connection.parent === window) {\n throw incompatibleParentFrameError();\n }\n\n try {\n await connection.imports.setIsReady(Version.v3);\n\n if (typeof mwExtBridge !== \"undefined\") {\n mwExtBridge.connection = connection.imports;\n await mwExtBridge.readiness.setIsReady();\n }\n\n return connection;\n } catch (error) {\n if (\n error instanceof Error &&\n /No '.*' method is exported from this thread/.test(error.message)\n ) {\n throw incompatibleParentFrameError();\n }\n throw error;\n }\n};\n\nexport const connectHostRenderRootRef =\n (opts: Omit<Options, \"root\">) => (ref: HTMLDivElement | null) => {\n if (ref === null) {\n return;\n }\n if (\"__remoteConnection\" in ref) {\n return ref[\"__remoteConnection\"] as Promise<RemoteToHostConnection>;\n }\n\n const connection = connectHostRenderRoot({\n root: ref,\n ...opts,\n });\n Object.assign(ref, { __remoteConnection: connection });\n return connection;\n };\n"],"names":["connection"],"mappings":";;;;;AAeA,MAAM,4BAA+B,GAAA,MACnC,IAAI,WAAA,CAAY,4CAA4C,CAAA;AAEjD,MAAA,qBAAA,GAAwB,OACnC,OACoC,KAAA;AACpC,EAAM,MAAA,EAAE,IAAM,EAAA,iBAAA,EAAsB,GAAA,OAAA;AAEpC,EAAM,MAAA,UAAA,GAAa,IAAI,kBAA+C,CAAA;AAAA,IACpE,OAAS,EAAA;AAAA,MACP,MAAQ,EAAA,CAACA,WACP,KAAA,OAAO,oCAAoC,CAAE,CAAA,IAAA;AAAA,QAC3C,CAAC,EAAE,sBAAA,EAA6B,KAAA;AAC9B,UAAM,MAAA,QAAA,GAAW,IAAI,sBAAA,CAAuBA,WAAU,CAAA;AACtD,UAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA;AACvB,OACF;AAAA,MACF,WAAA,EAAa,OAAO,QAAa,KAAA;AAC/B,QAAA,iBAAA,GAAoB,QAAQ,CAAA;AAAA;AAC9B;AACF,GACD,CAAA;AAED,EAAI,IAAA,UAAA,CAAW,WAAW,MAAQ,EAAA;AAChC,IAAA,MAAM,4BAA6B,EAAA;AAAA;AAGrC,EAAI,IAAA;AACF,IAAA,MAAM,UAAW,CAAA,OAAA,CAAQ,UAAW,CAAA,OAAA,CAAQ,EAAE,CAAA;AAE9C,IAAI,IAAA,OAAO,gBAAgB,WAAa,EAAA;AACtC,MAAA,WAAA,CAAY,aAAa,UAAW,CAAA,OAAA;AACpC,MAAM,MAAA,WAAA,CAAY,UAAU,UAAW,EAAA;AAAA;AAGzC,IAAO,OAAA,UAAA;AAAA,WACA,KAAO,EAAA;AACd,IAAA,IACE,iBAAiB,KACjB,IAAA,6CAAA,CAA8C,IAAK,CAAA,KAAA,CAAM,OAAO,CAChE,EAAA;AACA,MAAA,MAAM,4BAA6B,EAAA;AAAA;AAErC,IAAM,MAAA,KAAA;AAAA;AAEV;AAEO,MAAM,wBACX,GAAA,CAAC,IAAgC,KAAA,CAAC,GAA+B,KAAA;AAC/D,EAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,IAAA;AAAA;AAEF,EAAA,IAAI,wBAAwB,GAAK,EAAA;AAC/B,IAAA,OAAO,IAAI,oBAAoB,CAAA;AAAA;AAGjC,EAAA,MAAM,aAAa,qBAAsB,CAAA;AAAA,IACvC,IAAM,EAAA,GAAA;AAAA,IACN,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAA,CAAO,MAAO,CAAA,GAAA,EAAK,EAAE,kBAAA,EAAoB,YAAY,CAAA;AACrD,EAAO,OAAA,UAAA;AACT;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connectRemoteIframe.mjs","sources":["../../../src/connection/connectRemoteIframe.ts"],"sourcesContent":["import type {\n HostExports,\n HostToRemoteConnection,\n NavigationState,\n RemoteExports,\n} from \"@/connection/types\";\nimport { emptyImplementation } from \"@/ext-bridge/implementation\";\nimport type { ExtBridgeConnectionApi } from \"@mittwald/ext-bridge\";\nimport type { RemoteConnection } from \"@mittwald/remote-dom-core/elements\";\nimport { ThreadIframe } from \"@quilted/threads\";\n\ninterface Options {\n connection: RemoteConnection;\n iframe: HTMLIFrameElement;\n onReady?: () => void;\n onError?: (error: string) => void;\n onNavigationStateChanged?: (state: NavigationState) => void;\n extBridgeImplementation?: ExtBridgeConnectionApi;\n}\n\nexport const connectRemoteIframe = (opts: Options): HostToRemoteConnection => {\n const {\n connection,\n iframe,\n onReady,\n onError,\n onNavigationStateChanged,\n extBridgeImplementation = emptyImplementation,\n } = opts;\n\n const result = {\n thread: new ThreadIframe<RemoteExports, HostExports>(iframe, {\n exports: {\n ...extBridgeImplementation,\n setIsReady: async (version = 1) => {\n result.version = version;\n onReady?.();\n },\n setError: async (error: string) => {\n onError?.(error);\n },\n setNavigationState: async (state) => {\n onNavigationStateChanged?.(state);\n },\n },\n }),\n version: 0,\n };\n\n result.thread.imports.render(connection);\n return result;\n};\n\nexport const connectRemoteIframeRef =\n (opts: Omit<Options, \"iframe\">) => (ref: HTMLIFrameElement | null) => {\n if (!ref) {\n return;\n }\n\n if (\"__remoteConnection\" in ref) {\n return ref[\"__remoteConnection\"] as HostToRemoteConnection;\n }\n\n const connection = connectRemoteIframe({\n iframe: ref,\n ...opts,\n });\n Object.assign(ref, { __remoteConnection: connection });\n return connection;\n };\n"],"names":[],"mappings":";;;AAoBa,MAAA,mBAAA,GAAsB,CAAC,IAA0C,KAAA;AAC5E,EAAM,MAAA;AAAA,IACJ,UAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,wBAAA;AAAA,IACA,uBAA0B,GAAA;AAAA,GACxB,GAAA,IAAA;AAEJ,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,MAAA,EAAQ,IAAI,YAAA,CAAyC,MAAQ,EAAA;AAAA,MAC3D,OAAS,EAAA;AAAA,QACP,GAAG,uBAAA;AAAA,QACH,UAAA,EAAY,OAAO,OAAA,GAAU,CAAM,KAAA;AACjC,UAAA,MAAA,CAAO,OAAU,GAAA,OAAA;AACjB,UAAU,OAAA,IAAA;AAAA,SACZ;AAAA,QACA,QAAA,EAAU,OAAO,KAAkB,KAAA;AACjC,UAAA,OAAA,GAAU,KAAK,CAAA;AAAA,SACjB;AAAA,QACA,kBAAA,EAAoB,OAAO,KAAU,KAAA;AACnC,UAAA,wBAAA,GAA2B,KAAK,CAAA;AAAA;AAClC;AACF,KACD,CAAA;AAAA,IACD,OAAS,EAAA;AAAA,GACX;AAEA,EAAO,MAAA,CAAA,MAAA,CAAO,OAAQ,CAAA,MAAA,CAAO,UAAU,CAAA;AACvC,EAAO,OAAA,MAAA;AACT;AAEO,MAAM,sBACX,GAAA,CAAC,IAAkC,KAAA,CAAC,GAAkC,KAAA;AACpE,EAAA,IAAI,CAAC,GAAK,EAAA;AACR,IAAA;AAAA;AAGF,EAAA,IAAI,wBAAwB,GAAK,EAAA;AAC/B,IAAA,OAAO,IAAI,oBAAoB,CAAA;AAAA;AAGjC,EAAA,MAAM,aAAa,mBAAoB,CAAA;AAAA,IACrC,MAAQ,EAAA,GAAA;AAAA,IACR,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAA,CAAO,MAAO,CAAA,GAAA,EAAK,EAAE,kBAAA,EAAoB,YAAY,CAAA;AACrD,EAAO,OAAA,UAAA;AACT;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sources":["../../../src/connection/types.ts"],"sourcesContent":["import type { ExtBridgeConnectionApi } from \"@mittwald/ext-bridge\";\nimport type { RemoteConnection } from \"@mittwald/remote-dom-core\";\nimport type { ThreadIframe, ThreadNestedIframe } from \"@quilted/threads\";\n\nexport interface NavigationState {\n pathname: string;\n isPending: boolean;\n}\n\nexport interface HostExports extends ExtBridgeConnectionApi {\n setIsReady: (version?: Version) => Promise<void>;\n setError: (error: string) => Promise<void>;\n setNavigationState: (state: NavigationState) => Promise<void>;\n}\n\nexport interface RemoteExports {\n render: (connection: RemoteConnection) => Promise<void>;\n setPathname: (pathname: string) => Promise<void>;\n}\n\nexport type RemoteToHostConnection = ThreadNestedIframe<\n HostExports,\n RemoteExports\n>;\n\nexport interface HostToRemoteConnection {\n version: Version;\n thread: ThreadIframe<RemoteExports, HostExports>;\n}\n\nexport enum Version {\n vUnknown = 0,\n v1 = 1,\n v2 = 2,\n v3 = 3,\n}\n"],"names":["Version"],"mappings":"AA8BY,IAAA,OAAA,qBAAAA,QAAL,KAAA;AACL,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,cAAW,CAAX,CAAA,GAAA,UAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAL,CAAA,GAAA,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAL,CAAA,GAAA,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAL,CAAA,GAAA,IAAA;AAJU,EAAAA,OAAAA,QAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;;;;"}
|
package/dist/js/error.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"error.mjs","sources":["../../src/error.ts"],"sourcesContent":["export class RemoteError extends Error {\n constructor(message: string) {\n super(message);\n this.message = message;\n }\n}\n\nRemoteError.prototype.name = \"RemoteError\";\n"],"names":[],"mappings":"AAAO,MAAM,oBAAoB,KAAM,CAAA;AAAA,EACrC,YAAY,OAAiB,EAAA;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AAEnB;AAEA,WAAA,CAAY,UAAU,IAAO,GAAA,aAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowRemoteEvent.mjs","sources":["../../../src/events/FlowRemoteEvent.ts"],"sourcesContent":["export class FlowRemoteEvent<T> extends CustomEvent<T> {\n public constructor(type: string, detail: T) {\n super(type, {\n detail,\n });\n }\n}\n"],"names":[],"mappings":"AAAO,MAAM,wBAA2B,WAAe,CAAA;AAAA,EAC9C,WAAA,CAAY,MAAc,MAAW,EAAA;AAC1C,IAAA,KAAA,CAAM,IAAM,EAAA;AAAA,MACV;AAAA,KACD,CAAA;AAAA;AAEL;;;;"}
|
package/dist/js/events/index.mjs
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { standard } from './serializers.mjs';
|
|
2
|
-
import resolveNestedPromises from '../utils/promise.mjs';
|
|
3
|
-
import { eventValueTransformer } from '../utils/eventValueTransformer.mjs';
|
|
4
|
-
|
|
5
|
-
const mapEventHandler = (eventHandler, eventName, eventSerialization = {}) => (event) => {
|
|
6
|
-
const serialize = eventSerialization[eventName] ?? standard;
|
|
7
|
-
const data = eventValueTransformer(eventName, serialize(event));
|
|
8
|
-
resolveNestedPromises(data).then(eventHandler);
|
|
9
|
-
return null;
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
export { mapEventHandler };
|
|
13
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../../../src/events/index.ts"],"sourcesContent":["import { standard } from \"@/events/serializers\";\nimport resolveNestedPromises from \"@/utils/promise\";\nimport { eventValueTransformer } from \"@/utils/eventValueTransformer\";\n\nexport type EventHandler = (event: unknown) => void;\nexport type EventSerialization = (event: unknown) => unknown;\nexport type EventSerializationMap = Record<string, EventSerialization>;\n\nexport const mapEventHandler =\n (\n eventHandler: EventHandler,\n eventName: string,\n eventSerialization: EventSerializationMap = {},\n ) =>\n (event: unknown) => {\n const serialize = eventSerialization[eventName] ?? standard;\n const data = eventValueTransformer(eventName, serialize(event));\n\n resolveNestedPromises(data).then(eventHandler);\n return null;\n };\n"],"names":[],"mappings":";;;;AAQa,MAAA,eAAA,GACX,CACE,YACA,EAAA,SAAA,EACA,qBAA4C,EAAC,KAE/C,CAAC,KAAmB,KAAA;AAClB,EAAM,MAAA,SAAA,GAAY,kBAAmB,CAAA,SAAS,CAAK,IAAA,QAAA;AACnD,EAAA,MAAM,IAAO,GAAA,qBAAA,CAAsB,SAAW,EAAA,SAAA,CAAU,KAAK,CAAC,CAAA;AAE9D,EAAsB,qBAAA,CAAA,IAAI,CAAE,CAAA,IAAA,CAAK,YAAY,CAAA;AAC7C,EAAO,OAAA,IAAA;AACT;;;;"}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import * as R from 'remeda';
|
|
2
|
-
|
|
3
|
-
const isPrimitive = (something) => R.isString(something) || R.isNumber(something) || R.isBoolean(something);
|
|
4
|
-
const isFile = (something) => something instanceof File || something instanceof FileList;
|
|
5
|
-
const primitiveFlat = (event) => {
|
|
6
|
-
if (R.isArray(event)) {
|
|
7
|
-
return event.map(primitiveFlat);
|
|
8
|
-
} else if (R.isObjectType(event)) {
|
|
9
|
-
if (isFile(event)) {
|
|
10
|
-
return event;
|
|
11
|
-
}
|
|
12
|
-
return R.pickBy(
|
|
13
|
-
event,
|
|
14
|
-
(value) => isPrimitive(value) || isFile(value)
|
|
15
|
-
);
|
|
16
|
-
}
|
|
17
|
-
return event;
|
|
18
|
-
};
|
|
19
|
-
const pick = (...props) => (event) => {
|
|
20
|
-
return R.pick(event, props);
|
|
21
|
-
};
|
|
22
|
-
const standard = primitiveFlat;
|
|
23
|
-
|
|
24
|
-
export { pick, primitiveFlat, standard };
|
|
25
|
-
//# sourceMappingURL=serializers.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializers.mjs","sources":["../../../src/events/serializers.ts"],"sourcesContent":["import type { EventSerialization } from \"@/events/index\";\nimport * as R from \"remeda\";\n\nconst isPrimitive = (something: unknown) =>\n R.isString(something) || R.isNumber(something) || R.isBoolean(something);\n\nconst isFile = (something: unknown) =>\n something instanceof File || something instanceof FileList;\n\nexport const primitiveFlat: EventSerialization = (event) => {\n if (R.isArray(event)) {\n return event.map(primitiveFlat);\n } else if (R.isObjectType(event)) {\n if (isFile(event)) {\n return event;\n }\n\n return R.pickBy(\n event as never,\n (value) => isPrimitive(value) || isFile(value),\n );\n }\n return event;\n};\n\nexport const pick =\n (...props: string[]): EventSerialization =>\n (event) => {\n return R.pick(event as never, props);\n };\n\nexport const standard = primitiveFlat;\n"],"names":[],"mappings":";;AAGA,MAAM,WAAc,GAAA,CAAC,SACnB,KAAA,CAAA,CAAE,QAAS,CAAA,SAAS,CAAK,IAAA,CAAA,CAAE,QAAS,CAAA,SAAS,CAAK,IAAA,CAAA,CAAE,UAAU,SAAS,CAAA;AAEzE,MAAM,MAAS,GAAA,CAAC,SACd,KAAA,SAAA,YAAqB,QAAQ,SAAqB,YAAA,QAAA;AAEvC,MAAA,aAAA,GAAoC,CAAC,KAAU,KAAA;AAC1D,EAAI,IAAA,CAAA,CAAE,OAAQ,CAAA,KAAK,CAAG,EAAA;AACpB,IAAO,OAAA,KAAA,CAAM,IAAI,aAAa,CAAA;AAAA,GACrB,MAAA,IAAA,CAAA,CAAE,YAAa,CAAA,KAAK,CAAG,EAAA;AAChC,IAAI,IAAA,MAAA,CAAO,KAAK,CAAG,EAAA;AACjB,MAAO,OAAA,KAAA;AAAA;AAGT,IAAA,OAAO,CAAE,CAAA,MAAA;AAAA,MACP,KAAA;AAAA,MACA,CAAC,KAAU,KAAA,WAAA,CAAY,KAAK,CAAA,IAAK,OAAO,KAAK;AAAA,KAC/C;AAAA;AAEF,EAAO,OAAA,KAAA;AACT;AAEO,MAAM,IACX,GAAA,CAAA,GAAI,KACJ,KAAA,CAAC,KAAU,KAAA;AACT,EAAO,OAAA,CAAA,CAAE,IAAK,CAAA,KAAA,EAAgB,KAAK,CAAA;AACrC;AAEK,MAAM,QAAW,GAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"implementation.mjs","sources":["../../../src/ext-bridge/implementation.ts"],"sourcesContent":["import { RemoteError } from \"@/error\";\nimport type { ExtBridgeConnectionApi } from \"@mittwald/ext-bridge\";\n\nexport const emptyImplementation = new Proxy(\n {},\n {\n get() {\n throw new RemoteError(\"Missing implementation for mittwald.extBridge\");\n },\n },\n) as ExtBridgeConnectionApi;\n"],"names":[],"mappings":";;AAGO,MAAM,sBAAsB,IAAI,KAAA;AAAA,EACrC,EAAC;AAAA,EACD;AAAA,IACE,GAAM,GAAA;AACJ,MAAM,MAAA,IAAI,YAAY,+CAA+C,CAAA;AAAA;AACvE;AAEJ;;;;"}
|
package/dist/js/shim.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"shim.mjs","sources":["../../src/shim.ts"],"sourcesContent":["import { HTMLElement, customElements } from \"@lit-labs/ssr-dom-shim\";\n\nglobalThis.HTMLElement = HTMLElement;\nglobalThis.customElements = customElements;\nglobalThis.MutationObserver = class MutationObserver {\n public constructor() {\n // mocked\n }\n public disconnect() {\n // mocked\n }\n public observe() {\n // mocked\n }\n public takeRecords() {\n return [];\n }\n};\n"],"names":[],"mappings":";;AAEA,UAAA,CAAW,WAAc,GAAA,WAAA;AACzB,UAAA,CAAW,cAAiB,GAAA,cAAA;AAC5B,UAAW,CAAA,gBAAA,GAAmB,MAAM,gBAAiB,CAAA;AAAA,EAC5C,WAAc,GAAA;AAAA;AAErB,EACO,UAAa,GAAA;AAAA;AAEpB,EACO,OAAU,GAAA;AAAA;AAEjB,EACO,WAAc,GAAA;AACnB,IAAA,OAAO,EAAC;AAAA;AAEZ,CAAA"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { resolveFileContents } from './file.mjs';
|
|
2
|
-
import { deepMapValues } from './helper.mjs';
|
|
3
|
-
|
|
4
|
-
const eventObjectResolvers = {
|
|
5
|
-
FileList: (event) => Promise.all([...event].map(eventObjectResolvers.File)),
|
|
6
|
-
File: resolveFileContents
|
|
7
|
-
};
|
|
8
|
-
const eventValueTransformer = (eventName, event) => {
|
|
9
|
-
const replaceMaybeObjectTypeWithPromise = (value) => {
|
|
10
|
-
const constructorName = value?.constructor.name;
|
|
11
|
-
const eventObjectResolverFunction = eventObjectResolvers[constructorName];
|
|
12
|
-
if (constructorName && eventObjectResolverFunction) {
|
|
13
|
-
return eventObjectResolverFunction(value);
|
|
14
|
-
}
|
|
15
|
-
return value;
|
|
16
|
-
};
|
|
17
|
-
return deepMapValues(event, replaceMaybeObjectTypeWithPromise);
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export { eventValueTransformer };
|
|
21
|
-
//# sourceMappingURL=eventValueTransformer.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eventValueTransformer.mjs","sources":["../../../src/utils/eventValueTransformer.ts"],"sourcesContent":["import { resolveFileContents } from \"@/utils/file\";\nimport { deepMapValues } from \"@/utils/helper\";\n\nconst eventObjectResolvers = {\n FileList: (event: unknown) =>\n Promise.all([...(event as FileList)].map(eventObjectResolvers.File)),\n File: resolveFileContents,\n} as const;\n\ntype EventObjectResolverMap = typeof eventObjectResolvers;\n\nexport const eventValueTransformer = (eventName: string, event: unknown) => {\n const replaceMaybeObjectTypeWithPromise = (value: unknown) => {\n const constructorName = value?.constructor\n .name as keyof EventObjectResolverMap;\n\n const eventObjectResolverFunction = eventObjectResolvers[constructorName];\n if (constructorName && eventObjectResolverFunction) {\n return eventObjectResolverFunction(value);\n }\n\n return value;\n };\n\n return deepMapValues(event, replaceMaybeObjectTypeWithPromise);\n};\n"],"names":[],"mappings":";;;AAGA,MAAM,oBAAuB,GAAA;AAAA,EAC3B,QAAU,EAAA,CAAC,KACT,KAAA,OAAA,CAAQ,GAAI,CAAA,CAAC,GAAI,KAAkB,CAAE,CAAA,GAAA,CAAI,oBAAqB,CAAA,IAAI,CAAC,CAAA;AAAA,EACrE,IAAM,EAAA;AACR,CAAA;AAIa,MAAA,qBAAA,GAAwB,CAAC,SAAA,EAAmB,KAAmB,KAAA;AAC1E,EAAM,MAAA,iCAAA,GAAoC,CAAC,KAAmB,KAAA;AAC5D,IAAM,MAAA,eAAA,GAAkB,OAAO,WAC5B,CAAA,IAAA;AAEH,IAAM,MAAA,2BAAA,GAA8B,qBAAqB,eAAe,CAAA;AACxE,IAAA,IAAI,mBAAmB,2BAA6B,EAAA;AAClD,MAAA,OAAO,4BAA4B,KAAK,CAAA;AAAA;AAG1C,IAAO,OAAA,KAAA;AAAA,GACT;AAEA,EAAO,OAAA,aAAA,CAAc,OAAO,iCAAiC,CAAA;AAC/D;;;;"}
|
package/dist/js/utils/file.mjs
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { TRANSFERABLE } from '@quilted/threads';
|
|
2
|
-
|
|
3
|
-
const resolveFileContents = async (file) => {
|
|
4
|
-
if (!(file instanceof File)) {
|
|
5
|
-
return file;
|
|
6
|
-
}
|
|
7
|
-
const arrayBuffer = await file.arrayBuffer();
|
|
8
|
-
return {
|
|
9
|
-
name: file.name,
|
|
10
|
-
type: file.type,
|
|
11
|
-
lastModified: file.lastModified,
|
|
12
|
-
size: file.size,
|
|
13
|
-
content: arrayBuffer,
|
|
14
|
-
[TRANSFERABLE]: 1
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
|
|
18
|
-
export { resolveFileContents };
|
|
19
|
-
//# sourceMappingURL=file.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.mjs","sources":["../../../src/utils/file.ts"],"sourcesContent":["import { TRANSFERABLE } from \"@quilted/threads\";\n\nexport const resolveFileContents = async (file: unknown) => {\n if (!(file instanceof File)) {\n return file;\n }\n\n const arrayBuffer = await file.arrayBuffer();\n\n return {\n name: file.name,\n type: file.type,\n lastModified: file.lastModified,\n size: file.size,\n content: arrayBuffer,\n [TRANSFERABLE]: 1,\n };\n};\n"],"names":[],"mappings":";;AAEa,MAAA,mBAAA,GAAsB,OAAO,IAAkB,KAAA;AAC1D,EAAI,IAAA,EAAE,gBAAgB,IAAO,CAAA,EAAA;AAC3B,IAAO,OAAA,IAAA;AAAA;AAGT,EAAM,MAAA,WAAA,GAAc,MAAM,IAAA,CAAK,WAAY,EAAA;AAE3C,EAAO,OAAA;AAAA,IACL,MAAM,IAAK,CAAA,IAAA;AAAA,IACX,MAAM,IAAK,CAAA,IAAA;AAAA,IACX,cAAc,IAAK,CAAA,YAAA;AAAA,IACnB,MAAM,IAAK,CAAA,IAAA;AAAA,IACX,OAAS,EAAA,WAAA;AAAA,IACT,CAAC,YAAY,GAAG;AAAA,GAClB;AACF;;;;"}
|
package/dist/js/utils/helper.mjs
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import * as R from 'remeda';
|
|
2
|
-
|
|
3
|
-
function deepMapValues(input, fn = (v) => v) {
|
|
4
|
-
input = fn(input);
|
|
5
|
-
if (R.isPromise(input)) {
|
|
6
|
-
return input;
|
|
7
|
-
}
|
|
8
|
-
if (R.isArray(input)) {
|
|
9
|
-
return R.map((item) => deepMapValues(item, fn));
|
|
10
|
-
}
|
|
11
|
-
if (R.isObjectType(input)) {
|
|
12
|
-
return R.mapValues(input, (value) => {
|
|
13
|
-
return deepMapValues(value, fn);
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
return input;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export { deepMapValues };
|
|
20
|
-
//# sourceMappingURL=helper.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helper.mjs","sources":["../../../src/utils/helper.ts"],"sourcesContent":["import * as R from \"remeda\";\n\nexport function deepMapValues(\n input: unknown,\n fn: (value: unknown) => unknown = (v) => v,\n): unknown {\n input = fn(input);\n\n if (R.isPromise(input)) {\n return input;\n }\n\n if (R.isArray(input)) {\n return R.map((item) => deepMapValues(item, fn));\n }\n\n if (R.isObjectType(input)) {\n return R.mapValues(input, (value) => {\n return deepMapValues(value, fn);\n });\n }\n\n return input;\n}\n"],"names":[],"mappings":";;AAEO,SAAS,aACd,CAAA,KAAA,EACA,EAAkC,GAAA,CAAC,MAAM,CAChC,EAAA;AACT,EAAA,KAAA,GAAQ,GAAG,KAAK,CAAA;AAEhB,EAAI,IAAA,CAAA,CAAE,SAAU,CAAA,KAAK,CAAG,EAAA;AACtB,IAAO,OAAA,KAAA;AAAA;AAGT,EAAI,IAAA,CAAA,CAAE,OAAQ,CAAA,KAAK,CAAG,EAAA;AACpB,IAAA,OAAO,EAAE,GAAI,CAAA,CAAC,SAAS,aAAc,CAAA,IAAA,EAAM,EAAE,CAAC,CAAA;AAAA;AAGhD,EAAI,IAAA,CAAA,CAAE,YAAa,CAAA,KAAK,CAAG,EAAA;AACzB,IAAA,OAAO,CAAE,CAAA,SAAA,CAAU,KAAO,EAAA,CAAC,KAAU,KAAA;AACnC,MAAO,OAAA,aAAA,CAAc,OAAO,EAAE,CAAA;AAAA,KAC/B,CAAA;AAAA;AAGH,EAAO,OAAA,KAAA;AACT;;;;"}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import * as R from 'remeda';
|
|
2
|
-
|
|
3
|
-
async function resolveNestedPromises(input) {
|
|
4
|
-
if (input instanceof Promise) {
|
|
5
|
-
return resolveNestedPromises(await input);
|
|
6
|
-
}
|
|
7
|
-
if (R.isArray(input)) {
|
|
8
|
-
return await Promise.all(
|
|
9
|
-
input.map((item) => resolveNestedPromises(item))
|
|
10
|
-
);
|
|
11
|
-
}
|
|
12
|
-
if (input && typeof input === "object" && R.isPlainObject(input)) {
|
|
13
|
-
const entries = Object.entries(input);
|
|
14
|
-
const resolvedEntries = await Promise.all(
|
|
15
|
-
entries.map(async ([key, value]) => [
|
|
16
|
-
key,
|
|
17
|
-
await resolveNestedPromises(value)
|
|
18
|
-
])
|
|
19
|
-
);
|
|
20
|
-
return Promise.resolve(
|
|
21
|
-
Object.fromEntries(resolvedEntries)
|
|
22
|
-
);
|
|
23
|
-
}
|
|
24
|
-
return input;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export { resolveNestedPromises as default };
|
|
28
|
-
//# sourceMappingURL=promise.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promise.mjs","sources":["../../../src/utils/promise.ts"],"sourcesContent":["import * as R from \"remeda\";\n\ntype AwaitedObject<T> =\n T extends Promise<infer U>\n ? AwaitedObject<U>\n : T extends (infer V)[]\n ? AwaitedObject<V>[]\n : T extends object\n ? { [K in keyof T]: AwaitedObject<T[K]> }\n : T;\n\nasync function resolveNestedPromises<T>(input: T): Promise<AwaitedObject<T>> {\n if (input instanceof Promise) {\n return resolveNestedPromises(await input);\n }\n\n if (R.isArray(input)) {\n return (await Promise.all(\n input.map((item) => resolveNestedPromises(item)),\n )) as AwaitedObject<T>;\n }\n\n if (input && typeof input === \"object\" && R.isPlainObject(input)) {\n const entries = Object.entries(input);\n const resolvedEntries = await Promise.all(\n entries.map(async ([key, value]) => [\n key,\n await resolveNestedPromises(value),\n ]),\n );\n\n return Promise.resolve(\n Object.fromEntries(resolvedEntries) as AwaitedObject<T>,\n );\n }\n\n return input as AwaitedObject<T>;\n}\n\nexport default resolveNestedPromises;\n"],"names":[],"mappings":";;AAWA,eAAe,sBAAyB,KAAqC,EAAA;AAC3E,EAAA,IAAI,iBAAiB,OAAS,EAAA;AAC5B,IAAO,OAAA,qBAAA,CAAsB,MAAM,KAAK,CAAA;AAAA;AAG1C,EAAI,IAAA,CAAA,CAAE,OAAQ,CAAA,KAAK,CAAG,EAAA;AACpB,IAAA,OAAQ,MAAM,OAAQ,CAAA,GAAA;AAAA,MACpB,MAAM,GAAI,CAAA,CAAC,IAAS,KAAA,qBAAA,CAAsB,IAAI,CAAC;AAAA,KACjD;AAAA;AAGF,EAAA,IAAI,SAAS,OAAO,KAAA,KAAU,YAAY,CAAE,CAAA,aAAA,CAAc,KAAK,CAAG,EAAA;AAChE,IAAM,MAAA,OAAA,GAAU,MAAO,CAAA,OAAA,CAAQ,KAAK,CAAA;AACpC,IAAM,MAAA,eAAA,GAAkB,MAAM,OAAQ,CAAA,GAAA;AAAA,MACpC,QAAQ,GAAI,CAAA,OAAO,CAAC,GAAA,EAAK,KAAK,CAAM,KAAA;AAAA,QAClC,GAAA;AAAA,QACA,MAAM,sBAAsB,KAAK;AAAA,OAClC;AAAA,KACH;AAEA,IAAA,OAAO,OAAQ,CAAA,OAAA;AAAA,MACb,MAAA,CAAO,YAAY,eAAe;AAAA,KACpC;AAAA;AAGF,EAAO,OAAA,KAAA;AACT;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowRemoteEvent.d.ts","sourceRoot":"","sources":["../../../src/events/FlowRemoteEvent.ts"],"names":[],"mappings":"AAAA,qBAAa,eAAe,CAAC,CAAC,CAAE,SAAQ,WAAW,CAAC,CAAC,CAAC;gBACjC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;CAK3C"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export type EventHandler = (event: unknown) => void;
|
|
2
|
-
export type EventSerialization = (event: unknown) => unknown;
|
|
3
|
-
export type EventSerializationMap = Record<string, EventSerialization>;
|
|
4
|
-
export declare const mapEventHandler: (eventHandler: EventHandler, eventName: string, eventSerialization?: EventSerializationMap) => (event: unknown) => null;
|
|
5
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/index.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AACpD,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAC7D,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEvE,eAAO,MAAM,eAAe,GAExB,cAAc,YAAY,EAC1B,WAAW,MAAM,EACjB,qBAAoB,qBAA0B,MAE/C,OAAO,OAAO,SAMd,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { EventSerialization } from './index';
|
|
2
|
-
export declare const primitiveFlat: EventSerialization;
|
|
3
|
-
export declare const pick: (...props: string[]) => EventSerialization;
|
|
4
|
-
export declare const standard: EventSerialization;
|
|
5
|
-
//# sourceMappingURL=serializers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"serializers.d.ts","sourceRoot":"","sources":["../../../src/events/serializers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AASzD,eAAO,MAAM,aAAa,EAAE,kBAc3B,CAAC;AAEF,eAAO,MAAM,IAAI,GACd,GAAG,OAAO,MAAM,EAAE,KAAG,kBAGrB,CAAC;AAEJ,eAAO,MAAM,QAAQ,oBAAgB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"eventValueTransformer.d.ts","sourceRoot":"","sources":["../../../src/utils/eventValueTransformer.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,qBAAqB,GAAI,WAAW,MAAM,EAAE,OAAO,OAAO,YActE,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/utils/file.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,GAAU,MAAM,OAAO,qBAetD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../src/utils/helper.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,EAAE,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAkB,GACzC,OAAO,CAkBT"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
type AwaitedObject<T> = T extends Promise<infer U> ? AwaitedObject<U> : T extends (infer V)[] ? AwaitedObject<V>[] : T extends object ? {
|
|
2
|
-
[K in keyof T]: AwaitedObject<T[K]>;
|
|
3
|
-
} : T;
|
|
4
|
-
declare function resolveNestedPromises<T>(input: T): Promise<AwaitedObject<T>>;
|
|
5
|
-
export default resolveNestedPromises;
|
|
6
|
-
//# sourceMappingURL=promise.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promise.d.ts","sourceRoot":"","sources":["../../../src/utils/promise.ts"],"names":[],"mappings":"AAEA,KAAK,aAAa,CAAC,CAAC,IAClB,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GACtB,aAAa,CAAC,CAAC,CAAC,GAChB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,GACnB,aAAa,CAAC,CAAC,CAAC,EAAE,GAClB,CAAC,SAAS,MAAM,GACd;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAE,GACvC,CAAC,CAAC;AAEZ,iBAAe,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CA0B3E;AAED,eAAe,qBAAqB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"promise.test.d.ts","sourceRoot":"","sources":["../../../src/utils/promise.test.ts"],"names":[],"mappings":""}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|