@mittwald/flow-remote-core 0.2.0-alpha.887 → 0.2.0-alpha.888
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/connection/connectHostRenderRoot.mjs.map +1 -0
- package/dist/js/{remote-core/src/connection → connection}/connectRemoteIframe.mjs +0 -1
- package/dist/js/connection/connectRemoteIframe.mjs.map +1 -0
- package/dist/js/connection/types.mjs.map +1 -0
- package/dist/js/error.mjs.map +1 -0
- package/dist/js/ext-bridge/getWithMergedHostConfig.mjs.map +1 -0
- package/dist/js/ext-bridge/implementation.mjs.map +1 -0
- package/dist/js/index-node.mjs +13 -13
- package/dist/js/index.mjs +12 -12
- package/dist/js/{remote-core/src/serialization → serialization}/FlowThreadSerialization.mjs +8 -7
- package/dist/js/serialization/FlowThreadSerialization.mjs.map +1 -0
- package/dist/js/serialization/Serializer.mjs +32 -0
- package/dist/js/serialization/Serializer.mjs.map +1 -0
- package/dist/js/serialization/serializers/dataTransferText.mjs.map +1 -0
- package/dist/js/serialization/serializers/date.mjs.map +1 -0
- package/dist/js/{remote-core/src/serialization → serialization}/serializers/file.mjs +2 -3
- package/dist/js/serialization/serializers/file.mjs.map +1 -0
- package/dist/js/{remote-core/src/serialization → serialization}/serializers/fileList.mjs +5 -5
- package/dist/js/serialization/serializers/fileList.mjs.map +1 -0
- package/dist/js/{remote-core/src/serialization → serialization}/serializers/formData.mjs +13 -13
- package/dist/js/serialization/serializers/formData.mjs.map +1 -0
- package/dist/js/serialization/serializers/passwordPolicy.mjs.map +1 -0
- package/dist/js/shim.mjs.map +1 -0
- package/dist/types/serialization/FlowThreadSerialization.d.ts.map +1 -1
- package/dist/types/serialization/Serializer.d.ts +3 -3
- package/dist/types/serialization/Serializer.d.ts.map +1 -1
- package/dist/types/serialization/serializers/file.d.ts +1 -1
- package/dist/types/serialization/serializers/file.d.ts.map +1 -1
- package/dist/types/serialization/serializers/fileList.d.ts.map +1 -1
- package/dist/types/serialization/serializers/formData.d.ts +5 -1
- package/dist/types/serialization/serializers/formData.d.ts.map +1 -1
- package/package.json +6 -6
- package/dist/js/core/src/file.mjs +0 -18
- package/dist/js/core/src/file.mjs.map +0 -1
- package/dist/js/remote-core/src/connection/connectHostRenderRoot.mjs.map +0 -1
- package/dist/js/remote-core/src/connection/connectRemoteIframe.mjs.map +0 -1
- package/dist/js/remote-core/src/connection/types.mjs.map +0 -1
- package/dist/js/remote-core/src/error.mjs.map +0 -1
- package/dist/js/remote-core/src/ext-bridge/getWithMergedHostConfig.mjs.map +0 -1
- package/dist/js/remote-core/src/ext-bridge/implementation.mjs.map +0 -1
- package/dist/js/remote-core/src/serialization/FlowThreadSerialization.mjs.map +0 -1
- package/dist/js/remote-core/src/serialization/Serializer.mjs +0 -37
- package/dist/js/remote-core/src/serialization/Serializer.mjs.map +0 -1
- package/dist/js/remote-core/src/serialization/serializers/dataTransferText.mjs.map +0 -1
- package/dist/js/remote-core/src/serialization/serializers/date.mjs.map +0 -1
- package/dist/js/remote-core/src/serialization/serializers/file.mjs.map +0 -1
- package/dist/js/remote-core/src/serialization/serializers/fileList.mjs.map +0 -1
- package/dist/js/remote-core/src/serialization/serializers/formData.mjs.map +0 -1
- package/dist/js/remote-core/src/serialization/serializers/passwordPolicy.mjs.map +0 -1
- package/dist/js/remote-core/src/shim.mjs.map +0 -1
- /package/dist/js/{remote-core/src/connection → connection}/connectHostRenderRoot.mjs +0 -0
- /package/dist/js/{remote-core/src/connection → connection}/types.mjs +0 -0
- /package/dist/js/{remote-core/src/error.mjs → error.mjs} +0 -0
- /package/dist/js/{remote-core/src/ext-bridge → ext-bridge}/getWithMergedHostConfig.mjs +0 -0
- /package/dist/js/{remote-core/src/ext-bridge → ext-bridge}/implementation.mjs +0 -0
- /package/dist/js/{remote-core/src/serialization → serialization}/serializers/dataTransferText.mjs +0 -0
- /package/dist/js/{remote-core/src/serialization → serialization}/serializers/date.mjs +0 -0
- /package/dist/js/{remote-core/src/serialization → serialization}/serializers/index.mjs +0 -0
- /package/dist/js/{remote-core/src/serialization → serialization}/serializers/index.mjs.map +0 -0
- /package/dist/js/{remote-core/src/serialization → serialization}/serializers/passwordPolicy.mjs +0 -0
- /package/dist/js/{remote-core/src/shim.mjs → shim.mjs} +0 -0
|
@@ -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 connectRemoteReceiver = (\n root: HTMLDivElement,\n receiverConnection: RemoteConnection,\n) =>\n import(\"@mittwald/remote-dom-core/elements\").then(\n ({ RemoteMutationObserver }) => {\n const observer = new RemoteMutationObserver(receiverConnection);\n observer.observe(root);\n },\n );\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 connectRemoteReceiver(root, connection),\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,4BAAA,GAA+B,MACnC,IAAI,WAAA,CAAY,4CAA4C,CAAA;AAEvD,MAAM,wBAAwB,CACnC,IAAA,EACA,kBAAA,KAEA,OAAO,oCAAoC,CAAA,CAAE,IAAA;AAAA,EAC3C,CAAC,EAAE,sBAAA,EAAuB,KAAM;AAC9B,IAAA,MAAM,QAAA,GAAW,IAAI,sBAAA,CAAuB,kBAAkB,CAAA;AAC9D,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AACF;AAEK,MAAM,qBAAA,GAAwB,OACnC,OAAA,KACoC;AACpC,EAAA,MAAM,EAAE,IAAA,EAAM,iBAAA,EAAkB,GAAI,OAAA;AAEpC,EAAA,MAAM,UAAA,GAAa,IAAI,kBAAA,CAA+C;AAAA,IACpE,aAAA,EAAe,IAAI,uBAAA,EAAwB;AAAA,IAC3C,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,CAACA,WAAAA,KACP,qBAAA,CAAsB,MAAMA,WAAU,CAAA;AAAA,MACxC,WAAA,EAAa,OAAO,QAAA,KAAa;AAC/B,QAAA,iBAAA,GAAoB,QAAQ,CAAA;AAAA,MAC9B;AAAA;AACF,GACD,CAAA;AAED,EAAA,IAAI,UAAA,CAAW,WAAW,MAAA,EAAQ;AAChC,IAAA,MAAM,4BAAA,EAA6B;AAAA,EACrC;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,UAAA,CAAW,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,EAAE,CAAA;AAE9C,IAAA,IAAI,OAAO,gBAAgB,WAAA,EAAa;AACtC,MAAA,WAAA,CAAY,aAAa,UAAA,CAAW,OAAA;AACpC,MAAA,MAAM,WAAA,CAAY,UAAU,UAAA,EAAW;AAAA,IACzC;AAEA,IAAA,OAAO,UAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,IACE,iBAAiB,KAAA,IACjB,6CAAA,CAA8C,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA,EAChE;AACA,MAAA,MAAM,4BAAA,EAA6B;AAAA,IACrC;AACA,IAAA,MAAM,KAAA;AAAA,EACR;AACF;AAEO,MAAM,wBAAA,GACX,CAAC,IAAA,KAAgC,CAAC,GAAA,KAA+B;AAC/D,EAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,IAAA;AAAA,EACF;AACA,EAAA,IAAI,wBAAwB,GAAA,EAAK;AAC/B,IAAA,OAAO,IAAI,oBAAoB,CAAA;AAAA,EACjC;AAEA,EAAA,MAAM,aAAa,qBAAA,CAAsB;AAAA,IACvC,IAAA,EAAM,GAAA;AAAA,IACN,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,EAAE,kBAAA,EAAoB,YAAY,CAAA;AACrD,EAAA,OAAO,UAAA;AACT;;;;"}
|
|
@@ -2,7 +2,6 @@ import { Version } from './types.mjs';
|
|
|
2
2
|
import { getWithMergedHostConfig } from '../ext-bridge/getWithMergedHostConfig.mjs';
|
|
3
3
|
import { emptyImplementation } from '../ext-bridge/implementation.mjs';
|
|
4
4
|
import { FlowThreadSerialization } from '../serialization/FlowThreadSerialization.mjs';
|
|
5
|
-
import 'invariant';
|
|
6
5
|
import { ThreadIframe } from '@quilted/threads';
|
|
7
6
|
|
|
8
7
|
const connectRemoteIframe = (opts) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connectRemoteIframe.mjs","sources":["../../../src/connection/connectRemoteIframe.ts"],"sourcesContent":["import {\n Version,\n type HostExports,\n type HostToRemoteConnection,\n type NavigationState,\n type RemoteExports,\n type RemoteExtBridgeConnectionApi,\n} from \"@/connection/types\";\nimport { getWithMergedHostConfig } from \"@/ext-bridge/getWithMergedHostConfig\";\nimport { emptyImplementation } from \"@/ext-bridge/implementation\";\nimport { FlowThreadSerialization } from \"@/serialization/FlowThreadSerialization\";\nimport { type HostConfig } from \"@mittwald/flow-core\";\nimport type { RemoteConnection } from \"@mittwald/remote-dom-core/elements\";\nimport { ThreadIframe } from \"@quilted/threads\";\n\ninterface Options {\n connection: RemoteConnection;\n iframe: HTMLIFrameElement;\n hostConfig: HostConfig;\n onReady?: (connection: HostToRemoteConnection) => void;\n onLoadingChanged?: (isLoading: boolean) => void;\n onError?: (error: string) => void;\n onNavigationStateChanged?: (state: NavigationState) => void;\n extBridgeImplementation?: RemoteExtBridgeConnectionApi;\n}\n\nexport const connectRemoteIframe = (opts: Options): HostToRemoteConnection => {\n const {\n connection,\n iframe,\n onReady,\n onLoadingChanged,\n onError,\n onNavigationStateChanged,\n extBridgeImplementation: extBridgeImplementationProp = emptyImplementation,\n hostConfig,\n } = opts;\n\n const extBridgeImplementation = {\n ...extBridgeImplementationProp,\n getConfig: getWithMergedHostConfig(extBridgeImplementationProp, hostConfig),\n };\n\n const result = {\n thread: new ThreadIframe<RemoteExports, HostExports>(iframe, {\n serialization: new FlowThreadSerialization(),\n exports: {\n ...extBridgeImplementation,\n setIsReady: async (version = Version.v1) => {\n result.version = version;\n onReady?.(result);\n },\n setIsLoading: async (isLoading: boolean) => {\n onLoadingChanged?.(isLoading);\n },\n setError: async (error: string) => {\n onError?.(error);\n },\n setNavigationState: async (state) => {\n onNavigationStateChanged?.(state);\n },\n getHostConfig: async () => {\n return hostConfig;\n },\n },\n }),\n updateHostPathname: (hostPathname?: string) => {\n if (hostPathname === undefined) {\n return;\n }\n\n if (result.version >= Version.v2) {\n result.thread.imports.setPathname(hostPathname);\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":";;;;;;AA0BO,MAAM,mBAAA,GAAsB,CAAC,IAAA,KAA0C;AAC5E,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,OAAA;AAAA,IACA,wBAAA;AAAA,IACA,yBAAyB,2BAAA,GAA8B,mBAAA;AAAA,IACvD;AAAA,GACF,GAAI,IAAA;AAEJ,EAAA,MAAM,uBAAA,GAA0B;AAAA,IAC9B,GAAG,2BAAA;AAAA,IACH,SAAA,EAAW,uBAAA,CAAwB,2BAAA,EAA6B,UAAU;AAAA,GAC5E;AAEA,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,MAAA,EAAQ,IAAI,YAAA,CAAyC,MAAA,EAAQ;AAAA,MAC3D,aAAA,EAAe,IAAI,uBAAA,EAAwB;AAAA,MAC3C,OAAA,EAAS;AAAA,QACP,GAAG,uBAAA;AAAA,QACH,UAAA,EAAY,OAAO,OAAA,GAAU,OAAA,CAAQ,EAAA,KAAO;AAC1C,UAAA,MAAA,CAAO,OAAA,GAAU,OAAA;AACjB,UAAA,OAAA,GAAU,MAAM,CAAA;AAAA,QAClB,CAAA;AAAA,QACA,YAAA,EAAc,OAAO,SAAA,KAAuB;AAC1C,UAAA,gBAAA,GAAmB,SAAS,CAAA;AAAA,QAC9B,CAAA;AAAA,QACA,QAAA,EAAU,OAAO,KAAA,KAAkB;AACjC,UAAA,OAAA,GAAU,KAAK,CAAA;AAAA,QACjB,CAAA;AAAA,QACA,kBAAA,EAAoB,OAAO,KAAA,KAAU;AACnC,UAAA,wBAAA,GAA2B,KAAK,CAAA;AAAA,QAClC,CAAA;AAAA,QACA,eAAe,YAAY;AACzB,UAAA,OAAO,UAAA;AAAA,QACT;AAAA;AACF,KACD,CAAA;AAAA,IACD,kBAAA,EAAoB,CAAC,YAAA,KAA0B;AAC7C,MAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,MAAA,CAAO,OAAA,IAAW,OAAA,CAAQ,EAAA,EAAI;AAChC,QAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,CAAY,YAAY,CAAA;AAAA,MAChD;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA;AACvC,EAAA,OAAO,MAAA;AACT;AAEO,MAAM,sBAAA,GACX,CAAC,IAAA,KAAkC,CAAC,GAAA,KAAkC;AACpE,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,wBAAwB,GAAA,EAAK;AAC/B,IAAA,OAAO,IAAI,oBAAoB,CAAA;AAAA,EACjC;AAEA,EAAA,MAAM,aAAa,mBAAA,CAAoB;AAAA,IACrC,MAAA,EAAQ,GAAA;AAAA,IACR,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,EAAE,kBAAA,EAAoB,YAAY,CAAA;AACrD,EAAA,OAAO,UAAA;AACT;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sources":["../../../src/connection/types.ts"],"sourcesContent":["import type {\n ExtBridgeConfigInput,\n ExtBridgeConnectionApi,\n} from \"@mittwald/ext-bridge\";\nimport type { HostConfig } from \"@mittwald/flow-core\";\nimport type { RemoteConnection } from \"@mittwald/remote-dom-core\";\nimport type { ThreadIframe, ThreadNestedIframe } from \"@quilted/threads\";\nexport type { RemoteConnection } from \"@mittwald/remote-dom-core\";\n\nexport interface NavigationState {\n pathname: string;\n isPending: boolean;\n}\n\nexport type RemoteExtBridgeConfig = Omit<\n ExtBridgeConfigInput,\n keyof HostConfig\n>;\n\nexport interface RemoteExtBridgeConnectionApi extends Omit<\n ExtBridgeConnectionApi,\n \"getConfig\"\n> {\n getConfig: () => Promise<RemoteExtBridgeConfig>;\n}\n\n/**\n * Breaking Change warning: Do not remove/rename/modify existing properties of\n * this interface, as they might be used by existing extensions.\n *\n * When addding properties, make sure to release the host before all clients.\n */\nexport interface HostExports extends ExtBridgeConnectionApi {\n setIsReady: (version?: Version) => Promise<void>;\n setIsLoading: (isLoading: boolean) => Promise<void>;\n setError: (error: string) => Promise<void>;\n setNavigationState: (state: NavigationState) => Promise<void>;\n getHostConfig: () => Promise<HostConfig>;\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 updateHostPathname: (hostPathname?: string) => void;\n}\n\nexport enum Version {\n vUnknown = 0,\n v1 = 1,\n v2 = 2,\n v3 = 3,\n}\n"],"names":["Version"],"mappings":"AAwDO,IAAK,OAAA,qBAAAA,QAAAA,KAAL;AACL,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,cAAW,CAAA,CAAA,GAAX,UAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAA,CAAA,GAAL,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAA,CAAA,GAAL,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAA,CAAA,GAAL,IAAA;AAJU,EAAA,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,KAAA,CAAM;AAAA,EACrC,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF;AAEA,WAAA,CAAY,UAAU,IAAA,GAAO,aAAA;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getWithMergedHostConfig.mjs","sources":["../../../src/ext-bridge/getWithMergedHostConfig.ts"],"sourcesContent":["import type { RemoteExtBridgeConnectionApi } from \"@/connection\";\nimport type { ExtBridgeConfigInput } from \"@mittwald/ext-bridge\";\nimport type { HostConfig } from \"@mittwald/flow-core\";\n\nexport const getWithMergedHostConfig =\n (extBridgeConnection: RemoteExtBridgeConnectionApi, hostConfig: HostConfig) =>\n async (): Promise<ExtBridgeConfigInput> => {\n const baseConfig = await extBridgeConnection.getConfig();\n\n return {\n ...hostConfig,\n ...baseConfig,\n };\n };\n"],"names":[],"mappings":"AAIO,MAAM,uBAAA,GACX,CAAC,mBAAA,EAAmD,UAAA,KACpD,YAA2C;AACzC,EAAA,MAAM,UAAA,GAAa,MAAM,mBAAA,CAAoB,SAAA,EAAU;AAEvD,EAAA,OAAO;AAAA,IACL,GAAG,UAAA;AAAA,IACH,GAAG;AAAA,GACL;AACF;;;;"}
|
|
@@ -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,GAAA,GAAM;AACJ,MAAA,MAAM,IAAI,YAAY,+CAA+C,CAAA;AAAA,IACvE;AAAA;AAEJ;;;;"}
|
package/dist/js/index-node.mjs
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import './
|
|
1
|
+
import './shim.mjs';
|
|
2
2
|
export { RemoteReceiver } from '@mittwald/remote-dom-core/receivers';
|
|
3
3
|
export { RemoteElement, RemoteEvent } from '@mittwald/remote-dom-core/elements';
|
|
4
|
-
export { calendarDateSerializer } from './
|
|
5
|
-
export { fileDeSerialize, fileSerialize, fileSerializer, isSerializedFile } from './
|
|
6
|
-
export { fileListSerializer } from './
|
|
7
|
-
export { dataTransferTextSerializer } from './
|
|
8
|
-
export { formDataSerializer } from './
|
|
9
|
-
export { passwordPolicySerializer } from './
|
|
10
|
-
export { FlowThreadSerialization } from './
|
|
11
|
-
export { Serializer } from './
|
|
12
|
-
export { connectHostRenderRoot, connectHostRenderRootRef, connectRemoteReceiver } from './
|
|
13
|
-
export { connectRemoteIframe, connectRemoteIframeRef } from './
|
|
14
|
-
export { Version } from './
|
|
15
|
-
export { RemoteError } from './
|
|
4
|
+
export { calendarDateSerializer } from './serialization/serializers/date.mjs';
|
|
5
|
+
export { fileDeSerialize, fileSerialize, fileSerializer, isSerializedFile } from './serialization/serializers/file.mjs';
|
|
6
|
+
export { fileListSerializer } from './serialization/serializers/fileList.mjs';
|
|
7
|
+
export { dataTransferTextSerializer } from './serialization/serializers/dataTransferText.mjs';
|
|
8
|
+
export { formDataSerializer } from './serialization/serializers/formData.mjs';
|
|
9
|
+
export { passwordPolicySerializer } from './serialization/serializers/passwordPolicy.mjs';
|
|
10
|
+
export { FlowThreadSerialization } from './serialization/FlowThreadSerialization.mjs';
|
|
11
|
+
export { Serializer } from './serialization/Serializer.mjs';
|
|
12
|
+
export { connectHostRenderRoot, connectHostRenderRootRef, connectRemoteReceiver } from './connection/connectHostRenderRoot.mjs';
|
|
13
|
+
export { connectRemoteIframe, connectRemoteIframeRef } from './connection/connectRemoteIframe.mjs';
|
|
14
|
+
export { Version } from './connection/types.mjs';
|
|
15
|
+
export { RemoteError } from './error.mjs';
|
|
16
16
|
//# sourceMappingURL=index-node.mjs.map
|
package/dist/js/index.mjs
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
export { RemoteReceiver } from '@mittwald/remote-dom-core/receivers';
|
|
2
2
|
export { RemoteElement, RemoteEvent } from '@mittwald/remote-dom-core/elements';
|
|
3
|
-
export { calendarDateSerializer } from './
|
|
4
|
-
export { fileDeSerialize, fileSerialize, fileSerializer, isSerializedFile } from './
|
|
5
|
-
export { fileListSerializer } from './
|
|
6
|
-
export { dataTransferTextSerializer } from './
|
|
7
|
-
export { formDataSerializer } from './
|
|
8
|
-
export { passwordPolicySerializer } from './
|
|
9
|
-
export { FlowThreadSerialization } from './
|
|
10
|
-
export { Serializer } from './
|
|
11
|
-
export { connectHostRenderRoot, connectHostRenderRootRef, connectRemoteReceiver } from './
|
|
12
|
-
export { connectRemoteIframe, connectRemoteIframeRef } from './
|
|
13
|
-
export { Version } from './
|
|
14
|
-
export { RemoteError } from './
|
|
3
|
+
export { calendarDateSerializer } from './serialization/serializers/date.mjs';
|
|
4
|
+
export { fileDeSerialize, fileSerialize, fileSerializer, isSerializedFile } from './serialization/serializers/file.mjs';
|
|
5
|
+
export { fileListSerializer } from './serialization/serializers/fileList.mjs';
|
|
6
|
+
export { dataTransferTextSerializer } from './serialization/serializers/dataTransferText.mjs';
|
|
7
|
+
export { formDataSerializer } from './serialization/serializers/formData.mjs';
|
|
8
|
+
export { passwordPolicySerializer } from './serialization/serializers/passwordPolicy.mjs';
|
|
9
|
+
export { FlowThreadSerialization } from './serialization/FlowThreadSerialization.mjs';
|
|
10
|
+
export { Serializer } from './serialization/Serializer.mjs';
|
|
11
|
+
export { connectHostRenderRoot, connectHostRenderRootRef, connectRemoteReceiver } from './connection/connectHostRenderRoot.mjs';
|
|
12
|
+
export { connectRemoteIframe, connectRemoteIframeRef } from './connection/connectRemoteIframe.mjs';
|
|
13
|
+
export { Version } from './connection/types.mjs';
|
|
14
|
+
export { RemoteError } from './error.mjs';
|
|
15
15
|
//# sourceMappingURL=index.mjs.map
|
|
@@ -9,7 +9,7 @@ const serializers = Object.values(index).filter(
|
|
|
9
9
|
class FlowThreadSerialization extends ThreadSerializationStructuredClone {
|
|
10
10
|
constructor() {
|
|
11
11
|
const options = {
|
|
12
|
-
serialize: (val, serialize) => {
|
|
12
|
+
serialize: async (val, serialize) => {
|
|
13
13
|
try {
|
|
14
14
|
if (this.isSerializableByBase(val)) {
|
|
15
15
|
return;
|
|
@@ -18,28 +18,29 @@ class FlowThreadSerialization extends ThreadSerializationStructuredClone {
|
|
|
18
18
|
return null;
|
|
19
19
|
}
|
|
20
20
|
for (const serializer of serializers) {
|
|
21
|
-
const serialization = serializer.serialize(val);
|
|
21
|
+
const serialization = await serializer.serialize(val);
|
|
22
22
|
if (serialization.applied) {
|
|
23
|
-
return serialize(serialization.result);
|
|
23
|
+
return await serialize(serialization.result);
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
if (isObjectType(val)) {
|
|
27
|
-
return serialize({ ...val });
|
|
27
|
+
return await serialize({ ...val });
|
|
28
28
|
}
|
|
29
|
+
return void 0;
|
|
29
30
|
} catch (error) {
|
|
30
31
|
console.error("Error while serializing", error);
|
|
31
32
|
throw error;
|
|
32
33
|
}
|
|
33
34
|
},
|
|
34
|
-
deserialize: (val,
|
|
35
|
+
deserialize: async (val, deserialize) => {
|
|
35
36
|
try {
|
|
36
37
|
for (const serializer of serializers) {
|
|
37
|
-
const deserialization = serializer.deserialize(val);
|
|
38
|
+
const deserialization = await serializer.deserialize(val);
|
|
38
39
|
if (deserialization.applied) {
|
|
39
40
|
return deserialization.result.value;
|
|
40
41
|
}
|
|
41
42
|
}
|
|
42
|
-
return
|
|
43
|
+
return await deserialize(val);
|
|
43
44
|
} catch (error) {
|
|
44
45
|
console.error("Error while deserializing", error);
|
|
45
46
|
throw error;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FlowThreadSerialization.mjs","sources":["../../../src/serialization/FlowThreadSerialization.ts"],"sourcesContent":["import {\n ThreadSerializationStructuredClone,\n type ThreadSerializationOptions,\n TRANSFERABLE,\n} from \"@quilted/threads\";\nimport * as serializerModules from \"./serializers\";\nimport { isObjectType } from \"remeda\";\nimport { Serializer } from \"@/serialization/Serializer\";\n\nconst serializers = Object.values(serializerModules).filter(\n (val) => val instanceof Serializer,\n);\n\nexport class FlowThreadSerialization extends ThreadSerializationStructuredClone {\n public constructor() {\n const options: ThreadSerializationOptions = {\n serialize: async (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 = await serializer.serialize(val);\n\n if (serialization.applied) {\n return await serialize(serialization.result);\n }\n }\n\n if (isObjectType(val)) {\n return await serialize({ ...val });\n }\n\n return undefined;\n } catch (error) {\n console.error(\"Error while serializing\", error);\n throw error;\n }\n },\n\n deserialize: async (val, deserialize) => {\n try {\n for (const serializer of serializers) {\n const deserialization = await serializer.deserialize(val);\n\n if (deserialization.applied) {\n return deserialization.result.value;\n }\n }\n\n return await deserialize(val);\n } catch (error) {\n console.error(\"Error while deserializing\", error);\n throw error;\n }\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 (isObjectType(val) && TRANSFERABLE in val)\n );\n }\n\n private omitSerialization(val: unknown) {\n return val instanceof HTMLElement || val === window;\n }\n}\n"],"names":["serializerModules"],"mappings":";;;;;AASA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAOA,KAAiB,CAAA,CAAE,MAAA;AAAA,EACnD,CAAC,QAAQ,GAAA,YAAe;AAC1B,CAAA;AAEO,MAAM,gCAAgC,kCAAA,CAAmC;AAAA,EACvE,WAAA,GAAc;AACnB,IAAA,MAAM,OAAA,GAAsC;AAAA,MAC1C,SAAA,EAAW,OAAO,GAAA,EAAK,SAAA,KAAc;AACnC,QAAA,IAAI;AACF,UAAA,IAAI,IAAA,CAAK,oBAAA,CAAqB,GAAG,CAAA,EAAG;AAClC,YAAA;AAAA,UACF;AACA,UAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,GAAG,CAAA,EAAG;AAC/B,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,YAAA,MAAM,aAAA,GAAgB,MAAM,UAAA,CAAW,SAAA,CAAU,GAAG,CAAA;AAEpD,YAAA,IAAI,cAAc,OAAA,EAAS;AACzB,cAAA,OAAO,MAAM,SAAA,CAAU,aAAA,CAAc,MAAM,CAAA;AAAA,YAC7C;AAAA,UACF;AAEA,UAAA,IAAI,YAAA,CAAa,GAAG,CAAA,EAAG;AACrB,YAAA,OAAO,MAAM,SAAA,CAAU,EAAE,GAAG,KAAK,CAAA;AAAA,UACnC;AAEA,UAAA,OAAO,KAAA,CAAA;AAAA,QACT,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,2BAA2B,KAAK,CAAA;AAC9C,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA,MAEA,WAAA,EAAa,OAAO,GAAA,EAAK,WAAA,KAAgB;AACvC,QAAA,IAAI;AACF,UAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,YAAA,MAAM,eAAA,GAAkB,MAAM,UAAA,CAAW,WAAA,CAAY,GAAG,CAAA;AAExD,YAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,cAAA,OAAO,gBAAgB,MAAA,CAAO,KAAA;AAAA,YAChC;AAAA,UACF;AAEA,UAAA,OAAO,MAAM,YAAY,GAAG,CAAA;AAAA,QAC9B,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,6BAA6B,KAAK,CAAA;AAChD,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF;AAAA,KACF;AAEA,IAAA,KAAA,CAAM,OAAO,CAAA;AAAA,EACf;AAAA,EAEQ,qBAAqB,GAAA,EAAc;AACzC,IAAA,OACE,GAAA,YAAe,GAAA,IACf,GAAA,YAAe,GAAA,IACf,MAAM,OAAA,CAAQ,GAAG,CAAA,IACjB,OAAO,GAAA,KAAQ,UAAA,IACd,YAAA,CAAa,GAAG,KAAK,YAAA,IAAgB,GAAA;AAAA,EAE1C;AAAA,EAEQ,kBAAkB,GAAA,EAAc;AACtC,IAAA,OAAO,GAAA,YAAe,eAAe,GAAA,KAAQ,MAAA;AAAA,EAC/C;AACF;;;;"}
|
|
@@ -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
|
+
options;
|
|
7
|
+
async apply(val, strategy) {
|
|
8
|
+
if (!strategy.isApplicable(val)) {
|
|
9
|
+
return { applied: false };
|
|
10
|
+
}
|
|
11
|
+
const resolved = await strategy.apply(val);
|
|
12
|
+
return {
|
|
13
|
+
applied: true,
|
|
14
|
+
result: {
|
|
15
|
+
[Key]: this.options.name,
|
|
16
|
+
value: resolved
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
async serialize(val) {
|
|
21
|
+
return this.apply(val, this.options.serialize);
|
|
22
|
+
}
|
|
23
|
+
async deserialize(val) {
|
|
24
|
+
return this.apply(val, {
|
|
25
|
+
isApplicable: (candidate) => !!candidate && typeof candidate === "object" && Key in candidate && candidate[Key] === this.options.name,
|
|
26
|
+
apply: (serialization) => this.options.deserialize.apply(serialization.value)
|
|
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 | Promise<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 async apply<TIn, TOut>(\n val: unknown,\n strategy: SerializationStrategy<TIn, TOut>,\n ): Promise<SerializationResult<TOut>> {\n if (!strategy.isApplicable(val)) {\n return { applied: false };\n }\n\n const resolved = await strategy.apply(val);\n\n return {\n applied: true,\n result: {\n [Key]: this.options.name,\n value: resolved,\n },\n };\n }\n\n public async serialize(val: unknown): Promise<SerializationResult<TOut>> {\n return this.apply<TIn, TOut>(val, this.options.serialize);\n }\n\n public async deserialize(val: unknown): Promise<SerializationResult<TIn>> {\n return this.apply(val, {\n isApplicable: (\n candidate,\n ): candidate is SuccessfulSerializationResult<TOut> =>\n !!candidate &&\n typeof candidate === \"object\" &&\n Key in candidate &&\n (candidate as never)[Key] === this.options.name,\n apply: (serialization) =>\n this.options.deserialize.apply(serialization.value),\n });\n }\n}\n"],"names":[],"mappings":"AAKA,MAAM,GAAA,GAAM,2CAAA;AAWL,MAAM,UAAA,CAAsB;AAAA,EAC1B,YACG,OAAA,EAKR;AALQ,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA,EAKP;AAAA,EALO,OAAA;AAAA,EAOV,MAAc,KAAA,CACZ,GAAA,EACA,QAAA,EACoC;AACpC,IAAA,IAAI,CAAC,QAAA,CAAS,YAAA,CAAa,GAAG,CAAA,EAAG;AAC/B,MAAA,OAAO,EAAE,SAAS,KAAA,EAAM;AAAA,IAC1B;AAEA,IAAA,MAAM,QAAA,GAAW,MAAM,QAAA,CAAS,KAAA,CAAM,GAAG,CAAA;AAEzC,IAAA,OAAO;AAAA,MACL,OAAA,EAAS,IAAA;AAAA,MACT,MAAA,EAAQ;AAAA,QACN,CAAC,GAAG,GAAG,IAAA,CAAK,OAAA,CAAQ,IAAA;AAAA,QACpB,KAAA,EAAO;AAAA;AACT,KACF;AAAA,EACF;AAAA,EAEA,MAAa,UAAU,GAAA,EAAkD;AACvE,IAAA,OAAO,IAAA,CAAK,KAAA,CAAiB,GAAA,EAAK,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA,EAC1D;AAAA,EAEA,MAAa,YAAY,GAAA,EAAiD;AACxE,IAAA,OAAO,IAAA,CAAK,MAAM,GAAA,EAAK;AAAA,MACrB,YAAA,EAAc,CACZ,SAAA,KAEA,CAAC,CAAC,SAAA,IACF,OAAO,SAAA,KAAc,QAAA,IACrB,OAAO,SAAA,IACN,SAAA,CAAoB,GAAG,CAAA,KAAM,KAAK,OAAA,CAAQ,IAAA;AAAA,MAC7C,KAAA,EAAO,CAAC,aAAA,KACN,IAAA,CAAK,QAAQ,WAAA,CAAY,KAAA,CAAM,cAAc,KAAK;AAAA,KACrD,CAAA;AAAA,EACH;AACF;;;;"}
|
|
@@ -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) => {\n return dataTransfer.getData(\"text\") || dataTransfer.getData(\"text/plain\");\n },\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":";;AAEO,MAAM,0BAAA,GAA6B,IAAI,UAAA,CAAiC;AAAA,EAC7E,IAAA,EAAM,kBAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAA6B;AAC1C,MAAA,OACE,GAAA,YAAe,gBACf,GAAA,CAAI,KAAA,CAAM,MAAM,CAAC,IAAA,KAAS,SAAS,YAAY,CAAA;AAAA,IAEnD,CAAA;AAAA,IACA,KAAA,EAAO,CAAC,YAAA,KAAiB;AACvB,MAAA,OAAO,aAAa,OAAA,CAAQ,MAAM,CAAA,IAAK,YAAA,CAAa,QAAQ,YAAY,CAAA;AAAA,IAC1E;AAAA,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,QAAA,KAAa;AACnB,MAAA,MAAM,YAAA,GAAe,IAAI,YAAA,EAAa;AACtC,MAAA,YAAA,CAAa,OAAA,CAAQ,QAAQ,QAAQ,CAAA;AACrC,MAAA,OAAO,YAAA;AAAA,IACT;AAAA;AAEJ,CAAC;;;;"}
|
|
@@ -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":";;;AAIO,MAAM,sBAAA,GAAyB,IAAI,UAAA,CAAiC;AAAA,EACzE,IAAA,EAAM,cAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAAQ,GAAA,YAAe,YAAA;AAAA,IACtC,KAAA,EAAO,CAAC,IAAA,KAAS,IAAA,CAAK,QAAA;AAAS,GACjC;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,QAAA,KAAa,SAAA,CAAU,QAAQ;AAAA;AAE3C,CAAC;;;;"}
|
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { markAsTransferable } from '@quilted/threads';
|
|
2
2
|
import { Serializer } from '../Serializer.mjs';
|
|
3
|
-
import { getAwaitArrayBuffer } from '../../../../core/src/file.mjs';
|
|
4
3
|
|
|
5
4
|
const isSerializedFile = (value) => {
|
|
6
5
|
return !!(value && typeof value === "object" && "name" in value && "type" in value && "lastModified" in value && "content" in value);
|
|
7
6
|
};
|
|
8
|
-
const fileSerialize = (file) => {
|
|
7
|
+
const fileSerialize = async (file) => {
|
|
9
8
|
return {
|
|
10
9
|
name: file.name,
|
|
11
10
|
type: file.type,
|
|
12
11
|
lastModified: file.lastModified,
|
|
13
|
-
content: markAsTransferable(
|
|
12
|
+
content: markAsTransferable(await file.arrayBuffer())
|
|
14
13
|
};
|
|
15
14
|
};
|
|
16
15
|
const fileDeSerialize = (file) => {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.mjs","sources":["../../../../src/serialization/serializers/file.ts"],"sourcesContent":["import { markAsTransferable } from \"@quilted/threads\";\nimport { Serializer } from \"@/serialization/Serializer\";\n\nexport interface SerializedFile {\n name: string;\n type: string;\n lastModified: number;\n content: ArrayBuffer;\n}\n\nexport const isSerializedFile = (value: unknown): value is SerializedFile => {\n return !!(\n value &&\n typeof value === \"object\" &&\n \"name\" in value &&\n \"type\" in value &&\n \"lastModified\" in value &&\n \"content\" in value\n );\n};\n\nexport const fileSerialize = async (file: File): Promise<SerializedFile> => {\n return {\n name: file.name,\n type: file.type,\n lastModified: file.lastModified,\n content: markAsTransferable(await file.arrayBuffer()),\n };\n};\n\nexport const fileDeSerialize = (file: SerializedFile) => {\n return new File([file.content], file.name, {\n lastModified: file.lastModified,\n type: file.type,\n });\n};\n\nexport const fileSerializer = new Serializer<File, SerializedFile>({\n name: \"File\",\n serialize: {\n isApplicable: (something) => something instanceof File,\n apply: fileSerialize,\n },\n deserialize: {\n apply: fileDeSerialize,\n },\n});\n"],"names":[],"mappings":";;;AAUO,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAA4C;AAC3E,EAAA,OAAO,CAAC,EACN,KAAA,IACA,OAAO,KAAA,KAAU,QAAA,IACjB,MAAA,IAAU,KAAA,IACV,MAAA,IAAU,KAAA,IACV,cAAA,IAAkB,KAAA,IAClB,SAAA,IAAa,KAAA,CAAA;AAEjB;AAEO,MAAM,aAAA,GAAgB,OAAO,IAAA,KAAwC;AAC1E,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,OAAA,EAAS,kBAAA,CAAmB,MAAM,IAAA,CAAK,aAAa;AAAA,GACtD;AACF;AAEO,MAAM,eAAA,GAAkB,CAAC,IAAA,KAAyB;AACvD,EAAA,OAAO,IAAI,IAAA,CAAK,CAAC,KAAK,OAAO,CAAA,EAAG,KAAK,IAAA,EAAM;AAAA,IACzC,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,MAAM,IAAA,CAAK;AAAA,GACZ,CAAA;AACH;AAEO,MAAM,cAAA,GAAiB,IAAI,UAAA,CAAiC;AAAA,EACjE,IAAA,EAAM,MAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,SAAA,KAAc,SAAA,YAAqB,IAAA;AAAA,IAClD,KAAA,EAAO;AAAA,GACT;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO;AAAA;AAEX,CAAC;;;;"}
|
|
@@ -6,15 +6,15 @@ import '@mittwald/flow-react-components/mittwald-password-tools-js';
|
|
|
6
6
|
const fileListSerializer = new Serializer({
|
|
7
7
|
name: "FileList",
|
|
8
8
|
serialize: {
|
|
9
|
-
isApplicable: (something) =>
|
|
10
|
-
|
|
11
|
-
},
|
|
12
|
-
apply: (fileList) => Array.from(fileList).map(fileSerialize)
|
|
9
|
+
isApplicable: (something) => something instanceof FileList,
|
|
10
|
+
apply: async (fileList) => await Promise.all(Array.from(fileList, fileSerialize))
|
|
13
11
|
},
|
|
14
12
|
deserialize: {
|
|
15
13
|
apply: (arrayFiles) => {
|
|
16
14
|
const dataTransfer = new DataTransfer();
|
|
17
|
-
|
|
15
|
+
for (const file of arrayFiles) {
|
|
16
|
+
dataTransfer.items.add(fileDeSerialize(file));
|
|
17
|
+
}
|
|
18
18
|
return dataTransfer.files;
|
|
19
19
|
}
|
|
20
20
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fileList.mjs","sources":["../../../../src/serialization/serializers/fileList.ts"],"sourcesContent":["import { Serializer } from \"@/serialization/Serializer\";\nimport {\n fileDeSerialize,\n fileSerialize,\n type SerializedFile,\n} from \"@/serialization/serializers\";\n\nexport const fileListSerializer = new Serializer<FileList, SerializedFile[]>({\n name: \"FileList\",\n serialize: {\n isApplicable: (something): something is FileList =>\n something instanceof FileList,\n apply: async (fileList) =>\n await Promise.all(Array.from(fileList, fileSerialize)),\n },\n deserialize: {\n apply: (arrayFiles) => {\n const dataTransfer = new DataTransfer();\n for (const file of arrayFiles) {\n dataTransfer.items.add(fileDeSerialize(file));\n }\n return dataTransfer.files;\n },\n },\n});\n"],"names":[],"mappings":";;;;;AAOO,MAAM,kBAAA,GAAqB,IAAI,UAAA,CAAuC;AAAA,EAC3E,IAAA,EAAM,UAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,SAAA,KACb,SAAA,YAAqB,QAAA;AAAA,IACvB,KAAA,EAAO,OAAO,QAAA,KACZ,MAAM,OAAA,CAAQ,IAAI,KAAA,CAAM,IAAA,CAAK,QAAA,EAAU,aAAa,CAAC;AAAA,GACzD;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,UAAA,KAAe;AACrB,MAAA,MAAM,YAAA,GAAe,IAAI,YAAA,EAAa;AACtC,MAAA,KAAA,MAAW,QAAQ,UAAA,EAAY;AAC7B,QAAA,YAAA,CAAa,KAAA,CAAM,GAAA,CAAI,eAAA,CAAgB,IAAI,CAAC,CAAA;AAAA,MAC9C;AACA,MAAA,OAAO,YAAA,CAAa,KAAA;AAAA,IACtB;AAAA;AAEJ,CAAC;;;;"}
|
|
@@ -6,14 +6,18 @@ import '@mittwald/flow-react-components/mittwald-password-tools-js';
|
|
|
6
6
|
const formDataSerializer = new Serializer({
|
|
7
7
|
name: "FormData",
|
|
8
8
|
serialize: {
|
|
9
|
-
isApplicable: (val) =>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
9
|
+
isApplicable: (val) => {
|
|
10
|
+
return val instanceof FormData;
|
|
11
|
+
},
|
|
12
|
+
apply: async (formData) => {
|
|
13
|
+
const out = [];
|
|
14
|
+
for (const [fieldName, fieldValue] of formData.entries()) {
|
|
15
|
+
out.push([
|
|
16
|
+
fieldName,
|
|
17
|
+
fieldValue instanceof File ? await fileSerialize(fieldValue) : fieldValue
|
|
18
|
+
]);
|
|
19
|
+
}
|
|
20
|
+
return out;
|
|
17
21
|
}
|
|
18
22
|
},
|
|
19
23
|
deserialize: {
|
|
@@ -21,11 +25,7 @@ const formDataSerializer = new Serializer({
|
|
|
21
25
|
const formData = new FormData();
|
|
22
26
|
for (const [name, value] of array) {
|
|
23
27
|
const deserializedValue = isSerializedFile(value) ? fileDeSerialize(value) : value;
|
|
24
|
-
|
|
25
|
-
formData.set(name, deserializedValue);
|
|
26
|
-
} else {
|
|
27
|
-
formData.append(name, deserializedValue);
|
|
28
|
-
}
|
|
28
|
+
formData.append(name, deserializedValue);
|
|
29
29
|
}
|
|
30
30
|
return formData;
|
|
31
31
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formData.mjs","sources":["../../../../src/serialization/serializers/formData.ts"],"sourcesContent":["import { Serializer } from \"@/serialization/Serializer\";\nimport {\n fileDeSerialize,\n fileSerialize,\n isSerializedFile,\n} from \"@/serialization/serializers\";\n\ntype SerializedFormDataValue =\n | FormDataEntryValue\n | Awaited<ReturnType<typeof fileSerialize>>;\ntype SerializedFormDataEntries = [string, SerializedFormDataValue][];\n\nexport const formDataSerializer = new Serializer<\n FormData,\n SerializedFormDataEntries\n>({\n name: \"FormData\",\n serialize: {\n isApplicable: (val) => {\n return val instanceof FormData;\n },\n apply: async (formData) => {\n const out: SerializedFormDataEntries = [];\n\n for (const [fieldName, fieldValue] of formData.entries()) {\n out.push([\n fieldName,\n fieldValue instanceof File\n ? await fileSerialize(fieldValue)\n : fieldValue,\n ]);\n }\n\n return out;\n },\n },\n deserialize: {\n apply: (array) => {\n const formData = new FormData();\n\n for (const [name, value] of array) {\n const deserializedValue = isSerializedFile(value)\n ? fileDeSerialize(value)\n : value;\n\n formData.append(name, deserializedValue);\n }\n\n return formData;\n },\n },\n});\n"],"names":[],"mappings":";;;;;AAYO,MAAM,kBAAA,GAAqB,IAAI,UAAA,CAGpC;AAAA,EACA,IAAA,EAAM,UAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAAQ;AACrB,MAAA,OAAO,GAAA,YAAe,QAAA;AAAA,IACxB,CAAA;AAAA,IACA,KAAA,EAAO,OAAO,QAAA,KAAa;AACzB,MAAA,MAAM,MAAiC,EAAC;AAExC,MAAA,KAAA,MAAW,CAAC,SAAA,EAAW,UAAU,CAAA,IAAK,QAAA,CAAS,SAAQ,EAAG;AACxD,QAAA,GAAA,CAAI,IAAA,CAAK;AAAA,UACP,SAAA;AAAA,UACA,UAAA,YAAsB,IAAA,GAClB,MAAM,aAAA,CAAc,UAAU,CAAA,GAC9B;AAAA,SACL,CAAA;AAAA,MACH;AAEA,MAAA,OAAO,GAAA;AAAA,IACT;AAAA,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,KAAA,KAAU;AAChB,MAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAE9B,MAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,CAAA,IAAK,KAAA,EAAO;AACjC,QAAA,MAAM,oBAAoB,gBAAA,CAAiB,KAAK,CAAA,GAC5C,eAAA,CAAgB,KAAK,CAAA,GACrB,KAAA;AAEJ,QAAA,QAAA,CAAS,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAAA,MACzC;AAEA,MAAA,OAAO,QAAA;AAAA,IACT;AAAA;AAEJ,CAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passwordPolicy.mjs","sources":["../../../../src/serialization/serializers/passwordPolicy.ts"],"sourcesContent":["import { Serializer } from \"@/serialization/Serializer\";\nimport {\n Policy,\n type PolicyDeclaration,\n} from \"@mittwald/flow-react-components/mittwald-password-tools-js\";\n\nexport const passwordPolicySerializer = new Serializer<\n Policy,\n PolicyDeclaration\n>({\n name: \"PasswordPolicy\",\n serialize: {\n isApplicable: (val) => Policy.isPolicy(val),\n apply: (policy) => policy.toDeclaration(),\n },\n deserialize: {\n apply: (policyDeclaration) => Policy.fromDeclaration(policyDeclaration),\n },\n});\n"],"names":[],"mappings":";;;AAMO,MAAM,wBAAA,GAA2B,IAAI,UAAA,CAG1C;AAAA,EACA,IAAA,EAAM,gBAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAAQ,MAAA,CAAO,SAAS,GAAG,CAAA;AAAA,IAC1C,KAAA,EAAO,CAAC,MAAA,KAAW,MAAA,CAAO,aAAA;AAAc,GAC1C;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,iBAAA,KAAsB,MAAA,CAAO,gBAAgB,iBAAiB;AAAA;AAE1E,CAAC;;;;"}
|
|
@@ -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,WAAA,GAAc,WAAA;AACzB,UAAA,CAAW,cAAA,GAAiB,cAAA;AAC5B,UAAA,CAAW,gBAAA,GAAmB,MAAM,gBAAA,CAAiB;AAAA,EAC5C,WAAA,GAAc;AAAA,EAErB;AAAA,EACO,UAAA,GAAa;AAAA,EAEpB;AAAA,EACO,OAAA,GAAU;AAAA,EAEjB;AAAA,EACO,WAAA,GAAc;AACnB,IAAA,OAAO,EAAC;AAAA,EACV;AACF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlowThreadSerialization.d.ts","sourceRoot":"","sources":["../../../src/serialization/FlowThreadSerialization.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAGnC,MAAM,kBAAkB,CAAC;AAS1B,qBAAa,uBAAwB,SAAQ,kCAAkC;;
|
|
1
|
+
{"version":3,"file":"FlowThreadSerialization.d.ts","sourceRoot":"","sources":["../../../src/serialization/FlowThreadSerialization.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kCAAkC,EAGnC,MAAM,kBAAkB,CAAC;AAS1B,qBAAa,uBAAwB,SAAQ,kCAAkC;;IAmD7E,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,iBAAiB;CAG1B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
interface SerializationStrategy<TIn, TOut> {
|
|
2
2
|
isApplicable: (val: unknown) => val is TIn;
|
|
3
|
-
apply: (val: TIn) => TOut
|
|
3
|
+
apply: (val: TIn) => TOut | Promise<TOut>;
|
|
4
4
|
}
|
|
5
5
|
declare const Key = "mittwald.flow-remote-core.serializer.name";
|
|
6
6
|
export interface SuccessfulSerializationResult<T> {
|
|
@@ -21,8 +21,8 @@ export declare class Serializer<TIn, TOut> {
|
|
|
21
21
|
deserialize: Pick<SerializationStrategy<TOut, TIn>, "apply">;
|
|
22
22
|
});
|
|
23
23
|
private apply;
|
|
24
|
-
serialize(val: unknown): SerializationResult<TOut
|
|
25
|
-
deserialize(val: unknown): SerializationResult<TIn
|
|
24
|
+
serialize(val: unknown): Promise<SerializationResult<TOut>>;
|
|
25
|
+
deserialize(val: unknown): Promise<SerializationResult<TIn>>;
|
|
26
26
|
}
|
|
27
27
|
export {};
|
|
28
28
|
//# sourceMappingURL=Serializer.d.ts.map
|
|
@@ -1 +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;
|
|
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,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;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;YAGW,KAAK;IAmBN,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAI3D,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;CAa1E"}
|
|
@@ -6,7 +6,7 @@ export interface SerializedFile {
|
|
|
6
6
|
content: ArrayBuffer;
|
|
7
7
|
}
|
|
8
8
|
export declare const isSerializedFile: (value: unknown) => value is SerializedFile;
|
|
9
|
-
export declare const fileSerialize: (file: File) => SerializedFile
|
|
9
|
+
export declare const fileSerialize: (file: File) => Promise<SerializedFile>;
|
|
10
10
|
export declare const fileDeSerialize: (file: SerializedFile) => File;
|
|
11
11
|
export declare const fileSerializer: Serializer<File, SerializedFile>;
|
|
12
12
|
//# sourceMappingURL=file.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/file.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAExD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAS1D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAU,MAAM,IAAI,KAAG,OAAO,CAAC,cAAc,CAOtE,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,cAAc,SAKnD,CAAC;AAEF,eAAO,MAAM,cAAc,kCASzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fileList.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/fileList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,kBAAkB,
|
|
1
|
+
{"version":3,"file":"fileList.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/fileList.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,6BAA6B,CAAC;AAErC,eAAO,MAAM,kBAAkB,wCAiB7B,CAAC"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import { Serializer } from '../Serializer';
|
|
2
|
-
|
|
2
|
+
import { fileSerialize } from '.';
|
|
3
|
+
type SerializedFormDataValue = FormDataEntryValue | Awaited<ReturnType<typeof fileSerialize>>;
|
|
4
|
+
type SerializedFormDataEntries = [string, SerializedFormDataValue][];
|
|
5
|
+
export declare const formDataSerializer: Serializer<FormData, SerializedFormDataEntries>;
|
|
6
|
+
export {};
|
|
3
7
|
//# sourceMappingURL=formData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formData.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/formData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"formData.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/formData.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAEL,aAAa,EAEd,MAAM,6BAA6B,CAAC;AAErC,KAAK,uBAAuB,GACxB,kBAAkB,GAClB,OAAO,CAAC,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC;AAC9C,KAAK,yBAAyB,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,EAAE,CAAC;AAErE,eAAO,MAAM,kBAAkB,iDAuC7B,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.888",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Core functionality to setup a remote/host environment",
|
|
6
6
|
"homepage": "https://mittwald.github.io/flow",
|
|
@@ -34,9 +34,9 @@
|
|
|
34
34
|
"remeda": "^2.39.0"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"@mittwald/ext-bridge": "0.2.0-alpha.
|
|
37
|
+
"@mittwald/ext-bridge": "0.2.0-alpha.888",
|
|
38
38
|
"@mittwald/flow-core": "",
|
|
39
|
-
"@mittwald/flow-react-components": "0.2.0-alpha.
|
|
39
|
+
"@mittwald/flow-react-components": "0.2.0-alpha.888",
|
|
40
40
|
"@mittwald/typescript-config": "",
|
|
41
41
|
"@types/node": "^25.9.3",
|
|
42
42
|
"nx": "^22.7.5",
|
|
@@ -51,13 +51,13 @@
|
|
|
51
51
|
"vitest": "^4.1.9"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@mittwald/ext-bridge": "0.2.0-alpha.
|
|
55
|
-
"@mittwald/flow-react-components": "0.2.0-alpha.
|
|
54
|
+
"@mittwald/ext-bridge": "0.2.0-alpha.887",
|
|
55
|
+
"@mittwald/flow-react-components": "0.2.0-alpha.887"
|
|
56
56
|
},
|
|
57
57
|
"peerDependenciesMeta": {
|
|
58
58
|
"@mittwald/ext-bridge": {
|
|
59
59
|
"optional": true
|
|
60
60
|
}
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "5a1507172c5d2fa7bb2fd4b46aade6991ebbcd51"
|
|
63
63
|
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import invariant from 'invariant';
|
|
2
|
-
|
|
3
|
-
const Key = "mittwald.flow-core.file.awaitedArrayBuffer";
|
|
4
|
-
function isFileWithAwaitedArrayBuffer(file) {
|
|
5
|
-
return Key in file && file[Key] instanceof ArrayBuffer && !file[Key].detached;
|
|
6
|
-
}
|
|
7
|
-
const getAwaitArrayBuffer = (file) => {
|
|
8
|
-
invariant(
|
|
9
|
-
isFileWithAwaitedArrayBuffer(file),
|
|
10
|
-
`File buffer unavailable (objectType=${Object.prototype.toString.call(
|
|
11
|
-
file
|
|
12
|
-
)}, hasArrayBuffer=${Key in file && file[Key] instanceof ArrayBuffer}, isDetached=${Key in file && file[Key] instanceof ArrayBuffer ? file[Key].detached : "n/a"})`
|
|
13
|
-
);
|
|
14
|
-
return file[Key];
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
export { getAwaitArrayBuffer, isFileWithAwaitedArrayBuffer };
|
|
18
|
-
//# sourceMappingURL=file.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
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\nexport function isFileWithAwaitedArrayBuffer(\n file: File | FileWithAwaitedArrayBuffer,\n): file is FileWithAwaitedArrayBuffer {\n return Key in file && file[Key] instanceof ArrayBuffer && !file[Key].detached;\n}\n\nexport const addAwaitedArrayBuffer = async (file: File) => {\n if (isFileWithAwaitedArrayBuffer(file)) {\n return file;\n }\n\n const arrayBuffer = await file.arrayBuffer();\n Object.assign(file, { [Key]: arrayBuffer });\n\n return file;\n};\n\nexport const getAwaitArrayBuffer = (\n file: File | FileWithAwaitedArrayBuffer,\n) => {\n invariant(\n isFileWithAwaitedArrayBuffer(file),\n `File buffer unavailable (objectType=${Object.prototype.toString.call(\n file,\n )}, hasArrayBuffer=${\n Key in file && file[Key] instanceof ArrayBuffer\n }, isDetached=${\n Key in file && file[Key] instanceof ArrayBuffer\n ? file[Key].detached\n : \"n/a\"\n })`,\n );\n return file[Key];\n};\n"],"names":[],"mappings":";;AAEA,MAAM,GAAA,GAAM,4CAAA;AAML,SAAS,6BACd,IAAA,EACoC;AACpC,EAAA,OAAO,GAAA,IAAO,QAAQ,IAAA,CAAK,GAAG,aAAa,WAAA,IAAe,CAAC,IAAA,CAAK,GAAG,CAAA,CAAE,QAAA;AACvE;AAaO,MAAM,mBAAA,GAAsB,CACjC,IAAA,KACG;AACH,EAAA,SAAA;AAAA,IACE,6BAA6B,IAAI,CAAA;AAAA,IACjC,CAAA,oCAAA,EAAuC,MAAA,CAAO,SAAA,CAAU,QAAA,CAAS,IAAA;AAAA,MAC/D;AAAA,KACD,CAAA,iBAAA,EACC,GAAA,IAAO,QAAQ,IAAA,CAAK,GAAG,aAAa,WACtC,CAAA,aAAA,EACE,OAAO,IAAA,IAAQ,IAAA,CAAK,GAAG,CAAA,YAAa,WAAA,GAChC,KAAK,GAAG,CAAA,CAAE,WACV,KACN,CAAA,CAAA;AAAA,GACF;AACA,EAAA,OAAO,KAAK,GAAG,CAAA;AACjB;;;;"}
|
|
@@ -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 { 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 connectRemoteReceiver = (\n root: HTMLDivElement,\n receiverConnection: RemoteConnection,\n) =>\n import(\"@mittwald/remote-dom-core/elements\").then(\n ({ RemoteMutationObserver }) => {\n const observer = new RemoteMutationObserver(receiverConnection);\n observer.observe(root);\n },\n );\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 connectRemoteReceiver(root, connection),\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,4BAAA,GAA+B,MACnC,IAAI,WAAA,CAAY,4CAA4C,CAAA;AAEvD,MAAM,wBAAwB,CACnC,IAAA,EACA,kBAAA,KAEA,OAAO,oCAAoC,CAAA,CAAE,IAAA;AAAA,EAC3C,CAAC,EAAE,sBAAA,EAAuB,KAAM;AAC9B,IAAA,MAAM,QAAA,GAAW,IAAI,sBAAA,CAAuB,kBAAkB,CAAA;AAC9D,IAAA,QAAA,CAAS,QAAQ,IAAI,CAAA;AAAA,EACvB;AACF;AAEK,MAAM,qBAAA,GAAwB,OACnC,OAAA,KACoC;AACpC,EAAA,MAAM,EAAE,IAAA,EAAM,iBAAA,EAAkB,GAAI,OAAA;AAEpC,EAAA,MAAM,UAAA,GAAa,IAAI,kBAAA,CAA+C;AAAA,IACpE,aAAA,EAAe,IAAI,uBAAA,EAAwB;AAAA,IAC3C,OAAA,EAAS;AAAA,MACP,MAAA,EAAQ,CAACA,WAAAA,KACP,qBAAA,CAAsB,MAAMA,WAAU,CAAA;AAAA,MACxC,WAAA,EAAa,OAAO,QAAA,KAAa;AAC/B,QAAA,iBAAA,GAAoB,QAAQ,CAAA;AAAA,MAC9B;AAAA;AACF,GACD,CAAA;AAED,EAAA,IAAI,UAAA,CAAW,WAAW,MAAA,EAAQ;AAChC,IAAA,MAAM,4BAAA,EAA6B;AAAA,EACrC;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,UAAA,CAAW,OAAA,CAAQ,UAAA,CAAW,OAAA,CAAQ,EAAE,CAAA;AAE9C,IAAA,IAAI,OAAO,gBAAgB,WAAA,EAAa;AACtC,MAAA,WAAA,CAAY,aAAa,UAAA,CAAW,OAAA;AACpC,MAAA,MAAM,WAAA,CAAY,UAAU,UAAA,EAAW;AAAA,IACzC;AAEA,IAAA,OAAO,UAAA;AAAA,EACT,SAAS,KAAA,EAAO;AACd,IAAA,IACE,iBAAiB,KAAA,IACjB,6CAAA,CAA8C,IAAA,CAAK,KAAA,CAAM,OAAO,CAAA,EAChE;AACA,MAAA,MAAM,4BAAA,EAA6B;AAAA,IACrC;AACA,IAAA,MAAM,KAAA;AAAA,EACR;AACF;AAEO,MAAM,wBAAA,GACX,CAAC,IAAA,KAAgC,CAAC,GAAA,KAA+B;AAC/D,EAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,IAAA;AAAA,EACF;AACA,EAAA,IAAI,wBAAwB,GAAA,EAAK;AAC/B,IAAA,OAAO,IAAI,oBAAoB,CAAA;AAAA,EACjC;AAEA,EAAA,MAAM,aAAa,qBAAA,CAAsB;AAAA,IACvC,IAAA,EAAM,GAAA;AAAA,IACN,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,EAAE,kBAAA,EAAoB,YAAY,CAAA;AACrD,EAAA,OAAO,UAAA;AACT;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"connectRemoteIframe.mjs","sources":["../../../../../src/connection/connectRemoteIframe.ts"],"sourcesContent":["import {\n Version,\n type HostExports,\n type HostToRemoteConnection,\n type NavigationState,\n type RemoteExports,\n type RemoteExtBridgeConnectionApi,\n} from \"@/connection/types\";\nimport { getWithMergedHostConfig } from \"@/ext-bridge/getWithMergedHostConfig\";\nimport { emptyImplementation } from \"@/ext-bridge/implementation\";\nimport { FlowThreadSerialization } from \"@/serialization/FlowThreadSerialization\";\nimport { type HostConfig } from \"@mittwald/flow-core\";\nimport type { RemoteConnection } from \"@mittwald/remote-dom-core/elements\";\nimport { ThreadIframe } from \"@quilted/threads\";\n\ninterface Options {\n connection: RemoteConnection;\n iframe: HTMLIFrameElement;\n hostConfig: HostConfig;\n onReady?: (connection: HostToRemoteConnection) => void;\n onLoadingChanged?: (isLoading: boolean) => void;\n onError?: (error: string) => void;\n onNavigationStateChanged?: (state: NavigationState) => void;\n extBridgeImplementation?: RemoteExtBridgeConnectionApi;\n}\n\nexport const connectRemoteIframe = (opts: Options): HostToRemoteConnection => {\n const {\n connection,\n iframe,\n onReady,\n onLoadingChanged,\n onError,\n onNavigationStateChanged,\n extBridgeImplementation: extBridgeImplementationProp = emptyImplementation,\n hostConfig,\n } = opts;\n\n const extBridgeImplementation = {\n ...extBridgeImplementationProp,\n getConfig: getWithMergedHostConfig(extBridgeImplementationProp, hostConfig),\n };\n\n const result = {\n thread: new ThreadIframe<RemoteExports, HostExports>(iframe, {\n serialization: new FlowThreadSerialization(),\n exports: {\n ...extBridgeImplementation,\n setIsReady: async (version = Version.v1) => {\n result.version = version;\n onReady?.(result);\n },\n setIsLoading: async (isLoading: boolean) => {\n onLoadingChanged?.(isLoading);\n },\n setError: async (error: string) => {\n onError?.(error);\n },\n setNavigationState: async (state) => {\n onNavigationStateChanged?.(state);\n },\n getHostConfig: async () => {\n return hostConfig;\n },\n },\n }),\n updateHostPathname: (hostPathname?: string) => {\n if (hostPathname === undefined) {\n return;\n }\n\n if (result.version >= Version.v2) {\n result.thread.imports.setPathname(hostPathname);\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":";;;;;;;AA0BO,MAAM,mBAAA,GAAsB,CAAC,IAAA,KAA0C;AAC5E,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,gBAAA;AAAA,IACA,OAAA;AAAA,IACA,wBAAA;AAAA,IACA,yBAAyB,2BAAA,GAA8B,mBAAA;AAAA,IACvD;AAAA,GACF,GAAI,IAAA;AAEJ,EAAA,MAAM,uBAAA,GAA0B;AAAA,IAC9B,GAAG,2BAAA;AAAA,IACH,SAAA,EAAW,uBAAA,CAAwB,2BAAA,EAA6B,UAAU;AAAA,GAC5E;AAEA,EAAA,MAAM,MAAA,GAAS;AAAA,IACb,MAAA,EAAQ,IAAI,YAAA,CAAyC,MAAA,EAAQ;AAAA,MAC3D,aAAA,EAAe,IAAI,uBAAA,EAAwB;AAAA,MAC3C,OAAA,EAAS;AAAA,QACP,GAAG,uBAAA;AAAA,QACH,UAAA,EAAY,OAAO,OAAA,GAAU,OAAA,CAAQ,EAAA,KAAO;AAC1C,UAAA,MAAA,CAAO,OAAA,GAAU,OAAA;AACjB,UAAA,OAAA,GAAU,MAAM,CAAA;AAAA,QAClB,CAAA;AAAA,QACA,YAAA,EAAc,OAAO,SAAA,KAAuB;AAC1C,UAAA,gBAAA,GAAmB,SAAS,CAAA;AAAA,QAC9B,CAAA;AAAA,QACA,QAAA,EAAU,OAAO,KAAA,KAAkB;AACjC,UAAA,OAAA,GAAU,KAAK,CAAA;AAAA,QACjB,CAAA;AAAA,QACA,kBAAA,EAAoB,OAAO,KAAA,KAAU;AACnC,UAAA,wBAAA,GAA2B,KAAK,CAAA;AAAA,QAClC,CAAA;AAAA,QACA,eAAe,YAAY;AACzB,UAAA,OAAO,UAAA;AAAA,QACT;AAAA;AACF,KACD,CAAA;AAAA,IACD,kBAAA,EAAoB,CAAC,YAAA,KAA0B;AAC7C,MAAA,IAAI,iBAAiB,MAAA,EAAW;AAC9B,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,MAAA,CAAO,OAAA,IAAW,OAAA,CAAQ,EAAA,EAAI;AAChC,QAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,WAAA,CAAY,YAAY,CAAA;AAAA,MAChD;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,MAAA,CAAO,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,UAAU,CAAA;AACvC,EAAA,OAAO,MAAA;AACT;AAEO,MAAM,sBAAA,GACX,CAAC,IAAA,KAAkC,CAAC,GAAA,KAAkC;AACpE,EAAA,IAAI,CAAC,GAAA,EAAK;AACR,IAAA;AAAA,EACF;AAEA,EAAA,IAAI,wBAAwB,GAAA,EAAK;AAC/B,IAAA,OAAO,IAAI,oBAAoB,CAAA;AAAA,EACjC;AAEA,EAAA,MAAM,aAAa,mBAAA,CAAoB;AAAA,IACrC,MAAA,EAAQ,GAAA;AAAA,IACR,GAAG;AAAA,GACJ,CAAA;AACD,EAAA,MAAA,CAAO,MAAA,CAAO,GAAA,EAAK,EAAE,kBAAA,EAAoB,YAAY,CAAA;AACrD,EAAA,OAAO,UAAA;AACT;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.mjs","sources":["../../../../../src/connection/types.ts"],"sourcesContent":["import type {\n ExtBridgeConfigInput,\n ExtBridgeConnectionApi,\n} from \"@mittwald/ext-bridge\";\nimport type { HostConfig } from \"@mittwald/flow-core\";\nimport type { RemoteConnection } from \"@mittwald/remote-dom-core\";\nimport type { ThreadIframe, ThreadNestedIframe } from \"@quilted/threads\";\nexport type { RemoteConnection } from \"@mittwald/remote-dom-core\";\n\nexport interface NavigationState {\n pathname: string;\n isPending: boolean;\n}\n\nexport type RemoteExtBridgeConfig = Omit<\n ExtBridgeConfigInput,\n keyof HostConfig\n>;\n\nexport interface RemoteExtBridgeConnectionApi extends Omit<\n ExtBridgeConnectionApi,\n \"getConfig\"\n> {\n getConfig: () => Promise<RemoteExtBridgeConfig>;\n}\n\n/**\n * Breaking Change warning: Do not remove/rename/modify existing properties of\n * this interface, as they might be used by existing extensions.\n *\n * When addding properties, make sure to release the host before all clients.\n */\nexport interface HostExports extends ExtBridgeConnectionApi {\n setIsReady: (version?: Version) => Promise<void>;\n setIsLoading: (isLoading: boolean) => Promise<void>;\n setError: (error: string) => Promise<void>;\n setNavigationState: (state: NavigationState) => Promise<void>;\n getHostConfig: () => Promise<HostConfig>;\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 updateHostPathname: (hostPathname?: string) => void;\n}\n\nexport enum Version {\n vUnknown = 0,\n v1 = 1,\n v2 = 2,\n v3 = 3,\n}\n"],"names":["Version"],"mappings":"AAwDO,IAAK,OAAA,qBAAAA,QAAAA,KAAL;AACL,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,cAAW,CAAA,CAAA,GAAX,UAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAA,CAAA,GAAL,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAA,CAAA,GAAL,IAAA;AACA,EAAAA,QAAAA,CAAAA,QAAAA,CAAA,QAAK,CAAA,CAAA,GAAL,IAAA;AAJU,EAAA,OAAAA,QAAAA;AAAA,CAAA,EAAA,OAAA,IAAA,EAAA;;;;"}
|
|
@@ -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,KAAA,CAAM;AAAA,EACrC,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,OAAO,CAAA;AACb,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,EACjB;AACF;AAEA,WAAA,CAAY,UAAU,IAAA,GAAO,aAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getWithMergedHostConfig.mjs","sources":["../../../../../src/ext-bridge/getWithMergedHostConfig.ts"],"sourcesContent":["import type { RemoteExtBridgeConnectionApi } from \"@/connection\";\nimport type { ExtBridgeConfigInput } from \"@mittwald/ext-bridge\";\nimport type { HostConfig } from \"@mittwald/flow-core\";\n\nexport const getWithMergedHostConfig =\n (extBridgeConnection: RemoteExtBridgeConnectionApi, hostConfig: HostConfig) =>\n async (): Promise<ExtBridgeConfigInput> => {\n const baseConfig = await extBridgeConnection.getConfig();\n\n return {\n ...hostConfig,\n ...baseConfig,\n };\n };\n"],"names":[],"mappings":"AAIO,MAAM,uBAAA,GACX,CAAC,mBAAA,EAAmD,UAAA,KACpD,YAA2C;AACzC,EAAA,MAAM,UAAA,GAAa,MAAM,mBAAA,CAAoB,SAAA,EAAU;AAEvD,EAAA,OAAO;AAAA,IACL,GAAG,UAAA;AAAA,IACH,GAAG;AAAA,GACL;AACF;;;;"}
|
|
@@ -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,GAAA,GAAM;AACJ,MAAA,MAAM,IAAI,YAAY,+CAA+C,CAAA;AAAA,IACvE;AAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"FlowThreadSerialization.mjs","sources":["../../../../../src/serialization/FlowThreadSerialization.ts"],"sourcesContent":["import {\n ThreadSerializationStructuredClone,\n type ThreadSerializationOptions,\n TRANSFERABLE,\n} from \"@quilted/threads\";\nimport * as serializerModules from \"./serializers\";\nimport { isObjectType } from \"remeda\";\nimport { Serializer } from \"@/serialization/Serializer\";\n\nconst serializers = Object.values(serializerModules).filter(\n (val) => val instanceof Serializer,\n);\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);\n if (serialization.applied) {\n return serialize(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);\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 (isObjectType(val) && TRANSFERABLE in val)\n );\n }\n\n private omitSerialization(val: unknown) {\n return val instanceof HTMLElement || val === window;\n }\n}\n"],"names":["serializerModules"],"mappings":";;;;;AASA,MAAM,WAAA,GAAc,MAAA,CAAO,MAAA,CAAOA,KAAiB,CAAA,CAAE,MAAA;AAAA,EACnD,CAAC,QAAQ,GAAA,YAAe;AAC1B,CAAA;AAEO,MAAM,gCAAgC,kCAAA,CAAmC;AAAA,EACvE,WAAA,GAAc;AACnB,IAAA,MAAM,OAAA,GAAsC;AAAA,MAC1C,SAAA,EAAW,CAAC,GAAA,EAAK,SAAA,KAAc;AAC7B,QAAA,IAAI;AACF,UAAA,IAAI,IAAA,CAAK,oBAAA,CAAqB,GAAG,CAAA,EAAG;AAClC,YAAA;AAAA,UACF;AACA,UAAA,IAAI,IAAA,CAAK,iBAAA,CAAkB,GAAG,CAAA,EAAG;AAC/B,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,YAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,SAAA,CAAU,GAAG,CAAA;AAC9C,YAAA,IAAI,cAAc,OAAA,EAAS;AACzB,cAAA,OAAO,SAAA,CAAU,cAAc,MAAM,CAAA;AAAA,YACvC;AAAA,UACF;AACA,UAAA,IAAI,YAAA,CAAa,GAAG,CAAA,EAAG;AACrB,YAAA,OAAO,SAAA,CAAU,EAAE,GAAG,GAAA,EAAK,CAAA;AAAA,UAC7B;AAAA,QACF,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,2BAA2B,KAAK,CAAA;AAC9C,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF,CAAA;AAAA,MACA,WAAA,EAAa,CAAC,GAAA,EAAK,SAAA,KAAc;AAC/B,QAAA,IAAI;AACF,UAAA,KAAA,MAAW,cAAc,WAAA,EAAa;AACpC,YAAA,MAAM,eAAA,GAAkB,UAAA,CAAW,WAAA,CAAY,GAAG,CAAA;AAClD,YAAA,IAAI,gBAAgB,OAAA,EAAS;AAC3B,cAAA,OAAO,gBAAgB,MAAA,CAAO,KAAA;AAAA,YAChC;AAAA,UACF;AACA,UAAA,OAAO,UAAU,GAAG,CAAA;AAAA,QACtB,SAAS,KAAA,EAAO;AACd,UAAA,OAAA,CAAQ,KAAA,CAAM,6BAA6B,KAAK,CAAA;AAChD,UAAA,MAAM,KAAA;AAAA,QACR;AAAA,MACF;AAAA,KACF;AACA,IAAA,KAAA,CAAM,OAAO,CAAA;AAAA,EACf;AAAA,EAEQ,qBAAqB,GAAA,EAAc;AACzC,IAAA,OACE,GAAA,YAAe,GAAA,IACf,GAAA,YAAe,GAAA,IACf,MAAM,OAAA,CAAQ,GAAG,CAAA,IACjB,OAAO,GAAA,KAAQ,UAAA,IACd,YAAA,CAAa,GAAG,KAAK,YAAA,IAAgB,GAAA;AAAA,EAE1C;AAAA,EAEQ,kBAAkB,GAAA,EAAc;AACtC,IAAA,OAAO,GAAA,YAAe,eAAe,GAAA,KAAQ,MAAA;AAAA,EAC/C;AACF;;;;"}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
const Key = "mittwald.flow-remote-core.serializer.name";
|
|
2
|
-
class Serializer {
|
|
3
|
-
constructor(options) {
|
|
4
|
-
this.options = options;
|
|
5
|
-
}
|
|
6
|
-
options;
|
|
7
|
-
apply(val, strategy) {
|
|
8
|
-
if (strategy.isApplicable(val)) {
|
|
9
|
-
return {
|
|
10
|
-
applied: true,
|
|
11
|
-
result: {
|
|
12
|
-
[Key]: this.options.name,
|
|
13
|
-
value: strategy.apply(val)
|
|
14
|
-
}
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
return {
|
|
18
|
-
applied: false
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
serialize(val) {
|
|
22
|
-
return this.apply(val, this.options.serialize);
|
|
23
|
-
}
|
|
24
|
-
deserialize(val) {
|
|
25
|
-
return this.apply(val, {
|
|
26
|
-
apply: (serialization) => {
|
|
27
|
-
return this.options.deserialize.apply(serialization.value);
|
|
28
|
-
},
|
|
29
|
-
isApplicable: (val2) => {
|
|
30
|
-
return !!val2 && typeof val2 === "object" && Key in val2 && val2[Key] === this.options.name;
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
export { Serializer };
|
|
37
|
-
//# sourceMappingURL=Serializer.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
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 return this.options.deserialize.apply(serialization.value);\n },\n isApplicable: (val): val is SuccessfulSerializationResult<TOut> => {\n return (\n !!val &&\n typeof val === \"object\" &&\n Key in val &&\n val[Key] === this.options.name\n );\n },\n });\n }\n}\n"],"names":["val"],"mappings":"AAKA,MAAM,GAAA,GAAM,2CAAA;AAWL,MAAM,UAAA,CAAsB;AAAA,EAC1B,YACG,OAAA,EAKR;AALQ,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAAA,EAKP;AAAA,EALO,OAAA;AAAA,EAOF,KAAA,CACN,KACA,QAAA,EAC2B;AAC3B,IAAA,IAAI,QAAA,CAAS,YAAA,CAAa,GAAG,CAAA,EAAG;AAC9B,MAAA,OAAO;AAAA,QACL,OAAA,EAAS,IAAA;AAAA,QACT,MAAA,EAAQ;AAAA,UACN,CAAC,GAAG,GAAG,IAAA,CAAK,OAAA,CAAQ,IAAA;AAAA,UACpB,KAAA,EAAO,QAAA,CAAS,KAAA,CAAM,GAAG;AAAA;AAC3B,OACF;AAAA,IACF;AACA,IAAA,OAAO;AAAA,MACL,OAAA,EAAS;AAAA,KACX;AAAA,EACF;AAAA,EAEO,UAAU,GAAA,EAAyC;AACxD,IAAA,OAAO,IAAA,CAAK,KAAA,CAAiB,GAAA,EAAK,IAAA,CAAK,QAAQ,SAAS,CAAA;AAAA,EAC1D;AAAA,EAEO,YAAY,GAAA,EAAwC;AACzD,IAAA,OAAO,IAAA,CAAK,MAAM,GAAA,EAAK;AAAA,MACrB,KAAA,EAAO,CAAC,aAAA,KAAuD;AAC7D,QAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,KAAA,CAAM,cAAc,KAAK,CAAA;AAAA,MAC3D,CAAA;AAAA,MACA,YAAA,EAAc,CAACA,IAAAA,KAAoD;AACjE,QAAA,OACE,CAAC,CAACA,IAAAA,IACF,OAAOA,IAAAA,KAAQ,QAAA,IACf,GAAA,IAAOA,IAAAA,IACPA,IAAAA,CAAI,GAAG,CAAA,KAAM,IAAA,CAAK,OAAA,CAAQ,IAAA;AAAA,MAE9B;AAAA,KACD,CAAA;AAAA,EACH;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
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) => {\n return dataTransfer.getData(\"text\") || dataTransfer.getData(\"text/plain\");\n },\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":";;AAEO,MAAM,0BAAA,GAA6B,IAAI,UAAA,CAAiC;AAAA,EAC7E,IAAA,EAAM,kBAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAA6B;AAC1C,MAAA,OACE,GAAA,YAAe,gBACf,GAAA,CAAI,KAAA,CAAM,MAAM,CAAC,IAAA,KAAS,SAAS,YAAY,CAAA;AAAA,IAEnD,CAAA;AAAA,IACA,KAAA,EAAO,CAAC,YAAA,KAAiB;AACvB,MAAA,OAAO,aAAa,OAAA,CAAQ,MAAM,CAAA,IAAK,YAAA,CAAa,QAAQ,YAAY,CAAA;AAAA,IAC1E;AAAA,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,QAAA,KAAa;AACnB,MAAA,MAAM,YAAA,GAAe,IAAI,YAAA,EAAa;AACtC,MAAA,YAAA,CAAa,OAAA,CAAQ,QAAQ,QAAQ,CAAA;AACrC,MAAA,OAAO,YAAA;AAAA,IACT;AAAA;AAEJ,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
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":";;;AAIO,MAAM,sBAAA,GAAyB,IAAI,UAAA,CAAiC;AAAA,EACzE,IAAA,EAAM,cAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAAQ,GAAA,YAAe,YAAA;AAAA,IACtC,KAAA,EAAO,CAAC,IAAA,KAAS,IAAA,CAAK,QAAA;AAAS,GACjC;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,QAAA,KAAa,SAAA,CAAU,QAAQ;AAAA;AAE3C,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"file.mjs","sources":["../../../../../../src/serialization/serializers/file.ts"],"sourcesContent":["import { markAsTransferable } 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}\n\nexport const isSerializedFile = (value: unknown): value is SerializedFile => {\n return !!(\n value &&\n typeof value === \"object\" &&\n \"name\" in value &&\n \"type\" in value &&\n \"lastModified\" in value &&\n \"content\" in value\n );\n};\n\nexport const fileSerialize = (file: File): SerializedFile => {\n return {\n name: file.name,\n type: file.type,\n lastModified: file.lastModified,\n content: markAsTransferable(getAwaitArrayBuffer(file)),\n };\n};\n\nexport const fileDeSerialize = (file: SerializedFile) => {\n return new File([file.content], file.name, {\n lastModified: file.lastModified,\n type: file.type,\n });\n};\n\nexport const fileSerializer = new Serializer<File, SerializedFile>({\n name: \"File\",\n serialize: {\n isApplicable: (something) => something instanceof File,\n apply: fileSerialize,\n },\n deserialize: {\n apply: fileDeSerialize,\n },\n});\n"],"names":[],"mappings":";;;;AAWO,MAAM,gBAAA,GAAmB,CAAC,KAAA,KAA4C;AAC3E,EAAA,OAAO,CAAC,EACN,KAAA,IACA,OAAO,KAAA,KAAU,QAAA,IACjB,MAAA,IAAU,KAAA,IACV,MAAA,IAAU,KAAA,IACV,cAAA,IAAkB,KAAA,IAClB,SAAA,IAAa,KAAA,CAAA;AAEjB;AAEO,MAAM,aAAA,GAAgB,CAAC,IAAA,KAA+B;AAC3D,EAAA,OAAO;AAAA,IACL,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,MAAM,IAAA,CAAK,IAAA;AAAA,IACX,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,OAAA,EAAS,kBAAA,CAAmB,mBAAA,CAAoB,IAAI,CAAC;AAAA,GACvD;AACF;AAEO,MAAM,eAAA,GAAkB,CAAC,IAAA,KAAyB;AACvD,EAAA,OAAO,IAAI,IAAA,CAAK,CAAC,KAAK,OAAO,CAAA,EAAG,KAAK,IAAA,EAAM;AAAA,IACzC,cAAc,IAAA,CAAK,YAAA;AAAA,IACnB,MAAM,IAAA,CAAK;AAAA,GACZ,CAAA;AACH;AAEO,MAAM,cAAA,GAAiB,IAAI,UAAA,CAAiC;AAAA,EACjE,IAAA,EAAM,MAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,SAAA,KAAc,SAAA,YAAqB,IAAA;AAAA,IAClD,KAAA,EAAO;AAAA,GACT;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO;AAAA;AAEX,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"fileList.mjs","sources":["../../../../../../src/serialization/serializers/fileList.ts"],"sourcesContent":["import { Serializer } from \"@/serialization/Serializer\";\nimport {\n fileDeSerialize,\n fileSerialize,\n type SerializedFile,\n} from \"@/serialization/serializers\";\n\nexport const fileListSerializer = new Serializer<FileList, SerializedFile[]>({\n name: \"FileList\",\n serialize: {\n isApplicable: (something) => {\n return something instanceof FileList;\n },\n apply: (fileList) => Array.from(fileList).map(fileSerialize),\n },\n deserialize: {\n apply: (arrayFiles) => {\n const dataTransfer = new DataTransfer();\n arrayFiles.forEach((f) => dataTransfer.items.add(fileDeSerialize(f)));\n return dataTransfer.files;\n },\n },\n});\n"],"names":[],"mappings":";;;;;AAOO,MAAM,kBAAA,GAAqB,IAAI,UAAA,CAAuC;AAAA,EAC3E,IAAA,EAAM,UAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,SAAA,KAAc;AAC3B,MAAA,OAAO,SAAA,YAAqB,QAAA;AAAA,IAC9B,CAAA;AAAA,IACA,KAAA,EAAO,CAAC,QAAA,KAAa,KAAA,CAAM,KAAK,QAAQ,CAAA,CAAE,IAAI,aAAa;AAAA,GAC7D;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,UAAA,KAAe;AACrB,MAAA,MAAM,YAAA,GAAe,IAAI,YAAA,EAAa;AACtC,MAAA,UAAA,CAAW,OAAA,CAAQ,CAAC,CAAA,KAAM,YAAA,CAAa,MAAM,GAAA,CAAI,eAAA,CAAgB,CAAC,CAAC,CAAC,CAAA;AACpE,MAAA,OAAO,YAAA,CAAa,KAAA;AAAA,IACtB;AAAA;AAEJ,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"formData.mjs","sources":["../../../../../../src/serialization/serializers/formData.ts"],"sourcesContent":["import { Serializer } from \"@/serialization/Serializer\";\nimport {\n fileDeSerialize,\n fileSerialize,\n isSerializedFile,\n} from \"@/serialization/serializers\";\n\nexport const formDataSerializer = new Serializer<\n FormData,\n [string, FormDataEntryValue][]\n>({\n name: \"FormData\",\n serialize: {\n isApplicable: (val) => val instanceof FormData,\n apply: (formData) => {\n return formData\n .entries()\n .toArray()\n .map(([fieldName, fieldValue]) => {\n if (fieldValue instanceof File) {\n return [fieldName, fileSerialize(fieldValue)];\n }\n\n return [fieldName, fieldValue];\n }) as [string, FormDataEntryValue][];\n },\n },\n deserialize: {\n apply: (array) => {\n const formData = new FormData();\n for (const [name, value] of array) {\n const deserializedValue = isSerializedFile(value)\n ? fileDeSerialize(value)\n : value;\n\n if (!formData.has(name)) {\n formData.set(name, deserializedValue);\n } else {\n formData.append(name, deserializedValue);\n }\n }\n return formData;\n },\n },\n});\n"],"names":[],"mappings":";;;;;AAOO,MAAM,kBAAA,GAAqB,IAAI,UAAA,CAGpC;AAAA,EACA,IAAA,EAAM,UAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAAQ,GAAA,YAAe,QAAA;AAAA,IACtC,KAAA,EAAO,CAAC,QAAA,KAAa;AACnB,MAAA,OAAO,QAAA,CACJ,OAAA,EAAQ,CACR,OAAA,EAAQ,CACR,IAAI,CAAC,CAAC,SAAA,EAAW,UAAU,CAAA,KAAM;AAChC,QAAA,IAAI,sBAAsB,IAAA,EAAM;AAC9B,UAAA,OAAO,CAAC,SAAA,EAAW,aAAA,CAAc,UAAU,CAAC,CAAA;AAAA,QAC9C;AAEA,QAAA,OAAO,CAAC,WAAW,UAAU,CAAA;AAAA,MAC/B,CAAC,CAAA;AAAA,IACL;AAAA,GACF;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,KAAA,KAAU;AAChB,MAAA,MAAM,QAAA,GAAW,IAAI,QAAA,EAAS;AAC9B,MAAA,KAAA,MAAW,CAAC,IAAA,EAAM,KAAK,CAAA,IAAK,KAAA,EAAO;AACjC,QAAA,MAAM,oBAAoB,gBAAA,CAAiB,KAAK,CAAA,GAC5C,eAAA,CAAgB,KAAK,CAAA,GACrB,KAAA;AAEJ,QAAA,IAAI,CAAC,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG;AACvB,UAAA,QAAA,CAAS,GAAA,CAAI,MAAM,iBAAiB,CAAA;AAAA,QACtC,CAAA,MAAO;AACL,UAAA,QAAA,CAAS,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAAA,QACzC;AAAA,MACF;AACA,MAAA,OAAO,QAAA;AAAA,IACT;AAAA;AAEJ,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"passwordPolicy.mjs","sources":["../../../../../../src/serialization/serializers/passwordPolicy.ts"],"sourcesContent":["import { Serializer } from \"@/serialization/Serializer\";\nimport {\n Policy,\n type PolicyDeclaration,\n} from \"@mittwald/flow-react-components/mittwald-password-tools-js\";\n\nexport const passwordPolicySerializer = new Serializer<\n Policy,\n PolicyDeclaration\n>({\n name: \"PasswordPolicy\",\n serialize: {\n isApplicable: (val) => Policy.isPolicy(val),\n apply: (policy) => policy.toDeclaration(),\n },\n deserialize: {\n apply: (policyDeclaration) => Policy.fromDeclaration(policyDeclaration),\n },\n});\n"],"names":[],"mappings":";;;AAMO,MAAM,wBAAA,GAA2B,IAAI,UAAA,CAG1C;AAAA,EACA,IAAA,EAAM,gBAAA;AAAA,EACN,SAAA,EAAW;AAAA,IACT,YAAA,EAAc,CAAC,GAAA,KAAQ,MAAA,CAAO,SAAS,GAAG,CAAA;AAAA,IAC1C,KAAA,EAAO,CAAC,MAAA,KAAW,MAAA,CAAO,aAAA;AAAc,GAC1C;AAAA,EACA,WAAA,EAAa;AAAA,IACX,KAAA,EAAO,CAAC,iBAAA,KAAsB,MAAA,CAAO,gBAAgB,iBAAiB;AAAA;AAE1E,CAAC;;;;"}
|
|
@@ -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,WAAA,GAAc,WAAA;AACzB,UAAA,CAAW,cAAA,GAAiB,cAAA;AAC5B,UAAA,CAAW,gBAAA,GAAmB,MAAM,gBAAA,CAAiB;AAAA,EAC5C,WAAA,GAAc;AAAA,EAErB;AAAA,EACO,UAAA,GAAa;AAAA,EAEpB;AAAA,EACO,OAAA,GAAU;AAAA,EAEjB;AAAA,EACO,WAAA,GAAc;AACnB,IAAA,OAAO,EAAC;AAAA,EACV;AACF,CAAA"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/js/{remote-core/src/serialization → serialization}/serializers/dataTransferText.mjs
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
/package/dist/js/{remote-core/src/serialization → serialization}/serializers/passwordPolicy.mjs
RENAMED
|
File without changes
|
|
File without changes
|