@angular-wave/angular.ts 0.0.16 → 0.0.17

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.
Files changed (298) hide show
  1. package/README.md +5 -3
  2. package/dist/angular-ts.esm.js +1 -1
  3. package/dist/angular-ts.umd.js +1 -1
  4. package/index.html +66 -57
  5. package/package.json +1 -1
  6. package/rollup.config.js +2 -6
  7. package/src/animations/animate-children-directive.js +1 -1
  8. package/src/animations/animate-css-driver.js +1 -1
  9. package/src/animations/animate-css.js +220 -15
  10. package/src/animations/animate-js-driver.js +1 -1
  11. package/src/animations/animate-js.js +2 -2
  12. package/src/animations/animate-queue.js +3 -4
  13. package/src/animations/animation.js +1 -1
  14. package/src/animations/module.js +750 -0
  15. package/src/animations/shared.js +15 -4
  16. package/src/core/animate-runner.js +1 -1
  17. package/src/core/animate.js +4 -5
  18. package/src/core/compile.js +6 -7
  19. package/src/core/controller.js +4 -3
  20. package/src/core/filter.js +1 -1
  21. package/src/core/interpolate.js +1 -1
  22. package/src/core/interval-factory.js +1 -1
  23. package/src/core/interval.js +1 -1
  24. package/src/core/location.js +1 -1
  25. package/src/core/parser/parse.js +1 -1
  26. package/src/core/q.js +2 -3
  27. package/src/core/root-scope.js +1 -1
  28. package/src/core/sanitize-uri.js +1 -1
  29. package/src/core/sce.js +1 -1
  30. package/src/core/task-tracker-factory.js +1 -1
  31. package/src/core/timeout.js +1 -1
  32. package/src/core/urlUtils.js +1 -1
  33. package/src/directive/attrs.js +1 -1
  34. package/src/directive/bind.js +1 -1
  35. package/src/directive/class.js +2 -2
  36. package/src/directive/events.js +1 -1
  37. package/src/directive/form.js +1 -1
  38. package/src/directive/include.js +1 -1
  39. package/src/directive/input.js +1 -1
  40. package/src/directive/list.js +2 -2
  41. package/src/directive/model-options.js +1 -1
  42. package/src/directive/model.js +1 -1
  43. package/src/directive/options.js +2 -3
  44. package/src/directive/ref.js +1 -1
  45. package/src/directive/repeat.js +1 -1
  46. package/src/directive/select.js +1 -1
  47. package/src/directive/switch.js +1 -1
  48. package/src/directive/transclude.js +1 -1
  49. package/src/directive/validators.js +1 -1
  50. package/src/exts/aria.js +1 -1
  51. package/src/exts/messages.js +3 -3
  52. package/src/exts/messages.md +28 -31
  53. package/src/filters/filter.js +2 -3
  54. package/src/filters/filters.js +1 -1
  55. package/src/filters/limit-to.js +1 -1
  56. package/src/filters/order-by.js +2 -3
  57. package/src/injector.js +8 -9
  58. package/src/jqLite.js +3 -4
  59. package/src/loader.js +1 -3
  60. package/src/public.js +1 -1
  61. package/src/router/common/coreservices.js +5 -0
  62. package/src/router/{core/common → common}/queue.js +1 -1
  63. package/src/router/{core/common → common}/trace.js +21 -19
  64. package/src/router/{adapter/directives → directives}/stateDirectives.js +24 -28
  65. package/src/router/{adapter/directives → directives}/viewDirective.js +10 -9
  66. package/src/router/{core/globals.js → globals.js} +13 -3
  67. package/src/router/{core/hooks → hooks}/coreResolvables.js +6 -4
  68. package/src/router/{core/hooks → hooks}/lazyLoad.js +5 -2
  69. package/src/router/{core/hooks → hooks}/redirectTo.js +1 -1
  70. package/src/router/{core/hooks → hooks}/resolve.js +5 -4
  71. package/src/router/{core/hooks → hooks}/updateGlobals.js +1 -1
  72. package/src/router/{core/hooks → hooks}/views.js +2 -3
  73. package/src/router/index.js +60 -0
  74. package/src/router/{adapter/injectables.js → injectables.js} +9 -9
  75. package/src/router/{adapter/locationServices.js → locationServices.js} +19 -12
  76. package/src/router/{core/params → params}/param.js +5 -10
  77. package/src/router/{core/params → params}/paramType.js +4 -4
  78. package/src/router/{core/params → params}/paramTypes.js +4 -3
  79. package/src/router/{core/params → params}/stateParams.js +1 -1
  80. package/src/router/{core/path → path}/pathNode.js +2 -2
  81. package/src/router/{core/path → path}/pathUtils.js +13 -7
  82. package/src/router/{core/resolve → resolve}/resolvable.js +5 -5
  83. package/src/router/{core/resolve → resolve}/resolveContext.js +16 -6
  84. package/src/router/router.js +171 -72
  85. package/src/router/{adapter/services.js → services.js} +47 -27
  86. package/src/router/{core/state → state}/stateBuilder.js +14 -10
  87. package/src/router/{core/state → state}/stateMatcher.js +2 -3
  88. package/src/router/{core/state → state}/stateObject.js +8 -6
  89. package/src/router/{core/state → state}/stateQueueManager.js +3 -3
  90. package/src/router/{core/state → state}/stateRegistry.js +6 -7
  91. package/src/router/{core/state → state}/stateService.js +12 -15
  92. package/src/router/{core/state → state}/targetState.js +2 -2
  93. package/src/router/{adapter/statebuilders → state}/views.js +17 -15
  94. package/src/router/{adapter/stateProvider.js → stateProvider.js} +52 -9
  95. package/src/router/{adapter/templateFactory.js → templateFactory.js} +10 -19
  96. package/src/router/{core/transition → transition}/hookBuilder.js +4 -3
  97. package/src/router/{core/transition → transition}/hookRegistry.js +3 -6
  98. package/src/router/{core/transition → transition}/rejectFactory.js +4 -5
  99. package/src/router/{core/transition → transition}/transition.js +10 -12
  100. package/src/router/{core/transition → transition}/transitionHook.js +4 -4
  101. package/src/router/{core/transition → transition}/transitionService.js +13 -13
  102. package/src/router/{core/url → url}/urlConfig.js +28 -19
  103. package/src/router/{core/url → url}/urlMatcher.js +14 -16
  104. package/src/router/{core/url → url}/urlMatcherFactory.js +7 -6
  105. package/src/router/{core/url → url}/urlRouter.js +6 -30
  106. package/src/router/{core/url → url}/urlRule.js +3 -3
  107. package/src/router/{core/url → url}/urlRules.js +10 -11
  108. package/src/router/{core/url → url}/urlService.js +12 -6
  109. package/src/router/{core/view → view}/view.js +32 -27
  110. package/src/router/{adapter/viewScroll.js → viewScroll.js} +3 -0
  111. package/src/services/anchor-scroll.js +1 -1
  112. package/src/services/browser.js +1 -1
  113. package/src/services/cache-factory.js +7 -1
  114. package/src/services/cookie-reader.js +1 -1
  115. package/src/services/http-backend.js +6 -1
  116. package/src/services/http.js +4 -5
  117. package/src/services/log.js +1 -1
  118. package/src/services/template-request.js +2 -2
  119. package/src/{router/core/common → shared}/common.js +35 -16
  120. package/src/{router/core/common → shared}/predicates.js +2 -12
  121. package/src/{router/core/common → shared}/strings.js +5 -13
  122. package/src/{core → shared}/utils.js +13 -29
  123. package/test/angular.spec.js +1 -31
  124. package/test/{ng → core}/animate.spec.js +1 -1
  125. package/test/{ng → core}/compile.spec.js +2 -3
  126. package/test/{ng → core}/http.spec.js +2 -2
  127. package/test/{ng → core}/on.spec.js +1 -1
  128. package/test/{ng → core}/parse.spec.js +1 -1
  129. package/test/{ng → core}/prop.spec.js +1 -1
  130. package/test/{ng → core}/scope.spec.js +1 -1
  131. package/test/{ng/directive → directive}/a.spec.js +4 -4
  132. package/test/{ng/directive → directive}/bind.spec.js +3 -3
  133. package/test/{ng/directive → directive}/boolean.spec.js +2 -2
  134. package/test/{ng/directive → directive}/change.spec.js +3 -3
  135. package/test/{ng/directive → directive}/class.spec.js +4 -4
  136. package/test/{ng/directive → directive}/click.spec.js +3 -3
  137. package/test/{ng/directive → directive}/cloak.spec.js +4 -4
  138. package/test/{ng/directive → directive}/constoller.spec.js +5 -5
  139. package/test/{ng/directive → directive}/element-style.spec.js +3 -3
  140. package/test/{ng/directive → directive}/event.spec.js +4 -4
  141. package/test/{ng/directive → directive}/form.spec.js +5 -5
  142. package/test/{ng/directive → directive}/href.spec.js +4 -4
  143. package/test/{ng/directive → directive}/if.spec.js +5 -5
  144. package/test/{ng/directive → directive}/include.spec.js +5 -5
  145. package/test/{ng/directive → directive}/init.spec.js +4 -4
  146. package/test/{ng/directive → directive}/input.spec.js +5 -5
  147. package/test/{ng/directive → directive}/list.spec.js +3 -3
  148. package/test/{ng/directive → directive}/model-options.spec.js +6 -6
  149. package/test/{ng/directive → directive}/model.spec.js +8 -8
  150. package/test/{ng/directive → directive}/non-bindable.spec.js +3 -3
  151. package/test/{ng/directive → directive}/options.spec.js +5 -5
  152. package/test/{ng/directive → directive}/ref.spec.js +2 -2
  153. package/test/{ng/directive → directive}/repeat.spec.js +5 -5
  154. package/test/{ng/directive → directive}/script.spec.js +3 -3
  155. package/test/{ng/directive → directive}/scrset.spec.js +3 -3
  156. package/test/{ng/directive → directive}/select.spec.js +5 -5
  157. package/test/{ng/directive → directive}/show-hide.spec.js +3 -3
  158. package/test/{ng/directive → directive}/src.spec.js +3 -3
  159. package/test/{ng/directive → directive}/style.spec.js +3 -3
  160. package/test/{ng/directive → directive}/switch.spec.js +3 -3
  161. package/test/{ng/directive → directive}/validators.spec.js +3 -3
  162. package/test/{ng/filter → filter}/filter.spec.js +4 -4
  163. package/test/{ng/filter → filter}/filters.spec.js +3 -3
  164. package/test/{ng/filter → filter}/limit-to.spec.js +3 -3
  165. package/test/{ng/filter → filter}/order-by.spec.js +2 -2
  166. package/test/injector.spec.js +1 -1
  167. package/test/jqlite.spec.js +1 -1
  168. package/test/messages/messages.spec.js +1 -1
  169. package/test/min-err.spec.js +1 -1
  170. package/test/original-test.html +4 -4
  171. package/test/router/glob.spec.js +78 -0
  172. package/test/router/state.spec.js +931 -0
  173. package/test/sanitize/bing-html.spec.js +1 -1
  174. package/test/shared/common.spec.js +283 -0
  175. package/test/shared/hof.spec.js +60 -0
  176. package/test/shared/strings.spec.js +40 -0
  177. package/test/{ng → shared}/utils.spec.js +1 -1
  178. package/types/router/angular.d.ts +1 -0
  179. package/types/router/core/common/common.d.ts +370 -0
  180. package/types/router/core/common/coreservices.d.ts +80 -0
  181. package/types/router/core/common/glob.d.ts +60 -0
  182. package/types/router/core/common/hof.d.ts +160 -0
  183. package/types/router/core/common/index.d.ts +8 -0
  184. package/types/router/core/common/predicates.d.ts +25 -0
  185. package/types/router/core/common/queue.d.ts +15 -0
  186. package/types/router/core/common/safeConsole.d.ts +5 -0
  187. package/types/router/core/common/strings.d.ts +64 -0
  188. package/types/router/core/common/trace.d.ts +114 -0
  189. package/types/router/core/globals.d.ts +45 -0
  190. package/types/router/core/hooks/coreResolvables.d.ts +4 -0
  191. package/types/router/core/hooks/ignoredTransition.d.ts +2 -0
  192. package/types/router/core/hooks/invalidTransition.d.ts +2 -0
  193. package/types/router/core/hooks/lazyLoad.d.ts +12 -0
  194. package/types/router/core/hooks/onEnterExitRetain.d.ts +4 -0
  195. package/types/router/core/hooks/redirectTo.d.ts +2 -0
  196. package/types/router/core/hooks/resolve.d.ts +5 -0
  197. package/types/router/core/hooks/updateGlobals.d.ts +2 -0
  198. package/types/router/core/hooks/url.d.ts +2 -0
  199. package/types/router/core/hooks/views.d.ts +3 -0
  200. package/types/router/core/index.d.ts +12 -0
  201. package/types/router/core/interface.d.ts +102 -0
  202. package/types/router/core/params/index.d.ts +12 -0
  203. package/types/router/core/params/interface.d.ts +606 -0
  204. package/types/router/core/params/param.d.ts +65 -0
  205. package/types/router/core/params/paramType.d.ts +65 -0
  206. package/types/router/core/params/paramTypes.d.ts +190 -0
  207. package/types/router/core/params/stateParams.d.ts +15 -0
  208. package/types/router/core/path/index.d.ts +2 -0
  209. package/types/router/core/path/pathNode.d.ts +60 -0
  210. package/types/router/core/path/pathUtils.d.ts +79 -0
  211. package/types/router/core/resolve/index.d.ts +3 -0
  212. package/types/router/core/resolve/interface.d.ts +210 -0
  213. package/types/router/core/resolve/resolvable.d.ts +69 -0
  214. package/types/router/core/resolve/resolveContext.d.ts +92 -0
  215. package/types/router/core/router.d.ts +95 -0
  216. package/types/router/core/state/index.d.ts +28 -0
  217. package/types/router/core/state/interface.d.ts +708 -0
  218. package/types/router/core/state/stateBuilder.d.ts +104 -0
  219. package/types/router/core/state/stateMatcher.d.ts +11 -0
  220. package/types/router/core/state/stateObject.d.ts +155 -0
  221. package/types/router/core/state/stateQueueManager.d.ts +24 -0
  222. package/types/router/core/state/stateRegistry.d.ts +136 -0
  223. package/types/router/core/state/stateService.d.ts +350 -0
  224. package/types/router/core/state/targetState.d.ts +100 -0
  225. package/types/router/core/transition/hookBuilder.d.ts +45 -0
  226. package/types/router/core/transition/hookRegistry.d.ts +93 -0
  227. package/types/router/core/transition/index.d.ts +20 -0
  228. package/types/router/core/transition/interface.d.ts +819 -0
  229. package/types/router/core/transition/rejectFactory.d.ts +103 -0
  230. package/types/router/core/transition/transition.d.ts +527 -0
  231. package/types/router/core/transition/transitionEventType.d.ts +17 -0
  232. package/types/router/core/transition/transitionHook.d.ts +88 -0
  233. package/types/router/core/transition/transitionService.d.ts +187 -0
  234. package/types/router/core/url/index.d.ts +8 -0
  235. package/types/router/core/url/interface.d.ts +156 -0
  236. package/types/router/core/url/urlConfig.d.ts +141 -0
  237. package/types/router/core/url/urlMatcher.d.ts +180 -0
  238. package/types/router/core/url/urlMatcherFactory.d.ts +52 -0
  239. package/types/router/core/url/urlRouter.d.ts +85 -0
  240. package/types/router/core/url/urlRule.d.ts +120 -0
  241. package/types/router/core/url/urlRules.d.ts +244 -0
  242. package/types/router/core/url/urlService.d.ts +206 -0
  243. package/types/router/core/vanilla.d.ts +1 -0
  244. package/types/router/core/view/index.d.ts +2 -0
  245. package/types/router/core/view/interface.d.ts +46 -0
  246. package/types/router/core/view/view.d.ts +167 -0
  247. package/types/router/directives/stateDirectives.d.ts +3 -0
  248. package/types/router/directives/viewDirective.d.ts +143 -0
  249. package/types/router/index.d.ts +19 -0
  250. package/types/router/interface.d.ts +491 -0
  251. package/types/router/legacy/resolveService.d.ts +44 -0
  252. package/types/router/legacy/stateEvents.d.ts +123 -0
  253. package/types/router/locationServices.d.ts +43 -0
  254. package/types/router/services.d.ts +15 -0
  255. package/types/router/stateFilters.d.ts +11 -0
  256. package/types/router/stateProvider.d.ts +254 -0
  257. package/types/router/statebuilders/onEnterExitRetain.d.ts +12 -0
  258. package/types/router/statebuilders/views.d.ts +41 -0
  259. package/types/router/templateFactory.d.ts +84 -0
  260. package/types/router/viewScroll.d.ts +9 -0
  261. package/src/animations/animate.css.md +0 -263
  262. package/src/animations/animate.md +0 -933
  263. package/src/router/adapter/statebuilders/onEnterExitRetain.js +0 -29
  264. package/src/router/core/common/coreservices.js +0 -15
  265. package/src/router/core/common/safeConsole.js +0 -37
  266. package/src/router/core/interface.js +0 -3
  267. package/src/router/core/resolve/interface.js +0 -10
  268. package/src/router/core/router.js +0 -203
  269. package/src/router/core/url/interface.js +0 -1
  270. package/src/router/core/view/interface.js +0 -1
  271. /package/src/router/{core/common → common}/glob.js +0 -0
  272. /package/src/router/{core/hooks → hooks}/ignoredTransition.js +0 -0
  273. /package/src/router/{core/hooks → hooks}/invalidTransition.js +0 -0
  274. /package/src/router/{core/hooks → hooks}/onEnterExitRetain.js +0 -0
  275. /package/src/router/{core/hooks → hooks}/url.js +0 -0
  276. /package/src/router/{core/params → params}/README.md +0 -0
  277. /package/src/router/{core/state → state}/README.md +0 -0
  278. /package/src/router/{adapter/stateFilters.js → stateFilters.js} +0 -0
  279. /package/src/router/{core/transition → transition}/interface.js +0 -0
  280. /package/src/router/{core/transition → transition}/transitionEventType.js +0 -0
  281. /package/src/{router/core/common → shared}/hof.js +0 -0
  282. /package/test/{ng → core}/cache-factor.spec.js +0 -0
  283. /package/test/{ng → core}/controller-provider.spec.js +0 -0
  284. /package/test/{ng → core}/cookie-reader.spec.js +0 -0
  285. /package/test/{ng → core}/document.spec.js +0 -0
  286. /package/test/{ng → core}/filter.spec.js +0 -0
  287. /package/test/{ng → core}/http-backend.spec.js +0 -0
  288. /package/test/{ng → core}/interpolate.spec.js +0 -0
  289. /package/test/{ng → core}/interval.spec.js +0 -0
  290. /package/test/{ng → core}/location.spec.js +0 -0
  291. /package/test/{ng → core}/q.spec.js +0 -0
  292. /package/test/{ng → core}/root-element.spec.js +0 -0
  293. /package/test/{ng → core}/sanitize-uri.spec.js +0 -0
  294. /package/test/{ng → core}/sce.spec.js +0 -0
  295. /package/test/{ng → core}/template-request.spec.js +0 -0
  296. /package/test/{ng → core}/timeout.spec.js +0 -0
  297. /package/test/{ng → core}/url-utils.spec.js +0 -0
  298. /package/{src/router/adapter/interface.js → types/router/injectables.d.ts} +0 -0
