webart 0.3.0

  • Readme
  • Changelog
  • Example
  • Installing
  • 30

web.dart #

A lightweight web framework for Dart.

WARNING: Although supported dart 2, please do not use that #

Dart 2 has bad performance because of Strong Mode, seems like it just a another name of Dart 1's Checked Mode... Dart 2 is slower than Dart 1.24.3 ~60%. Use the version ends of -dart1c to use this library with Dart 1.

Features #

  • Web server (Thanks to shelf)
  • Plugin
  • Router
  • Context

Usage #

This example show the basic usage of web.dart

  webart:
    git: https://gitlab.com/thislight/web.dart.git

Or

  webart: any

Code:

import "package:webart/web.dart";

main(){
    // Create app
    Application app = new Application(
        new Config(<String, dynamic>{
            "debug": true,
            "route":{
                "": helloWorldHandler,
            }
        })
    );

    // Start app
    app.start("127.0.0.1", 8088);
}

// Define handler
Future helloWorldHandler(Request request) async{
    request.res.ok("Hello World");
}

Document #

Currently, API documents aren't finished. But you can get an overview of this library.

Documents will be built when new changes are pushed and on 4:00 (UTC+8) of everyday.

The document of branch master

The document of branch develop

LICENSE #

Copyright 2017 thisLight

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

CHANGELOG #

0.3.0 #

  • Support Dart 2 Strong Mode

0.2.6 #

  • Add class-based RequestHandler by RequestHandlerBase, just extends it and add RequestHandlerBase.handler(Instance) to routes
  • now support sceurityContext and backlog config item
  • Add new documents
  • Bugs fix

0.2.5 #

  • HOTFIX: Remove Dart 2 support

0.2.4 #

  • HOTFIX: Remove 3rd package for Dart 2 support

0.2.3 #

  • Fix response of method OPTIONS
  • add configure item allow_global_cors to Allow Global CORS
  • Remove custom sever header
  • Add function allowCORSRequest allow respond server headers that including some Access-Control-Allow-*
  • Add BroadcastResults to support that return value from a command
  • Add CommandLock to wait command done
  • Add optional param includingLock to Command for adding a CommandLock to Command.args['lock']
  • Redo BroadcastResults impl in Command, from Command.broadcastResult move to Command.args['_broadcastResult']
  • Remove command Request.beforeHandling
  • Now command Application.beforeRequestHandling will be runned before Routing and Handling

0.2.2 #

  • Fix Dart SDK version

0.2.1 #

  • Allow Command has a Completer to return a value
  • ChannelSession.send will return the future of Command's Completer if has
  • Fix example
  • Add Application.ready to touch some events must touch
  • some bug fixes

0.2.0 #

  • Release 0.2.0
    • Fix performance problem while running handler, move waitForResponse to trash
    • Add EventBus for plugin
    • Redesign route system, allow using third party router
    • Redesign layer system, get Go away and make it powerful
    • A bit tests for EventBus
    • Fix error that handler not handled
    • Fix error that handler will be called twice
    • return not found when not handler found
    • Remove LoggingLayer
    • Request.on changes to async
    • New MessageChannel, ChannelSession, ChannelSeesionMessage and Command
    • Return HTTP error 404 when handler not found
    • Router will be fast if uri path is static (for example '/about')
    • Builtin Router now work as a Plugin by RoutingPlugin, it also use third party router if given
    • A dirty fix for uri template "" match all uri
    • Package structure changed, all of Layer moved to single 'package:webart/layer.dart'
    • Small change for example.
    • Code opz.,remove unused imports and functions
    • Mark EvevntBus as deprecated, it will be removed when 0.2.0 released.
    • Update logging system, supported debug mode.Just add 'debug': true to config.
    • Mark Layer system as deprecated
    • Remove deprecated entries
    • Some fixes update
    • Fix some error while run on strong mode
    • Add some tests
    • Edit README

0.2.0-beta.5 #

  • Fix some error while run on strong mode
  • Add some tests
  • Edit README

0.2.0-beta.4 #

  • Some fixes update

0.2.0-beta.3 #

  • Remove deprecated entries

0.2.0-beta.2 #

  • Mark Layer system as deprecated

