@mittwald/flow-remote-core 0.2.0-alpha.81 → 0.2.0-alpha.812

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/dist/js/core/src/file.mjs +16 -0
  2. package/dist/js/core/src/file.mjs.map +1 -0
  3. package/dist/js/index-node.mjs +16 -0
  4. package/dist/js/index-node.mjs.map +1 -0
  5. package/dist/js/index.mjs +15 -0
  6. package/dist/js/index.mjs.map +1 -0
  7. package/dist/js/remote-core/src/connection/connectHostRenderRoot.mjs +58 -0
  8. package/dist/js/remote-core/src/connection/connectHostRenderRoot.mjs.map +1 -0
  9. package/dist/js/remote-core/src/connection/connectRemoteIframe.mjs +75 -0
  10. package/dist/js/remote-core/src/connection/connectRemoteIframe.mjs.map +1 -0
  11. package/dist/js/remote-core/src/connection/types.mjs +10 -0
  12. package/dist/js/remote-core/src/connection/types.mjs.map +1 -0
  13. package/dist/js/remote-core/src/error.mjs +10 -0
  14. package/dist/js/remote-core/src/error.mjs.map +1 -0
  15. package/dist/js/remote-core/src/ext-bridge/getWithMergedHostConfig.mjs +10 -0
  16. package/dist/js/remote-core/src/ext-bridge/getWithMergedHostConfig.mjs.map +1 -0
  17. package/dist/js/remote-core/src/ext-bridge/implementation.mjs +13 -0
  18. package/dist/js/remote-core/src/ext-bridge/implementation.mjs.map +1 -0
  19. package/dist/js/remote-core/src/serialization/FlowThreadSerialization.mjs +60 -0
  20. package/dist/js/remote-core/src/serialization/FlowThreadSerialization.mjs.map +1 -0
  21. package/dist/js/remote-core/src/serialization/Serializer.mjs +36 -0
  22. package/dist/js/remote-core/src/serialization/Serializer.mjs.map +1 -0
  23. package/dist/js/remote-core/src/serialization/serializers/dataTransferText.mjs +23 -0
  24. package/dist/js/remote-core/src/serialization/serializers/dataTransferText.mjs.map +1 -0
  25. package/dist/js/remote-core/src/serialization/serializers/date.mjs +16 -0
  26. package/dist/js/remote-core/src/serialization/serializers/date.mjs.map +1 -0
  27. package/dist/js/remote-core/src/serialization/serializers/file.mjs +34 -0
  28. package/dist/js/remote-core/src/serialization/serializers/file.mjs.map +1 -0
  29. package/dist/js/remote-core/src/serialization/serializers/fileList.mjs +24 -0
  30. package/dist/js/remote-core/src/serialization/serializers/fileList.mjs.map +1 -0
  31. package/dist/js/remote-core/src/serialization/serializers/formData.mjs +36 -0
  32. package/dist/js/remote-core/src/serialization/serializers/formData.mjs.map +1 -0
  33. package/dist/js/remote-core/src/serialization/serializers/index.mjs +7 -0
  34. package/dist/js/remote-core/src/serialization/serializers/index.mjs.map +1 -0
  35. package/dist/js/remote-core/src/serialization/serializers/passwordPolicy.mjs +16 -0
  36. package/dist/js/remote-core/src/serialization/serializers/passwordPolicy.mjs.map +1 -0
  37. package/dist/js/remote-core/src/shim.mjs +16 -0
  38. package/dist/js/remote-core/src/shim.mjs.map +1 -0
  39. package/dist/types/connection/connectHostRenderRoot.d.ts +10 -6
  40. package/dist/types/connection/connectHostRenderRoot.d.ts.map +1 -1
  41. package/dist/types/connection/connectRemoteIframe.d.ts +12 -9
  42. package/dist/types/connection/connectRemoteIframe.d.ts.map +1 -1
  43. package/dist/types/connection/index.d.ts +4 -0
  44. package/dist/types/connection/index.d.ts.map +1 -0
  45. package/dist/types/connection/types.d.ts +43 -0
  46. package/dist/types/connection/types.d.ts.map +1 -0
  47. package/dist/types/error.d.ts +4 -0
  48. package/dist/types/error.d.ts.map +1 -0
  49. package/dist/types/ext-bridge/getWithMergedHostConfig.d.ts +5 -0
  50. package/dist/types/ext-bridge/getWithMergedHostConfig.d.ts.map +1 -0
  51. package/dist/types/ext-bridge/implementation.d.ts +3 -0
  52. package/dist/types/ext-bridge/implementation.d.ts.map +1 -0
  53. package/dist/types/index-node.d.ts +2 -0
  54. package/dist/types/index-node.d.ts.map +1 -0
  55. package/dist/types/index.d.ts +5 -6
  56. package/dist/types/index.d.ts.map +1 -1
  57. package/dist/types/serialization/FlowThreadSerialization.d.ts +7 -0
  58. package/dist/types/serialization/FlowThreadSerialization.d.ts.map +1 -0
  59. package/dist/types/serialization/FlowThreadSerialization.test.d.ts +2 -0
  60. package/dist/types/serialization/FlowThreadSerialization.test.d.ts.map +1 -0
  61. package/dist/types/serialization/Serialization.test.d.ts +2 -0
  62. package/dist/types/serialization/Serialization.test.d.ts.map +1 -0
  63. package/dist/types/serialization/Serializer.d.ts +28 -0
  64. package/dist/types/serialization/Serializer.d.ts.map +1 -0
  65. package/dist/types/serialization/index.d.ts +4 -0
  66. package/dist/types/serialization/index.d.ts.map +1 -0
  67. package/dist/types/serialization/serializers/dataTransferText.d.ts +3 -0
  68. package/dist/types/serialization/serializers/dataTransferText.d.ts.map +1 -0
  69. package/dist/types/serialization/serializers/date.d.ts +4 -0
  70. package/dist/types/serialization/serializers/date.d.ts.map +1 -0
  71. package/dist/types/serialization/serializers/file.d.ts +12 -0
  72. package/dist/types/serialization/serializers/file.d.ts.map +1 -0
  73. package/dist/types/serialization/serializers/fileList.d.ts +4 -0
  74. package/dist/types/serialization/serializers/fileList.d.ts.map +1 -0
  75. package/dist/types/serialization/serializers/formData.d.ts +3 -0
  76. package/dist/types/serialization/serializers/formData.d.ts.map +1 -0
  77. package/dist/types/serialization/serializers/index.d.ts +7 -0
  78. package/dist/types/serialization/serializers/index.d.ts.map +1 -0
  79. package/dist/types/serialization/serializers/passwordPolicy.d.ts +4 -0
  80. package/dist/types/serialization/serializers/passwordPolicy.d.ts.map +1 -0
  81. package/dist/types/shim.d.ts +2 -0
  82. package/dist/types/shim.d.ts.map +1 -0
  83. package/dist/types/tests/utils.d.ts +2 -0
  84. package/dist/types/tests/utils.d.ts.map +1 -0
  85. package/package.json +37 -19
  86. package/dist/index.js +0 -48
  87. package/dist/types/events/FlowRemoteEvent.d.ts +0 -4
  88. package/dist/types/events/FlowRemoteEvent.d.ts.map +0 -1
  89. package/dist/types/events/index.d.ts +0 -5
  90. package/dist/types/events/index.d.ts.map +0 -1
  91. package/dist/types/events/serializers.d.ts +0 -5
  92. package/dist/types/events/serializers.d.ts.map +0 -1
