genesis_lint 0.1.0 copy "genesis_lint: ^0.1.0" to clipboard
genesis_lint: ^0.1.0 copied to clipboard

Static analysis rules for safe genesis tree context use.

genesis_lint #

Static analysis rules that keep TreeContext capabilities scoped safely. This package is an analyzer extension; applications do not import it at runtime, and it deliberately has no dependency on genesis_tree. Rules match the resolved declaring-library URI of the types they inspect.

Analyzer extensions are available on Dart 3.10 and later. Enable this one in the top-level plugins section of a package-root or workspace-root analysis_options.yaml:

plugins:
  genesis_lint: ^0.1.0

For local development, replace the version with a path dependency:

plugins:
  genesis_lint:
    path: packages/lint

Both diagnostics are warnings, so they are enabled without a diagnostics mapping.

no_stored_tree_context #

Rejects a TreeContext assigned to durable object state, inserted into a collection, or captured by an escaping closure. The ban is unconditional: checking mounted does not make retaining a write-capability handle on a long-lived unmanaged object safe. Framework storage owned by a Branch or a TreeContext implementation is exempt.

use_tree_context_synchronously #

Rejects a TreeContext use after await unless the same handle has had an intervening mounted probe. Holding the handle across an asynchronous gap is legal when it is checked before use:

Future<void> rebuildLater(TreeContext context) async {
  await waitForWork();
  if (!context.mounted) return;
  context.markNeedsRebuild();
}

A second await invalidates the earlier probe and requires another check.

0
likes
150
points
1.27k
downloads

Documentation

API reference

Publisher

verified publishermemento.engineering

Weekly Downloads

Static analysis rules for safe genesis tree context use.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

analysis_server_plugin, analyzer

More

Packages that depend on genesis_lint