0.2.0-beta.1 #

  • Update logging system, supported debug mode.Just add 'debug': true to config.

0.2.0-beta.0 #

  • New MessageChannel, ChannelSession, ChannelSeesionMessage and Command
  • Return HTTP error 404 when handler not found
  • Router will be fast if uri path is static (for example '/about')
  • Builtin Router now work as a Plugin by RoutingPlugin, it also use third party router if given
  • A dirty fix for uri template "" match all uri
  • Package structure changed, all of Layer moved to single 'package:webart/layer.dart'
  • Small change for example.
  • Code opz.,remove unused imports and functions
  • Mark EvevntBus as deprecated, it will be removed when 0.2.0 released.

0.2.0-alpha.6 #

  • Remove LoggingLayer
  • Request.on changes to async

0.2.0-alpha.5 #

  • return not found when not handler found

0.2.0-alpha.4 #

  • Fix error that handler will be called twice

0.2.0-alpha.3 #

  • Fix error that handler not handled

0.2.0-alpha.2 #

  • Add EventBus for plugin
  • Redesign route system, allow using third party router
  • Redesign layer system, get Go away and make it powerful
  • A bit tests for EventBus

0.2.0-alpha.1 #

  • Fix performance problem while running handler, move waitForResponse to trash

0.1.0 #

  • First version

example/example.dart

import 'dart:async' show Future;
import "package:webart/web.dart";


main(){
    var app = new Application(
        new Config(<String, dynamic>{
            'debug': false,
            "routes":<String,RequestHandler>{
                "hello/{name}": helloPage,
                "query{?q}": queryPage,
                "json{?key,lang}": getJsonPage,
                "class":new MyRequestHandler(),
                "class2": (new MyRequestHandler()).handler,
                "": homePage,
            }
        })
    );
    app.start("127.0.0.1", 8088);
}

Future homePage(Request request) async{
    request.res.ok("This is home");
}

Future helloPage(Request request) async{
    String name = request.context("urlparam")["name"];
    request.res.ok("Hello, $name");
}

Future queryPage(Request request) async{
    if (request.only(["get"])){
        String qstr = request.context("urlparam")["q"];
        request.res.ok("You are finding $qstr");
    }
}

Future getJsonPage(Request request) async{
    Map data = {
        "data1": {
            "zh": "你好",
            "en": "Hello",
        },
        "data2": {
            "zh": "再见",
            "en": "Godbye",
        }
    };
    Map<String, String> param = request.context("urlparam");
    await request.on("get",(_) async => request.res.ok({ "result": data[param["key"]][param["lang"]]}));
}

class MyRequestHandler extends RequestHandlerBase{
    String data = "OK";

    Future get(Request request) async{
        logger.info("GET FROM MYREQUESTHANDLER");
        request.res.ok(data);
    }

    Future post(Request request) async{
        data = await request.body;
        logger.info("POST TO MYREQUESTHANDLER");
        request.res.ok(data);
    }
}

Use this package as a library

1. Depend on it

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


dependencies:
  webart: ^0.3.0

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:webart/webart.dart';
  
Popularity:
Describes how popular the package is relative to other packages. [more]
0
Health:
Code health derived from static analysis. [more]
80
Maintenance:
Reflects how tidy and up-to-date the package is. [more]
28
Overall:
Weighted score of the above. [more]
30
Learn more about scoring.

We analyzed this package on Apr 4, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6

Health suggestions

Fix lib/src/web.dart. (-4.89 points)

Analysis of lib/src/web.dart reported 10 hints, including:

line 27 col 15: Unnecessary new keyword.

line 28 col 15: Unnecessary new keyword.

line 60 col 13: Unnecessary new keyword.

line 69 col 23: Unnecessary new keyword.

line 80 col 38: Avoid using null in if null operators.

Fix lib/src/cmd.dart. (-4.41 points)

Analysis of lib/src/cmd.dart reported 9 hints, including:

line 15 col 55: Use = to separate a named parameter from its default value.

line 15 col 64: Don't type annotate initializing formals.

line 15 col 87: Use = to separate a named parameter from its default value.

line 18 col 39: Unnecessary new keyword.

line 28 col 38: Unnecessary new keyword.

Fix lib/src/plugin.dart. (-3.93 points)

