@mittwald/flow-remote-core 0.2.0-alpha.104 → 0.2.0-alpha.1040

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 (126) hide show
  1. package/README.md +2 -2
  2. package/dist/js/_virtual/_rolldown/runtime.mjs +13 -0
  3. package/dist/js/index-node.mjs +21 -0
  4. package/dist/js/index-node.mjs.map +1 -0
  5. package/dist/js/index.mjs +24 -0
  6. package/dist/js/index.mjs.map +1 -0
  7. package/dist/js/node_modules/.pnpm/@quilted_events@2.1.5/node_modules/@quilted/events/build/esm/abort/NestedAbortController.mjs +35 -0
  8. package/dist/js/node_modules/.pnpm/@quilted_events@2.1.5/node_modules/@quilted/events/build/esm/abort/NestedAbortController.mjs.map +1 -0
  9. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/Thread.mjs +173 -0
  10. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/Thread.mjs.map +1 -0
  11. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/constants.mjs +7 -0
  12. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/constants.mjs.map +1 -0
  13. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/errors.mjs +10 -0
  14. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/errors.mjs.map +1 -0
  15. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/functions/ThreadFunctionsAutomatic.mjs +70 -0
  16. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/functions/ThreadFunctionsAutomatic.mjs.map +1 -0
  17. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/nanoid.mjs +11 -0
  18. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/nanoid.mjs.map +1 -0
  19. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/ThreadSerializationStructuredClone.mjs +132 -0
  20. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/ThreadSerializationStructuredClone.mjs.map +1 -0
  21. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/shared.mjs +13 -0
  22. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/serialization/shared.mjs.map +1 -0
  23. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadIframe.mjs +154 -0
  24. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadIframe.mjs.map +1 -0
  25. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadNestedIframe.mjs +78 -0
  26. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadNestedIframe.mjs.map +1 -0
  27. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadNestedWindow.mjs +120 -0
  28. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadNestedWindow.mjs.map +1 -0
  29. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadWindow.mjs +192 -0
  30. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadWindow.mjs.map +1 -0
  31. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/shared.mjs +7 -0
  32. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/shared.mjs.map +1 -0
  33. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/transfer.mjs +16 -0
  34. package/dist/js/node_modules/.pnpm/@quilted_threads@3.3.1_patch_hash_df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/transfer.mjs.map +1 -0
  35. package/dist/js/packages/remote-core/src/connection/connectHostRenderRoot.mjs +54 -0
  36. package/dist/js/packages/remote-core/src/connection/connectHostRenderRoot.mjs.map +1 -0
  37. package/dist/js/packages/remote-core/src/connection/connectRemoteIframe.mjs +77 -0
  38. package/dist/js/packages/remote-core/src/connection/connectRemoteIframe.mjs.map +1 -0
  39. package/dist/js/packages/remote-core/src/connection/index.mjs +4 -0
  40. package/dist/js/packages/remote-core/src/connection/types.mjs +14 -0
  41. package/dist/js/packages/remote-core/src/connection/types.mjs.map +1 -0
  42. package/dist/js/packages/remote-core/src/error.mjs +12 -0
  43. package/dist/js/packages/remote-core/src/error.mjs.map +1 -0
  44. package/dist/js/packages/remote-core/src/events/remoteEvents.mjs +17 -0
  45. package/dist/js/packages/remote-core/src/events/remoteEvents.mjs.map +1 -0
  46. package/dist/js/packages/remote-core/src/ext-bridge/getWithMergedHostConfig.mjs +12 -0
  47. package/dist/js/packages/remote-core/src/ext-bridge/getWithMergedHostConfig.mjs.map +1 -0
  48. package/dist/js/packages/remote-core/src/ext-bridge/implementation.mjs +9 -0
  49. package/dist/js/packages/remote-core/src/ext-bridge/implementation.mjs.map +1 -0
  50. package/dist/js/packages/remote-core/src/serialization/FlowThreadSerialization.mjs +50 -0
  51. package/dist/js/packages/remote-core/src/serialization/FlowThreadSerialization.mjs.map +1 -0
  52. package/dist/js/packages/remote-core/src/serialization/Serializer.mjs +32 -0
  53. package/dist/js/packages/remote-core/src/serialization/Serializer.mjs.map +1 -0
  54. package/dist/js/packages/remote-core/src/serialization/index.mjs +10 -0
  55. package/dist/js/packages/remote-core/src/serialization/serializers/dataTransferText.mjs +22 -0
  56. package/dist/js/packages/remote-core/src/serialization/serializers/dataTransferText.mjs.map +1 -0
  57. package/dist/js/packages/remote-core/src/serialization/serializers/date.mjs +15 -0
  58. package/dist/js/packages/remote-core/src/serialization/serializers/date.mjs.map +1 -0
  59. package/dist/js/packages/remote-core/src/serialization/serializers/file.mjs +32 -0
  60. package/dist/js/packages/remote-core/src/serialization/serializers/file.mjs.map +1 -0
  61. package/dist/js/packages/remote-core/src/serialization/serializers/fileList.mjs +20 -0
  62. package/dist/js/packages/remote-core/src/serialization/serializers/fileList.mjs.map +1 -0
  63. package/dist/js/packages/remote-core/src/serialization/serializers/formData.mjs +29 -0
  64. package/dist/js/packages/remote-core/src/serialization/serializers/formData.mjs.map +1 -0
  65. package/dist/js/packages/remote-core/src/serialization/serializers/index.mjs +23 -0
  66. package/dist/js/packages/remote-core/src/serialization/serializers/index.mjs.map +1 -0
  67. package/dist/js/packages/remote-core/src/serialization/serializers/passwordPolicy.mjs +15 -0
  68. package/dist/js/packages/remote-core/src/serialization/serializers/passwordPolicy.mjs.map +1 -0
  69. package/dist/js/packages/remote-core/src/shim.mjs +33 -0
  70. package/dist/js/packages/remote-core/src/shim.mjs.map +1 -0
  71. package/dist/types/connection/connectHostRenderRoot.d.ts +11 -2
  72. package/dist/types/connection/connectHostRenderRoot.d.ts.map +1 -1
  73. package/dist/types/connection/connectRemoteIframe.d.ts +14 -8
  74. package/dist/types/connection/connectRemoteIframe.d.ts.map +1 -1
  75. package/dist/types/connection/types.d.ts +50 -5
  76. package/dist/types/connection/types.d.ts.map +1 -1
  77. package/dist/types/events/remoteEvents.d.ts +17 -0
  78. package/dist/types/events/remoteEvents.d.ts.map +1 -0
  79. package/dist/types/events/remoteEvents.test.d.ts +2 -0
  80. package/dist/types/events/remoteEvents.test.d.ts.map +1 -0
  81. package/dist/types/ext-bridge/getWithMergedHostConfig.d.ts +4 -0
  82. package/dist/types/ext-bridge/getWithMergedHostConfig.d.ts.map +1 -0
  83. package/dist/types/ext-bridge/implementation.d.ts +2 -2
  84. package/dist/types/ext-bridge/implementation.d.ts.map +1 -1
  85. package/dist/types/index-node.d.ts +2 -0
  86. package/dist/types/index-node.d.ts.map +1 -0
  87. package/dist/types/index.d.ts +4 -4
  88. package/dist/types/index.d.ts.map +1 -1
  89. package/dist/types/serialization/FlowThreadSerialization.d.ts +7 -0
  90. package/dist/types/serialization/FlowThreadSerialization.d.ts.map +1 -0
  91. package/dist/types/serialization/FlowThreadSerialization.test.d.ts +2 -0
  92. package/dist/types/serialization/FlowThreadSerialization.test.d.ts.map +1 -0
  93. package/dist/types/serialization/Serialization.test.d.ts +2 -0
  94. package/dist/types/serialization/Serialization.test.d.ts.map +1 -0
  95. package/dist/types/serialization/Serializer.d.ts +28 -0
  96. package/dist/types/serialization/Serializer.d.ts.map +1 -0
  97. package/dist/types/serialization/index.d.ts +4 -0
  98. package/dist/types/serialization/index.d.ts.map +1 -0
  99. package/dist/types/serialization/serializers/dataTransferText.d.ts +3 -0
  100. package/dist/types/serialization/serializers/dataTransferText.d.ts.map +1 -0
  101. package/dist/types/serialization/serializers/date.d.ts +4 -0
  102. package/dist/types/serialization/serializers/date.d.ts.map +1 -0
  103. package/dist/types/serialization/serializers/file.d.ts +12 -0
  104. package/dist/types/serialization/serializers/file.d.ts.map +1 -0
  105. package/dist/types/serialization/serializers/fileList.d.ts +4 -0
  106. package/dist/types/serialization/serializers/fileList.d.ts.map +1 -0
  107. package/dist/types/serialization/serializers/formData.d.ts +7 -0
  108. package/dist/types/serialization/serializers/formData.d.ts.map +1 -0
  109. package/dist/types/serialization/serializers/index.d.ts +7 -0
  110. package/dist/types/serialization/serializers/index.d.ts.map +1 -0
  111. package/dist/types/serialization/serializers/passwordPolicy.d.ts +4 -0
  112. package/dist/types/serialization/serializers/passwordPolicy.d.ts.map +1 -0
  113. package/dist/types/shim.d.ts +14 -0
  114. package/dist/types/shim.d.ts.map +1 -0
  115. package/dist/types/tests/utils.d.ts +2 -0
  116. package/dist/types/tests/utils.d.ts.map +1 -0
  117. package/package.json +29 -22
  118. package/dist/index.js +0 -100
  119. package/dist/types/events/FlowRemoteEvent.d.ts +0 -4
  120. package/dist/types/events/FlowRemoteEvent.d.ts.map +0 -1
  121. package/dist/types/events/index.d.ts +0 -5
  122. package/dist/types/events/index.d.ts.map +0 -1
  123. package/dist/types/events/serializers.d.ts +0 -5
  124. package/dist/types/events/serializers.d.ts.map +0 -1
  125. package/dist/types/ext-bridge/delegateExtBridgeRemoteFunctions.d.ts +0 -4
  126. package/dist/types/ext-bridge/delegateExtBridgeRemoteFunctions.d.ts.map +0 -1
