In plugins/fs/guest-js/index.ts writeFile, the stream path opened the
file with {write, create} but no truncate, unlike the buffer path which
truncates unless `append` is set (commands.rs write_file_inner), so
shorter content left stale trailing bytes.
The stream path now passes `truncate: !options?.append`. api-iife.js
regenerated. E2E spec covers overwrite and append with a stream.
* fix(fs): report read errors of readTextFileLines
In plugins/fs/src/commands.rs read_text_file_lines_next, a read error was
mapped to "not done, empty line", so a persistent error such as EISDIR
(File::open of a directory succeeds on Unix) made the iterator yield ""
forever and the error was swallowed.
The command now closes the resource and returns the error; the JS iterator
resets its rid so a new iteration starts over. api-iife.js regenerated. E2E
spec iterates a directory and expects a rejection.
* fix(fs): close the file when a readTextFileLines loop exits early
In plugins/fs/guest-js/index.ts readTextFileLines, the async iterator did
not implement return(), so breaking out of a for await loop left the
StdLinesResource (an open file) in the webview resource table.
return() now closes the resource and resets the iterator. api-iife.js
regenerated. E2E spec breaks out of a loop, checks the resource id is no
longer valid and that iterating again starts over.
In plugins/fs/guest-js/index.ts, the size function only sent `path`
although the Rust command accepts `options.baseDir` and the JSDoc example
passed `{ baseDir: BaseDirectory.AppData }` (a TS error, silently dropped
at runtime, so the relative path was rejected).
Adds an optional `options?: SizeOptions` parameter (new exported type).
api-iife.js regenerated. The e2e spec now measures a file and a directory
relative to AppData instead of working around the missing option.
* In the `writeFile` function, when `options.baseDir` is not set, convert `path` to URL to avoid errors caused by Chinese characters.
* fmt
* use TextEncoder
* use percent encoding
* add change file
* fmt
---------
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>
* chore: adjust prettier config, .gitignore and use taplo to format toml files
This brings the plugins-workspace repository to the same code style of the main tauri repo
* format toml
* ignore examples gen dir
* add .vscode/extensions.json
* remove packageManager field
* fmt
* fix audit
* taplo ignore permissions autogenerated files
* remove create dummy dist
* fix prettier workflow
* install fmt in prettier workflow
---------
Co-authored-by: Lucas Nogueira <lucas@tauri.app>
* Add support for notify-debouncer-full
* Add fs watch to demo
* Remove notify-debouncer-mini
* Rename RawEvent to WatchEvent
* Add full type definition for EventKind
* Remove `track file ids` option from fs watcher
* Update plugins/fs/guest-js/index.ts
* feat(fs): improved API
* fmt
* fix unix builds
* again
* clippy
* clippy
* fix import in docs examples
* fmt, clippy
* Update linux.rs
* add API for watch
* fix with `watcher` feature flag
* use baseDir for all commands
* do not export close function
* fix build
* organize and address review comments
* fmt
* generated files
* rename FsFile to FileHandle, move APIs and docs
* extend example
* extend `Resource`
* actually extend it
---------
Co-authored-by: FabianLars <fabianlars@fabianlars.de>
Co-authored-by: Lucas Nogueira <lucas@tauri.studio>