From 56fc0a552134a4d2af9d8faee320e61560d47368 Mon Sep 17 00:00:00 2001 From: Ilya Gyrdymov Date: Thu, 28 Mar 2019 22:01:42 +0200 Subject: [PATCH 1/2] codebase migrated to dart 2.2.0 --- .gitignore | 5 +- CHANGELOG.md | 7 ++ README.md | 2 +- lib/interval.dart | 5 +- pubspec.yaml | 10 +- test/interval_test.dart | 251 ++++++++++++++++++++-------------------- 6 files changed, 147 insertions(+), 133 deletions(-) create mode 100644 CHANGELOG.md diff --git a/.gitignore b/.gitignore index 2ceb8ee..4b65103 100644 --- a/.gitignore +++ b/.gitignore @@ -3,12 +3,11 @@ build/ packages/ .buildlog +.idea + # Or the files created by dart2js. *.dart.js *.dart.precompiled.js *.js_ *.js.deps *.js.map - -# Include when developing application packages. -pubspec.lock diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..b3da820 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +## 0.2.0 +- Library migration to dart 2.2.0 + +## 0.1.0 +- `Interval` class created diff --git a/README.md b/README.md index f7751b4..591b471 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ import 'package:interval/interval.dart'; // Date intervals var activeDates = new Interval.closed(date1, date2); -if(activeDates.contains(new DateTime.now()) { +if (activeDates.contains(new DateTime.now()) { print('Item is active!'); } diff --git a/lib/interval.dart b/lib/interval.dart index 6795478..48fef13 100644 --- a/lib/interval.dart +++ b/lib/interval.dart @@ -1,6 +1,3 @@ - -library interval; - /// A contiguous set of values. /// /// If an interval [contains] two values, it also contains all values between @@ -276,7 +273,7 @@ class Interval> { int get hashCode => lower.hashCode ^ upper.hashCode ^ lowerClosed.hashCode ^ upperClosed.hashCode; - bool operator == (Interval other) => + bool operator == (Object other) => other is Interval && lower == other.lower && upper == other.upper && diff --git a/pubspec.yaml b/pubspec.yaml index c0d061e..fa1d65c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,13 @@ name: interval -version: 0.1.0 +version: 0.2.0 author: Sean Eagan description: Provdes an Interval class, a contiguous set of values. homepage: https://github.com/seaneagan/interval + +environment: + sdk: '>=2.2.0 <3.0.0' + dev_dependencies: - unittest: any + test: ^1.2.0 + build_runner: ^1.1.2 + build_test: ^0.10.2 diff --git a/test/interval_test.dart b/test/interval_test.dart index c70cd4b..a989d45 100644 --- a/test/interval_test.dart +++ b/test/interval_test.dart @@ -1,37 +1,30 @@ - -library interval.test; - import 'package:interval/interval.dart'; -import 'package:unittest/unittest.dart'; +import 'package:test/test.dart'; main() { group('Interval', () { - group('constructors', () { test('should throw when upper less than lower', () { - var throwsArgumentError = throwsA(new isInstanceOf()); - expect(() => new Interval(lower: 1, lowerClosed: true, upper: 0, + expect(() => new Interval(lower: 1, lowerClosed: true, upper: 0, upperClosed: true), throwsArgumentError); - expect(() => new Interval.open(1, 0), throwsArgumentError); - expect(() => new Interval.closed(1, 0), throwsArgumentError); - expect(() => new Interval.openClosed(1, 0), throwsArgumentError); - expect(() => new Interval.closedOpen(1, 0), throwsArgumentError); + expect(() => new Interval.open(1, 0), throwsArgumentError); + expect(() => new Interval.closed(1, 0), throwsArgumentError); + expect(() => new Interval.openClosed(1, 0), throwsArgumentError); + expect(() => new Interval.closedOpen(1, 0), throwsArgumentError); }); test('should throw when open and lower equals upper', () { - var throwsArgumentError = throwsA(new isInstanceOf()); - expect(() => new Interval(upper: 0, upperClosed: false, lower: 0, + expect(() => new Interval(upper: 0, upperClosed: false, lower: 0, lowerClosed: false), throwsArgumentError); - expect(() => new Interval.open(0, 0), throwsArgumentError); + expect(() => new Interval.open(0, 0), throwsArgumentError); }); test('should throw on null when corresponding bound is closed', () { - var throwsArgumentError = throwsA(new isInstanceOf()); - expect(() => new Interval.closed(null, 0), throwsArgumentError); - expect(() => new Interval.closed(0, null), throwsArgumentError); - expect(() => new Interval.openClosed(0, null), throwsArgumentError); - expect(() => new Interval.closedOpen(null, 0), throwsArgumentError); + expect(() => new Interval.closed(null, 0), throwsArgumentError); + expect(() => new Interval.closed(0, null), throwsArgumentError); + expect(() => new Interval.openClosed(0, null), throwsArgumentError); + expect(() => new Interval.closedOpen(null, 0), throwsArgumentError); expect(() => new Interval.atMost(null), throwsArgumentError); expect(() => new Interval.atLeast(null), throwsArgumentError); expect(() => new Interval.singleton(null), throwsArgumentError); @@ -40,7 +33,7 @@ main() { group('span', () { test('should contain all values if iterable is empty', () { - var interval = new Interval.span([]); + var interval = new Interval.span([]); expect(interval.lower, null); expect(interval.upper, null); expect(interval.lowerClosed, isFalse); @@ -48,7 +41,7 @@ main() { }); test('should find lower and upper', () { - var interval = new Interval.span([2,5,1,4]); + var interval = new Interval.span([2,5,1,4]); expect(interval.lower, 1); expect(interval.upper, 5); expect(interval.lowerClosed, isTrue); @@ -56,7 +49,7 @@ main() { }); test('should be singleton if single element', () { - var interval = new Interval.span([2]); + var interval = new Interval.span([2]); expect(interval.lower, 2); expect(interval.upper, 2); expect(interval.lowerClosed, isTrue); @@ -68,13 +61,13 @@ main() { group('encloseAll', () { test('should contain all values if iterable is empty', () { - var interval = new Interval.encloseAll([]); + var interval = new Interval.encloseAll([]); expect(interval.lower, null); expect(interval.upper, null); }); test('should have null bounds when any input interval does', () { - var interval = new Interval.encloseAll([ + var interval = new Interval.encloseAll([ new Interval.atMost(0), new Interval.atLeast(1)]); expect(interval.lower, null); @@ -82,7 +75,7 @@ main() { }); test('should have bounds matching extreme input interval bounds', () { - var interval = new Interval.encloseAll([ + var interval = new Interval.encloseAll([ new Interval.closed(0, 3), new Interval.closed(-1, 0), new Interval.closed(8, 10), @@ -93,7 +86,7 @@ main() { test('should have closed bound when any corresponding extreme input ' 'interval bound does', () { - var interval = new Interval.encloseAll([ + var interval = new Interval.encloseAll([ new Interval.closedOpen(0, 1), new Interval.openClosed(0, 1)]); expect(interval.lowerClosed, isTrue); @@ -102,7 +95,7 @@ main() { test('should have open bound when all extreme input interval bounds ' 'do', () { - var interval = new Interval.encloseAll([ + var interval = new Interval.encloseAll([ new Interval.open(0, 1), new Interval.open(0, 1)]); expect(interval.lowerClosed, isFalse); @@ -116,44 +109,44 @@ main() { group('contains', () { test('should be true for values between lower and upper', () { - expect(new Interval.closed(0, 2).contains(1), isTrue); + expect(new Interval.closed(0, 2).contains(1), isTrue); }); test('should be false for values below lower', () { - expect(new Interval.closed(0, 2).contains(-1), isFalse); + expect(new Interval.closed(0, 2).contains(-1), isFalse); }); test('should be false for values above upper', () { - expect(new Interval.closed(0, 2).contains(3), isFalse); + expect(new Interval.closed(0, 2).contains(3), isFalse); }); test('should be false for lower when lowerClosed is false', () { - expect(new Interval.open(0, 2).contains(0), isFalse); + expect(new Interval.open(0, 2).contains(0), isFalse); }); test('should be true for lower when lowerClosed is true', () { - expect(new Interval.closed(0, 2).contains(0), isTrue); + expect(new Interval.closed(0, 2).contains(0), isTrue); }); test('should be false for upper when upperClosed is false', () { - expect(new Interval.open(0, 2).contains(2), isFalse); + expect(new Interval.open(0, 2).contains(2), isFalse); }); test('should be true for upper when upperClosed is true', () { - expect(new Interval.closed(0, 2).contains(2), isTrue); + expect(new Interval.closed(0, 2).contains(2), isTrue); }); test('should be true for greater than lower when upper is null', () { - expect(new Interval.atLeast(0).contains(100), isTrue); + expect(new Interval.atLeast(0).contains(100), isTrue); }); test('should be true for less than upper when lower is null', () { - expect(new Interval.atMost(0).contains(-100), isTrue); + expect(new Interval.atMost(0).contains(-100), isTrue); }); test('should be false for bounds when equal and not both closed', () { - expect(new Interval.openClosed(0, 0).contains(0), isFalse); - expect(new Interval.closedOpen(0, 0).contains(0), isFalse); + expect(new Interval.openClosed(0, 0).contains(0), isFalse); + expect(new Interval.closedOpen(0, 0).contains(0), isFalse); }); }); @@ -161,16 +154,16 @@ main() { group('isEmpty', () { test('should be true when bounds equal and not both closed', () { - expect(new Interval.openClosed(0, 0).isEmpty, isTrue); - expect(new Interval.closedOpen(0, 0).isEmpty, isTrue); + expect(new Interval.openClosed(0, 0).isEmpty, isTrue); + expect(new Interval.closedOpen(0, 0).isEmpty, isTrue); }); test('should be false when bounds equal and closed', () { - expect(new Interval.closed(0, 0).isEmpty, isFalse); + expect(new Interval.closed(0, 0).isEmpty, isFalse); }); test('should be false when lower less than upper', () { - expect(new Interval.closed(0, 1).isEmpty, isFalse); + expect(new Interval.closed(0, 1).isEmpty, isFalse); }); }); @@ -178,16 +171,16 @@ main() { group('isSingleton', () { test('should be true when bounds equal and both closed', () { - expect(new Interval.closed(0, 0).isSingleton, isTrue); + expect(new Interval.closed(0, 0).isSingleton, isTrue); }); test('should be false when empty', () { - expect(new Interval.openClosed(0, 0).isSingleton, isFalse); - expect(new Interval.closedOpen(0, 0).isSingleton, isFalse); + expect(new Interval.openClosed(0, 0).isSingleton, isFalse); + expect(new Interval.closedOpen(0, 0).isSingleton, isFalse); }); test('should be false when lower less than upper', () { - expect(new Interval.closed(0, 1).isSingleton, isFalse); + expect(new Interval.closed(0, 1).isSingleton, isFalse); }); }); @@ -195,9 +188,9 @@ main() { group('bounded', () { test('should be true only when lower bounded and upper bounded', () { - expect(new Interval.closedOpen(0, 1).bounded, isTrue); - expect(new Interval.atLeast(0).bounded, isFalse); - expect(new Interval.atMost(0).bounded, isFalse); + expect(new Interval.closedOpen(0, 1).bounded, isTrue); + expect(new Interval.atLeast(0).bounded, isFalse); + expect(new Interval.atMost(0).bounded, isFalse); }); }); @@ -205,8 +198,8 @@ main() { group('lowerBounded', () { test('should be true only when lower bounded', () { - expect(new Interval.atLeast(0).lowerBounded, isTrue); - expect(new Interval.atMost(0).lowerBounded, isFalse); + expect(new Interval.atLeast(0).lowerBounded, isTrue); + expect(new Interval.atMost(0).lowerBounded, isFalse); }); }); @@ -214,8 +207,8 @@ main() { group('upperBounded', () { test('should be true only when upper bounded', () { - expect(new Interval.atMost(0).upperBounded, isTrue); - expect(new Interval.atLeast(0).upperBounded, isFalse); + expect(new Interval.atMost(0).upperBounded, isTrue); + expect(new Interval.atLeast(0).upperBounded, isFalse); }); }); @@ -223,10 +216,10 @@ main() { group('isOpen', () { test('should be true only when both bounds open', () { - expect(new Interval.open(0, 1).isOpen, isTrue); - expect(new Interval.closedOpen(0, 1).isOpen, isFalse); - expect(new Interval.openClosed(0, 1).isOpen, isFalse); - expect(new Interval.closed(0, 1).isOpen, isFalse); + expect(new Interval.open(0, 1).isOpen, isTrue); + expect(new Interval.closedOpen(0, 1).isOpen, isFalse); + expect(new Interval.openClosed(0, 1).isOpen, isFalse); + expect(new Interval.closed(0, 1).isOpen, isFalse); }); }); @@ -234,10 +227,10 @@ main() { group('isClosed', () { test('should be true only when both bounds closed', () { - expect(new Interval.closed(0, 1).isClosed, isTrue); - expect(new Interval.closedOpen(0, 1).isClosed, isFalse); - expect(new Interval.openClosed(0, 1).isClosed, isFalse); - expect(new Interval.open(0, 1).isClosed, isFalse); + expect(new Interval.closed(0, 1).isClosed, isTrue); + expect(new Interval.closedOpen(0, 1).isClosed, isFalse); + expect(new Interval.openClosed(0, 1).isClosed, isFalse); + expect(new Interval.open(0, 1).isClosed, isFalse); }); }); @@ -245,10 +238,10 @@ main() { group('isClosedOpen', () { test('should be true only when lower closed and upper open', () { - expect(new Interval.closedOpen(0, 1).isClosedOpen, isTrue); - expect(new Interval.open(0, 1).isClosedOpen, isFalse); - expect(new Interval.closed(0, 1).isClosedOpen, isFalse); - expect(new Interval.openClosed(0, 1).isClosedOpen, isFalse); + expect(new Interval.closedOpen(0, 1).isClosedOpen, isTrue); + expect(new Interval.open(0, 1).isClosedOpen, isFalse); + expect(new Interval.closed(0, 1).isClosedOpen, isFalse); + expect(new Interval.openClosed(0, 1).isClosedOpen, isFalse); }); }); @@ -256,10 +249,10 @@ main() { group('isOpenClosed', () { test('should be true only when lower open and upper closed', () { - expect(new Interval.openClosed(0, 1).isOpenClosed, isTrue); - expect(new Interval.open(0, 1).isOpenClosed, isFalse); - expect(new Interval.closed(0, 1).isOpenClosed, isFalse); - expect(new Interval.closedOpen(0, 1).isOpenClosed, isFalse); + expect(new Interval.openClosed(0, 1).isOpenClosed, isTrue); + expect(new Interval.open(0, 1).isOpenClosed, isFalse); + expect(new Interval.closed(0, 1).isOpenClosed, isFalse); + expect(new Interval.closedOpen(0, 1).isOpenClosed, isFalse); }); }); @@ -267,12 +260,12 @@ main() { group('interior', () { test('should return input when input already open', () { - var open = new Interval.open(0, 1); + var open = new Interval.open(0, 1); expect(open.interior, same(open)); }); test('should return open version of non-open input', () { - var interior = new Interval.closed(0, 1).interior; + var interior = new Interval.closed(0, 1).interior; expect(interior.lower, 0); expect(interior.upper, 1); expect(interior.lowerClosed, isFalse); @@ -284,12 +277,12 @@ main() { group('closure', () { test('should return input when input already open', () { - var closed = new Interval.closed(0, 1); + var closed = new Interval.closed(0, 1); expect(closed.closure, same(closed)); }); test('should return closed version of non-closed input', () { - var closure = new Interval.closed(0, 1).closure; + var closure = new Interval.closed(0, 1).closure; expect(closure.lower, 0); expect(closure.upper, 1); expect(closure.lowerClosed, isTrue); @@ -301,38 +294,38 @@ main() { group('encloses', () { test('should be true when both bounds outside input bounds', () { - expect(new Interval.closed(0, 3) - .encloses(new Interval.closed(1, 2)), isTrue); - expect(new Interval.atLeast(0) - .encloses(new Interval.closed(1, 2)), isTrue); - expect(new Interval.atMost(3) - .encloses(new Interval.closed(1, 2)), isTrue); + expect(new Interval.closed(0, 3) + .encloses(new Interval.closed(1, 2)), isTrue); + expect(new Interval.atLeast(0) + .encloses(new Interval.closed(1, 2)), isTrue); + expect(new Interval.atMost(3) + .encloses(new Interval.closed(1, 2)), isTrue); }); test('should be false when either bound not outside input bound', () { - expect(new Interval.closed(0, 2) - .encloses(new Interval.closed(1, 3)), isFalse); - expect(new Interval.closed(1, 3) - .encloses(new Interval.closed(0, 2)), isFalse); - expect(new Interval.closed(0, 2) - .encloses(new Interval.atLeast(1)), isFalse); - expect(new Interval.closed(0, 2) - .encloses(new Interval.atMost(1)), isFalse); + expect(new Interval.closed(0, 2) + .encloses(new Interval.closed(1, 3)), isFalse); + expect(new Interval.closed(1, 3) + .encloses(new Interval.closed(0, 2)), isFalse); + expect(new Interval.closed(0, 2) + .encloses(new Interval.atLeast(1)), isFalse); + expect(new Interval.closed(0, 2) + .encloses(new Interval.atMost(1)), isFalse); }); test('should be true when bound closed and input has same bound', () { - expect(new Interval.closedOpen(0, 2) - .encloses(new Interval.closed(0, 1)), isTrue); - expect(new Interval.openClosed(0, 2) - .encloses(new Interval.closed(1, 2)), isTrue); + expect(new Interval.closedOpen(0, 2) + .encloses(new Interval.closed(0, 1)), isTrue); + expect(new Interval.openClosed(0, 2) + .encloses(new Interval.closed(1, 2)), isTrue); }); test('should be false when bound open and input has same bound but ' 'closed', () { - expect(new Interval.openClosed(0, 2) - .encloses(new Interval.closed(0, 1)), isFalse); - expect(new Interval.closedOpen(0, 2) - .encloses(new Interval.closed(1, 2)), isFalse); + expect(new Interval.openClosed(0, 2) + .encloses(new Interval.closed(0, 1)), isFalse); + expect(new Interval.closedOpen(0, 2) + .encloses(new Interval.closed(1, 2)), isFalse); }); }); @@ -345,43 +338,56 @@ main() { } test('should be true when intervals properly intersect', () { - expectConnected(new Interval.open(0, 1), new Interval.open(0, 1), + expectConnected(new Interval.open(0, 1), + new Interval.open(0, 1), isTrue); + expectConnected(new Interval.closed(1, 3), + new Interval.closed(0, 2), isTrue); - expectConnected(new Interval.closed(1, 3), new Interval.closed(0, 2), + expectConnected(new Interval.atLeast(1), + new Interval.atLeast(2), isTrue); - expectConnected(new Interval.atLeast(1), new Interval.atLeast(2), + expectConnected(new Interval.atLeast(1), + new Interval.atLeast(2), isTrue); - expectConnected(new Interval.atLeast(1), new Interval.atLeast(2), - isTrue); - expectConnected(new Interval.atMost(2), new Interval.atMost(1), + expectConnected(new Interval.atMost(2), + new Interval.atMost(1), isTrue); }); test('should be true when intervals adjacent and at least one bound ' 'closed', () { - expectConnected(new Interval.closed(0, 1), new Interval.closed(1, 2), + expectConnected(new Interval.closed(0, 1), + new Interval.closed(1, 2), isTrue); - expectConnected(new Interval.open(0, 1), new Interval.closed(1, 2), + expectConnected(new Interval.open(0, 1), + new Interval.closed(1, 2), isTrue); - expectConnected(new Interval.closed(0, 1), new Interval.open(1, 2), + expectConnected(new Interval.closed(0, 1), + new Interval.open(1, 2), isTrue); - expectConnected(new Interval.atMost(1), new Interval.greaterThan(1), + expectConnected(new Interval.atMost(1), + new Interval.greaterThan(1), isTrue); }); test('should be false when interval closures do not intersect', () { - expectConnected(new Interval.closed(0, 1), new Interval.closed(2, 3), + expectConnected(new Interval.closed(0, 1), + new Interval.closed(2, 3), isFalse); - expectConnected(new Interval.closed(2, 3), new Interval.closed(0, 1), + expectConnected(new Interval.closed(2, 3), + new Interval.closed(0, 1), isFalse); - expectConnected(new Interval.atMost(0), new Interval.atLeast(1), + expectConnected(new Interval.atMost(0), + new Interval.atLeast(1), isFalse); }); test('should be false when intervals adjacent and both bounds open', () { - expectConnected(new Interval.open(0, 1), new Interval.greaterThan(1), + expectConnected(new Interval.open(0, 1), + new Interval.greaterThan(1), isFalse); - expectConnected(new Interval.greaterThan(1), new Interval.lessThan(1), + expectConnected(new Interval.greaterThan(1), + new Interval.lessThan(1), isFalse); }); @@ -389,27 +395,26 @@ main() { test('should be equal iff lower, upper, lowerClosed, and upperClosed are ' 'all equal', () { - var it = new Interval.closed(0, 1); - expect(it, new Interval.closed(0, 1)); - expect(it, isNot(equals(new Interval.closed(0, 2)))); - expect(it, isNot(equals(new Interval.closed(1, 1)))); - expect(it, isNot(equals(new Interval.openClosed(0, 1)))); - expect(it, isNot(equals(new Interval.closedOpen(0, 1)))); + var it = new Interval.closed(0, 1); + expect(it, new Interval.closed(0, 1)); + expect(it, isNot(equals(new Interval.closed(0, 2)))); + expect(it, isNot(equals(new Interval.closed(1, 1)))); + expect(it, isNot(equals(new Interval.openClosed(0, 1)))); + expect(it, isNot(equals(new Interval.closedOpen(0, 1)))); }); test('hashCode should be equal if lower, upper, lowerClosed, and ' 'upperClosed are all equal', () { - var it = new Interval.closed(0, 1); - expect(it.hashCode, new Interval.closed(0, 1).hashCode); + var it = new Interval.closed(0, 1); + expect(it.hashCode, new Interval.closed(0, 1).hashCode); }); test('toString should depict the interval', () { - expect(new Interval.closedOpen(0, 1).toString(), '[0..1)'); - expect(new Interval.openClosed(0, 1).toString(), '(0..1]'); - expect(new Interval.atLeast(0).toString(), '[0..+∞)'); - expect(new Interval.atMost(0).toString(), '(-∞..0]'); + expect(new Interval.closedOpen(0, 1).toString(), '[0..1)'); + expect(new Interval.openClosed(0, 1).toString(), '(0..1]'); + expect(new Interval.atLeast(0).toString(), '[0..+∞)'); + expect(new Interval.atMost(0).toString(), '(-∞..0]'); }); }); - } From ad2d16b409a692f21eb745183d35fcae8e9cfb88 Mon Sep 17 00:00:00 2001 From: Ilya Gyrdymov Date: Thu, 28 Mar 2019 22:03:45 +0200 Subject: [PATCH 2/2] gitignore updated --- .gitignore | 8 +- pubspec.lock | 488 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 494 insertions(+), 2 deletions(-) create mode 100644 pubspec.lock diff --git a/.gitignore b/.gitignore index 4b65103..7a66b26 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,11 @@ # Don’t commit the following directories created by pub. +.packages +.pub/ build/ -packages/ -.buildlog + +# Directory created by dartdoc +doc/api/ +/.dart_tool/ .idea diff --git a/pubspec.lock b/pubspec.lock new file mode 100644 index 0000000..b603e60 --- /dev/null +++ b/pubspec.lock @@ -0,0 +1,488 @@ +# Generated by pub +# See https://www.dartlang.org/tools/pub/glossary#lockfile +packages: + analyzer: + dependency: transitive + description: + name: analyzer + url: "https://pub.dartlang.org" + source: hosted + version: "0.35.4" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.1" + async: + dependency: transitive + description: + name: async + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + boolean_selector: + dependency: transitive + description: + name: boolean_selector + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + build: + dependency: transitive + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + build_config: + dependency: transitive + description: + name: build_config + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.1+4" + build_daemon: + dependency: transitive + description: + name: build_daemon + url: "https://pub.dartlang.org" + source: hosted + version: "0.5.0" + build_resolvers: + dependency: transitive + description: + name: build_resolvers + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.3" + build_runner: + dependency: "direct dev" + description: + name: build_runner + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.1" + build_runner_core: + dependency: transitive + description: + name: build_runner_core + url: "https://pub.dartlang.org" + source: hosted + version: "3.0.1" + build_test: + dependency: "direct dev" + description: + name: build_test + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.6" + built_collection: + dependency: transitive + description: + name: built_collection + url: "https://pub.dartlang.org" + source: hosted + version: "4.1.0" + built_value: + dependency: transitive + description: + name: built_value + url: "https://pub.dartlang.org" + source: hosted + version: "6.3.2" + charcode: + dependency: transitive + description: + name: charcode + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.2" + code_builder: + dependency: transitive + description: + name: code_builder + url: "https://pub.dartlang.org" + source: hosted + version: "3.2.0" + collection: + dependency: transitive + description: + name: collection + url: "https://pub.dartlang.org" + source: hosted + version: "1.14.11" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.6" + csslib: + dependency: transitive + description: + name: csslib + url: "https://pub.dartlang.org" + source: hosted + version: "0.14.6" + dart_style: + dependency: transitive + description: + name: dart_style + url: "https://pub.dartlang.org" + source: hosted + version: "1.2.4" + fixnum: + dependency: transitive + description: + name: fixnum + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.9" + front_end: + dependency: transitive + description: + name: front_end + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.14" + glob: + dependency: transitive + description: + name: glob + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.7" + graphs: + dependency: transitive + description: + name: graphs + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" + html: + dependency: transitive + description: + name: html + url: "https://pub.dartlang.org" + source: hosted + version: "0.13.4+1" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.0+1" + http_multi_server: + dependency: transitive + description: + name: http_multi_server + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.5" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.3" + io: + dependency: transitive + description: + name: io + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.3" + js: + dependency: transitive + description: + name: js + url: "https://pub.dartlang.org" + source: hosted + version: "0.6.1+1" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.0" + json_rpc_2: + dependency: transitive + description: + name: json_rpc_2 + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.10" + kernel: + dependency: transitive + description: + name: kernel + url: "https://pub.dartlang.org" + source: hosted + version: "0.3.14" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.3+2" + matcher: + dependency: transitive + description: + name: matcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.5" + meta: + dependency: transitive + description: + name: meta + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.7" + mime: + dependency: transitive + description: + name: mime + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.6+2" + multi_server_socket: + dependency: transitive + description: + name: multi_server_socket + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.2" + node_preamble: + dependency: transitive + description: + name: node_preamble + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.4" + package_config: + dependency: transitive + description: + name: package_config + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.5" + package_resolver: + dependency: transitive + description: + name: package_resolver + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.10" + path: + dependency: transitive + description: + name: path + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.2" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.0" + pool: + dependency: transitive + description: + name: pool + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.0" + pub_semver: + dependency: transitive + description: + name: pub_semver + url: "https://pub.dartlang.org" + source: hosted + version: "1.4.2" + pubspec_parse: + dependency: transitive + description: + name: pubspec_parse + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.4" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.2" + shelf: + dependency: transitive + description: + name: shelf + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.4+1" + shelf_packages_handler: + dependency: transitive + description: + name: shelf_packages_handler + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + shelf_static: + dependency: transitive + description: + name: shelf_static + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.8" + shelf_web_socket: + dependency: transitive + description: + name: shelf_web_socket + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.2+5" + source_map_stack_trace: + dependency: transitive + description: + name: source_map_stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.5" + source_maps: + dependency: transitive + description: + name: source_maps + url: "https://pub.dartlang.org" + source: hosted + version: "0.10.8" + source_span: + dependency: transitive + description: + name: source_span + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.5" + stack_trace: + dependency: transitive + description: + name: stack_trace + url: "https://pub.dartlang.org" + source: hosted + version: "1.9.3" + stream_channel: + dependency: transitive + description: + name: stream_channel + url: "https://pub.dartlang.org" + source: hosted + version: "1.7.0" + stream_transform: + dependency: transitive + description: + name: stream_transform + url: "https://pub.dartlang.org" + source: hosted + version: "0.0.17" + string_scanner: + dependency: transitive + description: + name: string_scanner + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.4" + term_glyph: + dependency: transitive + description: + name: term_glyph + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.0" + test: + dependency: "direct dev" + description: + name: test + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.1" + test_api: + dependency: transitive + description: + name: test_api + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.4" + test_core: + dependency: transitive + description: + name: test_core + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.3" + timing: + dependency: transitive + description: + name: timing + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1+1" + typed_data: + dependency: transitive + description: + name: typed_data + url: "https://pub.dartlang.org" + source: hosted + version: "1.1.6" + utf: + dependency: transitive + description: + name: utf + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.0+5" + vm_service_client: + dependency: transitive + description: + name: vm_service_client + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.6+1" + watcher: + dependency: transitive + description: + name: watcher + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.7+10" + web_socket_channel: + dependency: transitive + description: + name: web_socket_channel + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.12" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.15" +sdks: + dart: ">=2.2.0 <3.0.0"