obsidian_vault_datasource 1.2.1 copy "obsidian_vault_datasource: ^1.2.1" to clipboard
obsidian_vault_datasource: ^1.2.1 copied to clipboard

A Dart library for working with Obsidian vault datasources using functional programming with fpdart.

Obsidian Vault Datasource #

A Dart library for working with Obsidian vault datasources using functional programming with fpdart.

API Style #

This library is built around fpdart's TaskEither for type-safe error handling. All operations return TaskEither<Failure, T> - call .run() to get a Future:

// Each operation returns TaskEither
final result = await vault.createNote('Hello').run();

// Handle the Either
result.fold(
  (failure) => print('Error: $failure'),
  (note) => print('Created: ${note.title}'),
);

If you prefer plain Futures without the Either, you can add your own extension:

import 'package:fpdart/fpdart.dart';

extension TaskEitherExt<R, L> on TaskEither<R, L> {
  /// Executes the TaskEither and returns the value, throwing on failure
  Future<R> toFuture() async {
    return (await run()).getOrElse((l) => throw Exception(l.toString()));
  }

  /// Executes the TaskEither and returns the value, or a default
  Future<R> toFutureOr(R defaultValue) async {
    return (await run()).getOrElse((l) => defaultValue);
  }
}

// Now you can use:
final note = await vault.createNote('Hello').toFuture();

Features #

  • Create and load Obsidian vaults
  • CRUD operations for notes and folders
  • Frontmatter properties support
  • Wiki-style link management ([[link]])
  • Fluent API with TaskEither for error handling

Installation #

dependencies:
  obsidian_vault_datasource: ^1.1.0

Usage #

import 'package:obsidian_vault_datasource/obsidian_vault_datasource.dart';

void main() async {
  // Load an existing vault - returns TaskEither, auto-refreshes
  final vaultResult = await ObsidianVault.load(path: '/path/to/vault').run();
  final vault = vaultResult.fold((f) => throw Exception(f), (v) => v);
  
  // Create a note
  await vault.createNote('Hello', content: 'World').run();
  
  // Find your note
  final note = vault.findNote('Hello');
  print(note?.title); // 'Hello'
}

API #

Method Description
ObsidianVault.create(path: 'path', name: 'name') Creates new vault directory
ObsidianVault.load(path: 'path') Loads existing vault
vault.refresh() Reloads vault from disk
vault.createNote(title, content) Creates a note
vault.createFolder(name) Creates a folder
note.createProperty(key, value) Adds frontmatter
note.createLink(target) Adds wiki link

Examples #

See the example/ directory for complete example:

Run example:

dart run example/create_vault_example.dart
dart run example/read_vault_example.dart

Testing #

dart test

License #

MIT License - see LICENSE file.

Trademark Notice #

Flutter and Dart logos are trademarks of Google. Obsidian logs are trademarks of Obsidian. All images included in this project or documentation are owned by their respective copyright holders.

0
likes
150
points
146
downloads

Documentation

API reference

Publisher

verified publishertaybiz.com

Weekly Downloads

A Dart library for working with Obsidian vault datasources using functional programming with fpdart.

Repository (GitHub)
View/report issues

Topics

#obsidian #vault #markdown #note-taking

License

MIT (license)

Dependencies

equatable, fpdart, markdown, path, watcher, yaml

More

Packages that depend on obsidian_vault_datasource