Analysis of lib/src/plugin.dart reported 8 hints, including:

line 22 col 45: Use = to separate a named parameter from its default value.

line 24 col 18: Unnecessary new keyword.

line 46 col 49: Use = to separate a named parameter from its default value.

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

line 48 col 14: Unnecessary new keyword.

Fix additional 7 files with analysis or formatting issues. (-8.39 points)

Additional issues in the following files:

  • lib/src/request.dart (8 hints)
  • lib/src/route.dart (6 hints)
  • lib/src/class_handler.dart (1 hint)
  • lib/src/dart2/json.dart (1 hint)
  • lib/src/logging.dart (1 hint)
  • lib/src/context.dart (Run dartfmt to format lib/src/context.dart.)
  • lib/src/dart2/platform.dart (Run dartfmt to format lib/src/dart2/platform.dart.)

Maintenance issues and suggestions

Make sure dartdoc successfully runs on your package's source files. (-10 points)

exitCode: 255 stdout: parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/webart.dart... parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/web.dart... parsing /dart-sdk/lib/core/core.dart... parsing /dart-sdk/lib/collection/collection.dart... parsing /dart-sdk/lib/internal/internal.dart... parsing /dart-sdk/lib/async/async.dart... parsing /dart-sdk/lib/convert/convert.dart... parsing /dart-sdk/lib/typed_data/typed_data.dart... parsing /dart-sdk/lib/math/math.dart... parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/web.dart... parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/logging.dart... parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/plugin.dart... parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/cmd.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/logging-0.11.4/lib/logging.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/logging-0.11.4/lib/src/log_record.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/logging-0.11.4/lib/src/level.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/logging-0.11.4/lib/src/logger.dart... parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/config.dart... parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/request.dart... parsing /tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/dart2/json.dart... [...] parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/having_matcher.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/custom_matcher.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/description.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/pretty_print.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/util.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/equals_matcher.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/error_matchers.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/iterable_matchers.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/map_matchers.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/numeric_matchers.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/operator_matchers.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/order_matchers.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/src/string_matchers.dart... parsing /tmp/pub-cache-dirDLGTPG/hosted/pub.dartlang.org/matcher-0.12.6/lib/mirror_matchers.dart... Initialized dartdoc with 261 libraries in 47.5 seconds documenting webart Generating docs for library web from package:webart/webart.dart... Generating docs for library web from package:webart/web.dart... Validating docs... Documented 2 public libraries in 3.4 seconds stderr: Documenting webart... warning: ambiguous reexport of request.allowCORSRequest, canonicalization candidates: (web, web) -> web (confidence 0.000) from request.allowCORSRequest: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/request.dart:171:6) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) Use {@canonicalFor request.allowCORSRequest} in the desired library's documentation to resolve the ambiguity and/or override dartdoc's decision, or structure your package so the reexport is less ambiguous. The symbol will still be referenced in all candidates -- this only controls the location where it will be written and which library will be displayed in navigation for the relevant pages. The flag --ambiguous-reexport-scorer-min-confidence allows you to set the threshold at which this warning will appear. warning: ambiguous reexport of logging.getLogger, canonicalization candidates: (web, web) -> web (confidence 0.000) from logging.getLogger: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/logging.dart:11:8) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of cmd.CommandHandler, canonicalization candidates: (web, web) -> web (confidence 0.000) from cmd.CommandHandler: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/cmd.dart:4:16) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of handler.RequestHandler, canonicalization candidates: (web, web) -> web (confidence 0.000) from handler.RequestHandler: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/handler.dart:4:16) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of web.Application, canonicalization candidates: (web, web) -> web (confidence 0.000) from web.Application: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/web.dart:16:7) web: 1.212 - embeds package name (+1.000), name is long (+0.01000), element location shares parts with name (+0.2000), element location parts start with parts of name (+0.002000) web: 1.212 - embeds package name (+1.000), name is long (+0.01000), element location shares parts with name (+0.2000), element location parts start with parts of name (+0.002000) warning: ambiguous reexport of cmd.BroadcastResults, canonicalization candidates: (web, web) -> web (confidence 0.000) from cmd.BroadcastResults: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/cmd.dart:53:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of plugin.ChannelSession, canonicalization candidates: (web, web) -> web (confidence 0.000) from plugin.ChannelSession: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/plugin.dart:70:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of plugin.ChannelSessionMessage, canonicalization candidates: (web, web) -> web (confidence 0.000) from plugin.ChannelSessionMessage: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/plugin.dart:105:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of cmd.Command, canonicalization candidates: (web, web) -> web (confidence 0.000) from cmd.Command: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/cmd.dart:9:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of cmd.CommandLock, canonicalization candidates: (web, web) -> web (confidence 0.000) from cmd.CommandLock: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/cmd.dart:82:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of config.Config, canonicalization candidates: (web, web) -> web (confidence 0.000) from config.Config: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/config.dart:1:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of context.Context, canonicalization candidates: (web, web) -> web (confidence 0.000) from context.Context: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/context.dart:20:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of plugin.MessageChannel, canonicalization candidates: (web, web) -> web (confidence 0.000) from plugin.MessageChannel: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/plugin.dart:14:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of plugin.Plugin, canonicalization candidates: (web, web) -> web (confidence 0.000) from plugin.Plugin: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/plugin.dart:6:16) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of request.Request, canonicalization candidates: (web, web) -> web (confidence 0.000) from request.Request: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/request.dart:14:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of class_handler.RequestHandlerBase, canonicalization candidates: (web, web) -> web (confidence 0.000) from class_handler.RequestHandlerBase: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/class_handler.dart:36:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: ambiguous reexport of request.Response, canonicalization candidates: (web, web) -> web (confidence 0.000) from request.Response: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/request.dart:71:7) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) web: 1.011 - embeds package name (+1.000), name is long (+0.01000), element location parts start with parts of name (+0.001000) warning: web has no library level documentation comments, from web: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/webart.dart:1:9) warning: web has no library level documentation comments, from web: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/web.dart:1:9) error: failed to write file at: web/web-library.html for symbol web: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/web.dart:1:9) conflicting with file already generated by web: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/webart.dart:1:9) Dartdoc generates a path and filename to write to for each symbol. web conflicts with another symbol in the generated path, and therefore can not be written out. Changing the name, library name, or class name (if appropriate) of one of the conflicting items can resolve the conflict. Alternatively, use the @nodoc tag in one symbol's documentation comments to hide it. warning: no canonical library found for web.Application.hashCode, not linking, from web.Application.hashCode: (file:///dart-sdk/lib/core/object.dart:94:20) warning: no canonical library found for web.Application.runtimeType, not linking, from web.Application.runtimeType: (file:///dart-sdk/lib/core/object.dart:116:21) warning: unresolved doc reference [securityContext], from web.Application.start: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/web.dart:77:10) warning: unresolved doc reference [backlog], from web.Application.start: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/web.dart:77:10) warning: no canonical library found for web.Application.noSuchMethod, not linking, from web.Application.noSuchMethod: (file:///dart-sdk/lib/core/object.dart:111:20) warning: no canonical library found for web.Application.toString, not linking, from web.Application.toString: (file:///dart-sdk/lib/core/object.dart:99:19) warning: no canonical library found for web.Application.==, not linking, from web.Application.==: (file:///dart-sdk/lib/core/object.dart:62:26) warning: unresolved doc reference [ChannelSeesion], from web.MessageChannel.registerSession: (file:///tmp/pub-dartlang-dartdocBLXRGS/pkg/lib/src/plugin.dart:60:8) found 27 warnings and 1 error Unhandled exception: dartdoc encountered 1 errors while processing. #0 Dartdoc.generateDocs (package:dartdoc/dartdoc.dart:202:7)

Package is getting outdated. (-62.19 points)

The package was last published 84 weeks ago.

Dependencies

Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.8.0 <3.0.0
logging ^0.11.3 0.11.4
shelf ^0.7.3 0.7.5
uri_template_r ^0.6.0 0.6.2
Transitive dependencies
async 2.4.1
charcode 1.1.3
collection 1.14.12
http_parser 3.1.4
matcher 0.12.6
meta 1.1.8
path 1.6.4
quiver 2.1.3
source_span 1.7.0
stack_trace 1.9.3
stream_channel 2.0.0
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
utf 0.9.0+5
Dev dependencies
http ^0.11.3
test ^1.3.0