@dynamic-labs/message-transport 2.1.0-alpha.0 → 2.1.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +100 -0
- package/_virtual/_tslib.cjs +1 -0
- package/_virtual/_tslib.js +1 -0
- package/package.json +4 -4
- package/src/index.cjs +1 -0
- package/src/index.d.ts +2 -2
- package/src/index.js +1 -0
- package/src/messageTransport/decorators/applyDefaultMessageOrigin/applyDefaultMessageOrigin.cjs +1 -0
- package/src/messageTransport/decorators/applyDefaultMessageOrigin/applyDefaultMessageOrigin.js +1 -0
- package/src/messageTransport/decorators/makeWaitForInitEvent/makeWaitForInitEvent.cjs +1 -0
- package/src/messageTransport/decorators/makeWaitForInitEvent/makeWaitForInitEvent.js +1 -0
- package/src/messageTransport/decorators/makeWaitForUnblock/makeWaitForUnblock.cjs +1 -0
- package/src/messageTransport/decorators/makeWaitForUnblock/makeWaitForUnblock.js +1 -0
- package/src/messageTransport/messageTransport.cjs +1 -0
- package/src/messageTransport/messageTransport.js +1 -0
- package/src/messageTypes/AuthModuleMessages.d.ts +2 -3
- package/src/messageTypes/{OtpExtensionMessages.d.ts → OtpMessages.d.ts} +2 -2
- package/src/messageTypes/SdkModuleMessages.cjs +1 -0
- package/src/messageTypes/SdkModuleMessages.js +1 -0
- package/src/messageTypes/index.d.ts +1 -1
- package/src/requestChannel/requestChannel.cjs +2 -1
- package/src/requestChannel/requestChannel.js +2 -1
- package/src/store/createEventEmitterForMessages/createEventEmitterForMessages.cjs +1 -0
- package/src/store/createEventEmitterForMessages/createEventEmitterForMessages.js +1 -0
- package/src/store/store.cjs +3 -1
- package/src/store/store.js +3 -1
- package/src/store/storeSetter/storeSetter.cjs +1 -0
- package/src/store/storeSetter/storeSetter.js +1 -0
- package/src/store/types.d.ts +13 -0
- package/src/utils/parseMessageTransportData/parseMessageTransportData.cjs +1 -0
- package/src/utils/parseMessageTransportData/parseMessageTransportData.js +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,4 +1,104 @@
|
|
|
1
1
|
|
|
2
|
+
## [2.1.0-alpha.10](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.9...v2.1.0-alpha.10) (2024-04-30)
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
### Features
|
|
6
|
+
|
|
7
|
+
* bump @coinbase/wallet-sdk to latest beta ([#5388](https://github.com/dynamic-labs/DynamicAuth/issues/5388)) ([9225546](https://github.com/dynamic-labs/DynamicAuth/commit/922554630ccf2ef98bc297521309918f922bc671))
|
|
8
|
+
|
|
9
|
+
## [2.1.0-alpha.9](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.8...v2.1.0-alpha.9) (2024-04-30)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
* headless create embedded wallet with optional passkey data parameter ([#5487](https://github.com/dynamic-labs/DynamicAuth/issues/5487)) ([891c3d7](https://github.com/dynamic-labs/DynamicAuth/commit/891c3d77a02a019140bcb8dd03b62b1afd69710e))
|
|
15
|
+
|
|
16
|
+
## [2.1.0-alpha.8](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.7...v2.1.0-alpha.8) (2024-04-26)
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Bug Fixes
|
|
20
|
+
|
|
21
|
+
* display wallet tabs when linking a wallet ([#5491](https://github.com/dynamic-labs/DynamicAuth/issues/5491)) ([10fd6b4](https://github.com/dynamic-labs/DynamicAuth/commit/10fd6b4d9aec7596338c50e17f79f6be534cf2c1))
|
|
22
|
+
* ensure zerodev viem client handles eth_accounts call ([#5477](https://github.com/dynamic-labs/DynamicAuth/issues/5477)) ([1132e1e](https://github.com/dynamic-labs/DynamicAuth/commit/1132e1e8655b58e81cb56789453ba56a059f52ec))
|
|
23
|
+
* network with keplr ([#5485](https://github.com/dynamic-labs/DynamicAuth/issues/5485)) ([b86f2fc](https://github.com/dynamic-labs/DynamicAuth/commit/b86f2fce491f9752e80a86643916da9ac7fb9276))
|
|
24
|
+
* refetch nameservice data and display properly ([#5476](https://github.com/dynamic-labs/DynamicAuth/issues/5476)) ([2aee798](https://github.com/dynamic-labs/DynamicAuth/commit/2aee798846f69496201bec7aa52e7ec1f370b7c3))
|
|
25
|
+
* use embeddedWallet create response authToken in embeddedWalletCreated ([#5478](https://github.com/dynamic-labs/DynamicAuth/issues/5478)) ([51772da](https://github.com/dynamic-labs/DynamicAuth/commit/51772daf557a72984c757efd8301e2b510dc37f1))
|
|
26
|
+
|
|
27
|
+
## [2.1.0-alpha.7](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.6...v2.1.0-alpha.7) (2024-04-25)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* restore embedded wallet session iframe element conflict ([#5474](https://github.com/dynamic-labs/DynamicAuth/issues/5474)) ([c157477](https://github.com/dynamic-labs/DynamicAuth/commit/c157477ea126b3130b13b711796bdd06215e7af1))
|
|
33
|
+
|
|
34
|
+
## [2.1.0-alpha.6](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.5...v2.1.0-alpha.6) (2024-04-24)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### Bug Fixes
|
|
38
|
+
|
|
39
|
+
* embedded wallets headless session control fixes ([#5469](https://github.com/dynamic-labs/DynamicAuth/issues/5469)) ([92e6c35](https://github.com/dynamic-labs/DynamicAuth/commit/92e6c359d2710fd4f5f5a6fedc4acf6c4bab78ba))
|
|
40
|
+
|
|
41
|
+
## [2.1.0-alpha.5](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.4...v2.1.0-alpha.5) (2024-04-23)
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
### Bug Fixes
|
|
45
|
+
|
|
46
|
+
* get embedded wallet checking the wrong chain enum ([#5458](https://github.com/dynamic-labs/DynamicAuth/issues/5458)) ([ed1c523](https://github.com/dynamic-labs/DynamicAuth/commit/ed1c523ca14cd4d21c00181ab40802f876c02b80))
|
|
47
|
+
|
|
48
|
+
## [2.1.0-alpha.4](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.3...v2.1.0-alpha.4) (2024-04-23)
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
### Features
|
|
52
|
+
|
|
53
|
+
* add email and sms to client auth module ([#5436](https://github.com/dynamic-labs/DynamicAuth/issues/5436)) ([5420476](https://github.com/dynamic-labs/DynamicAuth/commit/5420476d1ba38fd4f987f28e9aefbfb3e61ea2bf))
|
|
54
|
+
* headless create passkeys for embedded wallets ([#5395](https://github.com/dynamic-labs/DynamicAuth/issues/5395)) ([0b64099](https://github.com/dynamic-labs/DynamicAuth/commit/0b6409968457f65886248f0a0879e39ec3803fd0))
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
### Bug Fixes
|
|
58
|
+
|
|
59
|
+
* prevent wagmi from reconnect when DynamicContextProvider rerender ([#5446](https://github.com/dynamic-labs/DynamicAuth/issues/5446)) ([33337af](https://github.com/dynamic-labs/DynamicAuth/commit/33337af76786963cb3db7fa7c58c1292c529d0ac))
|
|
60
|
+
|
|
61
|
+
## [2.1.0-alpha.3](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.2...v2.1.0-alpha.3) (2024-04-23)
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### Features
|
|
65
|
+
|
|
66
|
+
* add merge user accounts flow ([#5429](https://github.com/dynamic-labs/DynamicAuth/issues/5429)) ([41d4239](https://github.com/dynamic-labs/DynamicAuth/commit/41d423906625e28004ba8f20baf57847ed8bf5d0))
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
### Bug Fixes
|
|
70
|
+
|
|
71
|
+
* disconnect wallet on lock in connect-only ([#5422](https://github.com/dynamic-labs/DynamicAuth/issues/5422)) ([a26f9fe](https://github.com/dynamic-labs/DynamicAuth/commit/a26f9fe93cf8568f1482e10b831de98c77fb2a2d))
|
|
72
|
+
* useReactiveProxy to stop proxing when it finds a reactive value ([#5428](https://github.com/dynamic-labs/DynamicAuth/issues/5428)) ([838dce9](https://github.com/dynamic-labs/DynamicAuth/commit/838dce9ee953361e41772239a91adb1dd8d40234))
|
|
73
|
+
|
|
74
|
+
## [2.1.0-alpha.2](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.1...v2.1.0-alpha.2) (2024-04-19)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### Bug Fixes
|
|
78
|
+
|
|
79
|
+
* buffer polyfill for utils package ([#5404](https://github.com/dynamic-labs/DynamicAuth/issues/5404)) ([bd40441](https://github.com/dynamic-labs/DynamicAuth/commit/bd404414a2e51d79fad86d7603dae89628c225b9))
|
|
80
|
+
|
|
81
|
+
## [2.1.0-alpha.1](https://github.com/dynamic-labs/DynamicAuth/compare/v2.1.0-alpha.0...v2.1.0-alpha.1) (2024-04-18)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
### Features
|
|
85
|
+
|
|
86
|
+
* add frame metadata to demo index page ([#5327](https://github.com/dynamic-labs/DynamicAuth/issues/5327)) ([34a071a](https://github.com/dynamic-labs/DynamicAuth/commit/34a071af8faa8a867ad747ec2a607056a883568d))
|
|
87
|
+
* add MfaChooseDeviceView and MfaSecureDeviceView ([#5343](https://github.com/dynamic-labs/DynamicAuth/issues/5343)) ([4c39b1c](https://github.com/dynamic-labs/DynamicAuth/commit/4c39b1c34b5091190b095770e95a733c8f458ca2)), closes [#5356](https://github.com/dynamic-labs/DynamicAuth/issues/5356)
|
|
88
|
+
* add redirectUri to farcaster connect ([#5373](https://github.com/dynamic-labs/DynamicAuth/issues/5373)) ([ed13fc2](https://github.com/dynamic-labs/DynamicAuth/commit/ed13fc2948e06df0017ac122db54aca44f264a6d))
|
|
89
|
+
* add useMfa hook ([#5337](https://github.com/dynamic-labs/DynamicAuth/issues/5337)) ([a7682ba](https://github.com/dynamic-labs/DynamicAuth/commit/a7682ba10fd0f0809af802e0172154726f1bd857))
|
|
90
|
+
* headless create session and is session active ([#5346](https://github.com/dynamic-labs/DynamicAuth/issues/5346)) ([a787bbc](https://github.com/dynamic-labs/DynamicAuth/commit/a787bbcbb44104d2d0bd263579bd87a78453681d))
|
|
91
|
+
* secure enclave wallet generate one-time code headless ([#5329](https://github.com/dynamic-labs/DynamicAuth/issues/5329)) ([cab80a2](https://github.com/dynamic-labs/DynamicAuth/commit/cab80a2bfa77e48263d47cdcb813c54ef5b831d5))
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
### Bug Fixes
|
|
95
|
+
|
|
96
|
+
* always stringify the message before signing a message using walletUiUtils ([#5325](https://github.com/dynamic-labs/DynamicAuth/issues/5325)) ([7abf094](https://github.com/dynamic-labs/DynamicAuth/commit/7abf09456e30ad0657892e9ba58d7391f0f430e6))
|
|
97
|
+
* bitcoin network connector sendBitcoin methods updates ([#5369](https://github.com/dynamic-labs/DynamicAuth/issues/5369)) ([e9bf444](https://github.com/dynamic-labs/DynamicAuth/commit/e9bf444122ee86030d85b84ede96bdfb9772425e))
|
|
98
|
+
* buffer missing when using buffer util function ([#5360](https://github.com/dynamic-labs/DynamicAuth/issues/5360)) ([e998e46](https://github.com/dynamic-labs/DynamicAuth/commit/e998e464bd2671a82aa271b407a7d8fc49a16bd0))
|
|
99
|
+
* embedded solana send transaction shouldn't sign a signed transaction ([#5357](https://github.com/dynamic-labs/DynamicAuth/issues/5357)) ([c2ae2fa](https://github.com/dynamic-labs/DynamicAuth/commit/c2ae2faa509b62fc5ceb345fbc0f0b47217bf4b0))
|
|
100
|
+
* use network.name if vanity name is missing ([#5338](https://github.com/dynamic-labs/DynamicAuth/issues/5338)) ([34ec2ae](https://github.com/dynamic-labs/DynamicAuth/commit/34ec2ae5c4dad5376a3b9c5a07221f68a2f7756c))
|
|
101
|
+
|
|
2
102
|
## [2.1.0-alpha.0](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.32...v2.1.0-alpha.0) (2024-04-15)
|
|
3
103
|
|
|
4
104
|
## [2.0.0-alpha.32](https://github.com/dynamic-labs/DynamicAuth/compare/v2.0.0-alpha.31...v2.0.0-alpha.32) (2024-04-15)
|
package/_virtual/_tslib.cjs
CHANGED
package/_virtual/_tslib.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/message-transport",
|
|
3
|
-
"version": "2.1.0-alpha.
|
|
3
|
+
"version": "2.1.0-alpha.10",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/dynamic-labs/DynamicAuth.git",
|
|
@@ -25,9 +25,9 @@
|
|
|
25
25
|
},
|
|
26
26
|
"./package.json": "./package.json"
|
|
27
27
|
},
|
|
28
|
-
"
|
|
29
|
-
"@
|
|
30
|
-
"@dynamic-labs/types": "2.1.0-alpha.
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@vue/reactivity": "3.4.21",
|
|
30
|
+
"@dynamic-labs/types": "2.1.0-alpha.10",
|
|
31
31
|
"eventemitter3": "5.0.1"
|
|
32
32
|
}
|
|
33
33
|
}
|
package/src/index.cjs
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -2,5 +2,5 @@ export { applyDefaultMessageOrigin, createMessageTransport, makeWaitForInitEvent
|
|
|
2
2
|
export { createRequestChannel, type RequestChannel } from './requestChannel';
|
|
3
3
|
export { parseMessageTransportData } from './utils/parseMessageTransportData';
|
|
4
4
|
export { createEventEmitterForMessages, createStore, createStoreSetter, type MessagesForEventEmitter, } from './store';
|
|
5
|
-
export type { Store, StoreKeys, StoreSetter, StoreStateEvents, StoreStateGetters, } from './store/types';
|
|
6
|
-
export { sdkHasLoadedEventName, type AuthModuleMessages, type AuthModuleState, type ClientManifest, type
|
|
5
|
+
export type { Store, StoreKeys, StoreSetter, StoreStateEvents, StoreStateGetters, StoreEventListeners, } from './store/types';
|
|
6
|
+
export { sdkHasLoadedEventName, type AuthModuleMessages, type AuthModuleState, type ClientManifest, type OtpMessages, type SdkModuleMessages, type SdkModuleState, type WalletsModuleState, } from './messageTypes';
|
package/src/index.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
export { createMessageTransport } from './messageTransport/messageTransport.js';
|
|
2
3
|
export { applyDefaultMessageOrigin } from './messageTransport/decorators/applyDefaultMessageOrigin/applyDefaultMessageOrigin.js';
|
|
3
4
|
export { makeWaitForInitEvent } from './messageTransport/decorators/makeWaitForInitEvent/makeWaitForInitEvent.js';
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import type { UserProfile } from '@dynamic-labs/
|
|
1
|
+
import type { UserProfile } from '@dynamic-labs/types';
|
|
2
2
|
export type AuthModuleState = {
|
|
3
|
-
|
|
3
|
+
token: string | null;
|
|
4
4
|
authenticatedUser: UserProfile | null;
|
|
5
5
|
};
|
|
6
6
|
export type AuthModuleMessages = {
|
|
7
7
|
logout: () => Promise<void>;
|
|
8
|
-
login: () => Promise<void>;
|
|
9
8
|
};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OtpDestination, PhoneData } from '@dynamic-labs/
|
|
1
|
+
import { OtpDestination, PhoneData } from '@dynamic-labs/types';
|
|
2
2
|
type OtpData = {
|
|
3
3
|
destination: Extract<OtpDestination, 'email'>;
|
|
4
4
|
target: string;
|
|
@@ -6,7 +6,7 @@ type OtpData = {
|
|
|
6
6
|
destination: Extract<OtpDestination, 'sms'>;
|
|
7
7
|
target: PhoneData;
|
|
8
8
|
};
|
|
9
|
-
export type
|
|
9
|
+
export type OtpMessages = {
|
|
10
10
|
/** Request to send an OTP to a destination for verification */
|
|
11
11
|
sendOTP: (data: OtpData) => Promise<void>;
|
|
12
12
|
/** Performs verification for the latest send OTP */
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
'use strict';
|
|
2
3
|
|
|
3
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
@@ -46,7 +47,7 @@ const createRequestChannel = (messageTransport) => {
|
|
|
46
47
|
});
|
|
47
48
|
},
|
|
48
49
|
handle: (requestType, handler) => {
|
|
49
|
-
const messageHandler = (
|
|
50
|
+
const messageHandler = (_a) => _tslib.__awaiter(void 0, [_a], void 0, function* ({ args, messageSessionId, type: incomingType, }) {
|
|
50
51
|
if (requestType !== incomingType)
|
|
51
52
|
return;
|
|
52
53
|
const result = handler(...args);
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
import { __awaiter } from '../../_virtual/_tslib.js';
|
|
2
3
|
|
|
3
4
|
/** Given a request event name, returns the event name for its resolve */
|
|
@@ -42,7 +43,7 @@ const createRequestChannel = (messageTransport) => {
|
|
|
42
43
|
});
|
|
43
44
|
},
|
|
44
45
|
handle: (requestType, handler) => {
|
|
45
|
-
const messageHandler = (
|
|
46
|
+
const messageHandler = (_a) => __awaiter(void 0, [_a], void 0, function* ({ args, messageSessionId, type: incomingType, }) {
|
|
46
47
|
if (requestType !== incomingType)
|
|
47
48
|
return;
|
|
48
49
|
const result = handler(...args);
|
package/src/store/store.cjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
'use strict';
|
|
2
3
|
|
|
3
4
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
5
|
|
|
5
6
|
var EventEmitter = require('eventemitter3');
|
|
7
|
+
var reactivity = require('@vue/reactivity');
|
|
6
8
|
var requestChannel = require('../requestChannel/requestChannel.cjs');
|
|
7
9
|
|
|
8
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -23,7 +25,7 @@ const createStore = ({ initialState, key, messageTransport, }) => {
|
|
|
23
25
|
* for clients to have access to.
|
|
24
26
|
*/
|
|
25
27
|
const eventEmitter = new EventEmitter__default["default"]();
|
|
26
|
-
const state = Object.assign({}, initialState);
|
|
28
|
+
const state = reactivity.reactive(Object.assign({}, initialState));
|
|
27
29
|
const getters = {};
|
|
28
30
|
for (const variable in state) {
|
|
29
31
|
// Add the state getter
|
package/src/store/store.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
'use client'
|
|
1
2
|
import EventEmitter from 'eventemitter3';
|
|
3
|
+
import { reactive } from '@vue/reactivity';
|
|
2
4
|
import { createRequestChannel } from '../requestChannel/requestChannel.js';
|
|
3
5
|
|
|
4
6
|
const createStore = ({ initialState, key, messageTransport, }) => {
|
|
@@ -15,7 +17,7 @@ const createStore = ({ initialState, key, messageTransport, }) => {
|
|
|
15
17
|
* for clients to have access to.
|
|
16
18
|
*/
|
|
17
19
|
const eventEmitter = new EventEmitter();
|
|
18
|
-
const state = Object.assign({}, initialState);
|
|
20
|
+
const state = reactive(Object.assign({}, initialState));
|
|
19
21
|
const getters = {};
|
|
20
22
|
for (const variable in state) {
|
|
21
23
|
// Add the state getter
|
package/src/store/types.d.ts
CHANGED
|
@@ -38,3 +38,16 @@ export type StoreStateChangeEvent<T extends Record<string, unknown>, K extends E
|
|
|
38
38
|
export type StoreStateEvents<T extends Record<string, unknown>> = {
|
|
39
39
|
[K in Extract<keyof T, string> as StoreStateChangeEvent<T, K>]: (value: T[K]) => void;
|
|
40
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 {};
|