commit | 2c08bc1280d363678487bf3dcad931230c801762 | [log] [tgz] |
---|---|---|
author | Todd Volkert <tvolkert@users.noreply.github.com> | Tue Feb 07 14:50:16 2017 -0800 |
committer | GitHub <noreply@github.com> | Tue Feb 07 14:50:16 2017 -0800 |
tree | 4e2e16fa9ee983fb5028bf7bc18279599c6136cb | |
parent | 53c69dfa0d2f31a8662309906b411579c10af2ca [diff] |
Deeply encode objects in `encode()` (#23) This changes `encode()` to deeply encode the specified object rather than performing a shallow encode. Previously, it relied on `JSONEncoder` to do the work of walking the object graph and calling `toEncodable` whenever it found a non-JSON type. Now, callers can call `encode()` on the top-level object and get back a deeply JSON-typed object that can be converted to JSON without the need for a `toEncodable` callback. This will be used during replay, when we'll compare an invocation to the list of recorded invocations, each of which exists as a JSON-type map. Since we now control the encoding process entirely ourselves, this also changes `encode()` to return `Future<dynamic>` rather than `dynamic`, which in turn allows both `InvocationEvent.serialize()` and `ResultReference.serializedValue` to return futures as well. Doing so allows for more technical correctness when serializing result references. Part of #11
A generic file system abstraction for Dart.
Like dart:io
, package:file
supplies a rich Dart-idiomatic API for accessing a file system.
Unlike dart:io
, package:file
:
Implement your own custom file system:
import 'package:file/file.dart'; class FooBarFileSystem implements FileSystem { ... }
Use the in-memory file system:
import 'package:file/memory.dart'; var fs = new MemoryFileSystem();
Use the local file system (requires dart:io access):
import 'package:file/local.dart'; var fs = const LocalFileSystem();