@@ -0,0 +1,16 @@
1
+ import { HTMLElement, customElements } from '@lit-labs/ssr-dom-shim';
2
+
3
+ globalThis.HTMLElement = HTMLElement;
4
+ globalThis.customElements = customElements;
5
+ globalThis.MutationObserver = class MutationObserver {
6
+ constructor() {
7
+ }
8
+ disconnect() {
9
+ }
10
+ observe() {
11
+ }
12
+ takeRecords() {
13
+ return [];
14
+ }
15
+ };
16
+ //# sourceMappingURL=shim.mjs.map
@@ -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,7 +1,11 @@
1
- import { RemoteConnection } from '@mfalkenberg/remote-dom-core/elements';
2
- import { ThreadNestedIframe } from '@quilted/threads';
3
- export declare const connectHostRenderRoot: (div: HTMLDivElement) => ThreadNestedIframe<Record<string, never>, {
4
- render: (connection: RemoteConnection) => void;
5
- }>;
6
- export declare const connectHostRenderRootRef: (ref: HTMLDivElement | null) => void;
1
+ import { RemoteToHostConnection } from './types';
2
+ import { RemoteConnection } from '@mittwald/remote-dom-core/elements';
3
+ interface Options {
4
+ root: HTMLDivElement;
5
+ onPathnameChanged?: (pathname: string) => void;
6
+ }
7
+ export declare const connectRemoteReceiver: (root: HTMLDivElement, receiverConnection: RemoteConnection) => Promise<void>;
8
+ export declare const connectHostRenderRoot: (options: Options) => Promise<RemoteToHostConnection>;
9
+ export declare const connectHostRenderRootRef: (opts: Omit<Options, "root">) => (ref: HTMLDivElement | null) => Promise<RemoteToHostConnection> | undefined;
10
+ export {};
7
11
  //# sourceMappingURL=connectHostRenderRoot.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectHostRenderRoot.d.ts","sourceRoot":"","sources":["../../../src/connection/connectHostRenderRoot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,eAAO,MAAM,qBAAqB,QAAS,cAAc;yBAG9B,gBAAgB;EAU1C,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAAS,cAAc,GAAG,IAAI,SAMlE,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;AAG5B,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,UAAU,OAAO;IACf,IAAI,EAAE,cAAc,CAAC;IACrB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CAChD;AAKD,eAAO,MAAM,qBAAqB,GAChC,MAAM,cAAc,EACpB,oBAAoB,gBAAgB,kBAOnC,CAAC;AAEJ,eAAO,MAAM,qBAAqB,GAChC,SAAS,OAAO,KACf,OAAO,CAAC,sBAAsB,CAoChC,CAAC;AAEF,eAAO,MAAM,wBAAwB,GAClC,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,cAAc,GAAG,IAAI,gDAc3D,CAAC"}
