@angular/router 0.1.0 → 2.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/router.umd.js +1812 -0
- package/bundles/router.umd.min.js +2 -0
- package/esm/index.d.ts +15 -0
- package/esm/index.js +15 -0
- package/esm/index.js.map +1 -0
- package/esm/src/constants.d.ts +5 -0
- package/esm/src/constants.js +6 -0
- package/esm/src/constants.js.map +1 -0
- package/esm/src/constants.metadata.json +1 -0
- package/esm/src/core_private.d.ts +3 -0
- package/esm/src/core_private.js +4 -0
- package/esm/src/core_private.js.map +1 -0
- package/esm/src/core_private.metadata.json +1 -0
- package/esm/src/directives/router_directives.d.ts +21 -0
- package/esm/src/directives/router_directives.js +24 -0
- package/esm/src/directives/router_directives.js.map +1 -0
- package/esm/src/directives/router_directives.metadata.json +1 -0
- package/esm/src/directives/router_link.d.ts +49 -0
- package/esm/src/directives/router_link.js +68 -0
- package/esm/src/directives/router_link.js.map +1 -0
- package/esm/src/directives/router_link.metadata.json +1 -0
- package/esm/src/directives/router_outlet.d.ts +36 -0
- package/esm/src/directives/router_outlet.js +42 -0
- package/esm/src/directives/router_outlet.js.map +1 -0
- package/esm/src/directives/router_outlet.metadata.json +1 -0
- package/esm/src/facade/async.d.ts +90 -0
- package/esm/src/facade/async.js +137 -0
- package/esm/src/facade/async.js.map +1 -0
- package/esm/src/facade/base_wrapped_exception.d.ts +14 -0
- package/esm/src/facade/base_wrapped_exception.js +17 -0
- package/esm/src/facade/base_wrapped_exception.js.map +1 -0
- package/esm/src/facade/collection.d.ts +103 -0
- package/esm/src/facade/collection.js +343 -0
- package/esm/src/facade/collection.js.map +1 -0
- package/esm/src/facade/collection.metadata.json +1 -0
- package/esm/src/facade/exception_handler.d.ts +29 -0
- package/esm/src/facade/exception_handler.js +124 -0
- package/esm/src/facade/exception_handler.js.map +1 -0
- package/esm/src/facade/exceptions.d.ts +32 -0
- package/esm/src/facade/exceptions.js +42 -0
- package/esm/src/facade/exceptions.js.map +1 -0
- package/esm/src/facade/exceptions.metadata.json +1 -0
- package/esm/src/facade/lang.d.ts +158 -0
- package/esm/src/facade/lang.js +386 -0
- package/esm/src/facade/lang.js.map +1 -0
- package/esm/src/facade/lang.metadata.json +1 -0
- package/esm/src/facade/promise.d.ts +17 -0
- package/esm/src/facade/promise.js +41 -0
- package/esm/src/facade/promise.js.map +1 -0
- package/esm/src/interfaces.d.ts +23 -0
- package/esm/src/interfaces.js +1 -0
- package/esm/src/interfaces.js.map +1 -0
- package/esm/src/lifecycle_reflector.d.ts +1 -0
- package/esm/src/lifecycle_reflector.js +10 -0
- package/esm/src/lifecycle_reflector.js.map +1 -0
- package/esm/src/link.d.ts +2 -0
- package/esm/src/link.js +183 -0
- package/esm/src/link.js.map +1 -0
- package/esm/src/metadata/decorators.d.ts +16 -0
- package/esm/src/metadata/decorators.js +9 -0
- package/esm/src/metadata/decorators.js.map +1 -0
- package/esm/src/metadata/decorators.metadata.json +1 -0
- package/esm/src/metadata/metadata.d.ts +48 -0
- package/esm/src/metadata/metadata.js +48 -0
- package/esm/src/metadata/metadata.js.map +1 -0
- package/esm/src/recognize.d.ts +4 -0
- package/esm/src/recognize.js +164 -0
- package/esm/src/recognize.js.map +1 -0
- package/esm/src/router.d.ts +95 -0
- package/esm/src/router.js +243 -0
- package/esm/src/router.js.map +1 -0
- package/esm/src/router_providers.d.ts +23 -0
- package/esm/src/router_providers.js +26 -0
- package/esm/src/router_providers.js.map +1 -0
- package/esm/src/router_providers.metadata.json +1 -0
- package/esm/src/router_providers_common.d.ts +11 -0
- package/esm/src/router_providers_common.js +32 -0
- package/esm/src/router_providers_common.js.map +1 -0
- package/esm/src/router_providers_common.metadata.json +1 -0
- package/esm/src/router_url_serializer.d.ts +21 -0
- package/esm/src/router_url_serializer.js +164 -0
- package/esm/src/router_url_serializer.js.map +1 -0
- package/esm/src/segments.d.ts +51 -0
- package/esm/src/segments.js +137 -0
- package/esm/src/segments.js.map +1 -0
- package/esm/src/segments.metadata.json +1 -0
- package/esm/testing/router_testing_providers.d.ts +1 -0
- package/esm/testing/router_testing_providers.js +31 -0
- package/esm/testing/router_testing_providers.js.map +1 -0
- package/esm/testing/router_testing_providers.metadata.json +1 -0
- package/esm/testing.d.ts +1 -0
- package/esm/testing.js +2 -0
- package/esm/testing.js.map +1 -0
- package/index.d.ts +15 -0
- package/index.js +31 -0
- package/index.js.map +1 -0
- package/package.json +16 -1
- package/src/constants.d.ts +5 -0
- package/src/constants.js +7 -0
- package/src/constants.js.map +1 -0
- package/src/constants.metadata.json +1 -0
- package/src/core_private.d.ts +3 -0
- package/src/core_private.js +5 -0
- package/src/core_private.js.map +1 -0
- package/src/core_private.metadata.json +1 -0
- package/src/directives/router_directives.d.ts +21 -0
- package/src/directives/router_directives.js +25 -0
- package/src/directives/router_directives.js.map +1 -0
- package/src/directives/router_directives.metadata.json +1 -0
- package/src/directives/router_link.d.ts +49 -0
- package/src/directives/router_link.js +76 -0
- package/src/directives/router_link.js.map +1 -0
- package/src/directives/router_link.metadata.json +1 -0
- package/src/directives/router_outlet.d.ts +36 -0
- package/src/directives/router_outlet.js +53 -0
- package/src/directives/router_outlet.js.map +1 -0
- package/src/directives/router_outlet.metadata.json +1 -0
- package/src/facade/async.d.ts +90 -0
- package/src/facade/async.js +160 -0
- package/src/facade/async.js.map +1 -0
- package/src/facade/base_wrapped_exception.d.ts +14 -0
- package/src/facade/base_wrapped_exception.js +50 -0
- package/src/facade/base_wrapped_exception.js.map +1 -0
- package/src/facade/collection.d.ts +103 -0
- package/src/facade/collection.js +368 -0
- package/src/facade/collection.js.map +1 -0
- package/src/facade/collection.metadata.json +1 -0
- package/src/facade/exception_handler.d.ts +29 -0
- package/src/facade/exception_handler.js +133 -0
- package/src/facade/exception_handler.js.map +1 -0
- package/src/facade/exceptions.d.ts +32 -0
- package/src/facade/exceptions.js +82 -0
- package/src/facade/exceptions.js.map +1 -0
- package/src/facade/exceptions.metadata.json +1 -0
- package/src/facade/lang.d.ts +158 -0
- package/src/facade/lang.js +480 -0
- package/src/facade/lang.js.map +1 -0
- package/src/facade/lang.metadata.json +1 -0
- package/src/facade/promise.d.ts +17 -0
- package/src/facade/promise.js +49 -0
- package/src/facade/promise.js.map +1 -0
- package/src/interfaces.d.ts +23 -0
- package/src/interfaces.js +2 -0
- package/src/interfaces.js.map +1 -0
- package/src/lifecycle_reflector.d.ts +1 -0
- package/src/lifecycle_reflector.js +12 -0
- package/src/lifecycle_reflector.js.map +1 -0
- package/src/link.d.ts +2 -0
- package/src/link.js +189 -0
- package/src/link.js.map +1 -0
- package/src/metadata/decorators.d.ts +16 -0
- package/src/metadata/decorators.js +10 -0
- package/src/metadata/decorators.js.map +1 -0
- package/src/metadata/decorators.metadata.json +1 -0
- package/src/metadata/metadata.d.ts +48 -0
- package/src/metadata/metadata.js +66 -0
- package/src/metadata/metadata.js.map +1 -0
- package/src/recognize.d.ts +4 -0
- package/src/recognize.js +172 -0
- package/src/recognize.js.map +1 -0
- package/src/router.d.ts +95 -0
- package/src/router.js +276 -0
- package/src/router.js.map +1 -0
- package/src/router_providers.d.ts +23 -0
- package/src/router_providers.js +27 -0
- package/src/router_providers.js.map +1 -0
- package/src/router_providers.metadata.json +1 -0
- package/src/router_providers_common.d.ts +11 -0
- package/src/router_providers_common.js +35 -0
- package/src/router_providers_common.js.map +1 -0
- package/src/router_providers_common.metadata.json +1 -0
- package/src/router_url_serializer.d.ts +21 -0
- package/src/router_url_serializer.js +184 -0
- package/src/router_url_serializer.js.map +1 -0
- package/src/segments.d.ts +51 -0
- package/src/segments.js +181 -0
- package/src/segments.js.map +1 -0
- package/src/segments.metadata.json +1 -0
- package/testing/router_testing_providers.d.ts +1 -0
- package/testing/router_testing_providers.js +35 -0
- package/testing/router_testing_providers.js.map +1 -0
- package/testing/router_testing_providers.metadata.json +1 -0
- package/testing.d.ts +1 -0
- package/testing.js +6 -0
- package/testing.js.map +1 -0
- package/angular1/angular_1_router.js +0 -2922
- package/angular1/ng_route_shim.js +0 -349
- package/angular2/router.dev.js +0 -3107
- package/angular2/router.js +0 -3107
- package/angular2/router.min.js +0 -3
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || function (d, b) {
|
|
3
|
+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
|
4
|
+
function __() { this.constructor = d; }
|
|
5
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
6
|
+
};
|
|
7
|
+
var core_1 = require('@angular/core');
|
|
8
|
+
var lang_1 = require('./facade/lang');
|
|
9
|
+
var segments_1 = require('./segments');
|
|
10
|
+
/**
|
|
11
|
+
* Defines a way to serialize/deserialize a url tree.
|
|
12
|
+
*/
|
|
13
|
+
var RouterUrlSerializer = (function () {
|
|
14
|
+
function RouterUrlSerializer() {
|
|
15
|
+
}
|
|
16
|
+
return RouterUrlSerializer;
|
|
17
|
+
}());
|
|
18
|
+
exports.RouterUrlSerializer = RouterUrlSerializer;
|
|
19
|
+
/**
|
|
20
|
+
* A default implementation of the serialization.
|
|
21
|
+
*/
|
|
22
|
+
var DefaultRouterUrlSerializer = (function (_super) {
|
|
23
|
+
__extends(DefaultRouterUrlSerializer, _super);
|
|
24
|
+
function DefaultRouterUrlSerializer() {
|
|
25
|
+
_super.apply(this, arguments);
|
|
26
|
+
}
|
|
27
|
+
DefaultRouterUrlSerializer.prototype.parse = function (url) {
|
|
28
|
+
var root = new _UrlParser().parse(url);
|
|
29
|
+
return new segments_1.UrlTree(root);
|
|
30
|
+
};
|
|
31
|
+
DefaultRouterUrlSerializer.prototype.serialize = function (tree) { return _serializeUrlTreeNode(segments_1.rootNode(tree)); };
|
|
32
|
+
return DefaultRouterUrlSerializer;
|
|
33
|
+
}(RouterUrlSerializer));
|
|
34
|
+
exports.DefaultRouterUrlSerializer = DefaultRouterUrlSerializer;
|
|
35
|
+
function _serializeUrlTreeNode(node) {
|
|
36
|
+
return "" + node.value + _serializeChildren(node);
|
|
37
|
+
}
|
|
38
|
+
function _serializeUrlTreeNodes(nodes) {
|
|
39
|
+
var main = nodes[0].value.toString();
|
|
40
|
+
var auxNodes = nodes.slice(1);
|
|
41
|
+
var aux = auxNodes.length > 0 ? "(" + auxNodes.map(_serializeUrlTreeNode).join("//") + ")" : '';
|
|
42
|
+
var children = _serializeChildren(nodes[0]);
|
|
43
|
+
return "" + main + aux + children;
|
|
44
|
+
}
|
|
45
|
+
function _serializeChildren(node) {
|
|
46
|
+
if (node.children.length > 0) {
|
|
47
|
+
return "/" + _serializeUrlTreeNodes(node.children);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
return '';
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
var SEGMENT_RE = lang_1.RegExpWrapper.create('^[^\\/\\(\\)\\?;=&#]+');
|
|
54
|
+
function matchUrlSegment(str) {
|
|
55
|
+
var match = lang_1.RegExpWrapper.firstMatch(SEGMENT_RE, str);
|
|
56
|
+
return lang_1.isPresent(match) ? match[0] : '';
|
|
57
|
+
}
|
|
58
|
+
var QUERY_PARAM_VALUE_RE = lang_1.RegExpWrapper.create('^[^\\(\\)\\?;&#]+');
|
|
59
|
+
function matchUrlQueryParamValue(str) {
|
|
60
|
+
var match = lang_1.RegExpWrapper.firstMatch(QUERY_PARAM_VALUE_RE, str);
|
|
61
|
+
return lang_1.isPresent(match) ? match[0] : '';
|
|
62
|
+
}
|
|
63
|
+
var _UrlParser = (function () {
|
|
64
|
+
function _UrlParser() {
|
|
65
|
+
}
|
|
66
|
+
_UrlParser.prototype.peekStartsWith = function (str) { return this._remaining.startsWith(str); };
|
|
67
|
+
_UrlParser.prototype.capture = function (str) {
|
|
68
|
+
if (!this._remaining.startsWith(str)) {
|
|
69
|
+
throw new core_1.BaseException("Expected \"" + str + "\".");
|
|
70
|
+
}
|
|
71
|
+
this._remaining = this._remaining.substring(str.length);
|
|
72
|
+
};
|
|
73
|
+
_UrlParser.prototype.parse = function (url) {
|
|
74
|
+
this._remaining = url;
|
|
75
|
+
if (url == '' || url == '/') {
|
|
76
|
+
return new segments_1.TreeNode(new segments_1.UrlSegment('', {}, null), []);
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
return this.parseRoot();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
_UrlParser.prototype.parseRoot = function () {
|
|
83
|
+
var segments = this.parseSegments();
|
|
84
|
+
return new segments_1.TreeNode(new segments_1.UrlSegment('', {}, null), segments);
|
|
85
|
+
};
|
|
86
|
+
_UrlParser.prototype.parseSegments = function (outletName) {
|
|
87
|
+
if (outletName === void 0) { outletName = null; }
|
|
88
|
+
if (this._remaining.length == 0) {
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
if (this.peekStartsWith('/')) {
|
|
92
|
+
this.capture('/');
|
|
93
|
+
}
|
|
94
|
+
var path = matchUrlSegment(this._remaining);
|
|
95
|
+
this.capture(path);
|
|
96
|
+
if (path.indexOf(':') > -1) {
|
|
97
|
+
var parts = path.split(':');
|
|
98
|
+
outletName = parts[0];
|
|
99
|
+
path = parts[1];
|
|
100
|
+
}
|
|
101
|
+
var matrixParams = {};
|
|
102
|
+
if (this.peekStartsWith(';')) {
|
|
103
|
+
matrixParams = this.parseMatrixParams();
|
|
104
|
+
}
|
|
105
|
+
var aux = [];
|
|
106
|
+
if (this.peekStartsWith('(')) {
|
|
107
|
+
aux = this.parseAuxiliaryRoutes();
|
|
108
|
+
}
|
|
109
|
+
var children = [];
|
|
110
|
+
if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {
|
|
111
|
+
this.capture('/');
|
|
112
|
+
children = this.parseSegments();
|
|
113
|
+
}
|
|
114
|
+
var segment = new segments_1.UrlSegment(path, matrixParams, outletName);
|
|
115
|
+
var node = new segments_1.TreeNode(segment, children);
|
|
116
|
+
return [node].concat(aux);
|
|
117
|
+
};
|
|
118
|
+
_UrlParser.prototype.parseQueryParams = function () {
|
|
119
|
+
var params = {};
|
|
120
|
+
this.capture('?');
|
|
121
|
+
this.parseQueryParam(params);
|
|
122
|
+
while (this._remaining.length > 0 && this.peekStartsWith('&')) {
|
|
123
|
+
this.capture('&');
|
|
124
|
+
this.parseQueryParam(params);
|
|
125
|
+
}
|
|
126
|
+
return params;
|
|
127
|
+
};
|
|
128
|
+
_UrlParser.prototype.parseMatrixParams = function () {
|
|
129
|
+
var params = {};
|
|
130
|
+
while (this._remaining.length > 0 && this.peekStartsWith(';')) {
|
|
131
|
+
this.capture(';');
|
|
132
|
+
this.parseParam(params);
|
|
133
|
+
}
|
|
134
|
+
return params;
|
|
135
|
+
};
|
|
136
|
+
_UrlParser.prototype.parseParam = function (params) {
|
|
137
|
+
var key = matchUrlSegment(this._remaining);
|
|
138
|
+
if (lang_1.isBlank(key)) {
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
this.capture(key);
|
|
142
|
+
var value = 'true';
|
|
143
|
+
if (this.peekStartsWith('=')) {
|
|
144
|
+
this.capture('=');
|
|
145
|
+
var valueMatch = matchUrlSegment(this._remaining);
|
|
146
|
+
if (lang_1.isPresent(valueMatch)) {
|
|
147
|
+
value = valueMatch;
|
|
148
|
+
this.capture(value);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
params[key] = value;
|
|
152
|
+
};
|
|
153
|
+
_UrlParser.prototype.parseQueryParam = function (params) {
|
|
154
|
+
var key = matchUrlSegment(this._remaining);
|
|
155
|
+
if (lang_1.isBlank(key)) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.capture(key);
|
|
159
|
+
var value = 'true';
|
|
160
|
+
if (this.peekStartsWith('=')) {
|
|
161
|
+
this.capture('=');
|
|
162
|
+
var valueMatch = matchUrlQueryParamValue(this._remaining);
|
|
163
|
+
if (lang_1.isPresent(valueMatch)) {
|
|
164
|
+
value = valueMatch;
|
|
165
|
+
this.capture(value);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
params[key] = value;
|
|
169
|
+
};
|
|
170
|
+
_UrlParser.prototype.parseAuxiliaryRoutes = function () {
|
|
171
|
+
var segments = [];
|
|
172
|
+
this.capture('(');
|
|
173
|
+
while (!this.peekStartsWith(')') && this._remaining.length > 0) {
|
|
174
|
+
segments = segments.concat(this.parseSegments('aux'));
|
|
175
|
+
if (this.peekStartsWith('//')) {
|
|
176
|
+
this.capture('//');
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
this.capture(')');
|
|
180
|
+
return segments;
|
|
181
|
+
};
|
|
182
|
+
return _UrlParser;
|
|
183
|
+
}());
|
|
184
|
+
//# sourceMappingURL=router_url_serializer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router_url_serializer.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/router_url_serializer.ts"],"names":[],"mappings":"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","sourcesContent":["import {BaseException} from '@angular/core';\n\nimport {RegExpWrapper, isBlank, isPresent} from './facade/lang';\nimport {Tree, TreeNode, UrlSegment, UrlTree, rootNode} from './segments';\n\n\n/**\n * Defines a way to serialize/deserialize a url tree.\n */\nexport abstract class RouterUrlSerializer {\n /**\n * Parse a url into a {@Link UrlTree}\n */\n abstract parse(url: string): UrlTree;\n\n /**\n * Converts a {@Link UrlTree} into a url\n */\n abstract serialize(tree: UrlTree): string;\n}\n\n/**\n * A default implementation of the serialization.\n */\nexport class DefaultRouterUrlSerializer extends RouterUrlSerializer {\n parse(url: string): UrlTree {\n let root = new _UrlParser().parse(url);\n return new UrlTree(root);\n }\n\n serialize(tree: UrlTree): string { return _serializeUrlTreeNode(rootNode(tree)); }\n}\n\nfunction _serializeUrlTreeNode(node: TreeNode<UrlSegment>): string {\n return `${node.value}${_serializeChildren(node)}`;\n}\n\nfunction _serializeUrlTreeNodes(nodes: TreeNode<UrlSegment>[]): string {\n let main = nodes[0].value.toString();\n let auxNodes = nodes.slice(1);\n let aux = auxNodes.length > 0 ? `(${auxNodes.map(_serializeUrlTreeNode).join(\"//\")})` : '';\n let children = _serializeChildren(nodes[0]);\n return `${main}${aux}${children}`;\n}\n\nfunction _serializeChildren(node: TreeNode<UrlSegment>): string {\n if (node.children.length > 0) {\n return `/${_serializeUrlTreeNodes(node.children)}`;\n } else {\n return '';\n }\n}\n\nvar SEGMENT_RE = RegExpWrapper.create('^[^\\\\/\\\\(\\\\)\\\\?;=&#]+');\nfunction matchUrlSegment(str: string): string {\n var match = RegExpWrapper.firstMatch(SEGMENT_RE, str);\n return isPresent(match) ? match[0] : '';\n}\nvar QUERY_PARAM_VALUE_RE = RegExpWrapper.create('^[^\\\\(\\\\)\\\\?;&#]+');\nfunction matchUrlQueryParamValue(str: string): string {\n var match = RegExpWrapper.firstMatch(QUERY_PARAM_VALUE_RE, str);\n return isPresent(match) ? match[0] : '';\n}\n\nclass _UrlParser {\n private _remaining: string;\n\n peekStartsWith(str: string): boolean { return this._remaining.startsWith(str); }\n\n capture(str: string): void {\n if (!this._remaining.startsWith(str)) {\n throw new BaseException(`Expected \"${str}\".`);\n }\n this._remaining = this._remaining.substring(str.length);\n }\n\n parse(url: string): TreeNode<UrlSegment> {\n this._remaining = url;\n if (url == '' || url == '/') {\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), []);\n } else {\n return this.parseRoot();\n }\n }\n\n parseRoot(): TreeNode<UrlSegment> {\n let segments = this.parseSegments();\n return new TreeNode<UrlSegment>(new UrlSegment('', {}, null), segments);\n }\n\n parseSegments(outletName: string = null): TreeNode<UrlSegment>[] {\n if (this._remaining.length == 0) {\n return [];\n }\n if (this.peekStartsWith('/')) {\n this.capture('/');\n }\n var path = matchUrlSegment(this._remaining);\n this.capture(path);\n\n\n if (path.indexOf(':') > -1) {\n let parts = path.split(':');\n outletName = parts[0];\n path = parts[1];\n }\n\n var matrixParams: {[key: string]: any} = {};\n if (this.peekStartsWith(';')) {\n matrixParams = this.parseMatrixParams();\n }\n\n var aux: any[] /** TODO #9100 */ = [];\n if (this.peekStartsWith('(')) {\n aux = this.parseAuxiliaryRoutes();\n }\n\n var children: TreeNode<UrlSegment>[] = [];\n if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {\n this.capture('/');\n children = this.parseSegments();\n }\n\n let segment = new UrlSegment(path, matrixParams, outletName);\n let node = new TreeNode<UrlSegment>(segment, children);\n return [node].concat(aux);\n }\n\n parseQueryParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n this.capture('?');\n this.parseQueryParam(params);\n while (this._remaining.length > 0 && this.peekStartsWith('&')) {\n this.capture('&');\n this.parseQueryParam(params);\n }\n return params;\n }\n\n parseMatrixParams(): {[key: string]: any} {\n var params: {[key: string]: any} = {};\n while (this._remaining.length > 0 && this.peekStartsWith(';')) {\n this.capture(';');\n this.parseParam(params);\n }\n return params;\n }\n\n parseParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = 'true';\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlSegment(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseQueryParam(params: {[key: string]: any}): void {\n var key = matchUrlSegment(this._remaining);\n if (isBlank(key)) {\n return;\n }\n this.capture(key);\n var value: any = 'true';\n if (this.peekStartsWith('=')) {\n this.capture('=');\n var valueMatch = matchUrlQueryParamValue(this._remaining);\n if (isPresent(valueMatch)) {\n value = valueMatch;\n this.capture(value);\n }\n }\n\n params[key] = value;\n }\n\n parseAuxiliaryRoutes(): TreeNode<UrlSegment>[] {\n var segments: any[] /** TODO #9100 */ = [];\n this.capture('(');\n\n while (!this.peekStartsWith(')') && this._remaining.length > 0) {\n segments = segments.concat(this.parseSegments('aux'));\n if (this.peekStartsWith('//')) {\n this.capture('//');\n }\n }\n this.capture(')');\n\n return segments;\n }\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { ComponentFactory, Type } from '@angular/core';
|
|
2
|
+
export declare class Tree<T> {
|
|
3
|
+
constructor(root: TreeNode<T>);
|
|
4
|
+
root: T;
|
|
5
|
+
parent(t: T): T;
|
|
6
|
+
children(t: T): T[];
|
|
7
|
+
firstChild(t: T): T;
|
|
8
|
+
pathFromRoot(t: T): T[];
|
|
9
|
+
contains(tree: Tree<T>): boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare class UrlTree extends Tree<UrlSegment> {
|
|
12
|
+
constructor(root: TreeNode<UrlSegment>);
|
|
13
|
+
}
|
|
14
|
+
export declare class RouteTree extends Tree<RouteSegment> {
|
|
15
|
+
constructor(root: TreeNode<RouteSegment>);
|
|
16
|
+
}
|
|
17
|
+
export declare function rootNode<T>(tree: Tree<T>): TreeNode<T>;
|
|
18
|
+
export declare class TreeNode<T> {
|
|
19
|
+
value: T;
|
|
20
|
+
children: TreeNode<T>[];
|
|
21
|
+
constructor(value: T, children: TreeNode<T>[]);
|
|
22
|
+
}
|
|
23
|
+
export declare class UrlSegment {
|
|
24
|
+
segment: any;
|
|
25
|
+
parameters: {
|
|
26
|
+
[key: string]: string;
|
|
27
|
+
};
|
|
28
|
+
outlet: string;
|
|
29
|
+
constructor(segment: any, parameters: {
|
|
30
|
+
[key: string]: string;
|
|
31
|
+
}, outlet: string);
|
|
32
|
+
toString(): string;
|
|
33
|
+
}
|
|
34
|
+
export declare class RouteSegment {
|
|
35
|
+
urlSegments: UrlSegment[];
|
|
36
|
+
parameters: {
|
|
37
|
+
[key: string]: string;
|
|
38
|
+
};
|
|
39
|
+
outlet: string;
|
|
40
|
+
constructor(urlSegments: UrlSegment[], parameters: {
|
|
41
|
+
[key: string]: string;
|
|
42
|
+
}, outlet: string, type: Type, componentFactory: ComponentFactory<any>);
|
|
43
|
+
getParam(param: string): string;
|
|
44
|
+
getParamAsNumber(param: string): number;
|
|
45
|
+
type: Type;
|
|
46
|
+
stringifiedUrlSegments: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function createEmptyRouteTree(type: Type): RouteTree;
|
|
49
|
+
export declare function serializeRouteSegmentTree(tree: RouteTree): string;
|
|
50
|
+
export declare function equalUrlSegments(a: UrlSegment[], b: UrlSegment[]): boolean;
|
|
51
|
+
export declare function routeSegmentComponentFactory(a: RouteSegment): ComponentFactory<any>;
|
package/src/segments.js
ADDED
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __extends = (this && this.__extends) || function (d, b) {
|
|
3
|
+
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
|
4
|
+
function __() { this.constructor = d; }
|
|
5
|
+
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
6
|
+
};
|
|
7
|
+
var constants_1 = require('./constants');
|
|
8
|
+
var collection_1 = require('./facade/collection');
|
|
9
|
+
var lang_1 = require('./facade/lang');
|
|
10
|
+
var Tree = (function () {
|
|
11
|
+
function Tree(root) {
|
|
12
|
+
this._root = root;
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(Tree.prototype, "root", {
|
|
15
|
+
get: function () { return this._root.value; },
|
|
16
|
+
enumerable: true,
|
|
17
|
+
configurable: true
|
|
18
|
+
});
|
|
19
|
+
Tree.prototype.parent = function (t) {
|
|
20
|
+
var p = this.pathFromRoot(t);
|
|
21
|
+
return p.length > 1 ? p[p.length - 2] : null;
|
|
22
|
+
};
|
|
23
|
+
Tree.prototype.children = function (t) {
|
|
24
|
+
var n = _findNode(t, this._root);
|
|
25
|
+
return lang_1.isPresent(n) ? n.children.map(function (t) { return t.value; }) : null;
|
|
26
|
+
};
|
|
27
|
+
Tree.prototype.firstChild = function (t) {
|
|
28
|
+
var n = _findNode(t, this._root);
|
|
29
|
+
return lang_1.isPresent(n) && n.children.length > 0 ? n.children[0].value : null;
|
|
30
|
+
};
|
|
31
|
+
Tree.prototype.pathFromRoot = function (t) { return _findPath(t, this._root, []).map(function (s) { return s.value; }); };
|
|
32
|
+
Tree.prototype.contains = function (tree) { return _contains(this._root, tree._root); };
|
|
33
|
+
return Tree;
|
|
34
|
+
}());
|
|
35
|
+
exports.Tree = Tree;
|
|
36
|
+
var UrlTree = (function (_super) {
|
|
37
|
+
__extends(UrlTree, _super);
|
|
38
|
+
function UrlTree(root) {
|
|
39
|
+
_super.call(this, root);
|
|
40
|
+
}
|
|
41
|
+
return UrlTree;
|
|
42
|
+
}(Tree));
|
|
43
|
+
exports.UrlTree = UrlTree;
|
|
44
|
+
var RouteTree = (function (_super) {
|
|
45
|
+
__extends(RouteTree, _super);
|
|
46
|
+
function RouteTree(root) {
|
|
47
|
+
_super.call(this, root);
|
|
48
|
+
}
|
|
49
|
+
return RouteTree;
|
|
50
|
+
}(Tree));
|
|
51
|
+
exports.RouteTree = RouteTree;
|
|
52
|
+
function rootNode(tree) {
|
|
53
|
+
return tree._root;
|
|
54
|
+
}
|
|
55
|
+
exports.rootNode = rootNode;
|
|
56
|
+
function _findNode(expected, c) {
|
|
57
|
+
if (expected === c.value)
|
|
58
|
+
return c;
|
|
59
|
+
for (var _i = 0, _a = c.children; _i < _a.length; _i++) {
|
|
60
|
+
var cc = _a[_i];
|
|
61
|
+
var r = _findNode(expected, cc);
|
|
62
|
+
if (lang_1.isPresent(r))
|
|
63
|
+
return r;
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
function _findPath(expected, c, collected) {
|
|
68
|
+
collected.push(c);
|
|
69
|
+
if (expected === c.value)
|
|
70
|
+
return collected;
|
|
71
|
+
for (var _i = 0, _a = c.children; _i < _a.length; _i++) {
|
|
72
|
+
var cc = _a[_i];
|
|
73
|
+
var r = _findPath(expected, cc, collection_1.ListWrapper.clone(collected));
|
|
74
|
+
if (lang_1.isPresent(r))
|
|
75
|
+
return r;
|
|
76
|
+
}
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
function _contains(tree, subtree) {
|
|
80
|
+
if (tree.value !== subtree.value)
|
|
81
|
+
return false;
|
|
82
|
+
var _loop_1 = function(subtreeNode) {
|
|
83
|
+
var s = tree.children.filter(function (child) { return child.value === subtreeNode.value; });
|
|
84
|
+
if (s.length === 0)
|
|
85
|
+
return { value: false };
|
|
86
|
+
if (!_contains(s[0], subtreeNode))
|
|
87
|
+
return { value: false };
|
|
88
|
+
};
|
|
89
|
+
for (var _i = 0, _a = subtree.children; _i < _a.length; _i++) {
|
|
90
|
+
var subtreeNode = _a[_i];
|
|
91
|
+
var state_1 = _loop_1(subtreeNode);
|
|
92
|
+
if (typeof state_1 === "object") return state_1.value;
|
|
93
|
+
}
|
|
94
|
+
return true;
|
|
95
|
+
}
|
|
96
|
+
var TreeNode = (function () {
|
|
97
|
+
function TreeNode(value, children) {
|
|
98
|
+
this.value = value;
|
|
99
|
+
this.children = children;
|
|
100
|
+
}
|
|
101
|
+
return TreeNode;
|
|
102
|
+
}());
|
|
103
|
+
exports.TreeNode = TreeNode;
|
|
104
|
+
var UrlSegment = (function () {
|
|
105
|
+
function UrlSegment(segment, parameters, outlet) {
|
|
106
|
+
this.segment = segment;
|
|
107
|
+
this.parameters = parameters;
|
|
108
|
+
this.outlet = outlet;
|
|
109
|
+
}
|
|
110
|
+
UrlSegment.prototype.toString = function () {
|
|
111
|
+
var outletPrefix = lang_1.isBlank(this.outlet) ? '' : this.outlet + ":";
|
|
112
|
+
return "" + outletPrefix + this.segment + _serializeParams(this.parameters);
|
|
113
|
+
};
|
|
114
|
+
return UrlSegment;
|
|
115
|
+
}());
|
|
116
|
+
exports.UrlSegment = UrlSegment;
|
|
117
|
+
function _serializeParams(params) {
|
|
118
|
+
var res = '';
|
|
119
|
+
collection_1.StringMapWrapper.forEach(params, function (v /** TODO #9100 */, k /** TODO #9100 */) { return res += ";" + k + "=" + v; });
|
|
120
|
+
return res;
|
|
121
|
+
}
|
|
122
|
+
var RouteSegment = (function () {
|
|
123
|
+
function RouteSegment(urlSegments, parameters, outlet, type, componentFactory) {
|
|
124
|
+
this.urlSegments = urlSegments;
|
|
125
|
+
this.parameters = parameters;
|
|
126
|
+
this.outlet = outlet;
|
|
127
|
+
this._type = type;
|
|
128
|
+
this._componentFactory = componentFactory;
|
|
129
|
+
}
|
|
130
|
+
RouteSegment.prototype.getParam = function (param) {
|
|
131
|
+
return lang_1.isPresent(this.parameters) ? this.parameters[param] : null;
|
|
132
|
+
};
|
|
133
|
+
RouteSegment.prototype.getParamAsNumber = function (param) {
|
|
134
|
+
return lang_1.isPresent(this.parameters) ? lang_1.NumberWrapper.parseFloat(this.parameters[param]) : null;
|
|
135
|
+
};
|
|
136
|
+
Object.defineProperty(RouteSegment.prototype, "type", {
|
|
137
|
+
get: function () { return this._type; },
|
|
138
|
+
enumerable: true,
|
|
139
|
+
configurable: true
|
|
140
|
+
});
|
|
141
|
+
Object.defineProperty(RouteSegment.prototype, "stringifiedUrlSegments", {
|
|
142
|
+
get: function () { return this.urlSegments.map(function (s) { return s.toString(); }).join('/'); },
|
|
143
|
+
enumerable: true,
|
|
144
|
+
configurable: true
|
|
145
|
+
});
|
|
146
|
+
return RouteSegment;
|
|
147
|
+
}());
|
|
148
|
+
exports.RouteSegment = RouteSegment;
|
|
149
|
+
function createEmptyRouteTree(type) {
|
|
150
|
+
var root = new RouteSegment([new UrlSegment('', {}, null)], {}, constants_1.DEFAULT_OUTLET_NAME, type, null);
|
|
151
|
+
return new RouteTree(new TreeNode(root, []));
|
|
152
|
+
}
|
|
153
|
+
exports.createEmptyRouteTree = createEmptyRouteTree;
|
|
154
|
+
function serializeRouteSegmentTree(tree) {
|
|
155
|
+
return _serializeRouteSegmentTree(tree._root);
|
|
156
|
+
}
|
|
157
|
+
exports.serializeRouteSegmentTree = serializeRouteSegmentTree;
|
|
158
|
+
function _serializeRouteSegmentTree(node) {
|
|
159
|
+
var v = node.value;
|
|
160
|
+
var children = node.children.map(function (c) { return _serializeRouteSegmentTree(c); }).join(', ');
|
|
161
|
+
return v.outlet + ":" + v.stringifiedUrlSegments + "(" + lang_1.stringify(v.type) + ") [" + children + "]";
|
|
162
|
+
}
|
|
163
|
+
function equalUrlSegments(a, b) {
|
|
164
|
+
if (a.length !== b.length)
|
|
165
|
+
return false;
|
|
166
|
+
for (var i = 0; i < a.length; ++i) {
|
|
167
|
+
if (a[i].segment != b[i].segment)
|
|
168
|
+
return false;
|
|
169
|
+
if (a[i].outlet != b[i].outlet)
|
|
170
|
+
return false;
|
|
171
|
+
if (!collection_1.StringMapWrapper.equals(a[i].parameters, b[i].parameters))
|
|
172
|
+
return false;
|
|
173
|
+
}
|
|
174
|
+
return true;
|
|
175
|
+
}
|
|
176
|
+
exports.equalUrlSegments = equalUrlSegments;
|
|
177
|
+
function routeSegmentComponentFactory(a) {
|
|
178
|
+
return a._componentFactory;
|
|
179
|
+
}
|
|
180
|
+
exports.routeSegmentComponentFactory = routeSegmentComponentFactory;
|
|
181
|
+
//# sourceMappingURL=segments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"segments.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/segments.ts"],"names":[],"mappings":"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","sourcesContent":["import {ComponentFactory, Type} from '@angular/core';\n\nimport {DEFAULT_OUTLET_NAME} from './constants';\nimport {ListWrapper, StringMapWrapper} from './facade/collection';\nimport {NumberWrapper, isBlank, isPresent, stringify} from './facade/lang';\n\nexport class Tree<T> {\n /** @internal */\n _root: TreeNode<T>;\n\n constructor(root: TreeNode<T>) { this._root = root; }\n\n get root(): T { return this._root.value; }\n\n parent(t: T): T {\n let p = this.pathFromRoot(t);\n return p.length > 1 ? p[p.length - 2] : null;\n }\n\n children(t: T): T[] {\n let n = _findNode(t, this._root);\n return isPresent(n) ? n.children.map(t => t.value) : null;\n }\n\n firstChild(t: T): T {\n let n = _findNode(t, this._root);\n return isPresent(n) && n.children.length > 0 ? n.children[0].value : null;\n }\n\n pathFromRoot(t: T): T[] { return _findPath(t, this._root, []).map(s => s.value); }\n\n contains(tree: Tree<T>): boolean { return _contains(this._root, tree._root); }\n}\n\nexport class UrlTree extends Tree<UrlSegment> {\n constructor(root: TreeNode<UrlSegment>) { super(root); }\n}\n\nexport class RouteTree extends Tree<RouteSegment> {\n constructor(root: TreeNode<RouteSegment>) { super(root); }\n}\n\nexport function rootNode<T>(tree: Tree<T>): TreeNode<T> {\n return tree._root;\n}\n\nfunction _findNode<T>(expected: T, c: TreeNode<T>): TreeNode<T> {\n if (expected === c.value) return c;\n for (let cc of c.children) {\n let r = _findNode(expected, cc);\n if (isPresent(r)) return r;\n }\n return null;\n}\n\nfunction _findPath<T>(expected: T, c: TreeNode<T>, collected: TreeNode<T>[]): TreeNode<T>[] {\n collected.push(c);\n if (expected === c.value) return collected;\n\n for (let cc of c.children) {\n let r = _findPath(expected, cc, ListWrapper.clone(collected));\n if (isPresent(r)) return r;\n }\n\n return null;\n}\n\nfunction _contains<T>(tree: TreeNode<T>, subtree: TreeNode<T>): boolean {\n if (tree.value !== subtree.value) return false;\n\n for (let subtreeNode of subtree.children) {\n let s = tree.children.filter(child => child.value === subtreeNode.value);\n if (s.length === 0) return false;\n if (!_contains(s[0], subtreeNode)) return false;\n }\n\n return true;\n}\n\nexport class TreeNode<T> {\n constructor(public value: T, public children: TreeNode<T>[]) {}\n}\n\nexport class UrlSegment {\n constructor(\n public segment: any, public parameters: {[key: string]: string}, public outlet: string) {}\n\n toString(): string {\n let outletPrefix = isBlank(this.outlet) ? '' : `${this.outlet}:`;\n return `${outletPrefix}${this.segment}${_serializeParams(this.parameters)}`;\n }\n}\n\nfunction _serializeParams(params: {[key: string]: string}): string {\n let res = '';\n StringMapWrapper.forEach(\n params, (v: any /** TODO #9100 */, k: any /** TODO #9100 */) => res += `;${k}=${v}`);\n return res;\n}\n\nexport class RouteSegment {\n /** @internal */\n _type: Type;\n\n /** @internal */\n _componentFactory: ComponentFactory<any>;\n\n constructor(\n public urlSegments: UrlSegment[], public parameters: {[key: string]: string},\n public outlet: string, type: Type, componentFactory: ComponentFactory<any>) {\n this._type = type;\n this._componentFactory = componentFactory;\n }\n\n getParam(param: string): string {\n return isPresent(this.parameters) ? this.parameters[param] : null;\n }\n\n getParamAsNumber(param: string): number {\n return isPresent(this.parameters) ? NumberWrapper.parseFloat(this.parameters[param]) : null;\n }\n\n get type(): Type { return this._type; }\n\n get stringifiedUrlSegments(): string { return this.urlSegments.map(s => s.toString()).join('/'); }\n}\n\nexport function createEmptyRouteTree(type: Type): RouteTree {\n let root = new RouteSegment([new UrlSegment('', {}, null)], {}, DEFAULT_OUTLET_NAME, type, null);\n return new RouteTree(new TreeNode<RouteSegment>(root, []));\n}\n\nexport function serializeRouteSegmentTree(tree: RouteTree): string {\n return _serializeRouteSegmentTree(tree._root);\n}\n\nfunction _serializeRouteSegmentTree(node: TreeNode<RouteSegment>): string {\n let v = node.value;\n let children = node.children.map(c => _serializeRouteSegmentTree(c)).join(', ');\n return `${v.outlet}:${v.stringifiedUrlSegments}(${stringify(v.type)}) [${children}]`;\n}\n\nexport function equalUrlSegments(a: UrlSegment[], b: UrlSegment[]): boolean {\n if (a.length !== b.length) return false;\n\n for (let i = 0; i < a.length; ++i) {\n if (a[i].segment != b[i].segment) return false;\n if (a[i].outlet != b[i].outlet) return false;\n if (!StringMapWrapper.equals(a[i].parameters, b[i].parameters)) return false;\n }\n\n return true;\n}\n\nexport function routeSegmentComponentFactory(a: RouteSegment): ComponentFactory<any> {\n return a._componentFactory;\n}\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"__symbolic":"module","version":1,"metadata":{"rootNode":{"__symbolic":"function","parameters":["tree"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"tree"},"member":"_root"}},"serializeRouteSegmentTree":{"__symbolic":"function","parameters":["tree"],"value":{"__symbolic":"call","expression":{"__symbolic":"reference","name":"_serializeRouteSegmentTree"},"arguments":[{"__symbolic":"select","expression":{"__symbolic":"reference","name":"tree"},"member":"_root"}]}},"routeSegmentComponentFactory":{"__symbolic":"function","parameters":["a"],"value":{"__symbolic":"select","expression":{"__symbolic":"reference","name":"a"},"member":"_componentFactory"}}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const ROUTER_FAKE_PROVIDERS: any[];
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var common_1 = require('@angular/common');
|
|
3
|
+
var testing_1 = require('@angular/common/testing');
|
|
4
|
+
var core_1 = require('@angular/core');
|
|
5
|
+
var router_1 = require('../src/router');
|
|
6
|
+
var router_url_serializer_1 = require('../src/router_url_serializer');
|
|
7
|
+
var segments_1 = require('../src/segments');
|
|
8
|
+
var FakeAppRootCmp = (function () {
|
|
9
|
+
function FakeAppRootCmp() {
|
|
10
|
+
}
|
|
11
|
+
/** @nocollapse */
|
|
12
|
+
FakeAppRootCmp.decorators = [
|
|
13
|
+
{ type: core_1.Component, args: [{ selector: 'fake-app-root-comp', template: "<span></span>" },] },
|
|
14
|
+
];
|
|
15
|
+
return FakeAppRootCmp;
|
|
16
|
+
}());
|
|
17
|
+
function routerFactory(componentResolver, urlSerializer, routerOutletMap, location) {
|
|
18
|
+
return new router_1.Router(null, FakeAppRootCmp, componentResolver, urlSerializer, routerOutletMap, location);
|
|
19
|
+
}
|
|
20
|
+
exports.ROUTER_FAKE_PROVIDERS = [
|
|
21
|
+
router_1.RouterOutletMap,
|
|
22
|
+
/* @ts2dart_Provider */ { provide: common_1.Location, useClass: testing_1.SpyLocation },
|
|
23
|
+
/* @ts2dart_Provider */ { provide: router_url_serializer_1.RouterUrlSerializer, useClass: router_url_serializer_1.DefaultRouterUrlSerializer },
|
|
24
|
+
/* @ts2dart_Provider */ {
|
|
25
|
+
provide: router_1.Router,
|
|
26
|
+
useFactory: routerFactory,
|
|
27
|
+
deps: /*@ts2dart_const*/ [core_1.ComponentResolver, router_url_serializer_1.RouterUrlSerializer, router_1.RouterOutletMap, common_1.Location]
|
|
28
|
+
},
|
|
29
|
+
/*@ts2dart_Provider*/ {
|
|
30
|
+
provide: segments_1.RouteSegment,
|
|
31
|
+
useFactory: function (r /** TODO #9100 */) { return r.routeTree.root; },
|
|
32
|
+
deps: [router_1.Router]
|
|
33
|
+
}
|
|
34
|
+
];
|
|
35
|
+
//# sourceMappingURL=router_testing_providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router_testing_providers.js","sourceRoot":"","sources":["../../../../modules/@angular/router/testing/router_testing_providers.ts"],"names":[],"mappings":";AAAA,uBAAuB,iBAAiB,CAAC,CAAA;AACzC,wBAA0B,yBAAyB,CAAC,CAAA;AACpD,qBAA2C,eAAe,CAAC,CAAA;AAE3D,uBAAsC,eAAe,CAAC,CAAA;AACtD,sCAA8D,8BAA8B,CAAC,CAAA;AAC7F,yBAA2B,iBAAiB,CAAC,CAAA;AAC7C;IAAA;IAKA,CAAC;IAJD,kBAAkB;IACX,yBAAU,GAA0B;QAC3C,EAAE,IAAI,EAAE,gBAAS,EAAE,IAAI,EAAE,CAAC,EAAC,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAC,EAAG,EAAE;KACzF,CAAC;IACF,qBAAC;AAAD,CAAC,AALD,IAKC;AAED,uBACI,iBAAoC,EAAE,aAAkC,EACxE,eAAgC,EAAE,QAAkB;IACtD,MAAM,CAAC,IAAI,eAAM,CACb,IAAI,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AACzF,CAAC;AAEY,6BAAqB,GAA4B;IAC5D,wBAAe;IACf,uBAAuB,CAAC,EAAC,OAAO,EAAE,iBAAQ,EAAE,QAAQ,EAAE,qBAAW,EAAC;IAClE,uBAAuB,CAAC,EAAC,OAAO,EAAE,2CAAmB,EAAE,QAAQ,EAAE,kDAA0B,EAAC;IAC5F,uBAAuB,CAAC;QACtB,OAAO,EAAE,eAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,wBAAiB,EAAE,2CAAmB,EAAE,wBAAe,EAAE,iBAAQ,CAAC;KACxE;IACD,qBAAqB,CAAC;QACpB,OAAO,EAAE,uBAAY;QACrB,UAAU,EAAE,UAAC,CAAM,CAAC,iBAAiB,IAAK,OAAA,CAAC,CAAC,SAAS,CAAC,IAAI,EAAhB,CAAgB;QAC1D,IAAI,EAAE,CAAC,eAAM,CAAC;KACf;CACF,CAAC","sourcesContent":["import {Location} from '@angular/common';\nimport {SpyLocation} from '@angular/common/testing';\nimport {Component, ComponentResolver} from '@angular/core';\n\nimport {Router, RouterOutletMap} from '../src/router';\nimport {DefaultRouterUrlSerializer, RouterUrlSerializer} from '../src/router_url_serializer';\nimport {RouteSegment} from '../src/segments';\nclass FakeAppRootCmp {\n/** @nocollapse */\nstatic decorators: DecoratorInvocation[] = [\n{ type: Component, args: [{selector: 'fake-app-root-comp', template: `<span></span>`}, ] },\n];\n}\n\nfunction routerFactory(\n componentResolver: ComponentResolver, urlSerializer: RouterUrlSerializer,\n routerOutletMap: RouterOutletMap, location: Location): Router {\n return new Router(\n null, FakeAppRootCmp, componentResolver, urlSerializer, routerOutletMap, location);\n}\n\nexport const ROUTER_FAKE_PROVIDERS: any[] = /*@ts2dart_const*/[\n RouterOutletMap,\n /* @ts2dart_Provider */ {provide: Location, useClass: SpyLocation},\n /* @ts2dart_Provider */ {provide: RouterUrlSerializer, useClass: DefaultRouterUrlSerializer},\n /* @ts2dart_Provider */ {\n provide: Router,\n useFactory: routerFactory,\n deps: /*@ts2dart_const*/\n [ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location]\n },\n /*@ts2dart_Provider*/ {\n provide: RouteSegment,\n useFactory: (r: any /** TODO #9100 */) => r.routeTree.root,\n deps: [Router]\n }\n];\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"__symbolic":"module","version":1,"metadata":{"ROUTER_FAKE_PROVIDERS":{"__symbolic":"error","message":"Function call not supported","line":31,"character":15}}}
|
package/testing.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './testing/router_testing_providers';
|
package/testing.js
ADDED
package/testing.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../modules/@angular/router/testing.ts"],"names":[],"mappings":";;;;AAAA,iBAAc,oCAAoC,CAAC,EAAA","sourcesContent":["export * from './testing/router_testing_providers';\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|