node_io 1.0.1+2

node_io #

This library exposes Node I/O functionality in dart:io way. It wraps Node.js I/O modules (like fs and http) and implements them using abstractions provided by dart:io (like File, Directory or HttpServer).

If you are looking for direct access to Node.js API see node_interop package.

Usage #

A basic example of accessing file system:

import 'package:node_io/node_io.dart';

void main() {
  print(Directory.current);
  print("Current directory exists: ${Directory.current.existsSync()}");
  print('Current directory contents: ');
  Directory.current.list().listen(print);
}

Configuration and build #

Add build_node_compilers and build_runner to dev_dependencies section in pubspec.yaml of your project:

dev_dependencies:
  build_runner: # needed to run the build
  build_node_compilers:

Add build.yaml file to the root of your project:

targets:
  $default:
    sources:
      - "node/**"
      - "test/**" # Include this if you want to compile tests.
      - "example/**" # Include this if you want to compile examples.

By convention all Dart files which declare main function go in node/ folder.

To build your project run following:

pub run build_runner build --output=build/

Detailed instructions can be found in build_node_compilers package docs.

Features and bugs #

Please file feature requests and bugs at the issue tracker.

1.0.1+2 #

  • More preparation for Uint8List SDK breaking change (dart-lang/sdk#36900). See #61 and #63 for details.

1.0.1+1 #

  • Prepare for Uint8List SDK breaking change (dart-lang/sdk#36900). See #59 and #60 for details.

1.0.1 #

  • Server side NodeHttpRequest and NodeHttpResponse are now available in public interface.

1.0.0 #

First stable release of this library which implements subset of dart:io interfaces, including File System objects, HttpServer, Platform and other common classes.

Not all dart:io interfaces are covered yet. Feel free to file an issue on Github if you need a specific class implemented in node_io.

  • Complete file system implementations for Directory, File, RandomAccessFile, Link.
  • Added STATUS.md which reflects coverage of already implemented or exported dart:io APIs.

1.0.0-dev.10.0 #

  • Fixed NodeHttpResponse.redirect failing to convert Uri to string.

1.0.0-dev.9.0 #

  • Upgraded to latest build_node_compilers (0.2.0)

1.0.0-dev.8.0 #

  • Fixed: analysis warnings with latest Pub and Dart SDK.

1.0.0-dev.7.0 #

  • Fixed: handling errors in Directory.delete.
  • Fixed: handling relative paths in Directory.list.
  • Fixed: strong mode issues in Directory and File.
  • Added: File.create, File.delete, File.readAsString, File.rename, File.writeAsBytes, File.writeAsString.
  • Fixed: handling errors in File.open, File.stat, File.statSync.
  • Fixed: converting byte data in NodeIOSink.
  • Added: Minimal scaffold for Link FS entities.

1.0.0-dev.6.0 #

  • Upgraded to latest build_node_compilers.

1.0.0-dev.5.0 #

  • Fixed deprecation warnings with Dart 2 dev 61 SDK version.

1.0.0-dev.4.0 #

  • Fixed deprecation warnings with latest Dart 2 dev SDK.
  • Refactored HttpHeaders to not rely on Node.js API introduced in v7.7.0 Allows using this wrapper in Google Cloud Functions environment which runs on Node.js 6.x (LTS).

1.0.0-dev.3.0 #

  • Allow list values in HttpHeaders.set.

1.0.0-dev.2.0 #

  • Complete implementation of InternetAddress.

1.0.0-dev.1.0 #

  • Split from node_interop.

example/node_io.dart

import 'package:node_io/node_io.dart';

void main() {
  print(Directory.current);
  print("Current directory exists: ${Directory.current.existsSync()}");
  print('Current directory contents: ');
  Directory.current.list().listen(print);
}

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:


dependencies:
  node_io: ^1.0.1+2

2. Install it

You can install packages from the command line:

with pub:


$ pub get

Alternatively, your editor might support pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:


import 'package:node_io/node_io.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
62
Health:
Code health derived from static analysis. [more]
72
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
80
Overall:
Weighted score of the above. [more]
69
Learn more about scoring.

We analyzed this package on Jul 17, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.4.0
  • pana: 0.12.19

Platforms

Detected platforms: web, other

Primary library: package:node_io/node_io.dart with components: js, io.

Health suggestions

Fix lib/src/file.dart. (-12.22 points)

Analysis of lib/src/file.dart reported 26 hints, including:

line 13 col 44: Use lowercase_with_underscores when specifying a library prefix.

line 168 col 38: Use = to separate a named parameter from its default value.

line 191 col 34: Use = to separate a named parameter from its default value.

line 197 col 53: Use = to separate a named parameter from its default value.

line 217 col 34: Use = to separate a named parameter from its default value.

Fix lib/src/directory.dart. (-7.71 points)

Analysis of lib/src/directory.dart reported 16 hints, including:

line 11 col 44: Use lowercase_with_underscores when specifying a library prefix.

line 99 col 10: Avoid return types on setters.

line 127 col 53: Use = to separate a named parameter from its default value.

line 129 col 7: DO use curly braces for all flow control structures.

line 147 col 34: Use = to separate a named parameter from its default value.

Fix lib/src/http_server.dart. (-5.84 points)

Analysis of lib/src/http_server.dart reported 12 hints, including:

line 113 col 23: Use = to separate a named parameter from its default value.

line 113 col 39: Use = to separate a named parameter from its default value.

line 113 col 59: Use = to separate a named parameter from its default value.

line 180 col 19: Use = to separate a named parameter from its default value.

line 180 col 35: Use = to separate a named parameter from its default value.

Fix additional 5 files with analysis or formatting issues. (-5.97 points)

Additional issues in the following files:

  • lib/src/link.dart (5 hints)
  • lib/src/file_system_entity.dart (3 hints)
  • lib/src/http_headers.dart (2 hints)
  • lib/src/internet_address.dart (1 hint)
  • lib/src/streams.dart (1 hint)

Maintenance suggestions

The package description is too short. (-20 points)

Add more detail to the description field of pubspec.yaml. Use 60 to 180 characters to describe the package, what it does, and its target use case.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
node_interop ^1.0.1 1.0.3
path ^1.6.2 1.6.2
Dev dependencies
build_node_compilers ^0.2.0
build_runner ^1.0.0
build_test any
js ^0.6.0 0.6.1+1
test ^1.0.0

Admin