@@ -1,14 +1,17 @@
1
- import { RemoteConnection } from '@mfalkenberg/remote-dom-core/elements';
2
- import { ThreadIframe } from '@quilted/threads';
3
- export type HostData = Record<string, unknown>;
4
- interface Opts {
1
+ import { HostToRemoteConnection, NavigationState, RemoteExtBridgeConnectionApi } from './types';
2
+ import { HostConfig } from '@mittwald/flow-core';
3
+ import { RemoteConnection } from '@mittwald/remote-dom-core/elements';
4
+ interface Options {
5
5
  connection: RemoteConnection;
6
6
  iframe: HTMLIFrameElement;
7
+ hostConfig: HostConfig;
8
+ onReady?: (connection: HostToRemoteConnection) => void;
9
+ onLoadingChanged?: (isLoading: boolean) => void;
10
+ onError?: (error: string) => void;
11
+ onNavigationStateChanged?: (state: NavigationState) => void;
12
+ extBridgeImplementation?: RemoteExtBridgeConnectionApi;
7
13
  }
8
- interface ThreadIframeTarget {
9
- render: (connection: RemoteConnection) => AsyncIterator<unknown>;
10
- }
11
- export declare const connectRemoteIframe: (opts: Opts) => ThreadIframe<ThreadIframeTarget, Record<string, never>>;
12
- export declare const connectRemoteIframeRef: (connection: RemoteConnection) => (ref: HTMLIFrameElement | null) => void;
14
+ export declare const connectRemoteIframe: (opts: Options) => HostToRemoteConnection;
15
+ export declare const connectRemoteIframeRef: (opts: Omit<Options, "iframe">) => (ref: HTMLIFrameElement | null) => HostToRemoteConnection | undefined;
13
16
  export {};
14
17
  //# sourceMappingURL=connectRemoteIframe.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectRemoteIframe.d.ts","sourceRoot":"","sources":["../../../src/connection/connectRemoteIframe.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE/C,UAAU,IAAI;IACZ,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;CAC3B;AAED,UAAU,kBAAkB;IAC1B,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,aAAa,CAAC,OAAO,CAAC,CAAC;CAClE;AAED,eAAO,MAAM,mBAAmB,SAAU,IAAI,4DAI7C,CAAC;AAEF,eAAO,MAAM,sBAAsB,eACpB,gBAAgB,WAAW,iBAAiB,GAAG,IAAI,SAc/D,CAAC"}
1
+ {"version":3,"file":"connectRemoteIframe.d.ts","sourceRoot":"","sources":["../../../src/connection/connectRemoteIframe.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EAEpB,KAAK,4BAA4B,EAClC,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,UAAU,OAAO;IACf,UAAU,EAAE,gBAAgB,CAAC;IAC7B,MAAM,EAAE,iBAAiB,CAAC;IAC1B,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,CAAC,UAAU,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACvD,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,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,4BAA4B,CAAC;CACxD;AAED,eAAO,MAAM,mBAAmB,GAAI,MAAM,OAAO,KAAG,sBAsDnD,CAAC;AAEF,eAAO,MAAM,sBAAsB,GAChC,MAAM,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,KAAK,iBAAiB,GAAG,IAAI,uCAehE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from './connectHostRenderRoot';
2
+ export * from './connectRemoteIframe';
3
+ export * from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/connection/index.ts"],"names":[],"mappings":"AAAA,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { ExtBridgeConfigInput, ExtBridgeConnectionApi } from '@mittwald/ext-bridge';
2
+ import { HostConfig } from '@mittwald/flow-core';
3
+ import { RemoteConnection } from '@mittwald/remote-dom-core';
4
+ import { ThreadIframe, ThreadNestedIframe } from '@quilted/threads';
5
+ export type { RemoteConnection } from '@mittwald/remote-dom-core';
6
+ export interface NavigationState {
7
+ pathname: string;
8
+ isPending: boolean;
9
+ }
10
+ export type RemoteExtBridgeConfig = Omit<ExtBridgeConfigInput, keyof HostConfig>;
11
+ export interface RemoteExtBridgeConnectionApi extends Omit<ExtBridgeConnectionApi, "getConfig"> {
12
+ getConfig: () => Promise<RemoteExtBridgeConfig>;
13
+ }
14
+ /**
15
+ * Breaking Change warning: Do not remove/rename/modify existing properties of
16
+ * this interface, as they might be used by existing extensions.
17
+ *
18
+ * When addding properties, make sure to release the host before all clients.
19
+ */
20
+ export interface HostExports extends ExtBridgeConnectionApi {
21
+ setIsReady: (version?: Version) => Promise<void>;
22
+ setIsLoading: (isLoading: boolean) => Promise<void>;
23
+ setError: (error: string) => Promise<void>;
24
+ setNavigationState: (state: NavigationState) => Promise<void>;
25
+ getHostConfig: () => Promise<HostConfig>;
26
+ }
27
+ export interface RemoteExports {
28
+ render: (connection: RemoteConnection) => Promise<void>;
29
+ setPathname: (pathname: string) => Promise<void>;
30
+ }
31
+ export type RemoteToHostConnection = ThreadNestedIframe<HostExports, RemoteExports>;
32
+ export interface HostToRemoteConnection {
33
+ version: Version;
34
+ thread: ThreadIframe<RemoteExports, HostExports>;
35
+ updateHostPathname: (hostPathname?: string) => void;
36
+ }
37
+ export declare enum Version {
38
+ vUnknown = 0,
39
+ v1 = 1,
40
+ v2 = 2,
41
+ v3 = 3
42
+ }
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/connection/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,oBAAoB,EACpB,MAAM,UAAU,CACjB,CAAC;AAEF,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CACxD,sBAAsB,EACtB,WAAW,CACZ;IACC,SAAS,EAAE,MAAM,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACjD;AAED;;;;;GAKG;AACH,MAAM,WAAW,WAAY,SAAQ,sBAAsB;IACzD,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,YAAY,EAAE,CAAC,SAAS,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,kBAAkB,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,aAAa,EAAE,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,CAAC,UAAU,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,WAAW,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAClD;AAED,MAAM,MAAM,sBAAsB,GAAG,kBAAkB,CACrD,WAAW,EACX,aAAa,CACd,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACjD,kBAAkB,EAAE,CAAC,YAAY,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CACrD;AAED,oBAAY,OAAO;IACjB,QAAQ,IAAI;IACZ,EAAE,IAAI;IACN,EAAE,IAAI;IACN,EAAE,IAAI;CACP"}
@@ -0,0 +1,4 @@
1
+ export declare class RemoteError extends Error {
2
+ constructor(message: string);
3
+ }
4
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../src/error.ts"],"names":[],"mappings":"AAAA,qBAAa,WAAY,SAAQ,KAAK;gBACxB,OAAO,EAAE,MAAM;CAI5B"}
@@ -0,0 +1,5 @@
1
+ import { RemoteExtBridgeConnectionApi } from '../connection';
2
+ import { ExtBridgeConfigInput } from '@mittwald/ext-bridge';
3
+ import { HostConfig } from '@mittwald/flow-core';
4
+ export declare const getWithMergedHostConfig: (extBridgeConnection: RemoteExtBridgeConnectionApi, hostConfig: HostConfig) => () => Promise<ExtBridgeConfigInput>;
5
+ //# sourceMappingURL=getWithMergedHostConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getWithMergedHostConfig.d.ts","sourceRoot":"","sources":["../../../src/ext-bridge/getWithMergedHostConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,eAAO,MAAM,uBAAuB,GACjC,qBAAqB,4BAA4B,EAAE,YAAY,UAAU,WAChE,OAAO,CAAC,oBAAoB,CAOrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { ExtBridgeConnectionApi } from '@mittwald/ext-bridge';
2
+ export declare const emptyImplementation: ExtBridgeConnectionApi;
3
+ //# sourceMappingURL=implementation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"implementation.d.ts","sourceRoot":"","sources":["../../../src/ext-bridge/implementation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAEnE,eAAO,MAAM,mBAAmB,EAO3B,sBAAsB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from './index';
2
+ //# sourceMappingURL=index-node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../../src/index-node.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,CAAC;AAChB,cAAc,SAAS,CAAC"}
@@ -1,7 +1,6 @@
1
- export { RemoteElement, RemoteEvent, type RemoteElementConstructor, } from '@mfalkenberg/remote-dom-core/elements';
2
- export * from './connection/connectHostRenderRoot';
3
- export * from './connection/connectRemoteIframe';
4
- export * from './events';
5
- export * from './events/FlowRemoteEvent';
6
- export * from './events/serializers';
1
+ export { RemoteReceiver } from '@mittwald/remote-dom-core/receivers';
2
+ export { RemoteElement, RemoteEvent, type RemoteElementConstructor, } from '@mittwald/remote-dom-core/elements';
3
+ export * from './serialization';
4
+ export * from './connection';
5
+ export * from './error';
7
6
  //# 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,uCAAuC,CAAC;AAC/C,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC;AACjD,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EACL,aAAa,EACb,WAAW,EACX,KAAK,wBAAwB,GAC9B,MAAM,oCAAoC,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,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,EAGnC,MAAM,kBAAkB,CAAC;AAS1B,qBAAa,uBAAwB,SAAQ,kCAAkC;;IA2C7E,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,iBAAiB;CAG1B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=FlowThreadSerialization.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FlowThreadSerialization.test.d.ts","sourceRoot":"","sources":["../../../src/serialization/FlowThreadSerialization.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Serialization.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Serialization.test.d.ts","sourceRoot":"","sources":["../../../src/serialization/Serialization.test.tsx"],"names":[],"mappings":""}
@@ -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;CAe3D"}
@@ -0,0 +1,4 @@
1
+ export * from './serializers';
2
+ export * from './FlowThreadSerialization';
3
+ export * from './Serializer';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/serialization/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,2BAA2B,CAAC;AAC1C,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Serializer } from '../Serializer';
2
+ export declare const dataTransferTextSerializer: Serializer<DataTransfer, string>;
3
+ //# sourceMappingURL=dataTransferText.d.ts.map
@@ -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,kCAoBrC,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { CalendarDate } from '@internationalized/date';
2
+ import { Serializer } from '../Serializer';
3
+ export declare const calendarDateSerializer: Serializer<CalendarDate, string>;
4
+ //# sourceMappingURL=date.d.ts.map
@@ -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 { Serializer } from '../Serializer';
2
+ export interface SerializedFile {
3
+ name: string;
4
+ type: string;
5
+ lastModified: number;
6
+ content: ArrayBuffer;
7
+ }
8
+ export declare const isSerializedFile: (value: unknown) => value is SerializedFile;
9
+ export declare const fileSerialize: (file: File) => SerializedFile;
10
+ export declare const fileDeSerialize: (file: SerializedFile) => File;
11
+ export declare const fileSerializer: Serializer<File, 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":"AACA,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;CACtB;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,OAAO,KAAG,KAAK,IAAI,cAS1D,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,MAAM,IAAI,KAAG,cAO1C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,cAAc,SAKnD,CAAC;AAEF,eAAO,MAAM,cAAc,kCASzB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Serializer } from '../Serializer';
2
+ import { SerializedFile } from '.';
3
+ export declare const fileListSerializer: Serializer<FileList, SerializedFile[]>;
4
+ //# sourceMappingURL=fileList.d.ts.map
@@ -0,0 +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,wCAe7B,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Serializer } from '../Serializer';
2
+ export declare const formDataSerializer: Serializer<FormData, [string, FormDataEntryValue][]>;
3
+ //# sourceMappingURL=formData.d.ts.map
@@ -0,0 +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;AAOxD,eAAO,MAAM,kBAAkB,sDAqC7B,CAAC"}
@@ -0,0 +1,7 @@
1
+ export * from './date';
2
+ export * from './file';
3
+ export * from './fileList';
4
+ export * from './dataTransferText';
5
+ export * from './formData';
6
+ export * from './passwordPolicy';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -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,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { Serializer } from '../Serializer';
2
+ import { Policy, PolicyDeclaration } from '@mittwald/flow-react-components/mittwald-password-tools-js';
3
+ export declare const passwordPolicySerializer: Serializer<Policy, PolicyDeclaration>;
4
+ //# sourceMappingURL=passwordPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"passwordPolicy.d.ts","sourceRoot":"","sources":["../../../../src/serialization/serializers/passwordPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,MAAM,EACN,KAAK,iBAAiB,EACvB,MAAM,4DAA4D,CAAC;AAEpE,eAAO,MAAM,wBAAwB,uCAYnC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=shim.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shim.d.ts","sourceRoot":"","sources":["../../src/shim.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export declare const createFileList: (files: File[]) => FileList;
2
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/tests/utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,GAAI,OAAO,IAAI,EAAE,KAAG,QAyB9C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mittwald/flow-remote-core",
3
- "version": "0.2.0-alpha.81",
3
+ "version": "0.2.0-alpha.812",
4
4
  "type": "module",
