kunkun/packages/extensions/ext-sveltekit-exp/src/routes/+page.svelte
Huakun Shen 99b940b03b
Some checks failed
CI / build-test (macos-14) (push) Has been cancelled
CI / build-test (ubuntu-24.04) (push) Has been cancelled
CI / build-test (windows-latest) (push) Has been cancelled
File Transfer (Local Network) (#34)
* feat: implement a file streamer for file share

Only server with hardcoded file path

* bump valibot version

* feat: add server-info gRPC module to serve server info

* feat: add ssl cert and public key to peers state

When peer is online, KK always have know its cert and pub key for future secure communication

* feat: add grpc ts package

* Enable "/refresh-worker-extension" rest API, grpc version isn't ready  yet

* update pnpm lock

* ci: fix CI by moving protobuf install order

* ci: fix

* upgrade api due to valibot incompatibility

* fix: use fs instead of bun shell to be compatible with windows

* skip grpc pkg build on windows

* feat: local network file transfer prototype working

* fix: grpc build.ts

* download next to 14

* ci: add ci env try to fix next

* fix: hideRefreshBtn and a few other btns' hide API in iframe ext page

* feat: disable NODE_TLS_REJECT_UNAUTHORIZED for extension HMR refresh

* fix: manifest json schema with objectWithRest to allow any other fields in package.json

* chore: update valibot and related dependencies to version 1.0.0-beta.9 in pnpm-lock.yaml

* ci: add protobuf compiler installation to manifest-schema-upload workflow

* refactor: move grpc code from jarvis to a separate grpc crate

for easier testing

* feat(file-transfer): POC multi file + directory file transfer

* feat(file-transfer): replace file transfer recursive download in ts with rust

* feat(file-transfer): implement on_progress event for file transfer

* feat(file-transfer): report progress every 1MB instead of 100 iterations

* feat(file-transfer): add progress bar

* feat(file-transfer): UI

* feat(file-transfer): add file transfer bucket info preview

Show total size and number of files

* feat(file-transfer): improve UX

Show bucket info during confirm; improve progress bar UI, prevent inconsistent width

* feat(grpc): skip build in Cloudflare Pages due to missing protoc

* refactor: with cargo fix, unused imports removed

* ci: debug cloudflare pages env var

* fix(grpc): update environment variable access for Cloudflare Pages build check

* fix(grpc): add error handling for protoc command in build script

* chore: update kkrpc version to 0.0.13, remove kkrpc submodule, and enhance grpc build script logging

- Updated kkrpc dependency version from 0.0.12 to 0.0.13 in package.json.
- Removed the kkrpc submodule from the project.
- Enhanced logging in the grpc build script to include additional Cloudflare Pages environment variables for better debugging.

* fix(api): typescript error, remove base.json from tsconfig

* chore: update pnpm lock

* fix(api): update TypeScript configuration to extend base.json and clean up unused options

* refactor(api): update TypeScript configuration to extend path-alias.json and enhance compiler options

* fix(api): restore KunkunManifestPermission in PermissionUnion and update valibot import in schema tests

* fix: missing trait error

* fix: js require replaced with import

* test: fix a unit test with a more robust method

---------

Co-authored-by: Huakun Shen <huaukun.shen@huakunshen.com>
2024-12-11 08:14:40 -05:00

87 lines
2.4 KiB
Svelte

<script lang="ts">
import { base } from '$app/paths';
import { clipboard, notification, ui, toast, dialog, shell } from '@kksh/api/ui/iframe';
import {
ModeToggle,
Button,
Command,
CommandFooter,
ModeWatcher,
Separator,
ThemeWrapper,
updateTheme
} from '@kksh/svelte';
import { onMount } from 'svelte';
onMount(() => {
clipboard.readText().then((text) => {
console.log('clipboard text', text);
});
});
function showDialog() {
dialog
.open({ directory: false })
.then((res: any) => console.log(res))
.catch((err: any) => {
console.error(err);
});
}
async function testKkrpc() {
const { rpcChannel, process, command } = await shell.createDenoRpcChannel<
{},
{
echo: (paths: string[]) => Promise<string[]>;
}
>('$EXTENSION/deno-src/index.ts', [], {}, {});
command.stderr.on('data', (data) => {
'';
console.log('stderr', data);
});
// command.stdout.on('data', (data) => {
// console.log('stdout', data);
// });
const api = rpcChannel.getAPI();
await api
.echo([
'/Users/hk/Desktop/_DSC2594.ARW',
'/Users/hk/Desktop/_DSC2597.ARW',
'/Users/hk/Desktop/_DSC2598.ARW',
'/Users/hk/Desktop/DJI_20241128180028_0198_D.JPG',
'/Users/hk/Desktop/_DSC2594.ARW',
'/Users/hk/Desktop/_DSC2597.ARW',
'/Users/hk/Desktop/_DSC2598.ARW',
'/Users/hk/Desktop/DJI_20241128180028_0198_D.JPG',
'/Users/hk/Desktop/_DSC2594.ARW',
'/Users/hk/Desktop/_DSC2597.ARW',
'/Users/hk/Desktop/_DSC2598.ARW',
'/Users/hk/Desktop/DJI_20241128180028_0198_D.JPG',
'/Users/hk/Desktop/_DSC2594.ARW',
'/Users/hk/Desktop/_DSC2597.ARW',
'/Users/hk/Desktop/_DSC2598.ARW',
'/Users/hk/Desktop/DJI_20241128180028_0198_D.JPG',
'/Users/hk/Desktop/_DSC2594.ARW',
'/Users/hk/Desktop/_DSC2597.ARW',
'/Users/hk/Desktop/_DSC2598.ARW',
'/Users/hk/Desktop/DJI_20241128180028_0198_D.JPG',
'/Users/hk/Desktop/_DSC2594.ARW',
'/Users/hk/Desktop/_DSC2597.ARW',
'/Users/hk/Desktop/_DSC2598.ARW',
'/Users/hk/Desktop/DJI_20241128180028_0198_D.JPG',
'/Users/hk/Desktop/_DSC2594.ARW',
'/Users/hk/Desktop/_DSC2597.ARW',
'/Users/hk/Desktop/_DSC2598.ARW',
'/Users/hk/Desktop/DJI_20241128180028_0198_D.JPG'
])
.then(console.log)
.catch(console.error);
process.kill();
}
</script>
<div data-kunkun-drag-region class="h-12"></div>
<div class="container">
<Button onclick={showDialog}>Show Dialog</Button>
<Button onclick={testKkrpc}>Test kkrpc</Button>
</div>