@@ -0,0 +1,154 @@
1
+ import { Thread } from "../Thread.mjs";
2
+ import { windowToThreadTarget } from "./window/ThreadWindow.mjs";
3
+ import { ThreadNestedIframe } from "./ThreadNestedIframe.mjs";
4
+ //#region ../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadIframe.mjs
5
+ /**
6
+ * Creates a thread from an iframe element.
7
+ *
8
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
9
+ *
10
+ * @example
11
+ * import {ThreadIframe} from '@quilted/threads';
12
+ *
13
+ * const iframe = document.querySelector('iframe#thread-iframe');
14
+ * const thread = new ThreadIframe(iframe);
15
+ * await thread.imports.sendMessage('Hello world!');
16
+ */
17
+ var ThreadIframe = class ThreadIframe extends Thread {
18
+ /**
19
+ * Creates a thread from an iframe element.
20
+ *
21
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
22
+ *
23
+ * @example
24
+ * import {ThreadIframe} from '@quilted/threads';
25
+ *
26
+ * const iframe = document.querySelector('iframe#thread-iframe');
27
+ * const thread = ThreadIframe.from(iframe);
28
+ * await thread.imports.sendMessage('Hello world!');
29
+ */
30
+ static from(iframe, options) {
31
+ return new ThreadIframe(iframe, options);
32
+ }
33
+ /**
34
+ * Starts a thread wrapped around an iframe element, and returns the imports
35
+ * of the thread.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import {ThreadIframe} from '@quilted/threads';
40
+ *
41
+ * const {getMessage} = ThreadIframe.import(iframe);
42
+ * const message = await getMessage(); // 'Hello, world!'
43
+ *
44
+ * // In the nested window:
45
+ *
46
+ * import {ThreadIframe} from '@quilted/threads';
47
+ *
48
+ * ThreadIframe.parent.export({
49
+ * async getMessage() {
50
+ * return 'Hello, world!';
51
+ * },
52
+ * });
53
+ * ```
54
+ */
55
+ static import(iframe, options) {
56
+ return new ThreadIframe(iframe, options).imports;
57
+ }
58
+ /**
59
+ * Starts a thread wrapped around an iframe element, providing the second
60
+ * argument as the exports of the thread.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * import {ThreadIframe} from '@quilted/threads';
65
+ *
66
+ * ThreadIframe.export(iframe, {
67
+ * async getMessage() {
68
+ * return 'Hello, world!';
69
+ * },
70
+ * });
71
+ *
72
+ * // In the nested iframe:
73
+ *
74
+ * import {ThreadIframe} from '@quilted/threads';
75
+ *
76
+ * const {getMessage} = ThreadIframe.parent.import();
77
+ * const message = await getMessage(); // 'Hello, world!'
78
+ * ```
79
+ */
80
+ static export(iframe, exports, options) {
81
+ new ThreadIframe(iframe, {
82
+ ...options,
83
+ exports
84
+ });
85
+ }
86
+ /**
87
+ * Creates a thread from a `window.parent`, a reference to the parent window when rendering
88
+ * in a nested iframe.
89
+ *
90
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/parent
91
+ *
92
+ * @example
93
+ * import {ThreadIframe} from '@quilted/threads';
94
+ *
95
+ * const thread = ThreadIframe.parent();
96
+ * await thread.imports.sendMessage('Hello world!');
97
+ */
98
+ static parent = (() => Object.assign((options) => new ThreadNestedIframe(options), {
99
+ /**
100
+ * Starts a thread wrapped around a parent window, and returns the imports
101
+ * of the thread.
102
+ *
103
+ * @example
104
+ * ```ts
105
+ * import {ThreadIframe} from '@quilted/threads';
106
+ *
107
+ * const {getMessage} = ThreadIframe.parent.import();
108
+ * const message = await getMessage(); // 'Hello, world!'
109
+ *
110
+ * // In the parent window:
111
+ *
112
+ * import {ThreadIframe} from '@quilted/threads';
113
+ *
114
+ * ThreadIframe.export(iframe, {
115
+ * async getMessage() {
116
+ * return 'Hello, world!';
117
+ * },
118
+ * });
119
+ * ```
120
+ */
121
+ import: (options) => ThreadNestedIframe.import(options),
122
+ /**
123
+ * Starts a thread wrapped around a parent window, providing the second
124
+ * argument as the exports of the thread.
125
+ *
126
+ * @example
127
+ * ```ts
128
+ * import {ThreadIframe} from '@quilted/threads';
129
+ *
130
+ * ThreadIframe.parent.export({
131
+ * async getMessage() {
132
+ * return 'Hello, world!';
133
+ * },
134
+ * });
135
+ *
136
+ * // In the parent window:
137
+ *
138
+ * import {ThreadIframe} from '@quilted/threads';
139
+ *
140
+ * const {getMessage} = ThreadIframe.import(iframe);
141
+ * const message = await getMessage(); // 'Hello, world!'
142
+ * ```
143
+ */
144
+ export: (exports, options) => ThreadNestedIframe.export(exports, options)
145
+ }))();
146
+ constructor(iframe, { targetOrigin = "*", ...options } = {}) {
147
+ super(windowToThreadTarget(iframe.contentWindow, { targetOrigin }), options);
148
+ this.iframe = iframe;
149
+ }
150
+ };
151
+ //#endregion
152
+ export { ThreadIframe };
153
+
154
+ //# sourceMappingURL=ThreadIframe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadIframe.mjs","names":[],"sources":["../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadIframe.mjs"],"sourcesContent":["import { Thread } from '../Thread.mjs';\nimport { windowToThreadTarget } from './window/ThreadWindow.mjs';\nimport { ThreadNestedIframe } from './ThreadNestedIframe.mjs';\n\n/**\n * Creates a thread from an iframe element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\n *\n * @example\n * import {ThreadIframe} from '@quilted/threads';\n *\n * const iframe = document.querySelector('iframe#thread-iframe');\n * const thread = new ThreadIframe(iframe);\n * await thread.imports.sendMessage('Hello world!');\n */\nclass ThreadIframe extends Thread {\n /**\n * Creates a thread from an iframe element.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\n *\n * @example\n * import {ThreadIframe} from '@quilted/threads';\n *\n * const iframe = document.querySelector('iframe#thread-iframe');\n * const thread = ThreadIframe.from(iframe);\n * await thread.imports.sendMessage('Hello world!');\n */\n static from(iframe, options) {\n return new ThreadIframe(iframe, options);\n }\n\n /**\n * Starts a thread wrapped around an iframe element, and returns the imports\n * of the thread.\n *\n * @example\n * ```ts\n * import {ThreadIframe} from '@quilted/threads';\n *\n * const {getMessage} = ThreadIframe.import(iframe);\n * const message = await getMessage(); // 'Hello, world!'\n *\n * // In the nested window:\n *\n * import {ThreadIframe} from '@quilted/threads';\n *\n * ThreadIframe.parent.export({\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n * ```\n */\n static import(iframe, options) {\n return new ThreadIframe(iframe, options).imports;\n }\n\n /**\n * Starts a thread wrapped around an iframe element, providing the second\n * argument as the exports of the thread.\n *\n * @example\n * ```ts\n * import {ThreadIframe} from '@quilted/threads';\n *\n * ThreadIframe.export(iframe, {\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n *\n * // In the nested iframe:\n *\n * import {ThreadIframe} from '@quilted/threads';\n *\n * const {getMessage} = ThreadIframe.parent.import();\n * const message = await getMessage(); // 'Hello, world!'\n * ```\n */\n static export(iframe, exports, options) {\n new ThreadIframe(iframe, {\n ...options,\n exports\n });\n }\n\n /**\n * Creates a thread from a `window.parent`, a reference to the parent window when rendering\n * in a nested iframe.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/parent\n *\n * @example\n * import {ThreadIframe} from '@quilted/threads';\n *\n * const thread = ThreadIframe.parent();\n * await thread.imports.sendMessage('Hello world!');\n */\n static parent = (() => Object.assign(options => new ThreadNestedIframe(options), {\n /**\n * Starts a thread wrapped around a parent window, and returns the imports\n * of the thread.\n *\n * @example\n * ```ts\n * import {ThreadIframe} from '@quilted/threads';\n *\n * const {getMessage} = ThreadIframe.parent.import();\n * const message = await getMessage(); // 'Hello, world!'\n *\n * // In the parent window:\n *\n * import {ThreadIframe} from '@quilted/threads';\n *\n * ThreadIframe.export(iframe, {\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n * ```\n */\n import: options => ThreadNestedIframe.import(options),\n /**\n * Starts a thread wrapped around a parent window, providing the second\n * argument as the exports of the thread.\n *\n * @example\n * ```ts\n * import {ThreadIframe} from '@quilted/threads';\n *\n * ThreadIframe.parent.export({\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n *\n * // In the parent window:\n *\n * import {ThreadIframe} from '@quilted/threads';\n *\n * const {getMessage} = ThreadIframe.import(iframe);\n * const message = await getMessage(); // 'Hello, world!'\n * ```\n */\n export: (exports, options) => ThreadNestedIframe.export(exports, options)\n }))();\n constructor(iframe, {\n targetOrigin = '*',\n ...options\n } = {}) {\n super(windowToThreadTarget(iframe.contentWindow, {\n targetOrigin\n }), options);\n this.iframe = iframe;\n }\n}\n\nexport { ThreadIframe };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;AAgBA,IAAM,eAAN,MAAM,qBAAqB,OAAO;;;;;;;;;;;;;CAahC,OAAO,KAAK,QAAQ,SAAS;EAC3B,OAAO,IAAI,aAAa,QAAQ,OAAO;CACzC;;;;;;;;;;;;;;;;;;;;;;;CAwBA,OAAO,OAAO,QAAQ,SAAS;EAC7B,OAAO,IAAI,aAAa,QAAQ,OAAO,CAAC,CAAC;CAC3C;;;;;;;;;;;;;;;;;;;;;;;CAwBA,OAAO,OAAO,QAAQ,SAAS,SAAS;EACtC,IAAI,aAAa,QAAQ;GACvB,GAAG;GACH;EACF,CAAC;CACH;;;;;;;;;;;;;CAcA,OAAO,gBAAgB,OAAO,QAAO,YAAW,IAAI,mBAAmB,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAuB/E,SAAQ,YAAW,mBAAmB,OAAO,OAAO;;;;;;;;;;;;;;;;;;;;;;;EAuBpD,SAAS,SAAS,YAAY,mBAAmB,OAAO,SAAS,OAAO;CAC1E,CAAC,EAAA,CAAG;CACJ,YAAY,QAAQ,EAClB,eAAe,KACf,GAAG,YACD,CAAC,GAAG;EACN,MAAM,qBAAqB,OAAO,eAAe,EAC/C,aACF,CAAC,GAAG,OAAO;EACX,KAAK,SAAS;CAChB;AACF"}
@@ -0,0 +1,78 @@
1
+ import { Thread } from "../Thread.mjs";
2
+ import { nestedWindowToThreadTarget } from "./window/ThreadNestedWindow.mjs";
3
+ //#region ../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadNestedIframe.mjs
4
+ /**
5
+ * Creates a thread from within an iframe nested in a top-level document.
6
+ *
7
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
8
+ *
9
+ * @example
10
+ * import {ThreadNestedIframe} from '@quilted/threads';
11
+ *
12
+ * const thread = new ThreadNestedIframe();
13
+ * await thread.imports.sendMessage('Hello world!');
14
+ */
15
+ var ThreadNestedIframe = class ThreadNestedIframe extends Thread {
16
+ /**
17
+ * Starts a thread wrapped around a parent window, and returns the imports
18
+ * of the thread.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * import {ThreadNestedIframe} from '@quilted/threads';
23
+ *
24
+ * const {getMessage} = ThreadNestedIframe.import();
25
+ * const message = await getMessage(); // 'Hello, world!'
26
+ *
27
+ * // In the parent window:
28
+ *
29
+ * import {ThreadIframe} from '@quilted/threads';
30
+ *
31
+ * ThreadIframe.export(iframe, {
32
+ * async getMessage() {
33
+ * return 'Hello, world!';
34
+ * },
35
+ * });
36
+ * ```
37
+ */
38
+ static import(options) {
39
+ return new ThreadNestedIframe(options).imports;
40
+ }
41
+ /**
42
+ * Starts a thread wrapped around a parent window, providing the second
43
+ * argument as the exports of the thread.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * import {ThreadNestedIframe} from '@quilted/threads';
48
+ *
49
+ * ThreadNestedIframe.export({
50
+ * async getMessage() {
51
+ * return 'Hello, world!';
52
+ * },
53
+ * });
54
+ *
55
+ * // In the parent window:
56
+ *
57
+ * import {ThreadIframe} from '@quilted/threads';
58
+ *
59
+ * const {getMessage} = ThreadIframe.import(iframe);
60
+ * const message = await getMessage(); // 'Hello, world!'
61
+ * ```
62
+ */
63
+ static export(exports, options) {
64
+ new ThreadNestedIframe({
65
+ ...options,
66
+ exports
67
+ });
68
+ }
69
+ constructor({ parent = globalThis.parent, targetOrigin = "*", ...options } = {}) {
70
+ if (typeof self === "undefined" || parent == null) throw new Error("You are not inside an iframe, because there is no parent window.");
71
+ super(nestedWindowToThreadTarget(parent, { targetOrigin }), options);
72
+ this.parent = parent;
73
+ }
74
+ };
75
+ //#endregion
76
+ export { ThreadNestedIframe };
77
+
78
+ //# sourceMappingURL=ThreadNestedIframe.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadNestedIframe.mjs","names":[],"sources":["../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/ThreadNestedIframe.mjs"],"sourcesContent":["import { Thread } from '../Thread.mjs';\nimport { nestedWindowToThreadTarget } from './window/ThreadNestedWindow.mjs';\n\n/**\n * Creates a thread from within an iframe nested in a top-level document.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\n *\n * @example\n * import {ThreadNestedIframe} from '@quilted/threads';\n *\n * const thread = new ThreadNestedIframe();\n * await thread.imports.sendMessage('Hello world!');\n */\nclass ThreadNestedIframe extends Thread {\n /**\n * Starts a thread wrapped around a parent window, and returns the imports\n * of the thread.\n *\n * @example\n * ```ts\n * import {ThreadNestedIframe} from '@quilted/threads';\n *\n * const {getMessage} = ThreadNestedIframe.import();\n * const message = await getMessage(); // 'Hello, world!'\n *\n * // In the parent window:\n *\n * import {ThreadIframe} from '@quilted/threads';\n *\n * ThreadIframe.export(iframe, {\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n * ```\n */\n static import(options) {\n return new ThreadNestedIframe(options).imports;\n }\n\n /**\n * Starts a thread wrapped around a parent window, providing the second\n * argument as the exports of the thread.\n *\n * @example\n * ```ts\n * import {ThreadNestedIframe} from '@quilted/threads';\n *\n * ThreadNestedIframe.export({\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n *\n * // In the parent window:\n *\n * import {ThreadIframe} from '@quilted/threads';\n *\n * const {getMessage} = ThreadIframe.import(iframe);\n * const message = await getMessage(); // 'Hello, world!'\n * ```\n */\n static export(exports, options) {\n new ThreadNestedIframe({\n ...options,\n exports\n });\n }\n constructor({\n parent = globalThis.parent,\n targetOrigin = '*',\n ...options\n } = {}) {\n if (typeof self === 'undefined' || parent == null) {\n throw new Error('You are not inside an iframe, because there is no parent window.');\n }\n super(nestedWindowToThreadTarget(parent, {\n targetOrigin\n }), options);\n this.parent = parent;\n }\n}\n\nexport { ThreadNestedIframe };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;AAcA,IAAM,qBAAN,MAAM,2BAA2B,OAAO;;;;;;;;;;;;;;;;;;;;;;;CAuBtC,OAAO,OAAO,SAAS;EACrB,OAAO,IAAI,mBAAmB,OAAO,CAAC,CAAC;CACzC;;;;;;;;;;;;;;;;;;;;;;;CAwBA,OAAO,OAAO,SAAS,SAAS;EAC9B,IAAI,mBAAmB;GACrB,GAAG;GACH;EACF,CAAC;CACH;CACA,YAAY,EACV,SAAS,WAAW,QACpB,eAAe,KACf,GAAG,YACD,CAAC,GAAG;EACN,IAAI,OAAO,SAAS,eAAe,UAAU,MAC3C,MAAM,IAAI,MAAM,kEAAkE;EAEpF,MAAM,2BAA2B,QAAQ,EACvC,aACF,CAAC,GAAG,OAAO;EACX,KAAK,SAAS;CAChB;AACF"}
@@ -0,0 +1,120 @@
1
+ import { Thread } from "../../Thread.mjs";
2
+ import { RESPONSE_MESSAGE } from "./shared.mjs";
3
+ //#region ../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadNestedWindow.mjs
4
+ /**
5
+ * Creates a thread from within a window created by a parent document (for example,
6
+ * an `iframe` or popup window).
7
+ *
8
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/opener
9
+ *
10
+ * @example
11
+ * import {ThreadNestedWindow} from '@quilted/threads';
12
+ *
13
+ * // Inside a document opened as a popup window
14
+ * const thread = new ThreadNestedWindow(window.opener);
15
+ * await thread.imports.sendMessage('Hello world!');
16
+ */
17
+ var ThreadNestedWindow = class ThreadNestedWindow extends Thread {
18
+ /**
19
+ * Creates a thread from within a window created by a parent document (for example,
20
+ * an `iframe` or popup window).
21
+ *
22
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/opener
23
+ *
24
+ * @example
25
+ * import {ThreadNestedWindow} from '@quilted/threads';
26
+ *
27
+ * // Inside a document opened as a popup window
28
+ * const thread = ThreadNestedWindow.from(window.opener);
29
+ * await thread.imports.sendMessage('Hello world!');
30
+ */
31
+ static from(window, options) {
32
+ return new ThreadNestedWindow(window, options);
33
+ }
34
+ /**
35
+ * Starts a thread wrapped around a nested `window` object, and returns the imports
36
+ * of the thread.
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * import {ThreadNestedWindow} from '@quilted/threads';
41
+ *
42
+ * const {getMessage} = ThreadNestedWindow.import(window.opener);
43
+ * const message = await getMessage(); // 'Hello, world!'
44
+ *
45
+ * // In the parent window:
46
+ *
47
+ * import {ThreadWindow} from '@quilted/threads';
48
+ *
49
+ * ThreadWindow.export(window, {
50
+ * async getMessage() {
51
+ * return 'Hello, world!';
52
+ * },
53
+ * });
54
+ * ```
55
+ */
56
+ static import(window, options) {
57
+ return new ThreadNestedWindow(window, options).imports;
58
+ }
59
+ /**
60
+ * Starts a thread wrapped around a nested `window` object, providing the second
61
+ * argument as the exports of the thread.
62
+ *
63
+ * @example
64
+ * ```ts
65
+ * import {ThreadNestedWindow} from '@quilted/threads';
66
+ *
67
+ * ThreadNestedWindow.export(window.opener, {
68
+ * async getMessage() {
69
+ * return 'Hello, world!';
70
+ * },
71
+ * });
72
+ *
73
+ * // In the parent window:
74
+ *
75
+ * import {ThreadWindow} from '@quilted/threads';
76
+ *
77
+ * const {getMessage} = ThreadWindow.import(window);
78
+ * const message = await getMessage(); // 'Hello, world!'
79
+ * ```
80
+ */
81
+ static export(window, exports, options) {
82
+ new ThreadNestedWindow(window, {
83
+ ...options,
84
+ exports
85
+ });
86
+ }
87
+ constructor(parent, { targetOrigin = "*", ...options } = {}) {
88
+ super(nestedWindowToThreadTarget(parent, { targetOrigin }), options);
89
+ this.parent = parent;
90
+ }
91
+ };
92
+ function nestedWindowToThreadTarget(parent, { targetOrigin = "*" } = {}) {
93
+ const ready = () => {
94
+ const respond = () => parent.postMessage(RESPONSE_MESSAGE, targetOrigin);
95
+ self.addEventListener("message", ({ data, source }) => {
96
+ if (source !== parent) return;
97
+ if (data === "quilt.threads.ping") respond();
98
+ });
99
+ respond();
100
+ };
101
+ if (document.readyState === "complete") ready();
102
+ else document.addEventListener("readystatechange", () => {
103
+ if (document.readyState === "complete") ready();
104
+ });
105
+ return {
106
+ send(message, transfer) {
107
+ return parent.postMessage(message, targetOrigin, transfer);
108
+ },
109
+ listen(listen, { signal }) {
110
+ self.addEventListener("message", (event) => {
111
+ if (event.data === "quilt.threads.ping") return;
112
+ listen(event.data);
113
+ }, { signal });
114
+ }
115
+ };
116
+ }
117
+ //#endregion
118
+ export { ThreadNestedWindow, nestedWindowToThreadTarget };
119
+
120
+ //# sourceMappingURL=ThreadNestedWindow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadNestedWindow.mjs","names":[],"sources":["../../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadNestedWindow.mjs"],"sourcesContent":["import { Thread } from '../../Thread.mjs';\nimport { CHECK_MESSAGE, RESPONSE_MESSAGE } from './shared.mjs';\n\n/**\n * Creates a thread from within a window created by a parent document (for example,\n * an `iframe` or popup window).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/opener\n *\n * @example\n * import {ThreadNestedWindow} from '@quilted/threads';\n *\n * // Inside a document opened as a popup window\n * const thread = new ThreadNestedWindow(window.opener);\n * await thread.imports.sendMessage('Hello world!');\n */\nclass ThreadNestedWindow extends Thread {\n /**\n * Creates a thread from within a window created by a parent document (for example,\n * an `iframe` or popup window).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/opener\n *\n * @example\n * import {ThreadNestedWindow} from '@quilted/threads';\n *\n * // Inside a document opened as a popup window\n * const thread = ThreadNestedWindow.from(window.opener);\n * await thread.imports.sendMessage('Hello world!');\n */\n static from(window, options) {\n return new ThreadNestedWindow(window, options);\n }\n\n /**\n * Starts a thread wrapped around a nested `window` object, and returns the imports\n * of the thread.\n *\n * @example\n * ```ts\n * import {ThreadNestedWindow} from '@quilted/threads';\n *\n * const {getMessage} = ThreadNestedWindow.import(window.opener);\n * const message = await getMessage(); // 'Hello, world!'\n *\n * // In the parent window:\n *\n * import {ThreadWindow} from '@quilted/threads';\n *\n * ThreadWindow.export(window, {\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n * ```\n */\n static import(window, options) {\n return new ThreadNestedWindow(window, options).imports;\n }\n\n /**\n * Starts a thread wrapped around a nested `window` object, providing the second\n * argument as the exports of the thread.\n *\n * @example\n * ```ts\n * import {ThreadNestedWindow} from '@quilted/threads';\n *\n * ThreadNestedWindow.export(window.opener, {\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n *\n * // In the parent window:\n *\n * import {ThreadWindow} from '@quilted/threads';\n *\n * const {getMessage} = ThreadWindow.import(window);\n * const message = await getMessage(); // 'Hello, world!'\n * ```\n */\n static export(window, exports, options) {\n new ThreadNestedWindow(window, {\n ...options,\n exports\n });\n }\n constructor(parent, {\n targetOrigin = '*',\n ...options\n } = {}) {\n super(nestedWindowToThreadTarget(parent, {\n targetOrigin\n }), options);\n this.parent = parent;\n }\n}\nfunction nestedWindowToThreadTarget(parent, {\n targetOrigin = '*'\n} = {}) {\n const ready = () => {\n const respond = () => parent.postMessage(RESPONSE_MESSAGE, targetOrigin);\n self.addEventListener('message', ({\n data,\n source\n }) => {\n if (source !== parent) return;\n if (data === CHECK_MESSAGE) respond();\n });\n respond();\n };\n if (document.readyState === 'complete') {\n ready();\n } else {\n document.addEventListener('readystatechange', () => {\n if (document.readyState === 'complete') {\n ready();\n }\n });\n }\n return {\n send(message, transfer) {\n return parent.postMessage(message, targetOrigin, transfer);\n },\n listen(listen, {\n signal\n }) {\n self.addEventListener('message', event => {\n if (event.data === CHECK_MESSAGE) return;\n listen(event.data);\n }, {\n signal\n });\n }\n };\n}\n\nexport { ThreadNestedWindow, nestedWindowToThreadTarget };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;AAgBA,IAAM,qBAAN,MAAM,2BAA2B,OAAO;;;;;;;;;;;;;;CActC,OAAO,KAAK,QAAQ,SAAS;EAC3B,OAAO,IAAI,mBAAmB,QAAQ,OAAO;CAC/C;;;;;;;;;;;;;;;;;;;;;;;CAwBA,OAAO,OAAO,QAAQ,SAAS;EAC7B,OAAO,IAAI,mBAAmB,QAAQ,OAAO,CAAC,CAAC;CACjD;;;;;;;;;;;;;;;;;;;;;;;CAwBA,OAAO,OAAO,QAAQ,SAAS,SAAS;EACtC,IAAI,mBAAmB,QAAQ;GAC7B,GAAG;GACH;EACF,CAAC;CACH;CACA,YAAY,QAAQ,EAClB,eAAe,KACf,GAAG,YACD,CAAC,GAAG;EACN,MAAM,2BAA2B,QAAQ,EACvC,aACF,CAAC,GAAG,OAAO;EACX,KAAK,SAAS;CAChB;AACF;AACA,SAAS,2BAA2B,QAAQ,EAC1C,eAAe,QACb,CAAC,GAAG;CACN,MAAM,cAAc;EAClB,MAAM,gBAAgB,OAAO,YAAY,kBAAkB,YAAY;EACvE,KAAK,iBAAiB,YAAY,EAChC,MACA,aACI;GACJ,IAAI,WAAW,QAAQ;GACvB,IAAI,SAAA,sBAAwB,QAAQ;EACtC,CAAC;EACD,QAAQ;CACV;CACA,IAAI,SAAS,eAAe,YAC1B,MAAM;MAEN,SAAS,iBAAiB,0BAA0B;EAClD,IAAI,SAAS,eAAe,YAC1B,MAAM;CAEV,CAAC;CAEH,OAAO;EACL,KAAK,SAAS,UAAU;GACtB,OAAO,OAAO,YAAY,SAAS,cAAc,QAAQ;EAC3D;EACA,OAAO,QAAQ,EACb,UACC;GACD,KAAK,iBAAiB,YAAW,UAAS;IACxC,IAAI,MAAM,SAAA,sBAAwB;IAClC,OAAO,MAAM,IAAI;GACnB,GAAG,EACD,OACF,CAAC;EACH;CACF;AACF"}
@@ -0,0 +1,192 @@
1
+ import { Thread } from "../../Thread.mjs";
2
+ import { CHECK_MESSAGE } from "./shared.mjs";
3
+ import { ThreadNestedWindow } from "./ThreadNestedWindow.mjs";
4
+ //#region ../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadWindow.mjs
5
+ /**
6
+ * Creates a thread from a `Window` created by this environment.
7
+ *
8
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
9
+ *
10
+ * @example
11
+ * import {ThreadWindow} from '@quilted/threads';
12
+ *
13
+ * const popup = window.open('https://my-app.com/popup', 'MyAppPopup', 'popup');
14
+ * const thread = new ThreadWindow(popup);
15
+ * await thread.imports.sendMessage('Hello world!');
16
+ */
17
+ var ThreadWindow = class ThreadWindow extends Thread {
18
+ /**
19
+ * Creates a thread from a `Window` created by this environment.
20
+ *
21
+ * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe
22
+ *
23
+ * @example
24
+ * import {ThreadWindow} from '@quilted/threads';
25
+ *
26
+ * const popup = window.open('https://my-app.com/popup', 'MyAppPopup', 'popup');
27
+ * const thread = ThreadWindow.from(popup);
28
+ * await thread.imports.sendMessage('Hello world!');
29
+ */
30
+ static from(window, options) {
31
+ return new ThreadWindow(window, options);
32
+ }
33
+ /**
34
+ * Starts a thread wrapped around a `window` object, and returns the imports
35
+ * of the thread.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * import {ThreadWindow} from '@quilted/threads';
40
+ *
41
+ * const {getMessage} = ThreadWindow.import(window);
42
+ * const message = await getMessage(); // 'Hello, world!'
43
+ *
44
+ * // In the nested window:
45
+ *
46
+ * import {ThreadNestedWindow} from '@quilted/threads';
47
+ *
48
+ * ThreadNestedWindow.export(window.opener, {
49
+ * async getMessage() {
50
+ * return 'Hello, world!';
51
+ * },
52
+ * });
53
+ * ```
54
+ */
55
+ static import(window, options) {
56
+ return new ThreadWindow(window, options).imports;
57
+ }
58
+ /**
59
+ * Starts a thread wrapped around a `window` object, providing the second
60
+ * argument as the exports of the thread.
61
+ *
62
+ * @example
63
+ * ```ts
64
+ * import {ThreadWindow} from '@quilted/threads';
65
+ *
66
+ * ThreadWindow.export(window, {
67
+ * async getMessage() {
68
+ * return 'Hello, world!';
69
+ * },
70
+ * });
71
+ *
72
+ * // In the nested window:
73
+ *
74
+ * import {ThreadNestedWindow} from '@quilted/threads';
75
+ *
76
+ * const {getMessage} = ThreadNestedWindow.import(window.opener);
77
+ * const message = await getMessage(); // 'Hello, world!'
78
+ * ```
79
+ */
80
+ static export(window, exports, options) {
81
+ new ThreadWindow(window, {
82
+ ...options,
83
+ exports
84
+ });
85
+ }
86
+ /**
87
+ * Creates a thread from within a window created by a parent document (for example,
88
+ * an `iframe` or popup window).
89
+ *
90
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/opener
91
+ *
92
+ * @example
93
+ * import {ThreadWindow} from '@quilted/threads';
94
+ *
95
+ * // Inside a document opened as a popup window
96
+ * const thread = ThreadWindow.opener();
97
+ * await thread.imports.sendMessage('Hello world!');
98
+ */
99
+ static opener = (() => Object.assign((options) => ThreadNestedWindow.from(window.opener, options), {
100
+ /**
101
+ * Starts a thread wrapped around a nested `window` object, and returns the imports
102
+ * of the thread.
103
+ *
104
+ * @example
105
+ * ```ts
106
+ * import {ThreadWindow} from '@quilted/threads';
107
+ *
108
+ * const {getMessage} = ThreadWindow.opener.import();
109
+ * const message = await getMessage(); // 'Hello, world!'
110
+ *
111
+ * // In the parent window:
112
+ *
113
+ * import {ThreadWindow} from '@quilted/threads';
114
+ *
115
+ * ThreadWindow.export(window, {
116
+ * async getMessage() {
117
+ * return 'Hello, world!';
118
+ * },
119
+ * });
120
+ * ```
121
+ */
122
+ import: (options) => ThreadNestedWindow.import(window.opener, options),
123
+ /**
124
+ * Starts a thread wrapped around a nested `window` object, providing the second
125
+ * argument as the exports of the thread.
126
+ *
127
+ * @example
128
+ * ```ts
129
+ * import {ThreadWindow} from '@quilted/threads';
130
+ *
131
+ * ThreadWindow.opener.export({
132
+ * async getMessage() {
133
+ * return 'Hello, world!';
134
+ * },
135
+ * });
136
+ *
137
+ * // In the parent window:
138
+ *
139
+ * import {ThreadWindow} from '@quilted/threads';
140
+ *
141
+ * const {getMessage} = ThreadWindow.import(window);
142
+ * const message = await getMessage(); // 'Hello, world!'
143
+ * ```
144
+ */
145
+ export: (exports, options) => ThreadNestedWindow.export(window.opener, {
146
+ ...options,
147
+ exports
148
+ })
149
+ }))();
150
+ constructor(window, { targetOrigin = "*", ...options } = {}) {
151
+ super(windowToThreadTarget(window, { targetOrigin }), options);
152
+ this.window = window;
153
+ }
154
+ };
155
+ function windowToThreadTarget(window, { targetOrigin = "*" } = {}) {
156
+ let connected = false;
157
+ const sendMessage = function send(message, transfer) {
158
+ window.postMessage(message, targetOrigin, transfer);
159
+ };
160
+ const connectedPromise = new Promise((resolve) => {
161
+ const abort = new AbortController();
162
+ globalThis.window.addEventListener("message", (event) => {
163
+ if (event.source !== window) return;
164
+ if (event.data === "quilt.threads.pong") {
165
+ connected = true;
166
+ abort.abort();
167
+ resolve();
168
+ }
169
+ }, { signal: abort.signal });
170
+ abort.signal.addEventListener("abort", () => resolve(), { once: true });
171
+ sendMessage(CHECK_MESSAGE);
172
+ });
173
+ return {
174
+ send(message, transfer) {
175
+ if (!connected) return connectedPromise.then(() => {
176
+ if (connected) return sendMessage(message, transfer);
177
+ });
178
+ return sendMessage(message, transfer);
179
+ },
180
+ listen(listen, { signal }) {
181
+ self.addEventListener("message", (event) => {
182
+ if (event.source !== window) return;
183
+ if (event.data === "quilt.threads.pong") return;
184
+ listen(event.data);
185
+ }, { signal });
186
+ }
187
+ };
188
+ }
189
+ //#endregion
190
+ export { ThreadWindow, windowToThreadTarget };
191
+
192
+ //# sourceMappingURL=ThreadWindow.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThreadWindow.mjs","names":[],"sources":["../../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/ThreadWindow.mjs"],"sourcesContent":["import { Thread } from '../../Thread.mjs';\nimport { RESPONSE_MESSAGE, CHECK_MESSAGE } from './shared.mjs';\nimport { ThreadNestedWindow } from './ThreadNestedWindow.mjs';\n\n/**\n * Creates a thread from a `Window` created by this environment.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\n *\n * @example\n * import {ThreadWindow} from '@quilted/threads';\n *\n * const popup = window.open('https://my-app.com/popup', 'MyAppPopup', 'popup');\n * const thread = new ThreadWindow(popup);\n * await thread.imports.sendMessage('Hello world!');\n */\nclass ThreadWindow extends Thread {\n /**\n * Creates a thread from a `Window` created by this environment.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe\n *\n * @example\n * import {ThreadWindow} from '@quilted/threads';\n *\n * const popup = window.open('https://my-app.com/popup', 'MyAppPopup', 'popup');\n * const thread = ThreadWindow.from(popup);\n * await thread.imports.sendMessage('Hello world!');\n */\n static from(window, options) {\n return new ThreadWindow(window, options);\n }\n\n /**\n * Starts a thread wrapped around a `window` object, and returns the imports\n * of the thread.\n *\n * @example\n * ```ts\n * import {ThreadWindow} from '@quilted/threads';\n *\n * const {getMessage} = ThreadWindow.import(window);\n * const message = await getMessage(); // 'Hello, world!'\n *\n * // In the nested window:\n *\n * import {ThreadNestedWindow} from '@quilted/threads';\n *\n * ThreadNestedWindow.export(window.opener, {\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n * ```\n */\n static import(window, options) {\n return new ThreadWindow(window, options).imports;\n }\n\n /**\n * Starts a thread wrapped around a `window` object, providing the second\n * argument as the exports of the thread.\n *\n * @example\n * ```ts\n * import {ThreadWindow} from '@quilted/threads';\n *\n * ThreadWindow.export(window, {\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n *\n * // In the nested window:\n *\n * import {ThreadNestedWindow} from '@quilted/threads';\n *\n * const {getMessage} = ThreadNestedWindow.import(window.opener);\n * const message = await getMessage(); // 'Hello, world!'\n * ```\n */\n static export(window, exports, options) {\n new ThreadWindow(window, {\n ...options,\n exports\n });\n }\n\n /**\n * Creates a thread from within a window created by a parent document (for example,\n * an `iframe` or popup window).\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Window/opener\n *\n * @example\n * import {ThreadWindow} from '@quilted/threads';\n *\n * // Inside a document opened as a popup window\n * const thread = ThreadWindow.opener();\n * await thread.imports.sendMessage('Hello world!');\n */\n static opener = (() => Object.assign(options => ThreadNestedWindow.from(window.opener, options), {\n /**\n * Starts a thread wrapped around a nested `window` object, and returns the imports\n * of the thread.\n *\n * @example\n * ```ts\n * import {ThreadWindow} from '@quilted/threads';\n *\n * const {getMessage} = ThreadWindow.opener.import();\n * const message = await getMessage(); // 'Hello, world!'\n *\n * // In the parent window:\n *\n * import {ThreadWindow} from '@quilted/threads';\n *\n * ThreadWindow.export(window, {\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n * ```\n */\n import: options => ThreadNestedWindow.import(window.opener, options),\n /**\n * Starts a thread wrapped around a nested `window` object, providing the second\n * argument as the exports of the thread.\n *\n * @example\n * ```ts\n * import {ThreadWindow} from '@quilted/threads';\n *\n * ThreadWindow.opener.export({\n * async getMessage() {\n * return 'Hello, world!';\n * },\n * });\n *\n * // In the parent window:\n *\n * import {ThreadWindow} from '@quilted/threads';\n *\n * const {getMessage} = ThreadWindow.import(window);\n * const message = await getMessage(); // 'Hello, world!'\n * ```\n */\n export: (exports, options) => ThreadNestedWindow.export(window.opener, {\n ...options,\n exports\n })\n }))();\n constructor(window, {\n targetOrigin = '*',\n ...options\n } = {}) {\n super(windowToThreadTarget(window, {\n targetOrigin\n }), options);\n this.window = window;\n }\n}\nfunction windowToThreadTarget(window, {\n targetOrigin = '*'\n} = {}) {\n let connected = false;\n const sendMessage = function send(message, transfer) {\n window.postMessage(message, targetOrigin, transfer);\n };\n const connectedPromise = new Promise(resolve => {\n const abort = new AbortController();\n globalThis.window.addEventListener('message', event => {\n if (event.source !== window) return;\n if (event.data === RESPONSE_MESSAGE) {\n connected = true;\n abort.abort();\n resolve();\n }\n }, {\n signal: abort.signal\n });\n abort.signal.addEventListener('abort', () => resolve(), {\n once: true\n });\n sendMessage(CHECK_MESSAGE);\n });\n return {\n send(message, transfer) {\n if (!connected) {\n return connectedPromise.then(() => {\n if (connected) return sendMessage(message, transfer);\n });\n }\n return sendMessage(message, transfer);\n },\n listen(listen, {\n signal\n }) {\n self.addEventListener('message', event => {\n if (event.source !== window) return;\n if (event.data === RESPONSE_MESSAGE) return;\n listen(event.data);\n }, {\n signal\n });\n }\n };\n}\n\nexport { ThreadWindow, windowToThreadTarget };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;;;;;;;;;AAgBA,IAAM,eAAN,MAAM,qBAAqB,OAAO;;;;;;;;;;;;;CAahC,OAAO,KAAK,QAAQ,SAAS;EAC3B,OAAO,IAAI,aAAa,QAAQ,OAAO;CACzC;;;;;;;;;;;;;;;;;;;;;;;CAwBA,OAAO,OAAO,QAAQ,SAAS;EAC7B,OAAO,IAAI,aAAa,QAAQ,OAAO,CAAC,CAAC;CAC3C;;;;;;;;;;;;;;;;;;;;;;;CAwBA,OAAO,OAAO,QAAQ,SAAS,SAAS;EACtC,IAAI,aAAa,QAAQ;GACvB,GAAG;GACH;EACF,CAAC;CACH;;;;;;;;;;;;;;CAeA,OAAO,gBAAgB,OAAO,QAAO,YAAW,mBAAmB,KAAK,OAAO,QAAQ,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;EAuB/F,SAAQ,YAAW,mBAAmB,OAAO,OAAO,QAAQ,OAAO;;;;;;;;;;;;;;;;;;;;;;;EAuBnE,SAAS,SAAS,YAAY,mBAAmB,OAAO,OAAO,QAAQ;GACrE,GAAG;GACH;EACF,CAAC;CACH,CAAC,EAAA,CAAG;CACJ,YAAY,QAAQ,EAClB,eAAe,KACf,GAAG,YACD,CAAC,GAAG;EACN,MAAM,qBAAqB,QAAQ,EACjC,aACF,CAAC,GAAG,OAAO;EACX,KAAK,SAAS;CAChB;AACF;AACA,SAAS,qBAAqB,QAAQ,EACpC,eAAe,QACb,CAAC,GAAG;CACN,IAAI,YAAY;CAChB,MAAM,cAAc,SAAS,KAAK,SAAS,UAAU;EACnD,OAAO,YAAY,SAAS,cAAc,QAAQ;CACpD;CACA,MAAM,mBAAmB,IAAI,SAAQ,YAAW;EAC9C,MAAM,QAAQ,IAAI,gBAAgB;EAClC,WAAW,OAAO,iBAAiB,YAAW,UAAS;GACrD,IAAI,MAAM,WAAW,QAAQ;GAC7B,IAAI,MAAM,SAAA,sBAA2B;IACnC,YAAY;IACZ,MAAM,MAAM;IACZ,QAAQ;GACV;EACF,GAAG,EACD,QAAQ,MAAM,OAChB,CAAC;EACD,MAAM,OAAO,iBAAiB,eAAe,QAAQ,GAAG,EACtD,MAAM,KACR,CAAC;EACD,YAAY,aAAa;CAC3B,CAAC;CACD,OAAO;EACL,KAAK,SAAS,UAAU;GACtB,IAAI,CAAC,WACH,OAAO,iBAAiB,WAAW;IACjC,IAAI,WAAW,OAAO,YAAY,SAAS,QAAQ;GACrD,CAAC;GAEH,OAAO,YAAY,SAAS,QAAQ;EACtC;EACA,OAAO,QAAQ,EACb,UACC;GACD,KAAK,iBAAiB,YAAW,UAAS;IACxC,IAAI,MAAM,WAAW,QAAQ;IAC7B,IAAI,MAAM,SAAA,sBAA2B;IACrC,OAAO,MAAM,IAAI;GACnB,GAAG,EACD,OACF,CAAC;EACH;CACF;AACF"}
@@ -0,0 +1,7 @@
1
+ //#region ../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/shared.mjs
2
+ var CHECK_MESSAGE = "quilt.threads.ping";
3
+ var RESPONSE_MESSAGE = "quilt.threads.pong";
4
+ //#endregion
5
+ export { CHECK_MESSAGE, RESPONSE_MESSAGE };
6
+
7
+ //# sourceMappingURL=shared.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.mjs","names":[],"sources":["../../../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/threads/window/shared.mjs"],"sourcesContent":["const CHECK_MESSAGE = 'quilt.threads.ping';\nconst RESPONSE_MESSAGE = 'quilt.threads.pong';\n\nexport { CHECK_MESSAGE, RESPONSE_MESSAGE };\n"],"x_google_ignoreList":[0],"mappings":";AAAA,IAAM,gBAAgB;AACtB,IAAM,mBAAmB"}
@@ -0,0 +1,16 @@
1
+ import { TRANSFERABLE } from "./constants.mjs";
2
+ //#region ../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/transfer.mjs
3
+ /**
4
+ * Marks the value as being transferable between threads. The memory for this object
5
+ * will be moved to the target thread once the object is sent.
6
+ *
7
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects
8
+ */
9
+ function markAsTransferable(value) {
10
+ Object.assign(value, { [TRANSFERABLE]: true });
11
+ return value;
12
+ }
13
+ //#endregion
14
+ export { markAsTransferable };
15
+
16
+ //# sourceMappingURL=transfer.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transfer.mjs","names":[],"sources":["../../../../../../../../../../../../node_modules/.pnpm/@quilted+threads@3.3.1_patch_hash=df15ead5d86def314ee16ab6a48f9e4faa765b52aa161b10d2848_aa11bff1669c76d0bae25976909ea4eb/node_modules/@quilted/threads/build/esm/transfer.mjs"],"sourcesContent":["import { TRANSFERABLE } from './constants.mjs';\n\n/**\n * Marks the value as being transferable between threads. The memory for this object\n * will be moved to the target thread once the object is sent.\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Transferable_objects\n */\nfunction markAsTransferable(value) {\n Object.assign(value, {\n [TRANSFERABLE]: true\n });\n return value;\n}\n\nexport { markAsTransferable };\n"],"x_google_ignoreList":[0],"mappings":";;;;;;;;AAQA,SAAS,mBAAmB,OAAO;CACjC,OAAO,OAAO,OAAO,GAClB,eAAe,KAClB,CAAC;CACD,OAAO;AACT"}