5
5
  "description": "Core functionality to setup a remote/host environment",
6
6
  "homepage": "https://mittwald.github.io/flow",
@@ -8,38 +8,56 @@
8
8
  "exports": {
9
9
  ".": {
10
10
  "types": "./dist/types/index.d.ts",
11
- "default": "./dist/index.js"
11
+ "node": "./dist/js/index-node.mjs",
12
+ "default": "./dist/js/index.mjs"
12
13
  }
13
14
  },
14
15
  "files": [
15
16
  "dist"
16
17
  ],
17
18
  "engines": {
18
- "node": ">=20.11"
19
+ "node": ">=20.19"
19
20
  },
20
21
  "scripts": {
21
22
  "build": "vite build --config vite.build.config.ts",
22
23
  "clean": "rimraf dist",
23
- "test": "exit 0",
24
- "test:compile": "tsc --noEmit"
24
+ "test:compile": "tsc --noEmit",
25
+ "test:unit": "vitest run --passWithNoTests"
25
26
  },
26
27
  "dependencies": {
27
- "@mfalkenberg/remote-dom-core": "^1.7.5",
28
- "@quilted/threads": "^3.1.3",
29
- "remeda": "^2.20.2"
28
+ "@internationalized/date": "^3.10.1",
29
+ "@lit-labs/ssr-dom-shim": "^1.5.1",
30
+ "@mittwald/remote-dom-core": "1.7.0-mittwald.10",
31
+ "@quilted/threads": "^3.3.1",
32
+ "@types/invariant": "^2.2.37",
33
+ "invariant": "^2.2.4",
34
+ "remeda": "^2.33.4"
30
35
  },