@@ -17,14 +17,14 @@
17
17
  * Because of these confusing details, this service is deprecated.
18
18
  *
19
19
  * ### Instead of using the global `$stateParams` service object,
20
- * inject [[$uiRouterGlobals]] and use [[UIRouterGlobals.params]]
20
+ * inject [[$routerGlobals]] and use [[UIRouterGlobals.params]]
21
21
  *
22
22
  * ```js
23
- * MyService.$inject = ['$uiRouterGlobals'];
24
- * function MyService($uiRouterGlobals) {
23
+ * MyService.$inject = ['$routerGlobals'];
24
+ * function MyService($routerGlobals) {
25
25
  * return {
26
26
  * paramValues: function () {
27
- * return $uiRouterGlobals.params;
27
+ * return $routerGlobals.params;
28
28
  * }
29
29
  * }
30
30
  * }
@@ -67,7 +67,7 @@ let $stateParams;
67
67
  *
68
68
  * This object contains globals such as the current state and current parameter values.
69
69
  */
70
- let $uiRouterGlobals;
70
+ let $routerGlobals;
71
71
  /**
72
72
  * The UI-Router instance
73
73
  *
@@ -76,9 +76,9 @@ let $uiRouterGlobals;
76
76
  * This object is the UI-Router singleton instance, created by angular dependency injection during application bootstrap.
77
77
  * It has references to the other UI-Router services
78
78
  *
79
- * #### Note: This object is also exposed as [[$uiRouterProvider]] for injection during angular config time.
79
+ * #### Note: This object is also exposed as [[$routerProvider]] for injection during angular config time.
80
80
  */
81
- let $uiRouter;
81
+ let $router;
82
82
  /**
83
83
  * The UI-Router instance
84
84
  *
@@ -87,9 +87,9 @@ let $uiRouter;
87
87
  * This object is the UI-Router singleton instance, created by angular dependency injection during application bootstrap.
88
88
  * It has references to the other UI-Router services
89
89
  *
90
- * #### Note: This object is also exposed as [[$uiRouter]] for injection during runtime.
90
+ * #### Note: This object is also exposed as [[$router]] for injection during runtime.
91
91
  */
92
- let $uiRouterProvider;
92
+ let $routerProvider;
93
93
  /**
94
94
  * Transition debug/tracing
95
95
  *
@@ -1,12 +1,24 @@
1
- /** @publicapi @module ng1 */ /** */
2
- import { isDefined, isObject } from "../../core/utils";
3
- import { val } from "../core/common/hof";
4
- import { createProxyFunctions, removeFrom } from "../core/common/common";
1
+ import { isDefined, isObject } from "../shared/utils";
2
+ import { val } from "../shared/hof";
3
+ import { createProxyFunctions, removeFrom } from "../shared/common";
4
+
5
5
  /**
6
6
  * Implements UI-Router LocationServices and LocationConfig using Angular 1's $location service
7
7
  * @internalapi
8
8
  */
9
9
  export class Ng1LocationServices {
10
+ /**
11
+ *
12
+ * @param {angular.ILocationProvider} $locationProvider
13
+ */
14
+ constructor($locationProvider) {
15
+ // .onChange() registry
16
+ this._urlListeners = [];
17
+ /** @type {angular.ILocationProvider} */ this.$locationProvider =
18
+ $locationProvider;
19
+ const _lp = val($locationProvider);
20
+ createProxyFunctions(_lp, this, _lp, ["hashPrefix"]);
21
+ }
10
22
  /**
11
23
  * Applys ng1-specific path parameter encoding
12
24
  *
@@ -33,13 +45,7 @@ export class Ng1LocationServices {
33
45
  : x;
34
46
  }
35
47
  dispose() {}
36
- constructor($locationProvider) {
37
- // .onChange() registry
38
- this._urlListeners = [];
39
- this.$locationProvider = $locationProvider;
40
- const _lp = val($locationProvider);
41
- createProxyFunctions(_lp, this, _lp, ["hashPrefix"]);
42
- }
48
+
43
49
  onChange(callback) {
44
50
  this._urlListeners.push(callback);
45
51
  return () => removeFrom(this._urlListeners)(callback);
@@ -62,8 +68,9 @@ export class Ng1LocationServices {
62
68
  if (state) this.$location.state(state);
63
69
  return this.$location.url();
64
70
  }
71
+
65
72
  _runtimeServices($rootScope, $location, $browser) {
66
- this.$location = $location;
73
+ /** @type {angular.ILocationService} */ this.$location = $location;
67
74
  this.$browser = $browser;
68
75
  this.$window = window;
69
76
  // Bind $locationChangeSuccess to the listeners registered in LocationService.onChange
@@ -1,12 +1,7 @@
1
- import { filter, map, allTrueR, find } from "../common/common";
2
- import { prop } from "../common/hof";
3
- import {
4
- isInjectable,
5
- isDefined,
6
- isString,
7
- isArray,
8
- isUndefined,
9
- } from "../common/predicates";
1
+ import { filter, map, allTrueR, find } from "../../shared/common";
2
+ import { prop } from "../../shared/hof";
3
+ import { isInjectable } from "../../shared/predicates";
4
+ import { isDefined, isUndefined, isString } from "../../shared/utils";
10
5
  import { services } from "../common/coreservices";
11
6
  import { ParamType } from "./paramType";
12
7
  const hasOwn = Object.prototype.hasOwnProperty;
@@ -79,7 +74,7 @@ function getReplace(config, arrayMode, isOptional, squash) {
79
74
  { from: "", to: isOptional || arrayMode ? undefined : "" },
80
75
  { from: null, to: isOptional || arrayMode ? undefined : "" },
81
76
  ];
82
- const replace = isArray(config.replace) ? config.replace : [];
77
+ const replace = Array.isArray(config.replace) ? config.replace : [];
83
78
  if (isString(squash)) replace.push({ from: squash, to: undefined });
84
79
  const configuredKeys = map(replace, prop("from"));
85
80
  return filter(
@@ -1,5 +1,5 @@
1
- import { filter, map } from "../common/common";
2
- import { isArray, isDefined } from "../common/predicates";
1
+ import { filter, map } from "../../shared/common";
2
+ import { isDefined } from "../../shared/utils";
3
3
  /**
4
4
  * An internal class which implements [[ParamTypeDefinition]].
5
5
  *
@@ -86,7 +86,7 @@ export class ParamType {
86
86
  function ArrayType(type, mode) {
87
87
  // Wrap non-array value as array
88
88
  function arrayWrap(val) {
89
- return isArray(val) ? val : isDefined(val) ? [val] : [];
89
+ return Array.isArray(val) ? val : isDefined(val) ? [val] : [];
90
90
  }
91
91
  // Unwrap array value for "auto" mode. Return undefined for empty array.
92
92
  function arrayUnwrap(val) {
@@ -102,7 +102,7 @@ function ArrayType(type, mode) {
102
102
  // Wraps type (.is/.encode/.decode) functions to operate on each value of an array
103
103
  function arrayHandler(callback, allTruthyMode) {
104
104
  return function handleArray(val) {
105
- if (isArray(val) && val.length === 0) return val;
105
+ if (Array.isArray(val) && val.length === 0) return val;
106
106
  const arr = arrayWrap(val);
107
107
  const result = map(arr, callback);
108
108
  return allTruthyMode === true
@@ -6,9 +6,10 @@ import {
6
6
  inherit,
7
7
  map,
8
8
  pick,
9
- } from "../common/common";
10
- import { isDefined, isNullOrUndefined } from "../common/predicates";
11
- import { is } from "../common/hof";
9
+ } from "../../shared/common";
10
+ import { isNullOrUndefined } from "../../shared/predicates";
11
+ import { isDefined } from "../../shared/utils";
12
+ import { is } from "../../shared/hof";
12
13
  import { services } from "../common/coreservices";
13
14
  import { ParamType } from "./paramType";
14
15
  /**
@@ -1,4 +1,4 @@
1
- import { ancestors } from "../common/common";
1
+ import { ancestors } from "../../shared/common";
2
2
  export class StateParams {
3
3
  constructor(params = {}) {
4
4
  Object.assign(this, params);
@@ -1,5 +1,5 @@
1
- import { applyPairs, find } from "../common/common";
2
- import { propEq } from "../common/hof";
1
+ import { applyPairs, find } from "../../shared/common";
2
+ import { propEq } from "../../shared/hof";
3
3
  import { Param } from "../params/param";
4
4
  /**
5
5
  * A node in a [[TreeChanges]] path
@@ -7,8 +7,8 @@ import {
7
7
  unnestR,
8
8
  inArray,
9
9
  arrayTuples,
10
- } from "../common/common";
11
- import { prop, propEq } from "../common/hof";
10
+ } from "../../shared/common";
11
+ import { prop, propEq } from "../../shared/hof";
12
12
  import { TargetState } from "../state/targetState";
13
13
  import { PathNode } from "./pathNode";
14
14
  /**
@@ -190,9 +190,15 @@ export class PathUtils {
190
190
  const elementIdx = path.indexOf(node);
191
191
  return elementIdx === -1 ? undefined : path.slice(0, elementIdx + 1);
192
192
  }
193
+
194
+ static nonDynamicParams(node) {
195
+ return node.state
196
+ .parameters({ inherit: false })
197
+ .filter((param) => !param.dynamic);
198
+ }
199
+
200
+ /** Gets the raw parameter values from a path */
201
+ static paramValues(path) {
202
+ return path.reduce((acc, node) => Object.assign(acc, node.paramValues), {});
203
+ }
193
204
  }
194
- PathUtils.nonDynamicParams = (node) =>
195
- node.state.parameters({ inherit: false }).filter((param) => !param.dynamic);
196
- /** Gets the raw parameter values from a path */
197
- PathUtils.paramValues = (path) =>
198
- path.reduce((acc, node) => Object.assign(acc, node.paramValues), {});
@@ -1,9 +1,8 @@
1
- import { identity } from "../../../core/utils";
1
+ import { identity, isFunction, isObject } from "../../shared/utils";
2
2
  import { services } from "../common/coreservices";
3
3
  import { trace } from "../common/trace";
4
- import { stringify } from "../common/strings";
5
- import { isFunction, isObject } from "../common/predicates";
6
- import { isNullOrUndefined } from "../common/predicates";
4
+ import { stringify } from "../../shared/strings";
5
+ import { isNullOrUndefined } from "../../shared/predicates";
7
6
  // TODO: explicitly make this user configurable
8
7
  export let defaultResolvePolicy = {
9
8
  when: "LAZY",
@@ -44,7 +43,8 @@ export class Resolvable {
44
43
  } else if (
45
44
  isObject(arg1) &&
46
45
  arg1.token &&
47
- (arg1.hasOwnProperty("resolveFn") || arg1.hasOwnProperty("data"))
46
+ (Object.prototype.hasOwnProperty.call(arg1, "resolveFn") ||
47
+ Object.prototype.hasOwnProperty.call(arg1, "data"))
48
48
  ) {
49
49
  const literal = arg1;
50
50
  return new Resolvable(
@@ -1,12 +1,22 @@
1
- import { find, tail, uniqR, unnestR, inArray } from "../common/common";
2
- import { propEq, not } from "../common/hof";
1
+ import { find, tail, uniqR, unnestR, inArray } from "../../shared/common";
2
+ import { propEq, not } from "../../shared/hof";
3
3
  import { trace } from "../common/trace";
4
4
  import { services } from "../common/coreservices";
5
- import { resolvePolicies } from "./interface";
6
5
  import { Resolvable } from "./resolvable";
7
6
  import { PathUtils } from "../path/pathUtils";
8
- import { stringify } from "../common/strings";
9
- import { isUndefined } from "../../../core/utils";
7
+ import { stringify } from "../../shared/strings";
8
+ import { isUndefined } from "../../shared/utils";
9
+
10
+ export let resolvePolicies = {
11
+ when: {
12
+ LAZY: "LAZY",
13
+ EAGER: "EAGER",
14
+ },
15
+ async: {
16
+ WAIT: "WAIT",
17
+ NOWAIT: "NOWAIT",
18
+ },
19
+ };
10
20
 
11
21
  const whens = resolvePolicies.when;
12
22
  const ALL_WHENS = [whens.EAGER, whens.LAZY];
@@ -179,7 +189,7 @@ export class ResolveContext {
179
189
  return resolvable.deps.map(getDependency);
180
190
  }
181
191
  }
182
- /** @internal */
192
+
183
193
  class UIInjectorImpl {
184
194
  constructor(context) {
185
195
  this.context = context;
@@ -1,77 +1,176 @@
1
- import {
2
- $uiRouterProvider,
3
- getProviderFor,
4
- getStateProvider,
5
- router,
6
- runBlock,
7
- watchDigests,
8
- } from "./adapter/services";
9
- import { TemplateFactory } from "./adapter/templateFactory";
10
- import { trace } from "./core/common/trace";
11
- import { $ViewScrollProvider } from "./adapter/viewScroll";
12
- import { $IsStateFilter, $IncludedByStateFilter } from "./adapter/stateFilters";
13
- import {
14
- uiSrefActiveDirective,
15
- uiStateDirective,
16
- uiSrefDirective,
17
- } from "./adapter/directives/stateDirectives";
18
- import { uiView, $ViewDirectiveFill } from "./adapter/directives/viewDirective";
1
+ import { UrlMatcherFactory } from "./url/urlMatcherFactory";
2
+ import { UrlRouter } from "./url/urlRouter";
3
+ import { TransitionService } from "./transition/transitionService";
4
+ import { ViewService } from "./view/view";
5
+ import { StateRegistry } from "./state/stateRegistry";
6
+ import { StateService } from "./state/stateService";
7
+ import { UIRouterGlobals } from "./globals";
8
+ import { removeFrom } from "../shared/common";
9
+ import { isFunction } from "../shared/utils";
10
+ import { UrlService } from "./url/urlService";
11
+ import { trace } from "./common/trace";
19
12
 
20
- export function initRouter() {
21
- window.angular.module("ui.router.angular1", []);
22
- const mod_init = window.angular.module("ui.router.init", ["ng"]);
23
- const mod_util = window.angular.module("ui.router.util", ["ui.router.init"]);
24
- const mod_state = window.angular.module("ui.router.state", [
25
- "ui.router.util",
26
- "ui.router.angular1",
27
- ]);
13
+ /**
14
+ * Router id tracker
15
+ * @type {number}
16
+ */
17
+ let routerId = 0;
28
18
 
29
- const mod_main = window.angular.module("ui.router", [
30
- "ui.router.init",
31
- "ui.router.state",
32
- "ui.router.angular1",
33
- ]);
19
+ /**
20
+ * An instance of UI-Router.
21
+ * @class
22
+ *
23
+ * This object contains references to service APIs which define your application's routing behavior.
24
+ */
25
+ export class UIRouter {
26
+ /**
27
+ * Creates a new `UIRouter` object
28
+ *
29
+ * @param {import('./locationServices').Ng1LocationServices} locationService
30
+ */
31
+ constructor(locationService) {
32
+ /**
33
+ * @type {import('./locationServices').Ng1LocationServices}
34
+ */
35
+ this.locationService = locationService;
36
+ /** @type {number} */ this.$id = routerId++;
37
+ /** @type {boolean} */ this._disposed = false;
38
+ this._disposables = [];
39
+ /** Enable/disable tracing to the javascript console */
40
+ this.trace = trace;
41
+ /** Provides services related to ui-view synchronization */
42
+ this.viewService = new ViewService(this);
43
+ /** @type {UIRouterGlobals} An object that contains global router state, such as the current state and params */
44
+ this.globals = new UIRouterGlobals();
45
+ /** @type {TransitionService} A service that exposes global Transition Hooks */
46
+ this.transitionService = new TransitionService(this);
47
+ /**
48
+ * Deprecated for public use. Use [[urlService]] instead.
49
+ * @deprecated Use [[urlService]] instead
50
+ */
51
+ this.urlMatcherFactory = new UrlMatcherFactory(this);
52
+ /**
53
+ * Deprecated for public use. Use [[urlService]] instead.
54
+ * @deprecated Use [[urlService]] instead
55
+ */
56
+ this.urlRouter = new UrlRouter(this);
57
+ /** Provides services related to the URL */
58
+ this.urlService = new UrlService(this);
59
+ /** Provides a registry for states, and related registration services */
60
+ this.stateRegistry = new StateRegistry(this);
61
+ /** Provides services related to states */
62
+ this.stateService = new StateService(this);
63
+ /** @internal plugin instances are registered here */
64
+ this._plugins = {};
65
+ this.viewService._pluginapi._rootViewContext(this.stateRegistry.root());
66
+ this.globals.$current = this.stateRegistry.root();
67
+ this.globals.current = this.globals.$current.self;
68
+ this.disposable(this.globals);
69
+ this.disposable(this.stateService);
70
+ this.disposable(this.stateRegistry);
71
+ this.disposable(this.transitionService);
72
+ this.disposable(this.urlService);
73
+ this.disposable(locationService);
74
+ }
34
75
 
35
- mod_init.provider("$uiRouter", $uiRouterProvider);
36
- mod_util.provider("$urlService", getProviderFor("urlService"));
37
- mod_util.provider("$urlMatcherFactory", [
38
- "$uiRouterProvider",
39
- function () {
40
- return router.urlMatcherFactory;
41
- },
42
- ]);
43
- mod_util.provider("$templateFactory", function () {
44
- return new TemplateFactory();
45
- });
46
- mod_state
47
- .provider("$stateRegistry", getProviderFor("stateRegistry"))
48
- .provider("$uiRouterGlobals", getProviderFor("globals"))
49
- .provider("$transitions", getProviderFor("transitionService"))
50
- .provider("$state", ["$uiRouterProvider", getStateProvider])
51
- .provider("$uiViewScroll", $ViewScrollProvider)
52
- .factory("$stateParams", [
53
- "$uiRouter",
54
- function ($uiRouter) {
55
- return $uiRouter.globals.params;
56
- },
57
- ])
58
- .filter("isState", $IsStateFilter)
59
- .filter("includedByState", $IncludedByStateFilter)
60
- .directive("uiSref", uiSrefDirective)
61
- .directive("uiSrefActive", uiSrefActiveDirective)
62
- .directive("uiSrefActiveEq", uiSrefActiveDirective)
63
- .directive("uiState", uiStateDirective)
64
- .directive("uiView", uiView)
65
- .directive("uiView", $ViewDirectiveFill)
66
- .run(["$state", function () {}]);
67
- mod_main
68
- .factory("$view", function View() {
69
- return router.viewService;
70
- })
71
- .service("$trace", function Trace() {
72
- return trace;
76
+ /**
77
+ * Registers an object to be notified when the router is disposed
78
+ * @param {Disposable} disposable
79
+ * @returns {void}
80
+ */
81
+ disposable(disposable) {
82
+ this._disposables.push(disposable);
83
+ }
84
+ /**
85
+ * Disposes this router instance
86
+ *
87
+ * When called, clears resources retained by the router by calling `dispose(this)` on all
88
+ * registered [[disposable]] objects.
89
+ *
90
+ * Or, if a `disposable` object is provided, calls `dispose(this)` on that object only.
91
+ *
92
+ * @internal
93
+ * @param disposable (optional) the disposable to dispose
94
+ */
95
+ dispose(disposable) {
96
+ if (disposable && isFunction(disposable.dispose)) {
97
+ disposable.dispose(this);
98
+ return undefined;
99
+ }
100
+ this._disposed = true;
101
+ this._disposables.slice().forEach((d) => {
102
+ try {
103
+ typeof d.dispose === "function" && d.dispose(this);
104
+ removeFrom(this._disposables, d);
105
+ } catch (ignored) {}
73
106
  });
74
- mod_main.run(watchDigests);
75
- mod_util.run(["$urlMatcherFactory", function MatcherFac() {}]);
76
- mod_init.run(runBlock);
107
+ }
108
+
109
+ /**
110
+ * Adds a plugin to UI-Router
111
+ *
112
+ * This method adds a UI-Router Plugin.
113
+ * A plugin can enhance or change UI-Router behavior using any public API.
114
+ *
115
+ * #### Example:
116
+ * ```js
117
+ * import { MyCoolPlugin } from "ui-router-cool-plugin";
118
+ *
119
+ * var plugin = router.addPlugin(MyCoolPlugin);
120
+ * ```
121
+ *
122
+ * ### Plugin authoring
123
+ *
124
+ * A plugin is simply a class (or constructor function) which accepts a [[UIRouter]] instance and (optionally) an options object.
125
+ *
126
+ * The plugin can implement its functionality using any of the public APIs of [[UIRouter]].
127
+ * For example, it may configure router options or add a Transition Hook.
128
+ *
129
+ * The plugin can then be published as a separate module.
130
+ *
131
+ * #### Example:
132
+ * ```js
133
+ * export class MyAuthPlugin implements UIRouterPlugin {
134
+ * constructor(router: UIRouter, options: any) {
135
+ * this.name = "MyAuthPlugin";
136
+ * let $transitions = router.transitionService;
137
+ * let $state = router.stateService;
138
+ *
139
+ * let authCriteria = {
140
+ * to: (state) => state.data && state.data.requiresAuth
141
+ * };
142
+ *
143
+ * function authHook(transition: Transition) {
144
+ * let authService = transition.injector().get('AuthService');
145
+ * if (!authService.isAuthenticated()) {
146
+ * return $state.target('login');
147
+ * }
148
+ * }
149
+ *
150
+ * $transitions.onStart(authCriteria, authHook);
151
+ * }
152
+ * }
153
+ * ```
154
+ *
155
+ * @param plugin one of:
156
+ * - a plugin class which implements [[UIRouterPlugin]]
157
+ * - a constructor function for a [[UIRouterPlugin]] which accepts a [[UIRouter]] instance
158
+ * - a factory function which accepts a [[UIRouter]] instance and returns a [[UIRouterPlugin]] instance
159
+ * @param options options to pass to the plugin class/factory
160
+ * @returns the registered plugin instance
161
+ */
162
+ plugin(plugin, options = {}) {
163
+ const pluginInstance = new plugin(this, options);
164
+ if (!pluginInstance.name)
165
+ throw new Error(
166
+ "Required property `name` missing on plugin: " + pluginInstance,
167
+ );
168
+ this._disposables.push(pluginInstance);
169
+ return (this._plugins[pluginInstance.name] = pluginInstance);
170
+ }
171
+ getPlugin(pluginName) {
172
+ return pluginName
173
+ ? this._plugins[pluginName]
174
+ : Object.values(this._plugins);
175
+ }
77
176
  }
@@ -8,26 +8,24 @@
8
8
  *
9
9
  * @preferred @publicapi @module ng1
10
10
  */
11
- import { services } from "../core/common/coreservices";
12
- import { applyPairs, unnestR } from "../core/common/common";
13
- import { isString } from "../../core/utils";
14
- import { trace } from "../core/common/trace";
15
- import { UIRouter } from "../core/router";
16
- import {
17
- ng1ViewsBuilder,
18
- getNg1ViewConfigFactory,
19
- } from "./statebuilders/views";
11
+ import { services } from "./common/coreservices";
12
+ import { applyPairs, unnestR } from "../shared/common";
13
+ import { isString } from "../shared/utils";
14
+ import { trace } from "./common/trace";
15
+ import { UIRouter } from "./router";
16
+ import { ng1ViewsBuilder, getNg1ViewConfigFactory } from "./state/views";
20
17
 
21
18
  import { StateProvider } from "./stateProvider";
22
- import { getStateHookBuilder } from "./statebuilders/onEnterExitRetain";
23
19
  import { Ng1LocationServices } from "./locationServices";
20
+ import { ResolveContext } from "./resolve/resolveContext";
24
21
 
25
22
  export let router = null;
26
- $uiRouterProvider.$inject = ["$locationProvider"];
23
+ $routerProvider.$inject = ["$locationProvider"];
27
24
  /** This angular 1 provider instantiates a Router and exposes its services via the angular injector */
28
- export function $uiRouterProvider($locationProvider) {
29
- // Create a new instance of the Router when the $uiRouterProvider is initialized
30
- router = this.router = new UIRouter();
25
+ export function $routerProvider($locationProvider) {
26
+ const ng1LocationService = new Ng1LocationServices($locationProvider);
27
+ // Create a new instance of the Router when the $routerProvider is initialized
28
+ router = this.router = new UIRouter(ng1LocationService);
31
29
  router.stateProvider = new StateProvider(
32
30
  router.stateRegistry,
33
31
  router.stateService,
@@ -43,47 +41,42 @@ export function $uiRouterProvider($locationProvider) {
43
41
  );
44
42
  // Disable decoding of params by UrlMatcherFactory because $location already handles this
45
43
  router.urlService.config._decodeParams = false;
46
- const ng1LocationService =
47
- (router.locationService =
48
- router.locationConfig =
49
- new Ng1LocationServices($locationProvider));
44
+
50
45
  Ng1LocationServices.monkeyPatchPathParameterType(router);
51
- // backwards compat: also expose router instance as $uiRouterProvider.router
46
+ // backwards compat: also expose router instance as $routerProvider.router
52
47
  router["router"] = router;
53
48
  router["$get"] = $get;
54
49
  $get.$inject = ["$location", "$browser", "$rootScope"];
55
50
  function $get($location, $browser, $rootScope) {
56
51
  ng1LocationService._runtimeServices($rootScope, $location, $browser);
57
- delete router["router"];
58
- delete router["$get"];
59
52
  return router;
60
53
  }
61
54
  return router;
62
55
  }
63
56
  export const getProviderFor = (serviceName) => [
64
- "$uiRouterProvider",
57
+ "$routerProvider",
65
58
  function UrlServiceProvider($urp) {
66
59
  const service = $urp.router[serviceName];
67
60
  service["$get"] = () => service;
68
61
  return service;
69
62
  },
70
63
  ];
71
- // This effectively calls $get() on `$uiRouterProvider` to trigger init (when ng enters runtime)
72
- runBlock.$inject = ["$injector", "$q", "$uiRouter"];
73
- export function runBlock($injector, $q, $uiRouter) {
64
+ // This effectively calls $get() on `$routerProvider` to trigger init (when ng enters runtime)
65
+ runBlock.$inject = ["$injector", "$q", "$router"];
66
+ export function runBlock($injector, $q, $router) {
74
67
  services.$injector = $injector;
75
68
  services.$q = $q;
76
69
  // https://github.com/angular-ui/ui-router/issues/3678
77
70
  if (!Object.prototype.hasOwnProperty.call($injector, "strictDi")) {
78
71
  try {
79
- $injector.invoke(function (checkStrictDi) {});
72
+ $injector.invoke(() => {});
80
73
  } catch (error) {
81
74
  $injector.strictDi = !!/strict mode/.exec(error && error.toString());
82
75
  }
83
76
  }
84
77
  // The $injector is now available.
85
78
  // Find any resolvables that had dependency annotation deferred
86
- $uiRouter.stateRegistry
79
+ $router.stateRegistry
87
80
  .get()
88
81
  .map((x) => x.$$state().resolvables)
89
82
  .reduce(unnestR, [])
@@ -95,6 +88,8 @@ export function runBlock($injector, $q, $uiRouter) {
95
88
  $injector.strictDi,
96
89
  )),
97
90
  );
91
+ // TODO: Is this the best place for this?
92
+ $router.urlService.listen();
98
93
  }
99
94
 
100
95
  // $state service and $stateProvider
@@ -125,3 +120,28 @@ export const getLocals = (ctx) => {
125
120
  });
126
121
  return tuples.reduce(applyPairs, {});
127
122
  };
123
+
124
+ /**
125
+ * This is a [[StateBuilder.builder]] function for angular1 `onEnter`, `onExit`,
126
+ * `onRetain` callback hooks on a [[Ng1StateDeclaration]].
127
+ *
128
+ * When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder
129
+ * ensures that those hooks are injectable for @uirouter/angularjs (ng1).
130
+ *
131
+ * @internalapi
132
+ */
133
+ const getStateHookBuilder = (hookName) =>
134
+ function stateHookBuilder(stateObject) {
135
+ const hook = stateObject[hookName];
136
+ const pathname = hookName === "onExit" ? "from" : "to";
137
+ function decoratedNg1Hook(trans, state) {
138
+ const resolveContext = new ResolveContext(trans.treeChanges(pathname));
139
+ const subContext = resolveContext.subContext(state.$$state());
140
+ const locals = Object.assign(getLocals(subContext), {
141
+ $state$: state,
142
+ $transition$: trans,
143
+ });
144
+ return services.$injector.invoke(hook, this, locals);
145
+ }
146
+ return hook ? decoratedNg1Hook : undefined;
147
+ };