pattern matching
This commit is contained in:
parent
27ca19bbea
commit
be3b3bd3d2
12 changed files with 753 additions and 464 deletions
|
@ -26,14 +26,14 @@
|
|||
<entry key="angel_route">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_route-1.0.5/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_route-1.0.6/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="args">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/args-1.0.0/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/args-1.0.1/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -47,7 +47,7 @@
|
|||
<entry key="barback">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/barback-0.15.2+11/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/barback-0.15.2+13/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -131,7 +131,7 @@
|
|||
<entry key="glob">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/glob-1.1.3/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/glob-1.1.5/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -145,14 +145,14 @@
|
|||
<entry key="http">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http-0.11.3+14/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http-0.11.3+15/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="http_multi_server">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http_multi_server-2.0.3/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http_multi_server-2.0.4/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -222,7 +222,7 @@
|
|||
<entry key="meta">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/meta-1.1.1/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/meta-1.1.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -250,7 +250,7 @@
|
|||
<entry key="package_config">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/package_config-1.0.2/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/package_config-1.0.3/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -271,14 +271,14 @@
|
|||
<entry key="plugin">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/plugin-0.2.0+1/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/plugin-0.2.0+2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="pool">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/pool-1.3.2/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/pool-1.3.3/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -327,7 +327,7 @@
|
|||
<entry key="shelf_web_socket">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-0.2.1/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-0.2.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -362,7 +362,7 @@
|
|||
<entry key="stream_channel">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/stream_channel-1.6.1/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/stream_channel-1.6.2/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -383,7 +383,7 @@
|
|||
<entry key="test">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/test-0.12.24+6/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/test-0.12.24+8/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -397,7 +397,7 @@
|
|||
<entry key="typed_data">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/typed_data-1.1.4/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/typed_data-1.1.5/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -418,14 +418,14 @@
|
|||
<entry key="web_socket_channel">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-1.0.5/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-1.0.6/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
<entry key="yaml">
|
||||
<value>
|
||||
<list>
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/yaml-2.1.12/lib" />
|
||||
<option value="$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/yaml-2.1.13/lib" />
|
||||
</list>
|
||||
</value>
|
||||
</entry>
|
||||
|
@ -435,10 +435,10 @@
|
|||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/analyzer-0.30.0+4/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_http_exception-1.0.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_model-1.0.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_route-1.0.5/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/args-1.0.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_route-1.0.6/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/args-1.0.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/async-1.13.3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/barback-0.15.2+11/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/barback-0.15.2+13/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/body_parser-1.0.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/boolean_selector-1.0.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/charcode-1.1.1/lib" />
|
||||
|
@ -450,10 +450,10 @@
|
|||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/csslib-0.14.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/flatten-1.0.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/front_end-0.1.0-alpha.4.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/glob-1.1.3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/glob-1.1.5/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/html-0.13.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http-0.11.3+14/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http_multi_server-2.0.3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http-0.11.3+15/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http_multi_server-2.0.4/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http_parser-3.1.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/http_server-0.9.6/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/isolate-1.1.0/lib" />
|
||||
|
@ -463,36 +463,36 @@
|
|||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/logging-0.11.3+1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/matcher-0.12.1+4/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/merge_map-1.0.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/meta-1.1.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/meta-1.1.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/mime-0.9.3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/mock_request-1.0.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/node_preamble-1.4.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/package_config-1.0.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/package_config-1.0.3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/package_resolver-1.0.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/path-1.4.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/plugin-0.2.0+1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/pool-1.3.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/plugin-0.2.0+2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/pool-1.3.3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/pub_semver-1.3.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/quiver_hashcode-1.0.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/random_string-0.0.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/shelf-0.7.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/shelf_packages_handler-1.0.3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/shelf_static-0.2.5/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-0.2.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/shelf_web_socket-0.2.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/source_map_stack_trace-1.1.4/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/source_maps-0.10.4/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/source_span-1.4.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/stack_trace-1.8.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/stream_channel-1.6.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/stream_channel-1.6.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/string_scanner-1.0.2/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/term_glyph-1.0.0/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/test-0.12.24+6/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/test-0.12.24+8/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/tuple-1.0.1/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/typed_data-1.1.4/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/typed_data-1.1.5/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/utf-0.9.0+3/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/watcher-0.9.7+4/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-1.0.5/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/yaml-2.1.12/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/web_socket_channel-1.0.6/lib" />
|
||||
<root url="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/yaml-2.1.13/lib" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="injects session or throws in parameter_meta_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" singleton="true" nameIsGenerated="true">
|
||||
<option name="filePath" value="$PROJECT_DIR$/test/parameter_meta_test.dart" />
|
||||
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||
<option name="testName" value="injects session or throws" />
|
||||
<method />
|
||||
</configuration>
|
||||
</component>
|
|
@ -2,24 +2,18 @@
|
|||
<project version="4">
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="7b89ff1e-1260-4dcf-9c3d-345de0471ea1" name="Default" comment="">
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/lib/src/http/base_middleware.dart" afterPath="" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/lib/src/http/base_plugin.dart" afterPath="" />
|
||||
<change type="DELETED" beforePath="$PROJECT_DIR$/test/util_test.dart" afterPath="" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/.idea/runConfigurations/injects_session_or_throws_in_parameter_meta_test_dart.xml" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/test/parameter_meta_test.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/libraries/Dart_Packages.xml" afterPath="$PROJECT_DIR$/.idea/libraries/Dart_Packages.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/CHANGELOG.md" afterPath="$PROJECT_DIR$/CHANGELOG.md" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/example/json.dart" afterPath="$PROJECT_DIR$/example/json.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/angel_base.dart" afterPath="$PROJECT_DIR$/lib/src/http/angel_base.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/controller.dart" afterPath="$PROJECT_DIR$/lib/src/http/controller.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/http.dart" afterPath="$PROJECT_DIR$/lib/src/http/http.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/injection.dart" afterPath="$PROJECT_DIR$/lib/src/http/injection.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/metadata.dart" afterPath="$PROJECT_DIR$/lib/src/http/metadata.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/request_context.dart" afterPath="$PROJECT_DIR$/lib/src/http/request_context.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/response_context.dart" afterPath="$PROJECT_DIR$/lib/src/http/response_context.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/routable.dart" afterPath="$PROJECT_DIR$/lib/src/http/routable.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/lib/src/http/server.dart" afterPath="$PROJECT_DIR$/lib/src/http/server.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/pubspec.yaml" afterPath="$PROJECT_DIR$/pubspec.yaml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/all.dart" afterPath="$PROJECT_DIR$/test/all.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/controller_test.dart" afterPath="$PROJECT_DIR$/test/controller_test.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/di_test.dart" afterPath="$PROJECT_DIR$/test/di_test.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/routing_test.dart" afterPath="$PROJECT_DIR$/test/routing_test.dart" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/test/server_test.dart" afterPath="$PROJECT_DIR$/test/server_test.dart" />
|
||||
</list>
|
||||
<ignored path="$PROJECT_DIR$/.tmp/" />
|
||||
<ignored path="$PROJECT_DIR$/temp/" />
|
||||
|
@ -45,11 +39,19 @@
|
|||
<file leaf-file-name="controller.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/controller.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="139">
|
||||
<caret line="54" column="8" lean-forward="false" selection-start-line="54" selection-start-column="8" selection-end-line="54" selection-end-column="8" />
|
||||
<folding>
|
||||
<element signature="e#42#62#0" expanded="true" />
|
||||
</folding>
|
||||
<state relative-caret-position="-323">
|
||||
<caret line="18" column="0" lean-forward="true" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="http.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/http.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="225">
|
||||
<caret line="15" column="23" lean-forward="false" selection-start-line="15" selection-start-column="23" selection-end-line="15" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -57,44 +59,55 @@
|
|||
<file leaf-file-name="server.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/server.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="165">
|
||||
<caret line="13" column="34" lean-forward="false" selection-start-line="13" selection-start-column="34" selection-end-line="13" selection-end-column="34" />
|
||||
<folding />
|
||||
<state relative-caret-position="243">
|
||||
<caret line="480" column="23" lean-forward="false" selection-start-line="480" selection-start-column="13" selection-end-line="480" selection-end-column="23" />
|
||||
<folding>
|
||||
<element signature="e#38#58#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="README.md" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/README.md">
|
||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||
<state split_layout="SPLIT">
|
||||
<first_editor relative-caret-position="285">
|
||||
<caret line="19" column="6" lean-forward="true" selection-start-line="19" selection-start-column="6" selection-end-line="19" selection-end-column="6" />
|
||||
<folding>
|
||||
<marker date="1506049250000" expanded="true" signature="588:776" ph="{...}" />
|
||||
</folding>
|
||||
</first_editor>
|
||||
<second_editor />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="routable.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/routable.dart">
|
||||
<file leaf-file-name="injection.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/injection.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="90">
|
||||
<caret line="6" column="25" lean-forward="false" selection-start-line="6" selection-start-column="25" selection-end-line="6" selection-end-column="25" />
|
||||
<state relative-caret-position="210">
|
||||
<caret line="73" column="28" lean-forward="false" selection-start-line="73" selection-start-column="28" selection-end-line="73" selection-end-column="28" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="parameter_meta_test.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/test/parameter_meta_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="180">
|
||||
<caret line="12" column="13" lean-forward="true" selection-start-line="12" selection-start-column="13" selection-end-line="12" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#0#20#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="metadata.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/metadata.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="615">
|
||||
<caret line="100" column="8" lean-forward="false" selection-start-line="100" selection-start-column="8" selection-end-line="100" selection-end-column="8" />
|
||||
<folding>
|
||||
<element signature="e#40#101#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="CHANGELOG.md" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/CHANGELOG.md">
|
||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||
<state split_layout="SPLIT">
|
||||
<first_editor relative-caret-position="105">
|
||||
<caret line="7" column="85" lean-forward="false" selection-start-line="7" selection-start-column="85" selection-end-line="7" selection-end-column="85" />
|
||||
<first_editor relative-caret-position="15">
|
||||
<caret line="1" column="70" lean-forward="false" selection-start-line="1" selection-start-column="70" selection-end-line="1" selection-end-column="70" />
|
||||
<folding />
|
||||
</first_editor>
|
||||
<second_editor />
|
||||
|
@ -102,57 +115,13 @@
|
|||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="server_test.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/test/server_test.dart">
|
||||
<file leaf-file-name="all.dart" pinned="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/test/all.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="75">
|
||||
<caret line="11" column="8" lean-forward="false" selection-start-line="11" selection-start-column="8" selection-end-line="11" selection-end-column="8" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="response_context.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/response_context.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="139">
|
||||
<caret line="264" column="63" lean-forward="false" selection-start-line="264" selection-start-column="63" selection-end-line="264" selection-end-column="63" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="routing_test.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/test/routing_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="168">
|
||||
<caret line="38" column="21" lean-forward="true" selection-start-line="38" selection-start-column="21" selection-end-line="38" selection-end-column="21" />
|
||||
<state relative-caret-position="140">
|
||||
<caret line="31" column="23" lean-forward="false" selection-start-line="31" selection-start-column="23" selection-end-line="31" selection-end-column="23" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="di_test.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/test/di_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="420">
|
||||
<caret line="28" column="62" lean-forward="false" selection-start-line="28" selection-start-column="62" selection-end-line="28" selection-end-column="62" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="controller_test.dart" pinned="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/test/controller_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="180">
|
||||
<caret line="95" column="61" lean-forward="false" selection-start-line="95" selection-start-column="45" selection-end-line="95" selection-end-column="61" />
|
||||
<folding>
|
||||
<element signature="e#0#20#0" expanded="true" />
|
||||
<element signature="e#0#38#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
@ -169,19 +138,6 @@
|
|||
</component>
|
||||
<component name="FindInProjectRecents">
|
||||
<findStrings>
|
||||
<find>print(</find>
|
||||
<find>handleaNGE</find>
|
||||
<find>stderr</find>
|
||||
<find>_AFTERp</find>
|
||||
<find>_afterProc</find>
|
||||
<find>_beforeP</find>
|
||||
<find>_fatalE</find>
|
||||
<find>fatalError</find>
|
||||
<find>fatale</find>
|
||||
<find>FATAL</find>
|
||||
<find>error ??</find>
|
||||
<find>sendRes</find>
|
||||
<find>print</find>
|
||||
<find>.name</find>
|
||||
<find>logger</find>
|
||||
<find>handleRequ</find>
|
||||
|
@ -199,6 +155,19 @@
|
|||
<find>addStr</find>
|
||||
<find>Stopwatc</find>
|
||||
<find>_controllers</find>
|
||||
<find>pipeline</find>
|
||||
<find>handle</find>
|
||||
<find>uncaught</find>
|
||||
<find>header</find>
|
||||
<find>creat</find>
|
||||
<find>crea</find>
|
||||
<find>run(</find>
|
||||
<find>/*</find>
|
||||
<find>runG</find>
|
||||
<find>catchError</find>
|
||||
<find>query</find>
|
||||
<find>value == n</find>
|
||||
<find>handleCont</find>
|
||||
</findStrings>
|
||||
<replaceStrings>
|
||||
<replace>_isClosed</replace>
|
||||
|
@ -215,6 +184,8 @@
|
|||
<replace>if (_isClosed && !_useStream)</replace>
|
||||
<replace>logger?.warning</replace>
|
||||
<replace>JSON.decode</replace>
|
||||
<replace>query</replace>
|
||||
<replace>cookie</replace>
|
||||
</replaceStrings>
|
||||
<dirStrings>
|
||||
<dir>C:\Users\thosa\Source\Angel\framework\lib</dir>
|
||||
|
@ -236,9 +207,6 @@
|
|||
<component name="IdeDocumentHistory">
|
||||
<option name="CHANGED_PATHS">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/test/general_test.dart" />
|
||||
<option value="$PROJECT_DIR$/README.md" />
|
||||
<option value="$PROJECT_DIR$/test/view_generator_test.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/anonymous_service.dart" />
|
||||
<option value="$PROJECT_DIR$/test/anonymous_service_test.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/typed_service.dart" />
|
||||
|
@ -255,7 +223,6 @@
|
|||
<option value="$PROJECT_DIR$/performance/hello/raw.md" />
|
||||
<option value="$PROJECT_DIR$/tool/travis.sh" />
|
||||
<option value="$PROJECT_DIR$/test/repeat_request_test.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/metadata.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/fatal_error.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/angel_http_exception.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/angel_framework.dart" />
|
||||
|
@ -271,22 +238,26 @@
|
|||
<option value="$PROJECT_DIR$/test/streaming_test.dart" />
|
||||
<option value="$PROJECT_DIR$/performance/hello/main.dart" />
|
||||
<option value="$PROJECT_DIR$/test/encoders_buffer_test.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/injection.dart" />
|
||||
<option value="$PROJECT_DIR$/pubspec.yaml" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/request_context.dart" />
|
||||
<option value="$PROJECT_DIR$/example/json.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/angel_base.dart" />
|
||||
<option value="$PROJECT_DIR$/test/all.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/http.dart" />
|
||||
<option value="$PROJECT_DIR$/test/routing_test.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/response_context.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/routable.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/controller.dart" />
|
||||
<option value="$PROJECT_DIR$/CHANGELOG.md" />
|
||||
<option value="$PROJECT_DIR$/test/controller_test.dart" />
|
||||
<option value="$PROJECT_DIR$/test/di_test.dart" />
|
||||
<option value="$PROJECT_DIR$/test/server_test.dart" />
|
||||
<option value="$PROJECT_DIR$/test/routing_test.dart" />
|
||||
<option value="$PROJECT_DIR$/pubspec.yaml" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/pattern_matcher.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/controller.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/server.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/request_context.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/metadata.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/injection.dart" />
|
||||
<option value="$PROJECT_DIR$/test/parameter_meta_test.dart" />
|
||||
<option value="$PROJECT_DIR$/test/pattern_matcher_test.dart" />
|
||||
<option value="$PROJECT_DIR$/lib/src/http/http.dart" />
|
||||
<option value="$PROJECT_DIR$/CHANGELOG.md" />
|
||||
<option value="$PROJECT_DIR$/test/all.dart" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
|
@ -297,9 +268,9 @@
|
|||
<sorting>DEFINITION_ORDER</sorting>
|
||||
</component>
|
||||
<component name="ProjectFrameBounds">
|
||||
<option name="x" value="166" />
|
||||
<option name="x" value="45" />
|
||||
<option name="y" value="23" />
|
||||
<option name="width" value="1168" />
|
||||
<option name="width" value="1395" />
|
||||
<option name="height" value="797" />
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager">
|
||||
|
@ -320,8 +291,10 @@
|
|||
<foldersAlwaysOnTop value="true" />
|
||||
</navigator>
|
||||
<panes>
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scratches" />
|
||||
<pane id="ProjectPane" />
|
||||
<pane id="AndroidView" />
|
||||
<pane id="PackagesPane" />
|
||||
<pane id="Scope">
|
||||
<subPane subId="Project Files">
|
||||
<expand>
|
||||
|
@ -347,27 +320,15 @@
|
|||
<item name="src" type="cbb8eebc:String" user="src" />
|
||||
<item name="http" type="cbb8eebc:String" user="http" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Root" type="cbb8eebc:String" user="Root" />
|
||||
<item name="framework" type="cbb8eebc:String" user="framework" />
|
||||
<item name="performance/hello" type="cbb8eebc:String" user="performance/hello" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Root" type="cbb8eebc:String" user="Root" />
|
||||
<item name="framework" type="cbb8eebc:String" user="framework" />
|
||||
<item name="test" type="cbb8eebc:String" user="test" />
|
||||
</path>
|
||||
<path>
|
||||
<item name="Root" type="cbb8eebc:String" user="Root" />
|
||||
<item name="framework" type="cbb8eebc:String" user="framework" />
|
||||
<item name="tool" type="cbb8eebc:String" user="tool" />
|
||||
</path>
|
||||
</expand>
|
||||
<select />
|
||||
</subPane>
|
||||
</pane>
|
||||
<pane id="ProjectPane" />
|
||||
<pane id="AndroidView" />
|
||||
</panes>
|
||||
</component>
|
||||
<component name="PropertiesComponent">
|
||||
|
@ -401,6 +362,11 @@
|
|||
</option>
|
||||
</component>
|
||||
<component name="RunManager" selected="Dart Test.All Tests">
|
||||
<configuration name="Chained routes in routing_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
|
||||
<option name="filePath" value="$PROJECT_DIR$/test/routing_test.dart" />
|
||||
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||
<option name="testName" value="Chained routes" />
|
||||
</configuration>
|
||||
<configuration default="true" type="BashConfigurationType" factoryName="Bash">
|
||||
<option name="INTERPRETER_OPTIONS" value="" />
|
||||
<option name="INTERPRETER_PATH" value="C:\Windows\system32\bash.exe" />
|
||||
|
@ -516,6 +482,11 @@
|
|||
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||
<option name="testName" value="default view generator" />
|
||||
</configuration>
|
||||
<configuration name="injects header or throws in parameter_meta_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
|
||||
<option name="filePath" value="$PROJECT_DIR$/test/parameter_meta_test.dart" />
|
||||
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||
<option name="testName" value="injects header or throws" />
|
||||
</configuration>
|
||||
<configuration name="only match route with matching method in routing_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
|
||||
<option name="filePath" value="$PROJECT_DIR$/test/routing_test.dart" />
|
||||
<option name="scope" value="GROUP_OR_TEST_BY_NAME" />
|
||||
|
@ -542,6 +513,10 @@
|
|||
<option name="filePath" value="$PROJECT_DIR$/test/exception_test.dart" />
|
||||
<option name="testName" value="exception_test.dart" />
|
||||
</configuration>
|
||||
<configuration name="tests in parameter_meta_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
|
||||
<option name="filePath" value="$PROJECT_DIR$/test/parameter_meta_test.dart" />
|
||||
<option name="testName" value="parameter_meta_test.dart" />
|
||||
</configuration>
|
||||
<configuration name="tests in precontained_test.dart" type="DartTestRunConfigurationType" factoryName="Dart Test" nameIsGenerated="true">
|
||||
<option name="filePath" value="$PROJECT_DIR$/test/precontained_test.dart" />
|
||||
<option name="testName" value="precontained_test.dart" />
|
||||
|
@ -566,37 +541,41 @@
|
|||
<option name="filePath" value="$PROJECT_DIR$/test/typed_service_test.dart" />
|
||||
<option name="testName" value="typed_service_test.dart" />
|
||||
</configuration>
|
||||
<list size="30">
|
||||
<item index="0" class="java.lang.String" itemvalue="Dart Test.only match route with matching method in routing_test.dart" />
|
||||
<item index="1" class="java.lang.String" itemvalue="Dart Test.only uses one encoder in encoders_buffer_test.dart" />
|
||||
<item index="2" class="java.lang.String" itemvalue="Dart Test.can send html in server_test.dart" />
|
||||
<item index="3" class="java.lang.String" itemvalue="Dart Command Line App.performance::hello" />
|
||||
<item index="4" class="java.lang.String" itemvalue="Dart Command Line App.All Tests (for coverage)" />
|
||||
<item index="5" class="java.lang.String" itemvalue="Dart Command Line App.All Tests (PRODUCTION)" />
|
||||
<item index="6" class="java.lang.String" itemvalue="Dart Command Line App.performance::hello::raw" />
|
||||
<item index="7" class="java.lang.String" itemvalue="Dart Test.tests in primitives_test.dart" />
|
||||
<item index="8" class="java.lang.String" itemvalue="Dart Test.tests in repeat_request_test.dart" />
|
||||
<item index="9" class="java.lang.String" itemvalue="Dart Test.tests in encoders_buffer_test.dart" />
|
||||
<item index="10" class="java.lang.String" itemvalue="Dart Test.tests in streaming_test.dart" />
|
||||
<item index="11" class="java.lang.String" itemvalue="Dart Test.can create data in services_test.dart" />
|
||||
<item index="12" class="java.lang.String" itemvalue="Dart Test.can delete data in services_test.dart" />
|
||||
<item index="13" class="java.lang.String" itemvalue="Dart Test.can use app.properties like members in util_test.dart" />
|
||||
<item index="14" class="java.lang.String" itemvalue="Dart Test.tests in accepts_test.dart" />
|
||||
<item index="15" class="java.lang.String" itemvalue="Dart Test.contains provider in before and after in hooked_test.dart" />
|
||||
<item index="16" class="java.lang.String" itemvalue="Dart Test.tests in server_test.dart" />
|
||||
<item index="17" class="java.lang.String" itemvalue="Dart Test.tests in anonymous_service_test.dart" />
|
||||
<item index="18" class="java.lang.String" itemvalue="Dart Test.tests in exception_test.dart" />
|
||||
<item index="19" class="java.lang.String" itemvalue="Dart Test.tests in typed_service_test.dart" />
|
||||
<item index="20" class="java.lang.String" itemvalue="Dart Test.default view generator in view_generator_test.dart" />
|
||||
<item index="21" class="java.lang.String" itemvalue="Dart Test.tests in precontained_test.dart" />
|
||||
<item index="22" class="java.lang.String" itemvalue="Dart Test.Controller Tests" />
|
||||
<item index="23" class="java.lang.String" itemvalue="Dart Test.DI Tests" />
|
||||
<item index="24" class="java.lang.String" itemvalue="Dart Test.Hooked Tests" />
|
||||
<item index="25" class="java.lang.String" itemvalue="Dart Test.Routing Tests" />
|
||||
<item index="26" class="java.lang.String" itemvalue="Dart Test.tests in server_test.dart (PRODUCTION)" />
|
||||
<item index="27" class="java.lang.String" itemvalue="Dart Test.All Tests" />
|
||||
<item index="28" class="java.lang.String" itemvalue="Dart Test.All Tests (PRODUCTION)" />
|
||||
<item index="29" class="java.lang.String" itemvalue="Dart Test.cannot write after close in streaming_test.dart" />
|
||||
<list size="34">
|
||||
<item index="0" class="java.lang.String" itemvalue="Dart Command Line App.performance::hello" />
|
||||
<item index="1" class="java.lang.String" itemvalue="Dart Command Line App.All Tests (for coverage)" />
|
||||
<item index="2" class="java.lang.String" itemvalue="Dart Command Line App.All Tests (PRODUCTION)" />
|
||||
<item index="3" class="java.lang.String" itemvalue="Dart Command Line App.performance::hello::raw" />
|
||||
<item index="4" class="java.lang.String" itemvalue="Dart Test.injects header or throws in parameter_meta_test.dart" />
|
||||
<item index="5" class="java.lang.String" itemvalue="Dart Test.injects session or throws in parameter_meta_test.dart" />
|
||||
<item index="6" class="java.lang.String" itemvalue="Dart Test.tests in parameter_meta_test.dart" />
|
||||
<item index="7" class="java.lang.String" itemvalue="Dart Test.Chained routes in routing_test.dart" />
|
||||
<item index="8" class="java.lang.String" itemvalue="Dart Test.only match route with matching method in routing_test.dart" />
|
||||
<item index="9" class="java.lang.String" itemvalue="Dart Test.only uses one encoder in encoders_buffer_test.dart" />
|
||||
<item index="10" class="java.lang.String" itemvalue="Dart Test.can send html in server_test.dart" />
|
||||
<item index="11" class="java.lang.String" itemvalue="Dart Test.tests in primitives_test.dart" />
|
||||
<item index="12" class="java.lang.String" itemvalue="Dart Test.tests in repeat_request_test.dart" />
|
||||
<item index="13" class="java.lang.String" itemvalue="Dart Test.tests in encoders_buffer_test.dart" />
|
||||
<item index="14" class="java.lang.String" itemvalue="Dart Test.tests in streaming_test.dart" />
|
||||
<item index="15" class="java.lang.String" itemvalue="Dart Test.can create data in services_test.dart" />
|
||||
<item index="16" class="java.lang.String" itemvalue="Dart Test.can delete data in services_test.dart" />
|
||||
<item index="17" class="java.lang.String" itemvalue="Dart Test.can use app.properties like members in util_test.dart" />
|
||||
<item index="18" class="java.lang.String" itemvalue="Dart Test.tests in accepts_test.dart" />
|
||||
<item index="19" class="java.lang.String" itemvalue="Dart Test.contains provider in before and after in hooked_test.dart" />
|
||||
<item index="20" class="java.lang.String" itemvalue="Dart Test.tests in server_test.dart" />
|
||||
<item index="21" class="java.lang.String" itemvalue="Dart Test.tests in anonymous_service_test.dart" />
|
||||
<item index="22" class="java.lang.String" itemvalue="Dart Test.tests in exception_test.dart" />
|
||||
<item index="23" class="java.lang.String" itemvalue="Dart Test.tests in typed_service_test.dart" />
|
||||
<item index="24" class="java.lang.String" itemvalue="Dart Test.default view generator in view_generator_test.dart" />
|
||||
<item index="25" class="java.lang.String" itemvalue="Dart Test.tests in precontained_test.dart" />
|
||||
<item index="26" class="java.lang.String" itemvalue="Dart Test.Controller Tests" />
|
||||
<item index="27" class="java.lang.String" itemvalue="Dart Test.DI Tests" />
|
||||
<item index="28" class="java.lang.String" itemvalue="Dart Test.Hooked Tests" />
|
||||
<item index="29" class="java.lang.String" itemvalue="Dart Test.Routing Tests" />
|
||||
<item index="30" class="java.lang.String" itemvalue="Dart Test.tests in server_test.dart (PRODUCTION)" />
|
||||
<item index="31" class="java.lang.String" itemvalue="Dart Test.All Tests" />
|
||||
<item index="32" class="java.lang.String" itemvalue="Dart Test.All Tests (PRODUCTION)" />
|
||||
<item index="33" class="java.lang.String" itemvalue="Dart Test.cannot write after close in streaming_test.dart" />
|
||||
</list>
|
||||
</component>
|
||||
<component name="ShelveChangesManager" show_recycled="false">
|
||||
|
@ -647,7 +626,11 @@
|
|||
<workItem from="1506090042437" duration="1751000" />
|
||||
<workItem from="1506275395906" duration="424000" />
|
||||
<workItem from="1506281553143" duration="657000" />
|
||||
<workItem from="1507123481086" duration="2431000" />
|
||||
<workItem from="1507123481086" duration="2629000" />
|
||||
<workItem from="1507496428508" duration="1038000" />
|
||||
<workItem from="1507502664740" duration="80000" />
|
||||
<workItem from="1507556590639" duration="230000" />
|
||||
<workItem from="1507641822711" duration="7922000" />
|
||||
</task>
|
||||
<task id="LOCAL-00001" summary="Re-designed exception">
|
||||
<created>1481237183504</created>
|
||||
|
@ -919,39 +902,39 @@
|
|||
<servers />
|
||||
</component>
|
||||
<component name="TestHistory">
|
||||
<history-entry file="All_Tests - 2017.10.04 at 09h 53m 19s.xml">
|
||||
<history-entry file="All_Tests - 2017.10.10 at 12h 54m 58s.xml">
|
||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="All_Tests - 2017.10.04 at 09h 54m 24s.xml">
|
||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="pattern_matching_in_parameter_meta_test_dart - 2017.10.10 at 12h 48m 40s.xml">
|
||||
<configuration name="pattern matching in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="All_Tests - 2017.10.04 at 09h 55m 00s.xml">
|
||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="pattern_matching_in_parameter_meta_test_dart - 2017.10.10 at 12h 48m 52s.xml">
|
||||
<configuration name="pattern matching in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="All_Tests - 2017.10.04 at 09h 56m 57s.xml">
|
||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="pattern_matching_in_parameter_meta_test_dart - 2017.10.10 at 12h 49m 07s.xml">
|
||||
<configuration name="pattern matching in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="All_Tests - 2017.10.04 at 09h 57m 31s.xml">
|
||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="pattern_matching_in_parameter_meta_test_dart - 2017.10.10 at 12h 50m 18s.xml">
|
||||
<configuration name="pattern matching in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="All_Tests - 2017.10.04 at 10h 01m 10s.xml">
|
||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="pattern_matching_in_parameter_meta_test_dart - 2017.10.10 at 12h 50m 23s.xml">
|
||||
<configuration name="pattern matching in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="All_Tests - 2017.10.04 at 10h 07m 57s.xml">
|
||||
<configuration name="All Tests" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="pattern_matching_in_parameter_meta_test_dart - 2017.10.10 at 12h 50m 40s.xml">
|
||||
<configuration name="pattern matching in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="only_match_route_with_matching_method_in_routing_test_dart - 2017.10.04 at 09h 49m 09s.xml">
|
||||
<configuration name="only match route with matching method in routing_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="pattern_matching_in_parameter_meta_test_dart - 2017.10.10 at 12h 50m 57s.xml">
|
||||
<configuration name="pattern matching in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="only_match_route_with_matching_method_in_routing_test_dart - 2017.10.04 at 09h 49m 38s.xml">
|
||||
<configuration name="only match route with matching method in routing_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="pattern_matching_in_parameter_meta_test_dart - 2017.10.10 at 12h 52m 21s.xml">
|
||||
<configuration name="pattern matching in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
<history-entry file="only_match_route_with_matching_method_in_routing_test_dart - 2017.10.04 at 09h 52m 16s.xml">
|
||||
<configuration name="only match route with matching method in routing_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
<history-entry file="tests_in_parameter_meta_test_dart - 2017.10.10 at 12h 45m 38s.xml">
|
||||
<configuration name="tests in parameter_meta_test.dart" configurationId="DartTestRunConfigurationType" />
|
||||
</history-entry>
|
||||
</component>
|
||||
<component name="TimeTrackingManager">
|
||||
<option name="totallyTimeSpent" value="59292000" />
|
||||
<option name="totallyTimeSpent" value="68760000" />
|
||||
</component>
|
||||
<component name="TodoView">
|
||||
<todo-panel id="selected-file">
|
||||
|
@ -963,31 +946,31 @@
|
|||
</todo-panel>
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="166" y="23" width="1168" height="797" extended-state="0" />
|
||||
<frame x="45" y="23" width="1395" height="797" extended-state="0" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32763532" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32478634" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Palette	" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.34188035" sideWeight="0.5035524" order="7" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Dart Analysis" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.31438935" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4017094" sideWeight="0.4964476" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.4017094" sideWeight="0.4964476" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4814815" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.27264655" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25055432" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Tool Output" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
|
@ -996,9 +979,9 @@
|
|||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
<window_info id="ANTLR Preview" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="DB Browser" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32998413" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32478634" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Coverage" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32905984" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
</layout>
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
|
@ -1040,51 +1023,6 @@
|
|||
<watches-manager />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$USER_HOME$/AppData/Roaming/Pub/Cache/hosted/pub.dartlang.org/mock_request-1.0.0/lib/src/response.dart" />
|
||||
<entry file="file://$PROJECT_DIR$/test/view_generator_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/repeat_request_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="4" selection-end-column="32" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/tool/travis.sh">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="30">
|
||||
<caret line="2" column="12" lean-forward="false" selection-start-line="2" selection-start-column="12" selection-end-line="2" selection-end-column="12" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/metadata.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="9" column="1" lean-forward="false" selection-start-line="9" selection-start-column="1" selection-end-line="9" selection-end-column="1" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/memory_service.dart" />
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/defs.dart" />
|
||||
<entry file="file://$PROJECT_DIR$/test/common.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="60">
|
||||
<caret line="4" column="19" lean-forward="false" selection-start-line="4" selection-start-column="19" selection-end-line="4" selection-end-column="19" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file:///usr/local/Cellar/dart/1.24.2/libexec/lib/async/zone.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="225">
|
||||
<caret line="40" column="25" lean-forward="false" selection-start-line="40" selection-start-column="25" selection-end-line="41" selection-end-column="60" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file:///usr/local/Cellar/dart/1.24.2/libexec/lib/async/stream.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="145">
|
||||
|
@ -1171,7 +1109,6 @@
|
|||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="360">
|
||||
<caret line="29" column="0" lean-forward="false" selection-start-line="29" selection-start-column="0" selection-end-line="32" selection-end-column="6" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -1210,20 +1147,6 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/injection.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="222">
|
||||
<caret line="59" column="41" lean-forward="true" selection-start-line="59" selection-start-column="41" selection-end-line="59" selection-end-column="41" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/pubspec.yaml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="15">
|
||||
<caret line="1" column="22" lean-forward="false" selection-start-line="1" selection-start-column="22" selection-end-line="1" selection-end-column="22" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/encoders_buffer_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="903">
|
||||
|
@ -1231,79 +1154,27 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/request_context.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="292">
|
||||
<caret line="34" column="40" lean-forward="true" selection-start-line="34" selection-start-column="40" selection-end-line="34" selection-end-column="40" />
|
||||
<folding>
|
||||
<element signature="e#47#67#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_route-1.0.5/lib/src/router.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="258">
|
||||
<caret line="251" column="41" lean-forward="true" selection-start-line="251" selection-start-column="41" selection-end-line="251" selection-end-column="41" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/base_middleware.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/base_plugin.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/base_middleware.dart" />
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/base_plugin.dart" />
|
||||
<entry file="file://$PROJECT_DIR$/example/json.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="282">
|
||||
<caret line="45" column="37" lean-forward="true" selection-start-line="45" selection-start-column="37" selection-end-line="45" selection-end-column="37" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/util_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="282">
|
||||
<caret line="30" column="7" lean-forward="true" selection-start-line="30" selection-start-column="7" selection-end-line="30" selection-end-column="7" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/all.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="234">
|
||||
<caret line="31" column="39" lean-forward="true" selection-start-line="31" selection-start-column="39" selection-end-line="31" selection-end-column="39" />
|
||||
<folding>
|
||||
<element signature="e#0#38#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/util_test.dart" />
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/angel_base.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="45">
|
||||
<caret line="3" column="42" lean-forward="false" selection-start-line="3" selection-start-column="42" selection-end-line="3" selection-end-column="42" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/http.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="300">
|
||||
<caret line="20" column="22" lean-forward="true" selection-start-line="20" selection-start-column="22" selection-end-line="20" selection-end-column="22" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
|
@ -1312,74 +1183,34 @@
|
|||
<state relative-caret-position="0">
|
||||
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
|
||||
<folding>
|
||||
<element signature="e#39#59#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/routing_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="168">
|
||||
<caret line="38" column="21" lean-forward="true" selection-start-line="38" selection-start-column="21" selection-end-line="38" selection-end-column="21" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="true" />
|
||||
<element signature="e#39#59#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/response_context.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="139">
|
||||
<state relative-caret-position="3825">
|
||||
<caret line="264" column="63" lean-forward="false" selection-start-line="264" selection-start-column="63" selection-end-line="264" selection-end-column="63" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/routable.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="90">
|
||||
<caret line="6" column="25" lean-forward="false" selection-start-line="6" selection-start-column="25" selection-end-line="6" selection-end-column="25" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/controller.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="139">
|
||||
<caret line="54" column="8" lean-forward="false" selection-start-line="54" selection-start-column="8" selection-end-line="54" selection-end-column="8" />
|
||||
<folding>
|
||||
<element signature="e#42#62#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/CHANGELOG.md">
|
||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||
<state split_layout="SPLIT">
|
||||
<first_editor relative-caret-position="105">
|
||||
<caret line="7" column="85" lean-forward="false" selection-start-line="7" selection-start-column="85" selection-end-line="7" selection-end-column="85" />
|
||||
<folding />
|
||||
</first_editor>
|
||||
<second_editor />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/controller_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="180">
|
||||
<state relative-caret-position="1320">
|
||||
<caret line="95" column="61" lean-forward="false" selection-start-line="95" selection-start-column="45" selection-end-line="95" selection-end-column="61" />
|
||||
<folding>
|
||||
<element signature="e#0#20#0" expanded="true" />
|
||||
<element signature="e#0#20#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/di_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="420">
|
||||
<state relative-caret-position="330">
|
||||
<caret line="28" column="62" lean-forward="false" selection-start-line="28" selection-start-column="62" selection-end-line="28" selection-end-column="62" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="true" />
|
||||
<element signature="e#0#22#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
|
@ -1392,10 +1223,27 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/server.dart">
|
||||
<entry file="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/angel_route-1.0.5/lib/src/middleware_pipeline.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="165">
|
||||
<caret line="13" column="34" lean-forward="false" selection-start-line="13" selection-start-column="34" selection-end-line="13" selection-end-column="34" />
|
||||
<state relative-caret-position="120">
|
||||
<caret line="8" column="11" lean-forward="false" selection-start-line="8" selection-start-column="11" selection-end-line="8" selection-end-column="11" />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/routing_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="1404">
|
||||
<caret line="105" column="18" lean-forward="true" selection-start-line="105" selection-start-column="18" selection-end-line="105" selection-end-column="18" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/pubspec.yaml">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="120">
|
||||
<caret line="8" column="30" lean-forward="true" selection-start-line="8" selection-start-column="30" selection-end-line="8" selection-end-column="30" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
@ -1404,7 +1252,7 @@
|
|||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||
<state split_layout="SPLIT">
|
||||
<first_editor relative-caret-position="285">
|
||||
<caret line="19" column="6" lean-forward="true" selection-start-line="19" selection-start-column="6" selection-end-line="19" selection-end-column="6" />
|
||||
<caret line="19" column="6" lean-forward="false" selection-start-line="19" selection-start-column="6" selection-end-line="19" selection-end-column="6" />
|
||||
<folding>
|
||||
<marker date="1506049250000" expanded="true" signature="588:776" ph="{...}" />
|
||||
</folding>
|
||||
|
@ -1413,6 +1261,151 @@
|
|||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/precontained_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="255">
|
||||
<caret line="17" column="24" lean-forward="false" selection-start-line="17" selection-start-column="24" selection-end-line="17" selection-end-column="24" />
|
||||
<folding>
|
||||
<element signature="e#0#22#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$USER_HOME$/.pub-cache/hosted/pub.dartlang.org/mock_request-1.0.2/lib/src/response.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="150">
|
||||
<caret line="15" column="21" lean-forward="false" selection-start-line="15" selection-start-column="21" selection-end-line="15" selection-end-column="21" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/util.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="150">
|
||||
<caret line="10" column="5" lean-forward="true" selection-start-line="10" selection-start-column="5" selection-end-line="10" selection-end-column="5" />
|
||||
<folding>
|
||||
<element signature="e#0#20#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file:///usr/local/Cellar/dart/1.24.2/libexec/lib/async/zone.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="47">
|
||||
<caret line="1433" column="2" lean-forward="false" selection-start-line="1433" selection-start-column="2" selection-end-line="1433" selection-end-column="2" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/request_context.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="225">
|
||||
<caret line="33" column="13" lean-forward="false" selection-start-line="33" selection-start-column="13" selection-end-line="33" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#47#67#0" expanded="false" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/routable.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="135">
|
||||
<caret line="9" column="23" lean-forward="false" selection-start-line="9" selection-start-column="23" selection-end-line="9" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/server.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="243">
|
||||
<caret line="480" column="23" lean-forward="false" selection-start-line="480" selection-start-column="13" selection-end-line="480" selection-end-column="23" />
|
||||
<folding>
|
||||
<element signature="e#38#58#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/metadata.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="615">
|
||||
<caret line="100" column="8" lean-forward="false" selection-start-line="100" selection-start-column="8" selection-end-line="100" selection-end-column="8" />
|
||||
<folding>
|
||||
<element signature="e#40#101#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/injection.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="210">
|
||||
<caret line="73" column="28" lean-forward="false" selection-start-line="73" selection-start-column="28" selection-end-line="73" selection-end-column="28" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/controller.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="-323">
|
||||
<caret line="18" column="0" lean-forward="true" selection-start-line="18" selection-start-column="0" selection-end-line="18" selection-end-column="0" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/pattern_matcher.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="330">
|
||||
<caret line="22" column="5" lean-forward="true" selection-start-line="22" selection-start-column="5" selection-end-line="22" selection-end-column="5" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/parameter_meta_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="180">
|
||||
<caret line="12" column="13" lean-forward="true" selection-start-line="12" selection-start-column="13" selection-end-line="12" selection-end-column="13" />
|
||||
<folding>
|
||||
<element signature="e#0#20#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/pattern_matcher_test.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="257">
|
||||
<caret line="59" column="40" lean-forward="true" selection-start-line="59" selection-start-column="40" selection-end-line="78" selection-end-column="37" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/lib/src/http/http.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="225">
|
||||
<caret line="15" column="23" lean-forward="false" selection-start-line="15" selection-start-column="23" selection-end-line="15" selection-end-column="23" />
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/CHANGELOG.md">
|
||||
<provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
|
||||
<state split_layout="SPLIT">
|
||||
<first_editor relative-caret-position="15">
|
||||
<caret line="1" column="70" lean-forward="false" selection-start-line="1" selection-start-column="70" selection-end-line="1" selection-end-column="70" />
|
||||
<folding />
|
||||
</first_editor>
|
||||
<second_editor />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test/all.dart">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state relative-caret-position="140">
|
||||
<caret line="31" column="23" lean-forward="false" selection-start-line="31" selection-start-column="23" selection-end-line="31" selection-end-column="23" />
|
||||
<folding>
|
||||
<element signature="e#0#38#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
# 1.1.0-alpha+6
|
||||
* Added `@Parameter()` annotations, with support for pattern matching.
|
||||
|
||||
# 1.1.0-alpha+5
|
||||
* Closed [#166](https://github.com/angel-dart/framework/issues/166), killing any hanging `Stopwatch` instances when streaming.
|
||||
* Removed `AngelPlugin` and `AngelMiddleware`, as well as the `@proxy` annotations from `Angel` and `RequestContext`.
|
||||
|
|
|
@ -12,76 +12,84 @@ RequestHandler createDynamicHandler(handler,
|
|||
return handleContained(handler, injection);
|
||||
}
|
||||
|
||||
resolveInjection(requirement, InjectionRequest injection, RequestContext req,
|
||||
ResponseContext res, bool throwOnUnresolved) {
|
||||
var propFromApp;
|
||||
|
||||
if (requirement == RequestContext) {
|
||||
return req;
|
||||
} else if (requirement == ResponseContext) {
|
||||
return res;
|
||||
} else if (requirement is String &&
|
||||
injection.parameters.containsKey(requirement)) {
|
||||
var param = injection.parameters[requirement];
|
||||
var value = param.getValue(req);
|
||||
if (value == null && param.required != false) throw param.error;
|
||||
return value;
|
||||
} else if (requirement is String) {
|
||||
if (req.params.containsKey(requirement)) {
|
||||
return req.params[requirement];
|
||||
} else if (req._injections.containsKey(requirement))
|
||||
return req._injections[requirement];
|
||||
else if (req.properties.containsKey(requirement))
|
||||
return req.properties[requirement];
|
||||
else if ((propFromApp = req.app.findProperty(requirement)) != null)
|
||||
return propFromApp;
|
||||
else if (injection.optional.contains(requirement))
|
||||
return null;
|
||||
else if (throwOnUnresolved) {
|
||||
throw new ArgumentError(
|
||||
"Cannot resolve parameter '$requirement' within handler.");
|
||||
}
|
||||
} else if (requirement is List &&
|
||||
requirement.length == 2 &&
|
||||
requirement.first is String &&
|
||||
requirement.last is Type) {
|
||||
String key = requirement.first;
|
||||
Type type = requirement.last;
|
||||
if (req.params.containsKey(key) ||
|
||||
req._injections.containsKey(key) ||
|
||||
req.properties.containsKey(key) ||
|
||||
req.app.configuration.containsKey(key) ||
|
||||
_primitiveTypes.contains(type)) {
|
||||
return resolveInjection(key, injection, req, res, throwOnUnresolved);
|
||||
} else
|
||||
return resolveInjection(type, injection, req, res, throwOnUnresolved);
|
||||
} else if (requirement is Type && requirement != dynamic) {
|
||||
if (req._injections.containsKey(requirement))
|
||||
return req._injections[requirement];
|
||||
else
|
||||
return req.app.container.make(requirement);
|
||||
} else if (throwOnUnresolved) {
|
||||
throw new ArgumentError(
|
||||
'$requirement cannot be injected into a request handler.');
|
||||
}
|
||||
}
|
||||
|
||||
/// Checks if an [InjectionRequest] can be sufficiently executed within the current request/response context.
|
||||
bool suitableForInjection(RequestContext req, ResponseContext res, InjectionRequest injection) {
|
||||
return injection.parameters.values.any((p) {
|
||||
if (p.match == null) return false;
|
||||
var value = p.getValue(req);
|
||||
return value == p.match;
|
||||
});
|
||||
}
|
||||
|
||||
/// Handles a request with a DI-enabled handler.
|
||||
RequestHandler handleContained(handler, InjectionRequest injection) {
|
||||
return (RequestContext req, ResponseContext res) async {
|
||||
if (injection.parameters.isNotEmpty && injection.parameters.values.any((p) => p.match != null) && !suitableForInjection(req, res, injection))
|
||||
return true;
|
||||
|
||||
List args = [];
|
||||
|
||||
void inject(requirement) {
|
||||
var propFromApp;
|
||||
|
||||
if (requirement == RequestContext) {
|
||||
args.add(req);
|
||||
} else if (requirement == ResponseContext) {
|
||||
args.add(res);
|
||||
} else if (requirement is String) {
|
||||
if (req.params.containsKey(requirement)) {
|
||||
args.add(req.params[requirement]);
|
||||
} else if (req._injections.containsKey(requirement))
|
||||
args.add(req._injections[requirement]);
|
||||
else if (req.properties.containsKey(requirement))
|
||||
args.add(req.properties[requirement]);
|
||||
else if ((propFromApp = req.app.findProperty(requirement)) != null)
|
||||
args.add(propFromApp);
|
||||
else if (injection.optional.contains(requirement))
|
||||
args.add(null);
|
||||
else {
|
||||
throw new ArgumentError(
|
||||
"Cannot resolve parameter '$requirement' within handler.");
|
||||
}
|
||||
} else if (requirement is List &&
|
||||
requirement.length == 2 &&
|
||||
requirement.first is String &&
|
||||
requirement.last is Type) {
|
||||
String key = requirement.first;
|
||||
Type type = requirement.last;
|
||||
if (req.params.containsKey(key) ||
|
||||
req._injections.containsKey(key) ||
|
||||
req.properties.containsKey(key) ||
|
||||
req.app.configuration.containsKey(key) ||
|
||||
_primitiveTypes.contains(type)) {
|
||||
inject(key);
|
||||
} else
|
||||
inject(type);
|
||||
} else if (requirement is Type && requirement != dynamic) {
|
||||
if (req._injections.containsKey(requirement))
|
||||
args.add(req._injections[requirement]);
|
||||
else
|
||||
args.add(req.app.container.make(requirement));
|
||||
} else {
|
||||
throw new ArgumentError(
|
||||
'$requirement cannot be injected into a request handler.');
|
||||
}
|
||||
}
|
||||
|
||||
Map<Symbol, dynamic> named = {};
|
||||
injection.required.forEach(inject);
|
||||
args.addAll(injection.required
|
||||
.map((r) => resolveInjection(r, injection, req, res, true)));
|
||||
|
||||
injection.named.forEach((k, v) {
|
||||
var name = new Symbol(k);
|
||||
if (req.params.containsKey(k))
|
||||
named[name] = v;
|
||||
else if (req._injections.containsKey(k))
|
||||
named[name] = v;
|
||||
else if (req._injections.containsKey(v) && v != dynamic)
|
||||
named[name] = v;
|
||||
else {
|
||||
try {
|
||||
named[name] = req.app.container.make(v);
|
||||
} catch (e) {
|
||||
named[name] = null;
|
||||
}
|
||||
}
|
||||
named[name] = resolveInjection([k, v], injection, req, res, false);
|
||||
});
|
||||
|
||||
var result = Function.apply(handler, args, named);
|
||||
|
@ -106,14 +114,24 @@ class InjectionRequest {
|
|||
/// A list of the arguments that can be null in a DI-enabled method.
|
||||
final List<String> optional;
|
||||
|
||||
const InjectionRequest.constant({this.named, this.required, this.optional});
|
||||
/// Extended parameter definitions.
|
||||
final Map<String, Parameter> parameters;
|
||||
|
||||
const InjectionRequest.constant(
|
||||
{this.named: const {},
|
||||
this.required: const [],
|
||||
this.optional: const [],
|
||||
this.parameters: const {}});
|
||||
|
||||
InjectionRequest()
|
||||
: named = {},
|
||||
required = [],
|
||||
optional = [];
|
||||
optional = [],
|
||||
parameters = {};
|
||||
}
|
||||
|
||||
final TypeMirror _Parameter = reflectType(Parameter);
|
||||
|
||||
/// Predetermines what needs to be injected for a handler to run.
|
||||
InjectionRequest preInject(Function handler) {
|
||||
var injection = new InjectionRequest();
|
||||
|
@ -127,6 +145,22 @@ InjectionRequest preInject(Function handler) {
|
|||
var name = MirrorSystem.getName(parameter.simpleName);
|
||||
var type = parameter.type.reflectedType;
|
||||
|
||||
var p = parameter.metadata
|
||||
.firstWhere((m) => m.type.isAssignableTo(_Parameter),
|
||||
orElse: () => null)
|
||||
?.reflectee as Parameter;
|
||||
if (p != null) {
|
||||
injection.parameters[name] = new Parameter(
|
||||
cookie: p.cookie,
|
||||
header: p.header,
|
||||
query: p.query,
|
||||
session: p.session,
|
||||
match: p.match,
|
||||
defaultValue: p.defaultValue,
|
||||
required: parameter.isNamed ? false : p.required != false,
|
||||
);
|
||||
}
|
||||
|
||||
if (!parameter.isNamed) {
|
||||
if (parameter.isOptional) injection.optional.add(name);
|
||||
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
library angel_framework.http.metadata;
|
||||
|
||||
import 'hooked_service.dart' show HookedServiceEventListener;
|
||||
import 'package:angel_http_exception/angel_http_exception.dart';
|
||||
import 'request_context.dart';
|
||||
|
||||
/// Annotation to map middleware onto a handler.
|
||||
class Middleware {
|
||||
|
@ -31,3 +33,105 @@ class Expose {
|
|||
this.as: null,
|
||||
this.allowNull: const []});
|
||||
}
|
||||
|
||||
/// Used to apply special dependency injections or functionality to a function parameter.
|
||||
class Parameter {
|
||||
/// Inject the value of a request cookie.
|
||||
final String cookie;
|
||||
|
||||
/// Inject the value of a request header.
|
||||
final String header;
|
||||
|
||||
/// Inject the value of a key from the session.
|
||||
final String session;
|
||||
|
||||
/// Inject the value of a key from the query.
|
||||
final String query;
|
||||
|
||||
/// Only execute the handler if the value of this parameter matches the given value.
|
||||
final match;
|
||||
|
||||
/// Specify a default value.
|
||||
final defaultValue;
|
||||
|
||||
/// If `true` (default), then an error will be thrown if this parameter is not present.
|
||||
final bool required;
|
||||
|
||||
const Parameter(
|
||||
{this.cookie,
|
||||
this.query,
|
||||
this.header,
|
||||
this.session,
|
||||
this.match,
|
||||
this.defaultValue,
|
||||
this.required});
|
||||
|
||||
/// Returns an error that can be thrown when the parameter is not present.
|
||||
get error {
|
||||
if (cookie?.isNotEmpty == true)
|
||||
return new AngelHttpException.badRequest(
|
||||
message: 'Missing required cookie "$cookie".');
|
||||
if (header?.isNotEmpty == true)
|
||||
return new AngelHttpException.badRequest(
|
||||
message: 'Missing required header "$header".');
|
||||
if (query?.isNotEmpty == true)
|
||||
return new AngelHttpException.badRequest(
|
||||
message: 'Missing required query parameter "$query".');
|
||||
if (session?.isNotEmpty == true)
|
||||
return new StateError(
|
||||
'Session does not contain required key "$session".');
|
||||
}
|
||||
|
||||
/// Obtains a value for this parameter from a [RequestContext].
|
||||
getValue(RequestContext req) {
|
||||
if (cookie?.isNotEmpty == true)
|
||||
return req.cookies.firstWhere((c) => c.name == cookie)?.value ??
|
||||
defaultValue;
|
||||
if (header?.isNotEmpty == true)
|
||||
return req.headers.value(header) ?? defaultValue;
|
||||
if (session?.isNotEmpty == true)
|
||||
return req.session[session] ?? defaultValue;
|
||||
if (query?.isNotEmpty == true) return req.query[query] ?? defaultValue;
|
||||
return defaultValue;
|
||||
}
|
||||
}
|
||||
|
||||
/// Shortcut for declaring a request header [Parameter].
|
||||
class Header extends Parameter {
|
||||
const Header(String header, {match, defaultValue, bool required: true})
|
||||
: super(
|
||||
header: header,
|
||||
match: match,
|
||||
defaultValue: defaultValue,
|
||||
required: required);
|
||||
}
|
||||
|
||||
/// Shortcut for declaring a request session [Parameter].
|
||||
class Session extends Parameter {
|
||||
const Session(String session, {match, defaultValue, bool required: true})
|
||||
: super(
|
||||
session: session,
|
||||
match: match,
|
||||
defaultValue: defaultValue,
|
||||
required: required);
|
||||
}
|
||||
|
||||
/// Shortcut for declaring a request query [Parameter].
|
||||
class Query extends Parameter {
|
||||
const Query(String query, {match, defaultValue, bool required: true})
|
||||
: super(
|
||||
query: query,
|
||||
match: match,
|
||||
defaultValue: defaultValue,
|
||||
required: required);
|
||||
}
|
||||
|
||||
/// Shortcut for declaring a request cookie [Parameter].
|
||||
class CookieValue extends Parameter {
|
||||
const CookieValue(String cookie, {match, defaultValue, bool required: true})
|
||||
: super(
|
||||
cookie: cookie,
|
||||
match: match,
|
||||
defaultValue: defaultValue,
|
||||
required: required);
|
||||
}
|
||||
|
|
|
@ -3,8 +3,10 @@ library angel_framework.http.request_context;
|
|||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'dart:mirrors';
|
||||
import 'package:angel_http_exception/angel_http_exception.dart';
|
||||
import 'package:body_parser/body_parser.dart';
|
||||
import 'package:charcode/charcode.dart';
|
||||
import 'metadata.dart';
|
||||
import 'response_context.dart';
|
||||
import 'routable.dart';
|
||||
import 'server.dart' show Angel;
|
||||
|
|
|
@ -347,7 +347,8 @@ class Angel extends AngelBase {
|
|||
}
|
||||
|
||||
res.statusCode = e.statusCode;
|
||||
await errorHandler(e, req, res);
|
||||
var result = await errorHandler(e, req, res);
|
||||
await executeHandler(result, req, res);
|
||||
res.end();
|
||||
return await sendResponse(request, req, res,
|
||||
ignoreFinalizers: ignoreFinalizers == true);
|
||||
|
@ -360,7 +361,7 @@ class Angel extends AngelBase {
|
|||
var zoneSpec = await createZoneForRequest(request, req, res);
|
||||
var zone = Zone.current.fork(specification: zoneSpec);
|
||||
|
||||
return zone.run(() async {
|
||||
return zone.runGuarded(() async {
|
||||
String requestedUrl;
|
||||
|
||||
// Faster way to get path
|
||||
|
@ -387,6 +388,7 @@ class Angel extends AngelBase {
|
|||
Router r = isProduction ? (_flattened ??= flatten(this)) : this;
|
||||
var resolved =
|
||||
r.resolveAll(requestedUrl, requestedUrl, method: req.method);
|
||||
|
||||
return new Tuple3(
|
||||
new MiddlewarePipeline(resolved),
|
||||
resolved.fold<Map>({}, (out, r) => out..addAll(r.allParams)),
|
||||
|
@ -425,6 +427,15 @@ class Angel extends AngelBase {
|
|||
ignoreFinalizers: true,
|
||||
);
|
||||
}
|
||||
}).catchError((error, stackTrace) {
|
||||
var e = new AngelHttpException(error,
|
||||
stackTrace: stackTrace, message: error?.toString());
|
||||
|
||||
if (logger != null) {
|
||||
logger.severe(e.message ?? e.toString(), error, stackTrace);
|
||||
}
|
||||
|
||||
return handleAngelHttpException(e, stackTrace, req, res, request);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -612,19 +623,6 @@ class Angel extends AngelBase {
|
|||
|
||||
createZoneForRequest = (request, req, res) async {
|
||||
return new ZoneSpecification(
|
||||
handleUncaughtError: (Zone self, ZoneDelegate parent, Zone zone, error,
|
||||
StackTrace stackTrace) {
|
||||
var e = new AngelHttpException(error,
|
||||
stackTrace: stackTrace, message: error?.toString());
|
||||
return handleAngelHttpException(
|
||||
e,
|
||||
stackTrace,
|
||||
req,
|
||||
res,
|
||||
request,
|
||||
ignoreFinalizers: true,
|
||||
);
|
||||
},
|
||||
print: (Zone self, ZoneDelegate parent, Zone zone, String line) {
|
||||
if (logger != null) {
|
||||
logger.info(line);
|
||||
|
|
|
@ -15,13 +15,13 @@ dependencies:
|
|||
flatten: ^1.0.0
|
||||
json_god: ^2.0.0-beta
|
||||
logging: ">=0.11.3 <1.0.0"
|
||||
matcher: ^0.12.0
|
||||
merge_map: ^1.0.0
|
||||
meta: ^1.0.0
|
||||
mime: ^0.9.3
|
||||
random_string: ^0.0.1
|
||||
tuple: ^1.0.0
|
||||
dev_dependencies:
|
||||
matcher: ^0.12.0
|
||||
mock_request: ^1.0.0
|
||||
http: ^0.11.3
|
||||
test: ^0.12.13
|
||||
|
|
|
@ -6,6 +6,7 @@ import 'encoders_buffer_test.dart' as encoders_buffer;
|
|||
import 'exception_test.dart' as exception;
|
||||
import 'general_test.dart' as general;
|
||||
import 'hooked_test.dart' as hooked;
|
||||
import 'parameter_meta_test.dart' as parameter_meta;
|
||||
import 'precontained_test.dart' as precontained;
|
||||
import 'primitives_test.dart' as primitives;
|
||||
import 'repeat_request_test.dart' as repeat_request;
|
||||
|
@ -28,6 +29,7 @@ main() {
|
|||
group('exception', exception.main);
|
||||
group('general', general.main);
|
||||
group('hooked', hooked.main);
|
||||
group('parameter_meta', parameter_meta.main);
|
||||
group('precontained', precontained.main);
|
||||
group('primitives', primitives.main);
|
||||
group('repeat request', repeat_request.main);
|
||||
|
|
131
test/parameter_meta_test.dart
Normal file
131
test/parameter_meta_test.dart
Normal file
|
@ -0,0 +1,131 @@
|
|||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
import 'package:angel_framework/angel_framework.dart';
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:mock_request/mock_request.dart';
|
||||
import 'package:test/test.dart';
|
||||
|
||||
Future<String> readResponse(MockHttpResponse rs) {
|
||||
return rs.transform(UTF8.decoder).join();
|
||||
}
|
||||
|
||||
Future printResponse(MockHttpResponse rs) {
|
||||
return readResponse(rs).then((text) {
|
||||
print(text.isEmpty ? '<empty response>' : text);
|
||||
});
|
||||
}
|
||||
|
||||
main() {
|
||||
Angel app;
|
||||
|
||||
setUp(() {
|
||||
app = new Angel()..lazyParseBodies = true;
|
||||
|
||||
app.get('/cookie', (@CookieValue('token') String jwt) {
|
||||
return jwt;
|
||||
});
|
||||
|
||||
app.get('/header', (@Header('x-foo') String header) {
|
||||
return header;
|
||||
});
|
||||
|
||||
app.get('/query', (@Query('q') String query) {
|
||||
return query;
|
||||
});
|
||||
|
||||
app.get('/session', (@Session('foo') String foo) {
|
||||
return foo;
|
||||
});
|
||||
|
||||
app.get('/match', (@Query('mode', match: 'pos') String mode) {
|
||||
return 'YES $mode';
|
||||
});
|
||||
|
||||
app.get('/match', (@Query('mode', match: 'neg') String mode) {
|
||||
return 'NO $mode';
|
||||
});
|
||||
|
||||
app.get('/match', (@Query('mode') String mode) {
|
||||
return 'DEFAULT $mode';
|
||||
});
|
||||
|
||||
app.logger = new Logger('parameter_meta_test')
|
||||
..onRecord.listen((rec) {
|
||||
print(rec);
|
||||
if (rec.error != null) print(rec.error);
|
||||
if (rec.stackTrace != null) print(rec.stackTrace);
|
||||
});
|
||||
});
|
||||
|
||||
test('injects header or throws', () async {
|
||||
// Invalid request
|
||||
var rq = new MockHttpRequest('GET', Uri.parse('/header'))..close();
|
||||
var rs = rq.response;
|
||||
await app.handleRequest(rq);
|
||||
|
||||
await printResponse(rs);
|
||||
expect(rs.statusCode, 400);
|
||||
|
||||
// Valid request
|
||||
rq = new MockHttpRequest('GET', Uri.parse('/header'))
|
||||
..headers.add('x-foo', 'bar')
|
||||
..close();
|
||||
rs = rq.response;
|
||||
await app.handleRequest(rq);
|
||||
|
||||
var body = await readResponse(rs);
|
||||
print('Body: $body');
|
||||
expect(rs.statusCode, 200);
|
||||
expect(body, JSON.encode('bar'));
|
||||
});
|
||||
|
||||
test('injects session or throws', () async {
|
||||
// Invalid request
|
||||
var rq = new MockHttpRequest('GET', Uri.parse('/session'))..close();
|
||||
var rs = rq.response;
|
||||
await app.handleRequest(rq);
|
||||
|
||||
await printResponse(rs);
|
||||
expect(rs.statusCode, 500);
|
||||
|
||||
rq = new MockHttpRequest('GET', Uri.parse('/session'));
|
||||
rq.session['foo'] = 'bar';
|
||||
rq.close();
|
||||
rs = rq.response;
|
||||
await app.handleRequest(rq);
|
||||
|
||||
await printResponse(rs);
|
||||
expect(rs.statusCode, 200);
|
||||
});
|
||||
|
||||
// Originally, the plan was to test cookie, session, header, etc.,
|
||||
// but that behavior has been consolidated into `getValue`. Thus,
|
||||
// they will all function the same way.
|
||||
|
||||
test('pattern matching', () async {
|
||||
var rq = new MockHttpRequest('GET', Uri.parse('/match?mode=pos'))..close();
|
||||
var rs = rq.response;
|
||||
await app.handleRequest(rq);
|
||||
var body = await readResponse(rs);
|
||||
print('Body: $body');
|
||||
expect(rs.statusCode, 200);
|
||||
expect(body, JSON.encode('YES pos'));
|
||||
|
||||
rq = new MockHttpRequest('GET', Uri.parse('/match?mode=neg'))..close();
|
||||
rs = rq.response;
|
||||
await app.handleRequest(rq);
|
||||
body = await readResponse(rs);
|
||||
print('Body: $body');
|
||||
expect(rs.statusCode, 200);
|
||||
expect(body, JSON.encode('NO neg'));
|
||||
|
||||
// Fallback
|
||||
rq = new MockHttpRequest('GET', Uri.parse('/match?mode=ambi'))..close();
|
||||
rs = rq.response;
|
||||
await app.handleRequest(rq);
|
||||
body = await readResponse(rs);
|
||||
print('Body: $body');
|
||||
expect(rs.statusCode, 200);
|
||||
expect(body, JSON.encode('DEFAULT ambi'));
|
||||
});
|
||||
}
|
|
@ -79,6 +79,15 @@ main() {
|
|||
|
||||
app.use('/query', new QueryService());
|
||||
|
||||
RequestMiddleware write(String message) {
|
||||
return (req, res) async {
|
||||
res.write(message);
|
||||
return true;
|
||||
};
|
||||
}
|
||||
|
||||
app.chain(write('a')).chain([write('b'), write('c')]).get('/chained', () => false);
|
||||
|
||||
app.use('MJ');
|
||||
|
||||
app.dumpTree(header: "DUMPING ROUTES:", showMatchers: true);
|
||||
|
@ -112,6 +121,11 @@ main() {
|
|||
expect(json['last'], equals('WORLD'));
|
||||
});
|
||||
|
||||
test('Chained routes', () async {
|
||||
var response = await client.get("$url/chained");
|
||||
expect(response.body, equals('abc'));
|
||||
});
|
||||
|
||||
test('Can nest another Angel instance', () async {
|
||||
var response = await client.post('$url/nes/ted/foo');
|
||||
var json = JSON.decode(response.body);
|
||||
|
|
Loading…
Reference in a new issue