31
36
  "devDependencies": {
32
- "@mittwald/typescript-config": "workspace:*",
33
- "@types/node": "^22.13.4",
34
- "nx": "^20.4.5",
35
- "prettier": "^3.5.1",
36
- "rimraf": "^6.0.1",
37
+ "@mittwald/ext-bridge": "0.2.0-alpha.812",
38
+ "@mittwald/flow-core": "",
39
+ "@mittwald/flow-react-components": "0.2.0-alpha.812",
40
+ "@mittwald/typescript-config": "",
41
+ "@types/node": "^24.10.9",
42
+ "nx": "^22.4.4",
43
+ "prettier": "^3.8.1",
44
+ "rimraf": "^6.1.2",
37
45
  "rollup-preserve-directives": "^1.1.3",
38
- "typescript": "^5.7.3",
39
- "vite": "^6.1.1",
40
- "vite-plugin-checker": "^0.8.0",
41
- "vite-plugin-dts": "^4.5.0",
42
- "vite-plugin-externalize-deps": "^0.9.0"
46
+ "typescript": "^5.9.3",
47
+ "vite": "^7.3.1",
48
+ "vite-plugin-checker": "^0.12.0",
49
+ "vite-plugin-dts": "^4.5.4",
50
+ "vite-plugin-externalize-deps": "^0.10.0",
51
+ "vitest": "^4.0.18"
43
52
  },
