diff --git a/.gitignore b/.gitignore index eb91b79..0e2cd56 100644 --- a/.gitignore +++ b/.gitignore @@ -2,10 +2,15 @@ node_modules dist .turbo *.tsbuildinfo -*.d.ts.map .DS_Store coverage .env .env.local pnpm-debug.log* -site/.vitepress/cache/ \ No newline at end of file +site/.vitepress/cache/ + +# Build artifacts that may leak into src/ from bad tsc emit +packages/*/src/**/*.js +packages/*/src/**/*.js.map +packages/*/src/**/*.d.ts +packages/*/src/**/*.d.ts.map \ No newline at end of file diff --git a/package.json b/package.json index 2a116bb..3fa2b71 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "type": "module", "packageManager": "pnpm@10.33.0", "scripts": { - "build": "pnpm -r --filter='./packages/**' run build", + "build": "pnpm --filter @growae/reactive run build && pnpm -r --filter='./packages/**' --filter='!@growae/reactive' run build && pnpm --filter @growae/reactive run build:connectors", "build:core": "pnpm --filter @growae/reactive run build", "build:react": "pnpm --filter @growae/reactive-react run build", "build:vue": "pnpm --filter @growae/reactive-vue run build", diff --git a/packages/core/package.json b/packages/core/package.json index 85b3c26..d88858f 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -22,6 +22,10 @@ "types": "./dist/types/exports/networks.d.ts", "default": "./dist/esm/exports/networks.js" }, + "./connectors": { + "types": "./dist/types/exports/connectors.d.ts", + "default": "./dist/esm/exports/connectors.js" + }, "./internal": { "types": "./dist/types/exports/internal.d.ts", "default": "./dist/esm/exports/internal.js" @@ -30,7 +34,8 @@ }, "scripts": { "build": "pnpm run build:esm+types", - "build:esm+types": "tsc --project tsconfig.build.json --outDir ./dist/esm --declaration --declarationMap --declarationDir ./dist/types", + "build:esm+types": "tsc --project tsconfig.bootstrap.json --outDir ./dist/esm --declaration --declarationMap --declarationDir ./dist/types", + "build:connectors": "pnpm --filter @growae/reactive-connectors run build && tsc --project tsconfig.build.json --outDir ./dist/esm --declaration --declarationMap --declarationDir ./dist/types", "clean": "rm -rf dist", "check:types": "tsc --noEmit", "dev": "tsc --project tsconfig.build.json --outDir ./dist/esm --declaration --declarationMap --declarationDir ./dist/types --watch" @@ -41,10 +46,14 @@ "zustand": "^5.0.0" }, "peerDependencies": { + "@growae/reactive-connectors": "workspace:*", "@tanstack/query-core": ">=5.0.0", "typescript": ">=5.7.0" }, "peerDependenciesMeta": { + "@growae/reactive-connectors": { + "optional": true + }, "@tanstack/query-core": { "optional": true }, diff --git a/packages/core/src/exports/connectors.ts b/packages/core/src/exports/connectors.ts new file mode 100644 index 0000000..fb649e3 --- /dev/null +++ b/packages/core/src/exports/connectors.ts @@ -0,0 +1,15 @@ +export { + superhero, + type SuperheroParameters, + iframe, + type IframeParameters, + webExtension, + type WebExtensionParameters, + ledger, + type LedgerParameters, + metamaskSnap, + type MetaMaskSnapParameters, + walletDetect, + type DetectedWallet, + type WalletDetectResult, +} from '@growae/reactive-connectors' diff --git a/packages/core/tsconfig.bootstrap.json b/packages/core/tsconfig.bootstrap.json new file mode 100644 index 0000000..c7d1c7f --- /dev/null +++ b/packages/core/tsconfig.bootstrap.json @@ -0,0 +1,8 @@ +{ + "extends": "./tsconfig.build.json", + "exclude": [ + "src/**/*.test.ts", + "src/**/*.test-d.ts", + "src/exports/connectors.ts" + ] +} diff --git a/packages/core/tsconfig.build.json b/packages/core/tsconfig.build.json index bfa901b..bdd2ca7 100644 --- a/packages/core/tsconfig.build.json +++ b/packages/core/tsconfig.build.json @@ -6,7 +6,11 @@ "declarationDir": "dist/types", "declaration": true, "declarationMap": true, - "sourceMap": true + "sourceMap": true, + "paths": { + "@growae/reactive": ["./src/exports/index.ts"], + "@growae/reactive/*": ["./src/exports/*.ts"] + } }, "include": ["src/**/*.ts"], "exclude": ["src/**/*.test.ts", "src/**/*.test-d.ts"] diff --git a/packages/react/src/exports/index.ts b/packages/react/src/exports/index.ts index 65b31c3..5dc2f7f 100644 --- a/packages/react/src/exports/index.ts +++ b/packages/react/src/exports/index.ts @@ -103,6 +103,12 @@ export { useEstimateGas, type UseEstimateGasParameters, type UseEstimateGasReturnType, + useWaitForTransactionConfirm, + type UseWaitForTransactionConfirmParameters, + type UseWaitForTransactionConfirmReturnType, + useMicroBlock, + type UseMicroBlockParameters, + type UseMicroBlockReturnType, // Transactions useSendTransaction, type UseSendTransactionParameters, @@ -113,6 +119,12 @@ export { usePayForTransaction, type UsePayForTransactionParameters, type UsePayForTransactionReturnType, + useBuildTransaction, + type UseBuildTransactionParameters, + type UseBuildTransactionReturnType, + useTransferFunds, + type UseTransferFundsParameters, + type UseTransferFundsReturnType, // Signing useSignMessage, type UseSignMessageParameters, @@ -129,6 +141,9 @@ export { useVerifyTypedData, type UseVerifyTypedDataParameters, type UseVerifyTypedDataReturnType, + useSignDelegation, + type UseSignDelegationParameters, + type UseSignDelegationReturnType, // Contracts useDeployContract, type UseDeployContractParameters, @@ -148,6 +163,9 @@ export { useContractEvents, type UseContractEventsParameters, type UseContractEventsReturnType, + useCompileContract, + type UseCompileContractParameters, + type UseCompileContractReturnType, // AENS usePreclaimName, type UsePreclaimNameParameters, @@ -167,6 +185,9 @@ export { useResolveName, type UseResolveNameParameters, type UseResolveNameReturnType, + useNameEntry, + type UseNameEntryParameters, + type UseNameEntryReturnType, // Oracles useRegisterOracle, type UseRegisterOracleParameters, diff --git a/packages/solid/src/exports/index.ts b/packages/solid/src/exports/index.ts index 1b7ae84..0c204d2 100644 --- a/packages/solid/src/exports/index.ts +++ b/packages/solid/src/exports/index.ts @@ -103,6 +103,12 @@ export { useEstimateGas, type UseEstimateGasParameters, type UseEstimateGasReturnType, + useWaitForTransactionConfirm, + type UseWaitForTransactionConfirmParameters, + type UseWaitForTransactionConfirmReturnType, + useMicroBlock, + type UseMicroBlockParameters, + type UseMicroBlockReturnType, // Transactions useSendTransaction, type UseSendTransactionParameters, @@ -113,6 +119,12 @@ export { usePayForTransaction, type UsePayForTransactionParameters, type UsePayForTransactionReturnType, + useBuildTransaction, + type UseBuildTransactionParameters, + type UseBuildTransactionReturnType, + useTransferFunds, + type UseTransferFundsParameters, + type UseTransferFundsReturnType, // Signing useSignMessage, type UseSignMessageParameters, @@ -129,6 +141,9 @@ export { useVerifyTypedData, type UseVerifyTypedDataParameters, type UseVerifyTypedDataReturnType, + useSignDelegation, + type UseSignDelegationParameters, + type UseSignDelegationReturnType, // Contracts useDeployContract, type UseDeployContractParameters, @@ -148,6 +163,9 @@ export { useContractEvents, type UseContractEventsParameters, type UseContractEventsReturnType, + useCompileContract, + type UseCompileContractParameters, + type UseCompileContractReturnType, // AENS usePreclaimName, type UsePreclaimNameParameters, @@ -167,6 +185,9 @@ export { useResolveName, type UseResolveNameParameters, type UseResolveNameReturnType, + useNameEntry, + type UseNameEntryParameters, + type UseNameEntryReturnType, // Oracles useRegisterOracle, type UseRegisterOracleParameters, diff --git a/packages/vue/src/exports/index.ts b/packages/vue/src/exports/index.ts index ee6ab35..a70e9f8 100644 --- a/packages/vue/src/exports/index.ts +++ b/packages/vue/src/exports/index.ts @@ -96,6 +96,12 @@ export { useEstimateGas, type UseEstimateGasParameters, type UseEstimateGasReturnType, + useWaitForTransactionConfirm, + type UseWaitForTransactionConfirmParameters, + type UseWaitForTransactionConfirmReturnType, + useMicroBlock, + type UseMicroBlockParameters, + type UseMicroBlockReturnType, // Transactions useSendTransaction, type UseSendTransactionParameters, @@ -106,6 +112,12 @@ export { usePayForTransaction, type UsePayForTransactionParameters, type UsePayForTransactionReturnType, + useBuildTransaction, + type UseBuildTransactionParameters, + type UseBuildTransactionReturnType, + useTransferFunds, + type UseTransferFundsParameters, + type UseTransferFundsReturnType, // Signing useSignMessage, type UseSignMessageParameters, @@ -122,6 +134,9 @@ export { useVerifyTypedData, type UseVerifyTypedDataParameters, type UseVerifyTypedDataReturnType, + useSignDelegation, + type UseSignDelegationParameters, + type UseSignDelegationReturnType, // Contracts useDeployContract, type UseDeployContractParameters, @@ -141,6 +156,9 @@ export { useContractEvents, type UseContractEventsParameters, type UseContractEventsReturnType, + useCompileContract, + type UseCompileContractParameters, + type UseCompileContractReturnType, // AENS usePreclaimName, type UsePreclaimNameParameters, @@ -160,6 +178,9 @@ export { useResolveName, type UseResolveNameParameters, type UseResolveNameReturnType, + useNameEntry, + type UseNameEntryParameters, + type UseNameEntryReturnType, // Oracles useRegisterOracle, type UseRegisterOracleParameters, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a513fd8..f455d8d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -72,6 +72,9 @@ importers: '@aeternity/aepp-sdk': specifier: ^14.0.0 version: 14.1.1(bufferutil@4.1.0)(utf-8-validate@5.0.10) + '@growae/reactive-connectors': + specifier: workspace:* + version: link:../connectors eventemitter3: specifier: ^5.0.0 version: 5.0.4 @@ -99,7 +102,7 @@ importers: specifier: ^2.4.9 version: 2.4.9 tsup: - specifier: ^8.5.1 + specifier: ^8.5.0 version: 8.5.1(jiti@2.6.1)(postcss@8.5.8)(typescript@5.9.3)(yaml@2.8.3) packages/react: diff --git a/site/.vitepress/config.ts b/site/.vitepress/config.ts index 842ac93..82fac36 100644 --- a/site/.vitepress/config.ts +++ b/site/.vitepress/config.ts @@ -74,6 +74,7 @@ function coreSidebar(): DefaultTheme.SidebarItem[] { items: [ { text: 'Configuration', link: '/core/configuration' }, { text: 'Networks', link: '/core/networks' }, + { text: 'Connectors', link: '/core/guides/connectors' }, { text: 'Multi-Account', link: '/core/guides/multi-account' }, { text: 'AENS Names', link: '/core/guides/aens' }, { text: 'Sophia Contracts', link: '/core/guides/contracts' }, @@ -90,6 +91,18 @@ function coreSidebar(): DefaultTheme.SidebarItem[] { { text: 'createConnector', link: '/core/api/createConnector' }, ], }, + { + text: 'Connectors', + items: [ + { text: 'superhero', link: '/core/api/connectors/superhero' }, + { text: 'iframe', link: '/core/api/connectors/iframe' }, + { text: 'webExtension', link: '/core/api/connectors/webExtension' }, + { text: 'ledger', link: '/core/api/connectors/ledger' }, + { text: 'metamaskSnap', link: '/core/api/connectors/metamaskSnap' }, + { text: 'memory', link: '/core/api/connectors/memory' }, + { text: 'walletDetect', link: '/core/api/connectors/walletDetect' }, + ], + }, { text: 'Account & Wallet', items: [ diff --git a/site/core/api/connectors/iframe.md b/site/core/api/connectors/iframe.md new file mode 100644 index 0000000..eef92e8 --- /dev/null +++ b/site/core/api/connectors/iframe.md @@ -0,0 +1,69 @@ +# iframe + +For dApps embedded in an iframe that talk to a wallet in the parent (or another) window via `postMessage`. + +## Import + +```typescript +import { iframe } from '@growae/reactive/connectors' +``` + +## Usage + +Parent hosts the wallet; the dApp runs inside `