@dynamic-labs/message-transport 0.0.0-exp20240808.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/CHANGELOG.md +3746 -0
  2. package/LICENSE +21 -0
  3. package/README.md +3 -0
  4. package/_virtual/_tslib.cjs +49 -0
  5. package/_virtual/_tslib.js +44 -0
  6. package/package.json +33 -0
  7. package/src/index.cjs +32 -0
  8. package/src/index.d.ts +8 -0
  9. package/src/index.js +13 -0
  10. package/src/messageTransport/decorators/applyDefaultMessageOrigin/applyDefaultMessageOrigin.cjs +12 -0
  11. package/src/messageTransport/decorators/applyDefaultMessageOrigin/applyDefaultMessageOrigin.d.ts +15 -0
  12. package/src/messageTransport/decorators/applyDefaultMessageOrigin/applyDefaultMessageOrigin.js +8 -0
  13. package/src/messageTransport/decorators/applyDefaultMessageOrigin/index.d.ts +1 -0
  14. package/src/messageTransport/decorators/index.d.ts +3 -0
  15. package/src/messageTransport/decorators/makeWaitForInitEvent/index.d.ts +1 -0
  16. package/src/messageTransport/decorators/makeWaitForInitEvent/makeWaitForInitEvent.cjs +35 -0
  17. package/src/messageTransport/decorators/makeWaitForInitEvent/makeWaitForInitEvent.d.ts +25 -0
  18. package/src/messageTransport/decorators/makeWaitForInitEvent/makeWaitForInitEvent.js +31 -0
  19. package/src/messageTransport/decorators/makeWaitForUnblock/index.d.ts +1 -0
  20. package/src/messageTransport/decorators/makeWaitForUnblock/makeWaitForUnblock.cjs +53 -0
  21. package/src/messageTransport/decorators/makeWaitForUnblock/makeWaitForUnblock.d.ts +23 -0
  22. package/src/messageTransport/decorators/makeWaitForUnblock/makeWaitForUnblock.js +49 -0
  23. package/src/messageTransport/index.d.ts +2 -0
  24. package/src/messageTransport/messageTransport.cjs +16 -0
  25. package/src/messageTransport/messageTransport.d.ts +44 -0
  26. package/src/messageTransport/messageTransport.js +12 -0
  27. package/src/messageTypes/AuthModuleMessages.d.ts +8 -0
  28. package/src/messageTypes/ConsoleMessages.d.ts +11 -0
  29. package/src/messageTypes/EmbeddedWalletsModuleMessages.d.ts +8 -0
  30. package/src/messageTypes/EthMessages.d.ts +13 -0
  31. package/src/messageTypes/ExternalAuthMessages.d.ts +16 -0
  32. package/src/messageTypes/FetchMessages.d.ts +8 -0
  33. package/src/messageTypes/NetworksModuleMessages.d.ts +5 -0
  34. package/src/messageTypes/OtpMessages.d.ts +17 -0
  35. package/src/messageTypes/PasskeyMessages.d.ts +32 -0
  36. package/src/messageTypes/PlatformServiceMessages.d.ts +17 -0
  37. package/src/messageTypes/SdkModuleMessages.cjs +9 -0
  38. package/src/messageTypes/SdkModuleMessages.d.ts +25 -0
  39. package/src/messageTypes/SdkModuleMessages.js +5 -0
  40. package/src/messageTypes/SocialAuthModuleMessages.d.ts +17 -0
  41. package/src/messageTypes/SolanaMessages.d.ts +42 -0
  42. package/src/messageTypes/UserInterfaceModuleMessages.d.ts +8 -0
  43. package/src/messageTypes/WalletsModuleMessages.d.ts +30 -0
  44. package/src/messageTypes/WebViewVisibilityMessages.d.ts +3 -0
  45. package/src/messageTypes/index.d.ts +16 -0
  46. package/src/requestChannel/index.d.ts +1 -0
  47. package/src/requestChannel/requestChannel.cjs +121 -0
  48. package/src/requestChannel/requestChannel.d.ts +55 -0
  49. package/src/requestChannel/requestChannel.js +115 -0
  50. package/src/store/createEventEmitterForMessages/createEventEmitterForMessages.cjs +24 -0
  51. package/src/store/createEventEmitterForMessages/createEventEmitterForMessages.d.ts +22 -0
  52. package/src/store/createEventEmitterForMessages/createEventEmitterForMessages.js +16 -0
  53. package/src/store/createEventEmitterForMessages/index.d.ts +1 -0
  54. package/src/store/index.d.ts +3 -0
  55. package/src/store/store.cjs +59 -0
  56. package/src/store/store.d.ts +8 -0
  57. package/src/store/store.js +51 -0
  58. package/src/store/storeSetter/index.d.ts +1 -0
  59. package/src/store/storeSetter/storeSetter.cjs +23 -0
  60. package/src/store/storeSetter/storeSetter.d.ts +8 -0
  61. package/src/store/storeSetter/storeSetter.js +19 -0
  62. package/src/store/types.d.ts +53 -0
  63. package/src/utils/isSerializedError/index.d.ts +1 -0
  64. package/src/utils/isSerializedError/isSerializedError.cjs +14 -0
  65. package/src/utils/isSerializedError/isSerializedError.d.ts +2 -0
  66. package/src/utils/isSerializedError/isSerializedError.js +10 -0
  67. package/src/utils/parseErrorFromTransport/index.d.ts +1 -0
  68. package/src/utils/parseErrorFromTransport/parseErrorFromTransport.cjs +54 -0
  69. package/src/utils/parseErrorFromTransport/parseErrorFromTransport.d.ts +11 -0
  70. package/src/utils/parseErrorFromTransport/parseErrorFromTransport.js +50 -0
  71. package/src/utils/parseMessageTransportData/index.d.ts +1 -0
  72. package/src/utils/parseMessageTransportData/parseMessageTransportData.cjs +27 -0
  73. package/src/utils/parseMessageTransportData/parseMessageTransportData.d.ts +2 -0
  74. package/src/utils/parseMessageTransportData/parseMessageTransportData.js +23 -0
  75. package/src/utils/serializeErrorForTransport/index.d.ts +1 -0
  76. package/src/utils/serializeErrorForTransport/serializeErrorForTransport.cjs +33 -0
  77. package/src/utils/serializeErrorForTransport/serializeErrorForTransport.d.ts +19 -0
  78. package/src/utils/serializeErrorForTransport/serializeErrorForTransport.js +29 -0
