Skip to content

Commit

Permalink
Refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
HuakunShen committed Jun 21, 2024
1 parent b56dddf commit f05b039
Show file tree
Hide file tree
Showing 12 changed files with 167 additions and 134 deletions.
8 changes: 3 additions & 5 deletions packages/tauri-api-adapter/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,10 @@
"import": "./dist/index.js",
"require": "./dist/index.cjs"
},
"./shell": {
"types": "./dist/api/shell.d.ts",
"import": "./dist/api/shell.js"
},
"./native": {

"import": "./dist/worker.js",
"require": "./dist/worker.cjs",
"types": "./dist/worker.d.ts"
},
"./package.json": "./package.json"
},
Expand Down
18 changes: 13 additions & 5 deletions packages/tauri-api-adapter/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,23 @@ const pkg = JSON.parse(readFileSync(join(cwd(), 'package.json'), 'utf8'))

/** @type {import('rollup').RollupOptions} */
const config = {
input: 'src/index.ts',
input: ['src/index.ts', 'src/native.ts', 'src/worker.ts'],
output: [
{
file: pkg.exports['.'].import,
format: 'esm'
dir: 'dist',
format: 'cjs',
entryFileNames: '[name].cjs',
chunkFileNames: '[name]-[hash].js',
preserveModules: true,
preserveModulesRoot: 'src'
},
{
file: pkg.exports['.'].require,
format: 'cjs'
dir: 'dist',
format: 'esm',
entryFileNames: '[name].js',
chunkFileNames: '[name]-[hash].js',
preserveModules: true,
preserveModulesRoot: 'src'
}
],
treeshake: true,
Expand Down
45 changes: 25 additions & 20 deletions packages/tauri-api-adapter/src/api/clipboard.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,33 @@
import { IClipboard } from '@/api/client-types'
import { defaultClientAPI } from '@/client'
import { Remote } from '@huakunshen/comlink'
import * as _clipboard from 'tauri-plugin-clipboard-api'
import { IClipboardServer } from './server-types'

export const comlinkClipboard: IClipboard = {
readText: defaultClientAPI.clipboardReadText,
writeText: defaultClientAPI.clipboardWriteText,
readImageBase64: defaultClientAPI.clipboardReadImageBase64,
readImageBinary: defaultClientAPI.clipboardReadImageBinary,
writeImageBase64: defaultClientAPI.clipboardWriteImageBase64,
writeImageBinary: defaultClientAPI.clipboardWriteImageBinary,
readFiles: defaultClientAPI.clipboardReadFiles,
writeFiles: defaultClientAPI.clipboardWriteFiles,
readRtf: defaultClientAPI.clipboardReadRtf,
writeRtf: defaultClientAPI.clipboardWriteRtf,
readHtml: defaultClientAPI.clipboardReadHtml,
writeHtml: defaultClientAPI.clipboardWriteHtml,
writeHtmlAndText: defaultClientAPI.clipboardWriteHtmlAndText,
hasText: defaultClientAPI.clipboardHasText,
hasRTF: defaultClientAPI.clipboardHasRTF,
hasHTML: defaultClientAPI.clipboardHasHTML,
hasImage: defaultClientAPI.clipboardHasImage,
hasFiles: defaultClientAPI.clipboardHasFiles,
startMonitor: defaultClientAPI.clipboardStartMonitor
export function constructAPI(api: Remote<IClipboardServer>): IClipboard {
return {
readText: api.clipboardReadText,
writeText: api.clipboardWriteText,
readImageBase64: api.clipboardReadImageBase64,
readImageBinary: api.clipboardReadImageBinary,
writeImageBase64: api.clipboardWriteImageBase64,
writeImageBinary: api.clipboardWriteImageBinary,
readFiles: api.clipboardReadFiles,
writeFiles: api.clipboardWriteFiles,
readRtf: api.clipboardReadRtf,
writeRtf: api.clipboardWriteRtf,
readHtml: api.clipboardReadHtml,
writeHtml: api.clipboardWriteHtml,
writeHtmlAndText: api.clipboardWriteHtmlAndText,
hasText: api.clipboardHasText,
hasRTF: api.clipboardHasRTF,
hasHTML: api.clipboardHasHTML,
hasImage: api.clipboardHasImage,
hasFiles: api.clipboardHasFiles,
startMonitor: api.clipboardStartMonitor
}
}
export const comlinkClipboard = constructAPI(defaultClientAPI)

export const nativeClipboard: IClipboard = {
readText: _clipboard.readText,
Expand Down
18 changes: 11 additions & 7 deletions packages/tauri-api-adapter/src/api/dialog.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
import { IDialog } from '@/api/client-types'
import { defaultClientAPI } from '@/client'
import { Remote } from '@huakunshen/comlink'
import * as _dialogApi from '@tauri-apps/plugin-dialog'
import { IDialogServer, IFullAPI } from './server-types'

export const comlinkDialog: IDialog = {
ask: defaultClientAPI.dialogAsk,
confirm: defaultClientAPI.dialogConfirm,
message: defaultClientAPI.dialogMessage,
open: defaultClientAPI.dialogOpen,
save: defaultClientAPI.dialogSave
export function constructAPI(api: Remote<IDialogServer>): IDialog {
return {
ask: api.dialogAsk,
confirm: api.dialogConfirm,
message: api.dialogMessage,
open: api.dialogOpen,
save: api.dialogSave
}
}

export const comlinkDialog: IDialog = constructAPI(defaultClientAPI)
export const nativeDialog: IDialog = {
ask: _dialogApi.ask,
confirm: _dialogApi.confirm,
Expand Down
35 changes: 20 additions & 15 deletions packages/tauri-api-adapter/src/api/fs.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
import { IFs } from '@/api/client-types'
import { defaultClientAPI } from '@/client'
import { Remote } from '@huakunshen/comlink'
import * as _fs from '@tauri-apps/plugin-fs'
import { IFsServer } from './server-types'

export const comlinkFs: IFs = {
readDir: defaultClientAPI.fsReadDir,
readFile: defaultClientAPI.fsReadFile,
readTextFile: defaultClientAPI.fsReadTextFile,
stat: defaultClientAPI.fsStat,
lstat: defaultClientAPI.fsLstat,
exists: defaultClientAPI.fsExists,
mkdir: defaultClientAPI.fsMkdir,
create: defaultClientAPI.fsCreate,
copyFile: defaultClientAPI.fsCopyFile,
remove: defaultClientAPI.fsRemove,
rename: defaultClientAPI.fsRename,
truncate: defaultClientAPI.fsTruncate,
writeFile: defaultClientAPI.fsWriteFile,
writeTextFile: defaultClientAPI.fsWriteTextFile
export function constructAPI(api: Remote<IFsServer>): IFs {
return {
readDir: api.fsReadDir,
readFile: api.fsReadFile,
readTextFile: api.fsReadTextFile,
stat: api.fsStat,
lstat: api.fsLstat,
exists: api.fsExists,
mkdir: api.fsMkdir,
create: api.fsCreate,
copyFile: api.fsCopyFile,
remove: api.fsRemove,
rename: api.fsRename,
truncate: api.fsTruncate,
writeFile: api.fsWriteFile,
writeTextFile: api.fsWriteTextFile
}
}
export const comlinkFs: IFs = constructAPI(defaultClientAPI)

export const nativeFs: IFs = {
readDir: _fs.readDir,
Expand Down
27 changes: 16 additions & 11 deletions packages/tauri-api-adapter/src/api/network.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,24 @@
import { INetwork } from '@/api/client-types'
import { defaultClientAPI } from '@/client'
import { Remote } from '@huakunshen/comlink'
import * as _network from 'tauri-plugin-network-api'
import { INetworkServer } from './server-types'

export const comlinkNetwork: INetwork = {
getInterfaces: defaultClientAPI.networkGetInterfaces,
getNonEmptyInterfaces: defaultClientAPI.networkGetNonEmptyInterfaces,
findAvailablePort: defaultClientAPI.networkFindAvailablePort,
isPortTaken: defaultClientAPI.networkIsPortTaken,
isHttpPortOpen: defaultClientAPI.networkIsHttpPortOpen,
scanOnlineIpPortPairs: defaultClientAPI.networkScanOnlineIpPortPairs,
scanOnlineIpsByPort: defaultClientAPI.networkScanOnlineIpsByPort,
nonLocalhostNetworks: defaultClientAPI.networkNonLocalhostNetworks,
localServerIsRunning: defaultClientAPI.networkLocalServerIsRunning,
scanLocalNetworkOnlineHostsByPort: defaultClientAPI.networkScanLocalNetworkOnlineHostsByPort
export function constructAPI(api: Remote<INetworkServer>): INetwork {
return {
getInterfaces: api.networkGetInterfaces,
getNonEmptyInterfaces: api.networkGetNonEmptyInterfaces,
findAvailablePort: api.networkFindAvailablePort,
isPortTaken: api.networkIsPortTaken,
isHttpPortOpen: api.networkIsHttpPortOpen,
scanOnlineIpPortPairs: api.networkScanOnlineIpPortPairs,
scanOnlineIpsByPort: api.networkScanOnlineIpsByPort,
nonLocalhostNetworks: api.networkNonLocalhostNetworks,
localServerIsRunning: api.networkLocalServerIsRunning,
scanLocalNetworkOnlineHostsByPort: api.networkScanLocalNetworkOnlineHostsByPort
}
}
export const comlinkNetwork: INetwork = constructAPI(defaultClientAPI)

export const nativeNetwork: INetwork = {
getInterfaces: _network.getInterfaces,
Expand Down
55 changes: 30 additions & 25 deletions packages/tauri-api-adapter/src/api/notification.ts
Original file line number Diff line number Diff line change
@@ -1,36 +1,41 @@
import { INotification } from '@/api/client-types'
import { defaultClientAPI } from '@/client'
import * as Comlink from '@huakunshen/comlink'
import { Remote } from '@huakunshen/comlink'
import { PluginListener } from '@tauri-apps/api/core'
import * as notificationApi from '@tauri-apps/plugin-notification'
import { INotificationServer } from './server-types'

export const comlinkNotification: INotification = {
sendNotification: defaultClientAPI.notificationSendNotification,
requestPermission: defaultClientAPI.notificationRequestPermission,
isPermissionGranted: defaultClientAPI.notificationIsPermissionGranted,
registerActionTypes: defaultClientAPI.notificationRegisterActionTypes,
// this may not work
pending: defaultClientAPI.notificationPending,
cancel: defaultClientAPI.notificationCancel,
cancelAll: defaultClientAPI.notificationCancelAll,
// this may not work
active: defaultClientAPI.notificationActive,
removeActive: defaultClientAPI.notificationRemoveActive,
removeAllActive: defaultClientAPI.notificationRemoveAllActive,
createChannel: defaultClientAPI.notificationCreateChannel,
removeChannel: defaultClientAPI.notificationRemoveChannel,
channels: defaultClientAPI.notificationChannels,
// this may not work
onNotificationReceived: (
cb: (notification: notificationApi.Options) => void
): Promise<PluginListener> => {
return defaultClientAPI.notificationOnNotificationReceived(Comlink.proxy(cb))
},
// this may not work
onAction: (cb: (notification: notificationApi.Options) => void): Promise<PluginListener> => {
return defaultClientAPI.notificationOnAction(Comlink.proxy(cb))
export function constructAPI(api: Remote<INotificationServer>): INotification {
return {
sendNotification: api.notificationSendNotification,
requestPermission: api.notificationRequestPermission,
isPermissionGranted: api.notificationIsPermissionGranted,
registerActionTypes: api.notificationRegisterActionTypes,
// this may not work
pending: api.notificationPending,
cancel: api.notificationCancel,
cancelAll: api.notificationCancelAll,
// this may not work
active: api.notificationActive,
removeActive: api.notificationRemoveActive,
removeAllActive: api.notificationRemoveAllActive,
createChannel: api.notificationCreateChannel,
removeChannel: api.notificationRemoveChannel,
channels: api.notificationChannels,
// this may not work
onNotificationReceived: (
cb: (notification: notificationApi.Options) => void
): Promise<PluginListener> => {
return api.notificationOnNotificationReceived(Comlink.proxy(cb))
},
// this may not work
onAction: (cb: (notification: notificationApi.Options) => void): Promise<PluginListener> => {
return api.notificationOnAction(Comlink.proxy(cb))
}
}
}
export const comlinkNotification: INotification = constructAPI(defaultClientAPI)

export const nativeNotification: INotification = {
sendNotification: notificationApi.sendNotification,
Expand Down
23 changes: 14 additions & 9 deletions packages/tauri-api-adapter/src/api/os.ts
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
import { IOs } from '@/api/client-types'
import { defaultClientAPI } from '@/client'
import { Remote } from '@huakunshen/comlink'
import * as _os from '@tauri-apps/plugin-os'
import { IOsServer } from './server-types'

export const comlinkOs: IOs = {
platform: defaultClientAPI.osPlatform,
arch: defaultClientAPI.osArch,
exeExtension: defaultClientAPI.osExeExtension,
family: defaultClientAPI.osFamily,
hostname: defaultClientAPI.osHostname,
eol: defaultClientAPI.osEol,
version: defaultClientAPI.osVersion,
locale: defaultClientAPI.osLocale
export function constructAPI(api: Remote<IOsServer>): IOs {
return {
platform: api.osPlatform,
arch: api.osArch,
exeExtension: api.osExeExtension,
family: api.osFamily,
hostname: api.osHostname,
eol: api.osEol,
version: api.osVersion,
locale: api.osLocale
}
}
export const comlinkOs: IOs = constructAPI(defaultClientAPI)

export const nativeOs: IOs = {
platform: _os.platform,
Expand Down
55 changes: 30 additions & 25 deletions packages/tauri-api-adapter/src/api/system-info.ts
Original file line number Diff line number Diff line change
@@ -1,33 +1,38 @@
import { ISystemInfo } from '@/api/client-types'
import { defaultClientAPI } from '@/client'
import { Remote } from '@huakunshen/comlink'
import * as _sysinfo from 'tauri-plugin-system-info-api'
import { ISystemInfoServer } from './server-types'

export const comlinkSysInfo: ISystemInfo = {
allSysInfo: defaultClientAPI.sysInfoAllSysInfo,
totalMemory: defaultClientAPI.sysInfoTotalMemory,
usedMemory: defaultClientAPI.sysInfoUsedMemory,
totalSwap: defaultClientAPI.sysInfoTotalSwap,
usedSwap: defaultClientAPI.sysInfoUsedSwap,
memoryInfo: defaultClientAPI.sysInfoMemoryInfo,
hostname: defaultClientAPI.sysInfoHostname,
name: defaultClientAPI.sysInfoName,
kernelVersion: defaultClientAPI.sysInfoKernelVersion,
osVersion: defaultClientAPI.sysInfoOsVersion,
staticInfo: defaultClientAPI.sysInfoStaticInfo,
components: defaultClientAPI.sysInfoComponents,
cpus: defaultClientAPI.sysInfoCpus,
cpuCount: defaultClientAPI.sysInfoCpuCount,
cpuInfo: defaultClientAPI.sysInfoCpuInfo,
disks: defaultClientAPI.sysInfoDisks,
networks: defaultClientAPI.sysInfoNetworks,
processes: defaultClientAPI.sysInfoProcesses,
refreshAll: defaultClientAPI.sysInfoRefreshAll,
refreshMemory: defaultClientAPI.sysInfoRefreshMemory,
refreshCpu: defaultClientAPI.sysInfoRefreshCpu,
refreshProcesses: defaultClientAPI.sysInfoRefreshProcesses,
debugCommand: defaultClientAPI.sysInfoDebugCommand,
batteries: defaultClientAPI.sysInfoBatteries
export function constructAPI(api: Remote<ISystemInfoServer>): ISystemInfo {
return {
allSysInfo: api.sysInfoAllSysInfo,
totalMemory: api.sysInfoTotalMemory,
usedMemory: api.sysInfoUsedMemory,
totalSwap: api.sysInfoTotalSwap,
usedSwap: api.sysInfoUsedSwap,
memoryInfo: api.sysInfoMemoryInfo,
hostname: api.sysInfoHostname,
name: api.sysInfoName,
kernelVersion: api.sysInfoKernelVersion,
osVersion: api.sysInfoOsVersion,
staticInfo: api.sysInfoStaticInfo,
components: api.sysInfoComponents,
cpus: api.sysInfoCpus,
cpuCount: api.sysInfoCpuCount,
cpuInfo: api.sysInfoCpuInfo,
disks: api.sysInfoDisks,
networks: api.sysInfoNetworks,
processes: api.sysInfoProcesses,
refreshAll: api.sysInfoRefreshAll,
refreshMemory: api.sysInfoRefreshMemory,
refreshCpu: api.sysInfoRefreshCpu,
refreshProcesses: api.sysInfoRefreshProcesses,
debugCommand: api.sysInfoDebugCommand,
batteries: api.sysInfoBatteries
}
}
export const comlinkSysInfo: ISystemInfo = constructAPI(defaultClientAPI)

export const nativeSysInfo: ISystemInfo = {
allSysInfo: _sysinfo.allSysInfo,
Expand Down
15 changes: 3 additions & 12 deletions packages/tauri-api-adapter/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,18 +1,9 @@
export * from '@/comlink'
export { defaultClientAPI } from '@/client'
export { defaultServerAPI } from '@/server'
// export * from '@/api/server-types'
// export * as api from '@/api'
// export { fs } from '@/api/fs'
// export { notification } from '@/api/notification'
// export { os } from '@/api/os'
// export { shell } from '@/api/shell'
export { comlinkClipboard as clipboard } from '@/api/clipboard'
export { comlinkDialog as dialog } from '@/api/dialog'
// export { network } from '@/api/network'
// export { sysInfo } from '@/api/system-info'
export { listen, TauriEvent, comlinkEvent as event } from '@/api/event'
export * as utils from './utils'

export * as nativeApi from '@/native'
export * as workerApi from '@/worker'

export { listen, TauriEvent, comlinkEvent as event } from '@/api/event'
export * from './native'
1 change: 1 addition & 0 deletions packages/tauri-api-adapter/src/native.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ export { nativeNotification as notification } from '@/api/notification'
export { nativeOs as os } from '@/api/os'
export { nativeShell as shell } from '@/api/shell'
export { nativeSysInfo as sysInfo } from '@/api/system-info'
export { fetch } from '@tauri-apps/plugin-http'
Loading

0 comments on commit f05b039

Please sign in to comment.