@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,164 @@
|
|
|
1
|
+
import { BaseException } from '@angular/core';
|
|
2
|
+
import { RegExpWrapper, isBlank, isPresent } from './facade/lang';
|
|
3
|
+
import { TreeNode, UrlSegment, UrlTree, rootNode } from './segments';
|
|
4
|
+
/**
|
|
5
|
+
* Defines a way to serialize/deserialize a url tree.
|
|
6
|
+
*/
|
|
7
|
+
export class RouterUrlSerializer {
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* A default implementation of the serialization.
|
|
11
|
+
*/
|
|
12
|
+
export class DefaultRouterUrlSerializer extends RouterUrlSerializer {
|
|
13
|
+
parse(url) {
|
|
14
|
+
let root = new _UrlParser().parse(url);
|
|
15
|
+
return new UrlTree(root);
|
|
16
|
+
}
|
|
17
|
+
serialize(tree) { return _serializeUrlTreeNode(rootNode(tree)); }
|
|
18
|
+
}
|
|
19
|
+
function _serializeUrlTreeNode(node) {
|
|
20
|
+
return `${node.value}${_serializeChildren(node)}`;
|
|
21
|
+
}
|
|
22
|
+
function _serializeUrlTreeNodes(nodes) {
|
|
23
|
+
let main = nodes[0].value.toString();
|
|
24
|
+
let auxNodes = nodes.slice(1);
|
|
25
|
+
let aux = auxNodes.length > 0 ? `(${auxNodes.map(_serializeUrlTreeNode).join("//")})` : '';
|
|
26
|
+
let children = _serializeChildren(nodes[0]);
|
|
27
|
+
return `${main}${aux}${children}`;
|
|
28
|
+
}
|
|
29
|
+
function _serializeChildren(node) {
|
|
30
|
+
if (node.children.length > 0) {
|
|
31
|
+
return `/${_serializeUrlTreeNodes(node.children)}`;
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
return '';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
var SEGMENT_RE = RegExpWrapper.create('^[^\\/\\(\\)\\?;=&#]+');
|
|
38
|
+
function matchUrlSegment(str) {
|
|
39
|
+
var match = RegExpWrapper.firstMatch(SEGMENT_RE, str);
|
|
40
|
+
return isPresent(match) ? match[0] : '';
|
|
41
|
+
}
|
|
42
|
+
var QUERY_PARAM_VALUE_RE = RegExpWrapper.create('^[^\\(\\)\\?;&#]+');
|
|
43
|
+
function matchUrlQueryParamValue(str) {
|
|
44
|
+
var match = RegExpWrapper.firstMatch(QUERY_PARAM_VALUE_RE, str);
|
|
45
|
+
return isPresent(match) ? match[0] : '';
|
|
46
|
+
}
|
|
47
|
+
class _UrlParser {
|
|
48
|
+
peekStartsWith(str) { return this._remaining.startsWith(str); }
|
|
49
|
+
capture(str) {
|
|
50
|
+
if (!this._remaining.startsWith(str)) {
|
|
51
|
+
throw new BaseException(`Expected "${str}".`);
|
|
52
|
+
}
|
|
53
|
+
this._remaining = this._remaining.substring(str.length);
|
|
54
|
+
}
|
|
55
|
+
parse(url) {
|
|
56
|
+
this._remaining = url;
|
|
57
|
+
if (url == '' || url == '/') {
|
|
58
|
+
return new TreeNode(new UrlSegment('', {}, null), []);
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
return this.parseRoot();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
parseRoot() {
|
|
65
|
+
let segments = this.parseSegments();
|
|
66
|
+
return new TreeNode(new UrlSegment('', {}, null), segments);
|
|
67
|
+
}
|
|
68
|
+
parseSegments(outletName = null) {
|
|
69
|
+
if (this._remaining.length == 0) {
|
|
70
|
+
return [];
|
|
71
|
+
}
|
|
72
|
+
if (this.peekStartsWith('/')) {
|
|
73
|
+
this.capture('/');
|
|
74
|
+
}
|
|
75
|
+
var path = matchUrlSegment(this._remaining);
|
|
76
|
+
this.capture(path);
|
|
77
|
+
if (path.indexOf(':') > -1) {
|
|
78
|
+
let parts = path.split(':');
|
|
79
|
+
outletName = parts[0];
|
|
80
|
+
path = parts[1];
|
|
81
|
+
}
|
|
82
|
+
var matrixParams = {};
|
|
83
|
+
if (this.peekStartsWith(';')) {
|
|
84
|
+
matrixParams = this.parseMatrixParams();
|
|
85
|
+
}
|
|
86
|
+
var aux = [];
|
|
87
|
+
if (this.peekStartsWith('(')) {
|
|
88
|
+
aux = this.parseAuxiliaryRoutes();
|
|
89
|
+
}
|
|
90
|
+
var children = [];
|
|
91
|
+
if (this.peekStartsWith('/') && !this.peekStartsWith('//')) {
|
|
92
|
+
this.capture('/');
|
|
93
|
+
children = this.parseSegments();
|
|
94
|
+
}
|
|
95
|
+
let segment = new UrlSegment(path, matrixParams, outletName);
|
|
96
|
+
let node = new TreeNode(segment, children);
|
|
97
|
+
return [node].concat(aux);
|
|
98
|
+
}
|
|
99
|
+
parseQueryParams() {
|
|
100
|
+
var params = {};
|
|
101
|
+
this.capture('?');
|
|
102
|
+
this.parseQueryParam(params);
|
|
103
|
+
while (this._remaining.length > 0 && this.peekStartsWith('&')) {
|
|
104
|
+
this.capture('&');
|
|
105
|
+
this.parseQueryParam(params);
|
|
106
|
+
}
|
|
107
|
+
return params;
|
|
108
|
+
}
|
|
109
|
+
parseMatrixParams() {
|
|
110
|
+
var params = {};
|
|
111
|
+
while (this._remaining.length > 0 && this.peekStartsWith(';')) {
|
|
112
|
+
this.capture(';');
|
|
113
|
+
this.parseParam(params);
|
|
114
|
+
}
|
|
115
|
+
return params;
|
|
116
|
+
}
|
|
117
|
+
parseParam(params) {
|
|
118
|
+
var key = matchUrlSegment(this._remaining);
|
|
119
|
+
if (isBlank(key)) {
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
this.capture(key);
|
|
123
|
+
var value = 'true';
|
|
124
|
+
if (this.peekStartsWith('=')) {
|
|
125
|
+
this.capture('=');
|
|
126
|
+
var valueMatch = matchUrlSegment(this._remaining);
|
|
127
|
+
if (isPresent(valueMatch)) {
|
|
128
|
+
value = valueMatch;
|
|
129
|
+
this.capture(value);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
params[key] = value;
|
|
133
|
+
}
|
|
134
|
+
parseQueryParam(params) {
|
|
135
|
+
var key = matchUrlSegment(this._remaining);
|
|
136
|
+
if (isBlank(key)) {
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
this.capture(key);
|
|
140
|
+
var value = 'true';
|
|
141
|
+
if (this.peekStartsWith('=')) {
|
|
142
|
+
this.capture('=');
|
|
143
|
+
var valueMatch = matchUrlQueryParamValue(this._remaining);
|
|
144
|
+
if (isPresent(valueMatch)) {
|
|
145
|
+
value = valueMatch;
|
|
146
|
+
this.capture(value);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
params[key] = value;
|
|
150
|
+
}
|
|
151
|
+
parseAuxiliaryRoutes() {
|
|
152
|
+
var segments = [];
|
|
153
|
+
this.capture('(');
|
|
154
|
+
while (!this.peekStartsWith(')') && this._remaining.length > 0) {
|
|
155
|
+
segments = segments.concat(this.parseSegments('aux'));
|
|
156
|
+
if (this.peekStartsWith('//')) {
|
|
157
|
+
this.capture('//');
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
this.capture(')');
|
|
161
|
+
return segments;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
//# 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
|
+
readonly 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
|
+
readonly type: Type;
|
|
46
|
+
readonly 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>;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { DEFAULT_OUTLET_NAME } from './constants';
|
|
2
|
+
import { ListWrapper, StringMapWrapper } from './facade/collection';
|
|
3
|
+
import { NumberWrapper, isBlank, isPresent, stringify } from './facade/lang';
|
|
4
|
+
export class Tree {
|
|
5
|
+
constructor(root) {
|
|
6
|
+
this._root = root;
|
|
7
|
+
}
|
|
8
|
+
get root() { return this._root.value; }
|
|
9
|
+
parent(t) {
|
|
10
|
+
let p = this.pathFromRoot(t);
|
|
11
|
+
return p.length > 1 ? p[p.length - 2] : null;
|
|
12
|
+
}
|
|
13
|
+
children(t) {
|
|
14
|
+
let n = _findNode(t, this._root);
|
|
15
|
+
return isPresent(n) ? n.children.map(t => t.value) : null;
|
|
16
|
+
}
|
|
17
|
+
firstChild(t) {
|
|
18
|
+
let n = _findNode(t, this._root);
|
|
19
|
+
return isPresent(n) && n.children.length > 0 ? n.children[0].value : null;
|
|
20
|
+
}
|
|
21
|
+
pathFromRoot(t) { return _findPath(t, this._root, []).map(s => s.value); }
|
|
22
|
+
contains(tree) { return _contains(this._root, tree._root); }
|
|
23
|
+
}
|
|
24
|
+
export class UrlTree extends Tree {
|
|
25
|
+
constructor(root) {
|
|
26
|
+
super(root);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export class RouteTree extends Tree {
|
|
30
|
+
constructor(root) {
|
|
31
|
+
super(root);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export function rootNode(tree) {
|
|
35
|
+
return tree._root;
|
|
36
|
+
}
|
|
37
|
+
function _findNode(expected, c) {
|
|
38
|
+
if (expected === c.value)
|
|
39
|
+
return c;
|
|
40
|
+
for (let cc of c.children) {
|
|
41
|
+
let r = _findNode(expected, cc);
|
|
42
|
+
if (isPresent(r))
|
|
43
|
+
return r;
|
|
44
|
+
}
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
function _findPath(expected, c, collected) {
|
|
48
|
+
collected.push(c);
|
|
49
|
+
if (expected === c.value)
|
|
50
|
+
return collected;
|
|
51
|
+
for (let cc of c.children) {
|
|
52
|
+
let r = _findPath(expected, cc, ListWrapper.clone(collected));
|
|
53
|
+
if (isPresent(r))
|
|
54
|
+
return r;
|
|
55
|
+
}
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
function _contains(tree, subtree) {
|
|
59
|
+
if (tree.value !== subtree.value)
|
|
60
|
+
return false;
|
|
61
|
+
for (let subtreeNode of subtree.children) {
|
|
62
|
+
let s = tree.children.filter(child => child.value === subtreeNode.value);
|
|
63
|
+
if (s.length === 0)
|
|
64
|
+
return false;
|
|
65
|
+
if (!_contains(s[0], subtreeNode))
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
export class TreeNode {
|
|
71
|
+
constructor(value, children) {
|
|
72
|
+
this.value = value;
|
|
73
|
+
this.children = children;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export class UrlSegment {
|
|
77
|
+
constructor(segment, parameters, outlet) {
|
|
78
|
+
this.segment = segment;
|
|
79
|
+
this.parameters = parameters;
|
|
80
|
+
this.outlet = outlet;
|
|
81
|
+
}
|
|
82
|
+
toString() {
|
|
83
|
+
let outletPrefix = isBlank(this.outlet) ? '' : `${this.outlet}:`;
|
|
84
|
+
return `${outletPrefix}${this.segment}${_serializeParams(this.parameters)}`;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
function _serializeParams(params) {
|
|
88
|
+
let res = '';
|
|
89
|
+
StringMapWrapper.forEach(params, (v /** TODO #9100 */, k /** TODO #9100 */) => res += `;${k}=${v}`);
|
|
90
|
+
return res;
|
|
91
|
+
}
|
|
92
|
+
export class RouteSegment {
|
|
93
|
+
constructor(urlSegments, parameters, outlet, type, componentFactory) {
|
|
94
|
+
this.urlSegments = urlSegments;
|
|
95
|
+
this.parameters = parameters;
|
|
96
|
+
this.outlet = outlet;
|
|
97
|
+
this._type = type;
|
|
98
|
+
this._componentFactory = componentFactory;
|
|
99
|
+
}
|
|
100
|
+
getParam(param) {
|
|
101
|
+
return isPresent(this.parameters) ? this.parameters[param] : null;
|
|
102
|
+
}
|
|
103
|
+
getParamAsNumber(param) {
|
|
104
|
+
return isPresent(this.parameters) ? NumberWrapper.parseFloat(this.parameters[param]) : null;
|
|
105
|
+
}
|
|
106
|
+
get type() { return this._type; }
|
|
107
|
+
get stringifiedUrlSegments() { return this.urlSegments.map(s => s.toString()).join('/'); }
|
|
108
|
+
}
|
|
109
|
+
export function createEmptyRouteTree(type) {
|
|
110
|
+
let root = new RouteSegment([new UrlSegment('', {}, null)], {}, DEFAULT_OUTLET_NAME, type, null);
|
|
111
|
+
return new RouteTree(new TreeNode(root, []));
|
|
112
|
+
}
|
|
113
|
+
export function serializeRouteSegmentTree(tree) {
|
|
114
|
+
return _serializeRouteSegmentTree(tree._root);
|
|
115
|
+
}
|
|
116
|
+
function _serializeRouteSegmentTree(node) {
|
|
117
|
+
let v = node.value;
|
|
118
|
+
let children = node.children.map(c => _serializeRouteSegmentTree(c)).join(', ');
|
|
119
|
+
return `${v.outlet}:${v.stringifiedUrlSegments}(${stringify(v.type)}) [${children}]`;
|
|
120
|
+
}
|
|
121
|
+
export function equalUrlSegments(a, b) {
|
|
122
|
+
if (a.length !== b.length)
|
|
123
|
+
return false;
|
|
124
|
+
for (let i = 0; i < a.length; ++i) {
|
|
125
|
+
if (a[i].segment != b[i].segment)
|
|
126
|
+
return false;
|
|
127
|
+
if (a[i].outlet != b[i].outlet)
|
|
128
|
+
return false;
|
|
129
|
+
if (!StringMapWrapper.equals(a[i].parameters, b[i].parameters))
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
export function routeSegmentComponentFactory(a) {
|
|
135
|
+
return a._componentFactory;
|
|
136
|
+
}
|
|
137
|
+
//# 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,31 @@
|
|
|
1
|
+
import { Location } from '@angular/common';
|
|
2
|
+
import { SpyLocation } from '@angular/common/testing';
|
|
3
|
+
import { Component, ComponentResolver } from '@angular/core';
|
|
4
|
+
import { Router, RouterOutletMap } from '../src/router';
|
|
5
|
+
import { DefaultRouterUrlSerializer, RouterUrlSerializer } from '../src/router_url_serializer';
|
|
6
|
+
import { RouteSegment } from '../src/segments';
|
|
7
|
+
class FakeAppRootCmp {
|
|
8
|
+
}
|
|
9
|
+
/** @nocollapse */
|
|
10
|
+
FakeAppRootCmp.decorators = [
|
|
11
|
+
{ type: Component, args: [{ selector: 'fake-app-root-comp', template: `<span></span>` },] },
|
|
12
|
+
];
|
|
13
|
+
function routerFactory(componentResolver, urlSerializer, routerOutletMap, location) {
|
|
14
|
+
return new Router(null, FakeAppRootCmp, componentResolver, urlSerializer, routerOutletMap, location);
|
|
15
|
+
}
|
|
16
|
+
export const ROUTER_FAKE_PROVIDERS = [
|
|
17
|
+
RouterOutletMap,
|
|
18
|
+
/* @ts2dart_Provider */ { provide: Location, useClass: SpyLocation },
|
|
19
|
+
/* @ts2dart_Provider */ { provide: RouterUrlSerializer, useClass: DefaultRouterUrlSerializer },
|
|
20
|
+
/* @ts2dart_Provider */ {
|
|
21
|
+
provide: Router,
|
|
22
|
+
useFactory: routerFactory,
|
|
23
|
+
deps: /*@ts2dart_const*/ [ComponentResolver, RouterUrlSerializer, RouterOutletMap, Location]
|
|
24
|
+
},
|
|
25
|
+
/*@ts2dart_Provider*/ {
|
|
26
|
+
provide: RouteSegment,
|
|
27
|
+
useFactory: (r /** TODO #9100 */) => r.routeTree.root,
|
|
28
|
+
deps: [Router]
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
//# 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":"OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB;OACjC,EAAC,WAAW,EAAC,MAAM,yBAAyB;OAC5C,EAAC,SAAS,EAAE,iBAAiB,EAAC,MAAM,eAAe;OAEnD,EAAC,MAAM,EAAE,eAAe,EAAC,MAAM,eAAe;OAC9C,EAAC,0BAA0B,EAAE,mBAAmB,EAAC,MAAM,8BAA8B;OACrF,EAAC,YAAY,EAAC,MAAM,iBAAiB;AAC5C;AAKA,CAAC;AAJD,kBAAkB;AACX,yBAAU,GAA0B;IAC3C,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAC,QAAQ,EAAE,oBAAoB,EAAE,QAAQ,EAAE,eAAe,EAAC,EAAG,EAAE;CACzF,CACA;AAED,uBACI,iBAAoC,EAAE,aAAkC,EACxE,eAAgC,EAAE,QAAkB;IACtD,MAAM,CAAC,IAAI,MAAM,CACb,IAAI,EAAE,cAAc,EAAE,iBAAiB,EAAE,aAAa,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;AACzF,CAAC;AAED,OAAO,MAAM,qBAAqB,GAA4B;IAC5D,eAAe;IACf,uBAAuB,CAAC,EAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAC;IAClE,uBAAuB,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAE,QAAQ,EAAE,0BAA0B,EAAC;IAC5F,uBAAuB,CAAC;QACtB,OAAO,EAAE,MAAM;QACf,UAAU,EAAE,aAAa;QACzB,IAAI,EAAE,kBAAkB,CACpB,CAAC,iBAAiB,EAAE,mBAAmB,EAAE,eAAe,EAAE,QAAQ,CAAC;KACxE;IACD,qBAAqB,CAAC;QACpB,OAAO,EAAE,YAAY;QACrB,UAAU,EAAE,CAAC,CAAM,CAAC,iBAAiB,KAAK,CAAC,CAAC,SAAS,CAAC,IAAI;QAC1D,IAAI,EAAE,CAAC,MAAM,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/esm/testing.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './testing/router_testing_providers';
|
package/esm/testing.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.js","sourceRoot":"","sources":["../../../../modules/@angular/router/testing.ts"],"names":[],"mappings":"AAAA,cAAc,oCAAoC,CAAC","sourcesContent":["export * from './testing/router_testing_providers';\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* @description
|
|
4
|
+
* Maps application URLs into application states, to support deep-linking and navigation.
|
|
5
|
+
*/
|
|
6
|
+
export { ROUTER_DIRECTIVES } from './src/directives/router_directives';
|
|
7
|
+
export { RouterLink } from './src/directives/router_link';
|
|
8
|
+
export { RouterOutlet } from './src/directives/router_outlet';
|
|
9
|
+
export { CanDeactivate, OnActivate } from './src/interfaces';
|
|
10
|
+
export { Routes } from './src/metadata/decorators';
|
|
11
|
+
export { Route } from './src/metadata/metadata';
|
|
12
|
+
export { Router, RouterOutletMap } from './src/router';
|
|
13
|
+
export { ROUTER_PROVIDERS } from './src/router_providers';
|
|
14
|
+
export { DefaultRouterUrlSerializer, RouterUrlSerializer } from './src/router_url_serializer';
|
|
15
|
+
export { RouteSegment, RouteTree, Tree, UrlSegment, UrlTree } from './src/segments';
|
package/index.js
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module
|
|
3
|
+
* @description
|
|
4
|
+
* Maps application URLs into application states, to support deep-linking and navigation.
|
|
5
|
+
*/
|
|
6
|
+
"use strict";
|
|
7
|
+
var router_directives_1 = require('./src/directives/router_directives');
|
|
8
|
+
exports.ROUTER_DIRECTIVES = router_directives_1.ROUTER_DIRECTIVES;
|
|
9
|
+
var router_link_1 = require('./src/directives/router_link');
|
|
10
|
+
exports.RouterLink = router_link_1.RouterLink;
|
|
11
|
+
var router_outlet_1 = require('./src/directives/router_outlet');
|
|
12
|
+
exports.RouterOutlet = router_outlet_1.RouterOutlet;
|
|
13
|
+
var decorators_1 = require('./src/metadata/decorators');
|
|
14
|
+
exports.Routes = decorators_1.Routes;
|
|
15
|
+
var metadata_1 = require('./src/metadata/metadata');
|
|
16
|
+
exports.Route = metadata_1.Route;
|
|
17
|
+
var router_1 = require('./src/router');
|
|
18
|
+
exports.Router = router_1.Router;
|
|
19
|
+
exports.RouterOutletMap = router_1.RouterOutletMap;
|
|
20
|
+
var router_providers_1 = require('./src/router_providers');
|
|
21
|
+
exports.ROUTER_PROVIDERS = router_providers_1.ROUTER_PROVIDERS;
|
|
22
|
+
var router_url_serializer_1 = require('./src/router_url_serializer');
|
|
23
|
+
exports.DefaultRouterUrlSerializer = router_url_serializer_1.DefaultRouterUrlSerializer;
|
|
24
|
+
exports.RouterUrlSerializer = router_url_serializer_1.RouterUrlSerializer;
|
|
25
|
+
var segments_1 = require('./src/segments');
|
|
26
|
+
exports.RouteSegment = segments_1.RouteSegment;
|
|
27
|
+
exports.RouteTree = segments_1.RouteTree;
|
|
28
|
+
exports.Tree = segments_1.Tree;
|
|
29
|
+
exports.UrlSegment = segments_1.UrlSegment;
|
|
30
|
+
exports.UrlTree = segments_1.UrlTree;
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
package/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../modules/@angular/router/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;;AAEH,kCAAgC,oCAAoC,CAAC;AAA7D,kEAA6D;AACrE,4BAAyB,8BAA8B,CAAC;AAAhD,8CAAgD;AACxD,8BAA2B,gCAAgC,CAAC;AAApD,oDAAoD;AAE5D,2BAAqB,2BAA2B,CAAC;AAAzC,qCAAyC;AACjD,yBAAoB,yBAAyB,CAAC;AAAtC,iCAAsC;AAC9C,uBAAsC,cAAc,CAAC;AAA7C,iCAAM;AAAE,mDAAqC;AACrD,iCAA+B,wBAAwB,CAAC;AAAhD,+DAAgD;AACxD,sCAA8D,6BAA6B,CAAC;AAApF,wFAA0B;AAAE,0EAAwD;AAC5F,yBAAiE,gBAAgB,CAAC;AAA1E,+CAAY;AAAE,yCAAS;AAAE,+BAAI;AAAE,2CAAU;AAAE,qCAA+B","sourcesContent":["/**\n * @module\n * @description\n * Maps application URLs into application states, to support deep-linking and navigation.\n */\n\nexport {ROUTER_DIRECTIVES} from './src/directives/router_directives';\nexport {RouterLink} from './src/directives/router_link';\nexport {RouterOutlet} from './src/directives/router_outlet';\nexport {CanDeactivate, OnActivate} from './src/interfaces';\nexport {Routes} from './src/metadata/decorators';\nexport {Route} from './src/metadata/metadata';\nexport {Router, RouterOutletMap} from './src/router';\nexport {ROUTER_PROVIDERS} from './src/router_providers';\nexport {DefaultRouterUrlSerializer, RouterUrlSerializer} from './src/router_url_serializer';\nexport {RouteSegment, RouteTree, Tree, UrlSegment, UrlTree} from './src/segments';\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,4 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@angular/router",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "2.0.0-rc.2",
|
|
4
|
+
"description": "",
|
|
5
|
+
"main": "index.js",
|
|
6
|
+
"jsnext:main": "esm/index.js",
|
|
7
|
+
"typins": "index.d.ts",
|
|
8
|
+
"author": "angular",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"peerDependencies": {
|
|
11
|
+
"@angular/core": "^2.0.0-rc",
|
|
12
|
+
"@angular/common": "^2.0.0-rc",
|
|
13
|
+
"@angular/platform-browser": "^2.0.0-rc"
|
|
14
|
+
},
|
|
15
|
+
"repository": {
|
|
16
|
+
"type": "git",
|
|
17
|
+
"url": "https://github.com/angular/angular.git"
|
|
18
|
+
}
|
|
4
19
|
}
|
package/src/constants.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/constants.ts"],"names":[],"mappings":";AAAA;;;GAGG;AACU,2BAAmB,GAAG,WAAW,CAAC","sourcesContent":["/**\n * Name of the default outlet outlet.\n * @type {string}\n */\nexport const DEFAULT_OUTLET_NAME = '__DEFAULT';\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"__symbolic":"module","version":1,"metadata":{"DEFAULT_OUTLET_NAME":"__DEFAULT"}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core_private.js","sourceRoot":"","sources":["../../../../modules/@angular/router/src/core_private.ts"],"names":[],"mappings":";AAAA,qBAAoC,eAAe,CAAC,CAAA;AAEzC,qBAAa,GAA2B,uBAAC,CAAC,aAAa,CAAC;AACxD,iBAAS,GAAuB,uBAAC,CAAC,SAAS,CAAC","sourcesContent":["import {__core_private__ as _} from '@angular/core';\n\nexport var makeDecorator: typeof _.makeDecorator = _.makeDecorator;\nexport var reflector: typeof _.reflector = _.reflector;\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"__symbolic":"module","version":1,"metadata":{"makeDecorator":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"makeDecorator"},"reflector":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"___core_private__"},"member":"reflector"}}}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A list of directives. To use the router directives like {@link RouterOutlet} and
|
|
3
|
+
* {@link RouterLink}, add this to your `directives` array in the {@link View} decorator of your
|
|
4
|
+
* component.
|
|
5
|
+
*
|
|
6
|
+
* ```
|
|
7
|
+
* import {Component} from '@angular/core';
|
|
8
|
+
* import {ROUTER_DIRECTIVES, Routes} from '@angular/router';
|
|
9
|
+
*
|
|
10
|
+
* @Component({directives: [ROUTER_DIRECTIVES]})
|
|
11
|
+
* @Routes([
|
|
12
|
+
* {...},
|
|
13
|
+
* ])
|
|
14
|
+
* class AppCmp {
|
|
15
|
+
* // ...
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* bootstrap(AppCmp);
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
export declare const ROUTER_DIRECTIVES: any[];
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var router_link_1 = require('./router_link');
|
|
3
|
+
var router_outlet_1 = require('./router_outlet');
|
|
4
|
+
/**
|
|
5
|
+
* A list of directives. To use the router directives like {@link RouterOutlet} and
|
|
6
|
+
* {@link RouterLink}, add this to your `directives` array in the {@link View} decorator of your
|
|
7
|
+
* component.
|
|
8
|
+
*
|
|
9
|
+
* ```
|
|
10
|
+
* import {Component} from '@angular/core';
|
|
11
|
+
* import {ROUTER_DIRECTIVES, Routes} from '@angular/router';
|
|
12
|
+
*
|
|
13
|
+
* @Component({directives: [ROUTER_DIRECTIVES]})
|
|
14
|
+
* @Routes([
|
|
15
|
+
* {...},
|
|
16
|
+
* ])
|
|
17
|
+
* class AppCmp {
|
|
18
|
+
* // ...
|
|
19
|
+
* }
|
|
20
|
+
*
|
|
21
|
+
* bootstrap(AppCmp);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
exports.ROUTER_DIRECTIVES = [router_outlet_1.RouterOutlet, router_link_1.RouterLink];
|
|
25
|
+
//# sourceMappingURL=router_directives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router_directives.js","sourceRoot":"","sources":["../../../../../modules/@angular/router/src/directives/router_directives.ts"],"names":[],"mappings":";AAAA,4BAAyB,eAAe,CAAC,CAAA;AACzC,8BAA2B,iBAAiB,CAAC,CAAA;AAE7C;;;;;;;;;;;;;;;;;;;GAmBG;AAEU,yBAAiB,GAA4B,CAAC,4BAAY,EAAE,wBAAU,CAAC,CAAC","sourcesContent":["import {RouterLink} from './router_link';\nimport {RouterOutlet} from './router_outlet';\n\n/**\n * A list of directives. To use the router directives like {@link RouterOutlet} and\n * {@link RouterLink}, add this to your `directives` array in the {@link View} decorator of your\n * component.\n *\n * ```\n * import {Component} from '@angular/core';\n * import {ROUTER_DIRECTIVES, Routes} from '@angular/router';\n *\n * @Component({directives: [ROUTER_DIRECTIVES]})\n * @Routes([\n * {...},\n * ])\n * class AppCmp {\n * // ...\n * }\n *\n * bootstrap(AppCmp);\n * ```\n */\n\nexport const ROUTER_DIRECTIVES: any[] = /*@ts2dart_const*/[RouterOutlet, RouterLink];\n\ninterface DecoratorInvocation {\n type: Function;\n args?: any[];\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"__symbolic":"module","version":1,"metadata":{"ROUTER_DIRECTIVES":[{"__symbolic":"reference","module":"./router_outlet","name":"RouterOutlet"},{"__symbolic":"reference","module":"./router_link","name":"RouterLink"}]}}
|