@@ -0,0 +1,59 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var EventEmitter = require('eventemitter3');
7
+ var reactivity = require('@vue/reactivity');
8
+ var requestChannel = require('../requestChannel/requestChannel.cjs');
9
+
10
+ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
11
+
12
+ var EventEmitter__default = /*#__PURE__*/_interopDefaultLegacy(EventEmitter);
13
+
14
+ const createStore = ({ initialState, key, messageTransport, }) => {
15
+ // We don't know what these types are yet, so any will do
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
17
+ const requestChannel$1 = requestChannel.createRequestChannel(messageTransport);
18
+ /**
19
+ * The event emitter for this store getter.
20
+ *
21
+ * Not to be confused with the events that come from the messageTransport:
22
+ * - The messageTransport is a tool for sending/receiving messages to/from a webview.
23
+ * - This event emitter allows raising events exclusively for change events of this store's variables,
24
+ * and will only be used by the modules that are reading from the store, most likely to be forwarded
25
+ * for clients to have access to.
26
+ */
27
+ const eventEmitter = new EventEmitter__default["default"]();
28
+ const state = reactivity.reactive(Object.assign({}, initialState));
29
+ const getters = {};
30
+ for (const variable in state) {
31
+ // Add the state getter
32
+ Object.defineProperty(getters, variable, {
33
+ get: () => state[variable],
34
+ });
35
+ // We need to add a listener for each of this store's variables.
36
+ // That listener will listen for messageTransport "value changed" events,
37
+ // which we will use to update the store's values and raise events.
38
+ const messageName = `${key}__${variable}Changed`;
39
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
40
+ requestChannel$1.handle(messageName, (newValue) => {
41
+ const eventName = `${variable}Changed`;
42
+ // We emit with the same event name for simplicity, but keep in mind
43
+ // the eventEmitter events are different from the messageTransport message we are handling.
44
+ // Read above for elaboration.
45
+ //
46
+ // There are some limitation on what we can achieve with typescript in this file,
47
+ // but all this is encapsulated in this function and it works like a charm for whoever calls it.
48
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
49
+ eventEmitter.emit(eventName, newValue);
50
+ state[variable] = newValue;
51
+ });
52
+ }
53
+ return {
54
+ eventEmitter,
55
+ getters,
56
+ };
57
+ };
58
+
59
+ exports.createStore = createStore;
@@ -0,0 +1,8 @@
1
+ import { MessageTransportWithDefaultOrigin } from '../messageTransport';
2
+ import { Store } from './types';
3
+ export type CreateStoreProps<T extends Record<string, unknown>, U extends string> = {
4
+ messageTransport: MessageTransportWithDefaultOrigin;
5
+ key: U;
6
+ initialState: T;
7
+ };
8
+ export declare const createStore: <T extends Record<string, unknown> = never, U extends string = never>({ initialState, key, messageTransport, }: CreateStoreProps<T, U>) => Store<T>;
@@ -0,0 +1,51 @@
1
+ 'use client'
2
+ import EventEmitter from 'eventemitter3';
3
+ import { reactive } from '@vue/reactivity';
4
+ import { createRequestChannel } from '../requestChannel/requestChannel.js';
5
+
6
+ const createStore = ({ initialState, key, messageTransport, }) => {
7
+ // We don't know what these types are yet, so any will do
8
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
9
+ const requestChannel = createRequestChannel(messageTransport);
10
+ /**
11
+ * The event emitter for this store getter.
12
+ *
13
+ * Not to be confused with the events that come from the messageTransport:
14
+ * - The messageTransport is a tool for sending/receiving messages to/from a webview.
15
+ * - This event emitter allows raising events exclusively for change events of this store's variables,
16
+ * and will only be used by the modules that are reading from the store, most likely to be forwarded
17
+ * for clients to have access to.
18
+ */
19
+ const eventEmitter = new EventEmitter();
20
+ const state = reactive(Object.assign({}, initialState));
21
+ const getters = {};
22
+ for (const variable in state) {
23
+ // Add the state getter
24
+ Object.defineProperty(getters, variable, {
25
+ get: () => state[variable],
26
+ });
27
+ // We need to add a listener for each of this store's variables.
28
+ // That listener will listen for messageTransport "value changed" events,
29
+ // which we will use to update the store's values and raise events.
30
+ const messageName = `${key}__${variable}Changed`;
31
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
+ requestChannel.handle(messageName, (newValue) => {
33
+ const eventName = `${variable}Changed`;
34
+ // We emit with the same event name for simplicity, but keep in mind
35
+ // the eventEmitter events are different from the messageTransport message we are handling.
36
+ // Read above for elaboration.
37
+ //
38
+ // There are some limitation on what we can achieve with typescript in this file,
39
+ // but all this is encapsulated in this function and it works like a charm for whoever calls it.
40
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
41
+ eventEmitter.emit(eventName, newValue);
42
+ state[variable] = newValue;
43
+ });
44
+ }
45
+ return {
46
+ eventEmitter,
47
+ getters,
48
+ };
49
+ };
50
+
51
+ export { createStore };
@@ -0,0 +1 @@
1
+ export * from './storeSetter';
@@ -0,0 +1,23 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var requestChannel = require('../../requestChannel/requestChannel.cjs');
7
+
8
+ const createStoreSetter = ({ key, messageTransport, }) => {
9
+ // We don't know what these types are yet, so any will do
10
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
11
+ const requestChannel$1 = requestChannel.createRequestChannel(messageTransport);
12
+ return {
13
+ set: (newValues) => {
14
+ const entries = Object.entries(newValues);
15
+ for (const [variable, newValue] of entries) {
16
+ const messageName = `${key}__${variable}Changed`;
17
+ requestChannel$1.emit(messageName, newValue);
18
+ }
19
+ },
20
+ };
21
+ };
22
+
23
+ exports.createStoreSetter = createStoreSetter;
@@ -0,0 +1,8 @@
1
+ import { MessageTransportWithDefaultOrigin } from '../../messageTransport';
2
+ import { StoreSetter } from '../types';
3
+ type CreateStoreSetterProps<U extends string> = {
4
+ messageTransport: MessageTransportWithDefaultOrigin;
5
+ key: U;
6
+ };
7
+ export declare const createStoreSetter: <T extends Record<string, unknown> = never, U extends string = never>({ key, messageTransport, }: CreateStoreSetterProps<U>) => StoreSetter<T>;
8
+ export {};
@@ -0,0 +1,19 @@
1
+ 'use client'
2
+ import { createRequestChannel } from '../../requestChannel/requestChannel.js';
3
+
4
+ const createStoreSetter = ({ key, messageTransport, }) => {
5
+ // We don't know what these types are yet, so any will do
6
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
+ const requestChannel = createRequestChannel(messageTransport);
8
+ return {
9
+ set: (newValues) => {
10
+ const entries = Object.entries(newValues);
11
+ for (const [variable, newValue] of entries) {
12
+ const messageName = `${key}__${variable}Changed`;
13
+ requestChannel.emit(messageName, newValue);
14
+ }
15
+ },
16
+ };
17
+ };
18
+
19
+ export { createStoreSetter };
@@ -0,0 +1,53 @@
1
+ import EventEmitter from 'eventemitter3';
2
+ export type StoreKeys = 'auth' | 'sdk' | 'wallets' | 'embeddedWallets' | 'platform' | 'networks';
3
+ /**
4
+ * Readonly getters for the store values
5
+ */
6
+ export type StoreStateGetters<T extends Record<string, unknown>> = {
7
+ readonly [K in keyof T]: T[K];
8
+ };
9
+ /**
10
+ * The type of a getter that allows reading and listening to values from a store
11
+ */
12
+ export type Store<T extends Record<string, unknown>> = {
13
+ getters: StoreStateGetters<T>;
14
+ eventEmitter: EventEmitter<StoreStateEvents<T>>;
15
+ };
16
+ /**
17
+ * The type of a setter that allows setting values of all stores connected to the same
18
+ * messageTransport
19
+ */
20
+ export type StoreSetter<T extends Record<string, unknown>> = {
21
+ set: (values: Partial<T>) => void;
22
+ };
23
+ /**
24
+ * Defines how state change messages, to be sent across messageTransport, are named.
25
+ * These messages are not made public. They are only used to communicate state changes across the webview.
26
+ */
27
+ export type StoreStateChangeMessage<T extends Record<string, unknown>, K extends Extract<keyof T, string>, U extends string> = `${U}__${K}Changed`;
28
+ /**
29
+ * Defines how state change events are named.
30
+ * These events are emitted by the store, and are made public for client consumption.
31
+ *
32
+ * Do not confuse these with StoreStateChangeMessage, which are only for internal communication.
33
+ */
34
+ export type StoreStateChangeEvent<T extends Record<string, unknown>, K extends Extract<keyof T, string>> = `${K}Changed`;
35
+ /**
36
+ * Generates the event types for a StoreState
37
+ */
38
+ export type StoreStateEvents<T extends Record<string, unknown>> = {
39
+ [K in Extract<keyof T, string> as StoreStateChangeEvent<T, K>]: (value: T[K]) => void;
40
+ };
41
+ /**
42
+ * Generates the event listener methods for a StoreState.
43
+ * The methods still return the original type of the eventemitter3 class.
44
+ * Use StoreEventListeners instead, which hides these return types.
45
+ */
46
+ type RawStoreEventListeners<T extends Record<string, unknown>> = Pick<EventEmitter<StoreStateEvents<T>>, 'on' | 'off' | 'once'>;
47
+ /**
48
+ * The event listener methods for a StoreState
49
+ */
50
+ export type StoreEventListeners<T extends Record<string, unknown>> = {
51
+ [M in keyof RawStoreEventListeners<T>]: (...args: Parameters<RawStoreEventListeners<T>[M]>) => void;
52
+ };
53
+ export {};
@@ -0,0 +1 @@
1
+ export { isSerializedError } from './isSerializedError';
@@ -0,0 +1,14 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const isSerializedError = (serializedError) => {
7
+ if (typeof serializedError !== 'object' || serializedError === null) {
8
+ return false;
9
+ }
10
+ const { message, stack } = serializedError;
11
+ return typeof message === 'string' && typeof stack === 'string';
12
+ };
13
+
14
+ exports.isSerializedError = isSerializedError;
@@ -0,0 +1,2 @@
1
+ import { SerializedError } from '../serializeErrorForTransport';
2
+ export declare const isSerializedError: (serializedError: SerializedError | unknown) => serializedError is SerializedError;
@@ -0,0 +1,10 @@
1
+ 'use client'
2
+ const isSerializedError = (serializedError) => {
3
+ if (typeof serializedError !== 'object' || serializedError === null) {
4
+ return false;
5
+ }
6
+ const { message, stack } = serializedError;
7
+ return typeof message === 'string' && typeof stack === 'string';
8
+ };
9
+
10
+ export { isSerializedError };
@@ -0,0 +1 @@
1
+ export { parseErrorFromTransport } from './parseErrorFromTransport';
@@ -0,0 +1,54 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ var _tslib = require('../../../_virtual/_tslib.cjs');
7
+
8
+ /**
9
+ * Parses a serialized error object back into an Error instance.
10
+ * This function will recreate an Error or a specific subclass of Error
11
+ * based on the name property if it matches known error types.
12
+ * Additional properties are added back to the reconstructed error object.
13
+ *
14
+ * @param {SerializedError} serializedError - The serialized error object to parse.
15
+ * @returns {Error} - The reconstructed Error instance.
16
+ */
17
+ const parseErrorFromTransport = (serializedError) => {
18
+ const { message, name, stack } = serializedError, otherProps = _tslib.__rest(serializedError, ["message", "name", "stack"]);
19
+ let error;
20
+ // Determine the type of the error based on the 'name' property and instantiate accordingly
21
+ switch (name) {
22
+ case 'TypeError':
23
+ error = new TypeError(message);
24
+ break;
25
+ case 'ReferenceError':
26
+ error = new ReferenceError(message);
27
+ break;
28
+ case 'SyntaxError':
29
+ error = new SyntaxError(message);
30
+ break;
31
+ case 'RangeError':
32
+ error = new RangeError(message);
33
+ break;
34
+ case 'EvalError':
35
+ error = new EvalError(message);
36
+ break;
37
+ case 'URIError':
38
+ error = new URIError(message);
39
+ break;
40
+ default:
41
+ // Default to a generic Error if the specific type isn't recognized
42
+ error = new Error(message);
43
+ error.name = name || 'Error'; // Ensure the name is set, defaulting to 'Error' if not provided
44
+ }
45
+ // Reattach the stack trace and any other enumerable properties
46
+ if (stack) {
47
+ error.stack = [message, stack].join('\n');
48
+ }
49
+ // Reattach other custom properties that may have been serialized
50
+ Object.assign(error, otherProps);
51
+ return error;
52
+ };
53
+
54
+ exports.parseErrorFromTransport = parseErrorFromTransport;
@@ -0,0 +1,11 @@
1
+ import { SerializedError } from '../serializeErrorForTransport';
2
+ /**
3
+ * Parses a serialized error object back into an Error instance.
4
+ * This function will recreate an Error or a specific subclass of Error
5
+ * based on the name property if it matches known error types.
6
+ * Additional properties are added back to the reconstructed error object.
7
+ *
8
+ * @param {SerializedError} serializedError - The serialized error object to parse.
9
+ * @returns {Error} - The reconstructed Error instance.
10
+ */
11
+ export declare const parseErrorFromTransport: (serializedError: SerializedError) => Error;
@@ -0,0 +1,50 @@
1
+ 'use client'
2
+ import { __rest } from '../../../_virtual/_tslib.js';
3
+
4
+ /**
5
+ * Parses a serialized error object back into an Error instance.
6
+ * This function will recreate an Error or a specific subclass of Error
7
+ * based on the name property if it matches known error types.
8
+ * Additional properties are added back to the reconstructed error object.
9
+ *
10
+ * @param {SerializedError} serializedError - The serialized error object to parse.
11
+ * @returns {Error} - The reconstructed Error instance.
12
+ */
13
+ const parseErrorFromTransport = (serializedError) => {
14
+ const { message, name, stack } = serializedError, otherProps = __rest(serializedError, ["message", "name", "stack"]);
15
+ let error;
16
+ // Determine the type of the error based on the 'name' property and instantiate accordingly
17
+ switch (name) {
18
+ case 'TypeError':
19
+ error = new TypeError(message);
20
+ break;
21
+ case 'ReferenceError':
22
+ error = new ReferenceError(message);
23
+ break;
24
+ case 'SyntaxError':
25
+ error = new SyntaxError(message);
26
+ break;
27
+ case 'RangeError':
28
+ error = new RangeError(message);
29
+ break;
30
+ case 'EvalError':
31
+ error = new EvalError(message);
32
+ break;
33
+ case 'URIError':
34
+ error = new URIError(message);
35
+ break;
36
+ default:
37
+ // Default to a generic Error if the specific type isn't recognized
38
+ error = new Error(message);
39
+ error.name = name || 'Error'; // Ensure the name is set, defaulting to 'Error' if not provided
40
+ }
41
+ // Reattach the stack trace and any other enumerable properties
42
+ if (stack) {
43
+ error.stack = [message, stack].join('\n');
44
+ }
45
+ // Reattach other custom properties that may have been serialized
46
+ Object.assign(error, otherProps);
47
+ return error;
48
+ };
49
+
50
+ export { parseErrorFromTransport };
@@ -0,0 +1 @@
1
+ export * from './parseMessageTransportData';
@@ -0,0 +1,27 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ const parseMessageTransportData = (
7
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
8
+ parsedData) => {
9
+ if (!parsedData || typeof parsedData !== 'object') {
10
+ return undefined;
11
+ }
12
+ const message = {
13
+ args: parsedData.args,
14
+ messageSessionId: parsedData.messageSessionId,
15
+ origin: parsedData.origin,
16
+ type: parsedData.type,
17
+ };
18
+ if (!Array.isArray(message.args) ||
19
+ typeof message.messageSessionId !== 'string' ||
20
+ typeof message.origin !== 'string' ||
21
+ typeof message.type !== 'string') {
22
+ return undefined;
23
+ }
24
+ return message;
25
+ };
26
+
27
+ exports.parseMessageTransportData = parseMessageTransportData;
@@ -0,0 +1,2 @@
1
+ import { MessageTransportData } from '../../messageTransport';
2
+ export declare const parseMessageTransportData: (parsedData: any) => MessageTransportData | undefined;
@@ -0,0 +1,23 @@
1
+ 'use client'
2
+ const parseMessageTransportData = (
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ parsedData) => {
5
+ if (!parsedData || typeof parsedData !== 'object') {
6
+ return undefined;
7
+ }
8
+ const message = {
9
+ args: parsedData.args,
10
+ messageSessionId: parsedData.messageSessionId,
11
+ origin: parsedData.origin,
12
+ type: parsedData.type,
13
+ };
14
+ if (!Array.isArray(message.args) ||
15
+ typeof message.messageSessionId !== 'string' ||
16
+ typeof message.origin !== 'string' ||
17
+ typeof message.type !== 'string') {
18
+ return undefined;
19
+ }
20
+ return message;
21
+ };
22
+
23
+ export { parseMessageTransportData };
@@ -0,0 +1 @@
1
+ export { serializeErrorForTransport, type SerializedError, } from './serializeErrorForTransport';
@@ -0,0 +1,33 @@
1
+ 'use client'
2
+ 'use strict';
3
+
4
+ Object.defineProperty(exports, '__esModule', { value: true });
5
+
6
+ /**
7
+ * Serializes an error to a JSON object to be sent by transport.
8
+ * This function checks if the input is an instance of Error to capture
9
+ * standard properties like message, name, and stack. It also attempts to
10
+ * serialize any enumerable properties that are present on error-like objects.
11
+ *
12
+ * @param {unknown} err - The error or error-like object to serialize.
13
+ * @returns {SerializedError} - The serialized error object.
14
+ */
15
+ const serializeErrorForTransport = (err) => {
16
+ if (err instanceof Error) {
17
+ return Object.assign({
18
+ // @ts-expect-error message is a standard property of Error
19
+ message: err.message,
20
+ // @ts-expect-error name is a standard property of Error
21
+ name: err.name, stack: err.stack }, err);
22
+ }
23
+ else if (typeof err === 'object' && err !== null) {
24
+ const plainObject = {};
25
+ for (const [key, value] of Object.entries(err)) {
26
+ plainObject[key] = value;
27
+ }
28
+ return plainObject;
29
+ }
30
+ return { message: String(err) };
31
+ };
32
+
33
+ exports.serializeErrorForTransport = serializeErrorForTransport;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Defines the shape of a serialized error object.
3
+ */
4
+ export type SerializedError = {
5
+ message?: string;
6
+ name?: string;
7
+ stack?: string;
8
+ [key: string]: unknown;
9
+ };
10
+ /**
11
+ * Serializes an error to a JSON object to be sent by transport.
12
+ * This function checks if the input is an instance of Error to capture
13
+ * standard properties like message, name, and stack. It also attempts to
14
+ * serialize any enumerable properties that are present on error-like objects.
15
+ *
16
+ * @param {unknown} err - The error or error-like object to serialize.
17
+ * @returns {SerializedError} - The serialized error object.
18
+ */
19
+ export declare const serializeErrorForTransport: (err: unknown) => SerializedError;
@@ -0,0 +1,29 @@
1
+ 'use client'
2
+ /**
3
+ * Serializes an error to a JSON object to be sent by transport.
4
+ * This function checks if the input is an instance of Error to capture
5
+ * standard properties like message, name, and stack. It also attempts to
6
+ * serialize any enumerable properties that are present on error-like objects.
7
+ *
8
+ * @param {unknown} err - The error or error-like object to serialize.
9
+ * @returns {SerializedError} - The serialized error object.
10
+ */
11
+ const serializeErrorForTransport = (err) => {
12
+ if (err instanceof Error) {
13
+ return Object.assign({
14
+ // @ts-expect-error message is a standard property of Error
15
+ message: err.message,
16
+ // @ts-expect-error name is a standard property of Error
17
+ name: err.name, stack: err.stack }, err);
18
+ }
19
+ else if (typeof err === 'object' && err !== null) {
20
+ const plainObject = {};
21
+ for (const [key, value] of Object.entries(err)) {
22
+ plainObject[key] = value;
23
+ }
24
+ return plainObject;
25
+ }
26
+ return { message: String(err) };
27
+ };
28
+
29
+ export { serializeErrorForTransport };