44
- "gitHead": "3960441fe9f18e89f3fd5e5b2c1d754596e410ff"
53
+ "peerDependencies": {
54
+ "@mittwald/ext-bridge": "0.2.0-alpha.811",
55
+ "@mittwald/flow-react-components": "0.2.0-alpha.811"
56
+ },
57
+ "peerDependenciesMeta": {
58
+ "@mittwald/ext-bridge": {
59
+ "optional": true
60
+ }
61
+ },
62
+ "gitHead": "7d3aa1e6ea9aba905ee118cbc697dc8705216707"
45
63
  }
package/dist/index.js DELETED
@@ -1,48 +0,0 @@
1
- import { RemoteElement as j, RemoteEvent as k } from "@mfalkenberg/remote-dom-core/elements";
2
- import { ThreadNestedIframe as a, ThreadIframe as m } from "@quilted/threads";
3
- import * as n from "remeda";
4
- import { isObjectType as d, isString as p, isNumber as u, isBoolean as l } from "remeda";
5
- const b = (e) => new a({
6
- exports: {
7
- render: (t) => {
8
- import("@mfalkenberg/remote-dom-core/elements").then(
9
- ({ RemoteMutationObserver: r }) => {
10
- new r(t).observe(e);
11
- }
12
- );
13
- }
14
- }
15
- }), v = (e) => {
16
- e === null || "__remoteConnectionEstablished" in e || (b(e), Object.assign(e, { __remoteConnectionEstablished: !0 }));
17
- }, R = (e) => {
18
- const t = new m(e.iframe);
19
- return t.imports.render(e.connection), t;
20
- }, y = (e) => (t) => {
21
- t && ("__remoteConnectionEstablished" in t || (R({
22
- iframe: t,
23
- connection: e
24
- }), Object.assign(t, { __remoteConnectionEstablished: !0 })));
25
- }, s = (e) => p(e) || u(e) || l(e) || n.isArray(e) && e.every(s), i = (e) => n.isArray(e) ? e.map(i) : d(e) ? n.pickBy(e, s) : e, C = (...e) => (t) => n.pick(t, e), f = i, h = (e, t, r = {}) => (o) => {
26
- const c = r[t] ?? f;
27
- return e(c(o));
28
- };
29
- class w extends CustomEvent {
30
- constructor(t, r) {
31
- super(t, {
32
- detail: r
33
- });
34
- }
35
- }
36
- export {
37
- w as FlowRemoteEvent,
38
- j as RemoteElement,
39
- k as RemoteEvent,
40
- b as connectHostRenderRoot,
41
- v as connectHostRenderRootRef,
42
- R as connectRemoteIframe,
43
- y as connectRemoteIframeRef,
44
- h as mapEventHandler,
45
- C as pick,
46
- i as primitiveFlat,
47
- f as standard
48
- };
@@ -1,4 +0,0 @@
1
- export declare class FlowRemoteEvent<T> extends CustomEvent<T> {
2
- constructor(type: string, detail: T);
3
- }
4
- //# sourceMappingURL=FlowRemoteEvent.d.ts.map
@@ -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 declare const mapEventHandler: (eventHandler: EventHandler, eventName: string, eventSerialization?: EventSerializationMap) => (event: unknown) => void;
3
- export type EventSerialization = (event: unknown) => unknown;
4
- export type EventSerializationMap = Record<string, EventSerialization>;
5
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/events/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;AAEpD,eAAO,MAAM,eAAe,iBAEV,YAAY,aACf,MAAM,uBACG,qBAAqB,aAEnC,OAAO,SAGd,CAAC;AAEJ,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAC7D,MAAM,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,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;AAUzD,eAAO,MAAM,aAAa,EAAE,kBAKf,CAAC;AAEd,eAAO,MAAM,IAAI,aACJ,MAAM,EAAE,KAAG,kBAGrB,CAAC;AAEJ,eAAO,MAAM,QAAQ,oBAAgB,CAAC"}