@angular-wave/angular.ts 0.7.7 → 0.8.0
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/@types/animations/raf-scheduler.d.ts +2 -2
- package/@types/animations/shared.d.ts +0 -1
- package/@types/core/compile/attributes.d.ts +3 -3
- package/@types/core/compile/compile.d.ts +1 -1
- package/@types/core/di/injector.d.ts +0 -1
- package/@types/core/di/internal-injector.d.ts +1 -0
- package/@types/core/di/ng-module.d.ts +5 -0
- package/@types/core/filter/filter.d.ts +11 -13
- package/@types/core/parse/parse.d.ts +6 -7
- package/@types/core/sanitize/sanitize-uri.d.ts +3 -6
- package/@types/core/scope/scope.d.ts +1 -1
- package/@types/directive/attrs/attrs.d.ts +7 -1
- package/@types/directive/bind/bind.d.ts +2 -1
- package/@types/directive/events/events.d.ts +9 -3
- package/@types/directive/http/http.d.ts +6 -2
- package/@types/directive/include/include.d.ts +2 -2
- package/@types/directive/input/input.d.ts +2 -12
- package/@types/directive/messages/messages.d.ts +9 -48
- package/@types/directive/model/model.d.ts +3 -3
- package/@types/directive/options/options.d.ts +13 -20
- package/@types/directive/switch/switch.d.ts +1 -0
- package/@types/directive/transclude/transclude.d.ts +10 -6
- package/@types/index.d.ts +1 -1
- package/@types/interface.d.ts +56 -18
- package/@types/{public.d.ts → ng.d.ts} +2 -2
- package/@types/router/directives/view-directive.d.ts +2 -19
- package/@types/router/{common → glob}/glob.d.ts +5 -1
- package/@types/router/globals.d.ts +2 -3
- package/@types/router/path/path-utils.d.ts +8 -11
- package/@types/router/state/interface.d.ts +1 -1
- package/@types/router/state/state-object.d.ts +1 -1
- package/@types/router/state/state-registry.d.ts +1 -2
- package/@types/router/state/state-service.d.ts +8 -7
- package/@types/router/state-filters.d.ts +24 -2
- package/@types/router/transition/transition.d.ts +12 -15
- package/@types/router/url/url-matcher.d.ts +3 -3
- package/@types/router/url/url-rule.d.ts +1 -0
- package/@types/router/url/url-rules.d.ts +26 -6
- package/@types/router/url/url-service.d.ts +30 -42
- package/@types/services/anchor-scroll.d.ts +1 -1
- package/@types/{core → services/exception}/exception-handler.d.ts +4 -4
- package/@types/{core/error-handler.d.ts → services/exception/interface.d.ts} +1 -1
- package/@types/services/http/http.d.ts +48 -3
- package/@types/services/http/interface.d.ts +2 -2
- package/@types/services/http-backend/http-backend.d.ts +49 -44
- package/@types/services/location/interface.d.ts +63 -0
- package/@types/services/location/location.d.ts +330 -0
- package/@types/{core → services}/sce/sce.d.ts +1 -1
- package/@types/services/template-cache/interface.d.ts +8 -2
- package/@types/services/template-cache/template-cache.d.ts +1 -1
- package/@types/services/template-request.d.ts +1 -1
- package/@types/shared/cache.d.ts +0 -2
- package/@types/shared/common.d.ts +0 -2
- package/@types/shared/dom.d.ts +6 -0
- package/@types/shared/interface.d.ts +0 -4
- package/@types/{router/common → shared}/queue.d.ts +2 -2
- package/@types/shared/test-utils.d.ts +1 -0
- package/@types/shared/url-utils/interface.d.ts +46 -0
- package/@types/shared/url-utils/url-utils.d.ts +64 -0
- package/@types/shared/utils.d.ts +44 -6
- package/Makefile +8 -4
- package/dist/angular-ts.esm.js +1889 -2199
- package/dist/angular-ts.umd.js +1889 -2199
- package/dist/angular-ts.umd.min.js +1 -1
- package/docs/assets/scss/index.scss +23 -0
- package/docs/content/_index.md +9 -8
- package/docs/content/docs/_index.md +1 -1
- package/docs/content/docs/directive/app.md +1 -1
- package/docs/content/docs/directive/bind.md +10 -8
- package/docs/content/docs/directive/blur.md +1 -1
- package/docs/content/docs/directive/channel.md +2 -2
- package/docs/content/docs/directive/class-even.md +1 -1
- package/docs/content/docs/directive/class-odd.md +1 -1
- package/docs/content/docs/directive/class.md +1 -1
- package/docs/content/docs/directive/click.md +1 -1
- package/docs/content/docs/directive/copy.md +1 -1
- package/docs/content/docs/directive/cut.md +1 -1
- package/docs/content/docs/directive/dblclick.md +1 -1
- package/docs/content/docs/directive/focus.md +1 -1
- package/docs/content/docs/directive/get.md +203 -0
- package/docs/content/docs/directive/keydown.md +1 -1
- package/docs/content/docs/directive/keyup.md +1 -1
- package/docs/content/docs/directive/load.md +1 -1
- package/docs/content/docs/directive/mousedown.md +1 -1
- package/docs/content/docs/directive/mouseenter.md +1 -1
- package/docs/content/docs/directive/mouseleave.md +1 -1
- package/docs/content/docs/directive/mousemove.md +1 -1
- package/docs/content/docs/directive/mouseout.md +1 -1
- package/docs/content/docs/directive/mouseover.md +1 -1
- package/docs/content/docs/directive/mouseup.md +1 -1
- package/docs/content/docs/directive/non-bindable.md +28 -0
- package/docs/content/docs/provider/locationProvider.md +26 -0
- package/docs/content/docs/provider/templateCacheProvider.md +66 -1
- package/docs/content/docs/service/location.md +57 -0
- package/docs/content/docs/service/templateCache.md +2 -2
- package/docs/content/docs/service/url.md +5 -0
- package/docs/layouts/partials/hooks/head-end.html +1 -1
- package/docs/layouts/shortcodes/showcss.html +2 -0
- package/docs/layouts/shortcodes/version.html +1 -0
- package/docs/static/examples/counter/counter-test.html +0 -4
- package/docs/static/examples/eventbus/eventbus-test.html +0 -4
- package/docs/static/examples/ng-bind/ng-bind.html +2 -2
- package/docs/static/examples/ng-non-bindable/ng-non-bindable-test.html +13 -0
- package/docs/static/examples/ng-non-bindable/ng-non-bindable.html +3 -0
- package/docs/static/examples/ng-non-bindable/ng-non-bindable.test.js +11 -0
- package/docs/static/typedoc/assets/hierarchy.js +1 -1
- package/docs/static/typedoc/assets/highlight.css +6 -6
- package/docs/static/typedoc/assets/navigation.js +1 -1
- package/docs/static/typedoc/assets/search.js +1 -1
- package/docs/static/typedoc/classes/Location.html +55 -0
- package/docs/static/typedoc/classes/LocationProvider.html +20 -0
- package/docs/static/typedoc/classes/NgModule.html +32 -0
- package/docs/static/typedoc/classes/TemplateCacheProvider.html +1 -1
- package/docs/static/typedoc/hierarchy.html +1 -1
- package/docs/static/typedoc/index.html +1 -1
- package/docs/static/typedoc/interfaces/DefaultPorts.html +5 -0
- package/docs/static/typedoc/interfaces/Directive.html +5 -4
- package/docs/static/typedoc/interfaces/Html5Mode.html +23 -0
- package/docs/static/typedoc/interfaces/HttpProviderDefaults.html +1 -1
- package/docs/static/typedoc/interfaces/HttpResponse.html +2 -3
- package/docs/static/typedoc/interfaces/Provider.html +16 -10
- package/docs/static/typedoc/interfaces/RequestConfig.html +1 -1
- package/docs/static/typedoc/interfaces/RequestShortcutConfig.html +1 -1
- package/docs/static/typedoc/interfaces/TemplateCache.html +7 -0
- package/docs/static/typedoc/interfaces/UrlParts.html +9 -0
- package/docs/static/typedoc/types/AnnotatedDirectiveFactory.html +1 -0
- package/docs/static/typedoc/types/AnnotatedFactory.html +1 -1
- package/docs/static/typedoc/types/DirectiveFactory.html +1 -2
- package/docs/static/typedoc/types/DirectiveFactoryFn.html +1 -0
- package/docs/static/typedoc/types/Expression.html +1 -1
- package/docs/static/typedoc/types/HttpResponseStatus.html +1 -0
- package/docs/static/typedoc/types/{TemplateCache.html → SwapModeType.html} +1 -1
- package/docs/static/typedoc/types/UrlChangeListener.html +5 -0
- package/docs/static/typedoc/variables/SwapMode.html +11 -0
- package/docs/static/version.js +13 -0
- package/docs/test-results/.last-run.json +4 -0
- package/docs/test-results/static-examples-counter-counter-counter-example/error-context.md +50 -0
- package/legacy.d.ts +0 -10
- package/package.json +1 -3
- package/src/{loader.js → angular.js} +5 -10
- package/src/angular.spec.js +189 -21
- package/src/animations/animate-children-directive.js +2 -2
- package/src/animations/animate-css.js +17 -18
- package/src/animations/animate.spec.js +1 -1
- package/src/animations/raf-scheduler.js +1 -1
- package/src/animations/shared.js +2 -12
- package/src/binding.spec.js +1 -1
- package/src/core/compile/attributes.js +1 -1
- package/src/core/compile/compile.js +7 -10
- package/src/core/compile/compile.spec.js +1 -1
- package/src/core/controller/controller.spec.js +1 -1
- package/src/core/controller/controller.test.js +1 -0
- package/src/core/di/injector.js +11 -25
- package/src/core/di/injector.spec.js +2 -2
- package/src/core/di/injector.test.js +2 -2
- package/src/core/di/internal-injector.js +7 -7
- package/src/core/di/ng-module.js +12 -27
- package/src/core/filter/filter.js +28 -28
- package/src/core/filter/filter.spec.js +1 -1
- package/src/core/filter/filter.test.js +1 -0
- package/src/core/interpolate/interpolate.js +4 -6
- package/src/core/interpolate/interpolate.spec.js +1 -1
- package/src/core/interpolate/interpolate.test.js +1 -0
- package/src/core/parse/ast/ast.spec.js +1 -1
- package/src/core/parse/ast/ast.test.js +1 -1
- package/src/core/parse/interpreter.js +32 -38
- package/src/core/parse/lexer/lexer.spec.js +1 -1
- package/src/core/parse/parse.js +150 -146
- package/src/core/parse/parse.spec.js +17 -16
- package/src/core/prop.spec.js +1 -1
- package/src/core/root-element.spec.js +1 -1
- package/src/core/sanitize/sanitize-uri.js +3 -3
- package/src/core/scope/scope.js +12 -13
- package/src/core/scope/scope.spec.js +3 -4
- package/src/directive/aria/aria.spec.js +1 -1
- package/src/directive/aria/aria.test.js +1 -0
- package/src/directive/attrs/attrs.js +7 -4
- package/src/directive/attrs/attrs.spec.js +1 -1
- package/src/directive/attrs/attrs.test.js +1 -0
- package/src/directive/attrs/boolean.spec.js +1 -1
- package/src/directive/attrs/boolean.test.js +1 -0
- package/src/directive/attrs/element-style.spec.js +1 -1
- package/src/directive/attrs/element-style.test.js +1 -0
- package/src/directive/attrs/src.spec.js +1 -1
- package/src/directive/attrs/src.test.js +1 -0
- package/src/directive/bind/bind-html.spec.js +1 -1
- package/src/directive/bind/bind.js +1 -0
- package/src/directive/bind/bind.spec.js +1 -1
- package/src/directive/bind/bind.test.js +1 -0
- package/src/directive/channel/channel.spec.js +1 -1
- package/src/directive/channel/channel.test.js +1 -0
- package/src/directive/class/class.spec.js +1 -1
- package/src/directive/class/class.test.js +1 -0
- package/src/directive/cloak/cloak.spec.js +1 -1
- package/src/directive/cloak/cloak.test.js +1 -0
- package/src/directive/controller/controller.spec.js +1 -1
- package/src/directive/controller/controller.test.js +1 -0
- package/src/directive/events/click.spec.js +1 -1
- package/src/directive/events/event.spec.js +1 -1
- package/src/directive/events/events.js +6 -2
- package/src/directive/events/events.test.js +1 -0
- package/src/directive/form/form.js +8 -5
- package/src/directive/form/form.spec.js +1 -1
- package/src/directive/form/form.test.js +1 -0
- package/src/directive/http/delete.spec.js +3 -1
- package/src/directive/http/form-test.html +18 -0
- package/src/directive/http/get.spec.js +281 -4
- package/src/directive/http/http.js +112 -15
- package/src/directive/http/http.test.js +2 -2
- package/src/directive/http/post.spec.js +506 -9
- package/src/directive/http/put.spec.js +3 -1
- package/src/directive/if/if.spec.js +1 -1
- package/src/directive/include/include.js +7 -7
- package/src/directive/include/include.spec.js +1 -1
- package/src/directive/init/init.spec.js +1 -1
- package/src/directive/init/init.test.js +1 -0
- package/src/directive/input/input.js +19 -43
- package/src/directive/input/input.spec.js +1 -2
- package/src/directive/input/input.test.js +1 -0
- package/src/directive/messages/messages.js +4 -0
- package/src/directive/messages/messages.spec.js +1 -1
- package/src/directive/messages/messages.test.js +1 -0
- package/src/directive/model/model.js +14 -14
- package/src/directive/model/model.spec.js +1 -1
- package/src/directive/model/model.test.js +1 -0
- package/src/directive/model-options/model-option.test.js +1 -0
- package/src/directive/model-options/model-options.js +1 -1
- package/src/directive/model-options/model-options.spec.js +1 -1
- package/src/directive/non-bindable/non-bindable.spec.js +1 -1
- package/src/directive/non-bindable/non-bindable.test.js +1 -0
- package/src/directive/observe/observe.spec.js +1 -1
- package/src/directive/observe/observe.test.js +1 -0
- package/src/directive/on/on.spec.js +1 -1
- package/src/directive/on/on.test.js +1 -0
- package/src/directive/options/options.js +454 -464
- package/src/directive/options/options.spec.js +1 -1
- package/src/directive/options/options.test.js +1 -0
- package/src/directive/ref/href.spec.js +1 -1
- package/src/directive/ref/href.test.js +2 -0
- package/src/directive/ref/ref.spec.js +1 -1
- package/src/directive/repeat/repeat.spec.js +2 -3
- package/src/directive/repeat/repeat.test.js +1 -0
- package/src/directive/script/script.spec.js +1 -1
- package/src/directive/script/script.test.js +1 -0
- package/src/directive/select/select.js +1 -1
- package/src/directive/select/select.spec.js +1 -1
- package/src/directive/select/select.test.js +1 -0
- package/src/directive/setter/setter.js +12 -14
- package/src/directive/setter/setter.spec.js +40 -17
- package/src/directive/setter/setter.test.js +1 -0
- package/src/directive/show-hide/show-hide.spec.js +1 -1
- package/src/directive/show-hide/show-hide.test.js +1 -0
- package/src/directive/style/style.spec.js +1 -1
- package/src/directive/style/style.test.js +1 -0
- package/src/directive/switch/switch.js +1 -0
- package/src/directive/switch/switch.spec.js +1 -1
- package/src/directive/switch/switch.test.js +1 -0
- package/src/directive/transclude/transclude.js +87 -89
- package/src/directive/validators/validators.js +82 -84
- package/src/directive/validators/validators.spec.js +5 -4
- package/src/directive/validators/validators.test.js +1 -0
- package/src/filters/filter.spec.js +1 -1
- package/src/filters/filters.spec.js +1 -1
- package/src/filters/limit-to.js +2 -3
- package/src/filters/limit-to.spec.js +1 -1
- package/src/filters/order-by.spec.js +1 -1
- package/src/index.js +1 -1
- package/src/injection-tokens.js +6 -2
- package/src/interface.ts +70 -19
- package/src/loader.md +0 -155
- package/src/{public.js → ng.js} +16 -23
- package/src/{public.spec.js → ng.spec.js} +1 -1
- package/src/router/directives/state-directives.spec.js +9 -8
- package/src/router/directives/view-directive.js +11 -9
- package/src/router/directives/view-directive.spec.js +8 -9
- package/src/router/{common/common.html → glob/glob.html} +2 -3
- package/src/router/{common → glob}/glob.js +5 -0
- package/src/router/{common/common.test.js → glob/glob.test.js} +2 -1
- package/src/router/globals.js +1 -2
- package/src/router/path/path-utils.js +5 -0
- package/src/router/router-test-hashbang.html +45 -0
- package/src/router/services.spec.js +5 -6
- package/src/router/state/interface.ts +1 -1
- package/src/router/state/state-builder.js +3 -3
- package/src/router/state/state-builder.spec.js +1 -1
- package/src/router/state/state-object.js +1 -1
- package/src/router/state/state-registry.js +2 -3
- package/src/router/state/state-service.js +13 -10
- package/src/router/state/state.spec.js +23 -22
- package/src/router/state/state.test.js +1 -0
- package/src/router/state/views.js +1 -1
- package/src/router/state-filter.spec.js +1 -1
- package/src/router/state-filters.js +15 -11
- package/src/router/template-factory.js +5 -4
- package/src/router/template-factory.spec.js +1 -1
- package/src/router/transition/hook-registry.js +1 -1
- package/src/router/transition/transition-service.js +6 -5
- package/src/router/transition/transition.js +4 -4
- package/src/router/url/url-matcher.js +3 -3
- package/src/router/url/url-rule.js +1 -0
- package/src/router/url/url-rules.js +8 -5
- package/src/router/url/url-service.js +82 -85
- package/src/router/url/url-service.spec.js +55 -39
- package/src/router/url/url.test.js +1 -0
- package/src/router/view/view.js +4 -5
- package/src/router/view/view.spec.js +10 -12
- package/src/router/view/view.test.js +1 -0
- package/src/router/view-hook.spec.js +1 -1
- package/src/router/view-scroll.spec.js +1 -1
- package/src/services/anchor-scroll.html +2 -9
- package/src/services/anchor-scroll.js +6 -5
- package/src/{core → services/exception}/exception-handler.js +2 -2
- package/src/{core/error-handler.ts → services/exception/interface.ts} +1 -1
- package/src/services/http/http.js +11 -17
- package/src/services/http/http.spec.js +2 -7
- package/src/services/http/interface.ts +2 -2
- package/src/services/http/template-request.spec.js +1 -1
- package/src/services/http-backend/http-backend.js +53 -89
- package/src/services/http-backend/http-backend.spec.js +2 -6
- package/src/services/http-backend/http-backend.test.js +1 -0
- package/src/services/location/interface.ts +70 -0
- package/src/{core → services}/location/location.html +4 -1
- package/src/services/location/location.js +999 -0
- package/src/{core → services}/location/location.spec.js +911 -532
- package/src/{core → services}/location/location.test.js +2 -2
- package/src/services/log/log.spec.js +1 -1
- package/src/services/log/log.test.js +1 -0
- package/src/services/pubsub/pubsub.spec.js +1 -1
- package/src/{core → services}/sce/sce.html +1 -1
- package/src/{core → services}/sce/sce.js +14 -10
- package/src/{core → services}/sce/sce.md +2 -2
- package/src/{core → services}/sce/sce.spec.js +3 -4
- package/src/{core → services}/sce/sce.test.js +1 -1
- package/src/services/template-cache/interface.ts +8 -2
- package/src/services/template-cache/template-cache.js +3 -1
- package/src/services/template-cache/template-cache.spec.js +73 -1
- package/src/services/template-cache/template-cache.test.js +1 -0
- package/src/services/template-request.js +2 -1
- package/src/shared/cache.js +0 -2
- package/src/shared/common.js +0 -5
- package/src/shared/common.spec.js +1 -1
- package/src/shared/dom.js +10 -0
- package/src/shared/interface.ts +0 -4
- package/src/{router/common → shared}/queue.js +7 -7
- package/src/shared/shared.html +1 -0
- package/src/shared/shared.test.js +1 -0
- package/src/shared/test-utils.js +1 -0
- package/src/shared/url-utils/interface.ts +54 -0
- package/src/{core → shared}/url-utils/url-utils.html +4 -1
- package/src/{core → shared}/url-utils/url-utils.js +26 -47
- package/src/{core → shared}/url-utils/url-utils.spec.js +10 -17
- package/src/{core → shared}/url-utils/url-utils.test.js +1 -1
- package/src/shared/utils.js +60 -9
- package/src/shared/utils.spec.js +35 -1
- package/src/src.html +1 -2
- package/typedoc.json +0 -1
- package/utils/express.js +36 -2
- package/utils/version.cjs +23 -0
- package/@types/core/location/location.d.ts +0 -317
- package/@types/core/task-tracker-factory.d.ts +0 -76
- package/@types/core/url-utils/url-utils.d.ts +0 -56
- package/@types/router/state-provider.d.ts +0 -123
- package/@types/services/browser.d.ts +0 -101
- package/docs/static/typedoc/types/SwapInsertPosition.html +0 -2
- package/jsdoc.json +0 -22
- package/src/core/location/location.js +0 -984
- package/src/core/location/location.md +0 -114
- package/src/core/task-tracker-factory.js +0 -145
- package/src/core/url-utils/url-utils.md +0 -46
- package/src/directive/non-bindable/non-bindable.md +0 -17
- package/src/loader.spec.js +0 -169
- package/src/router/state-provider.js +0 -146
- package/src/services/browser.js +0 -212
- /package/@types/{loader.d.ts → angular.d.ts} +0 -0
- /package/src/router/{common → glob}/glob.spec.js +0 -0
- /package/src/{router/common → shared}/queue.spec.js +0 -0
|
@@ -12,46 +12,44 @@ import { stripLastPathElement } from "../../shared/strings.js";
|
|
|
12
12
|
import { UrlMatcher } from "./url-matcher.js";
|
|
13
13
|
import { ParamFactory } from "../params/param-factory.js";
|
|
14
14
|
import { UrlRuleFactory } from "./url-rule.js";
|
|
15
|
+
import { getBaseHref } from "../../shared/dom.js";
|
|
16
|
+
import { $injectTokens as $t, provider } from "../../injection-tokens.js";
|
|
15
17
|
|
|
16
18
|
/**
|
|
17
19
|
* API for URL management
|
|
18
20
|
*/
|
|
19
21
|
export class UrlService {
|
|
20
|
-
static $inject = [
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
];
|
|
22
|
+
static $inject = provider([
|
|
23
|
+
$t.$location,
|
|
24
|
+
$t.$state,
|
|
25
|
+
$t.$routerGlobals,
|
|
26
|
+
$t.$urlConfig,
|
|
27
|
+
]);
|
|
28
|
+
|
|
29
|
+
/** @type {import("../../services/location/location").Location} */
|
|
30
|
+
$location;
|
|
26
31
|
|
|
27
32
|
/**
|
|
28
|
-
* @param {import("../../
|
|
33
|
+
* @param {import("../../services/location/location").LocationProvider} $locationProvider
|
|
29
34
|
* @param {import("../../router/state/state-service.js").StateProvider} stateService
|
|
30
|
-
* @param globals
|
|
35
|
+
* @param {import("../../router/globals.js").RouterGlobals} globals
|
|
31
36
|
* @param {import("../../router/url/url-config.js").UrlConfigProvider} urlConfigProvider
|
|
32
37
|
*/
|
|
33
38
|
constructor($locationProvider, stateService, globals, urlConfigProvider) {
|
|
39
|
+
this.$locationProvider = $locationProvider;
|
|
34
40
|
this.stateService = stateService;
|
|
35
41
|
this.stateService.urlService = this; // circular wiring
|
|
36
|
-
this.$locationProvider = $locationProvider;
|
|
37
|
-
|
|
38
|
-
this.$location = undefined;
|
|
39
|
-
this.$browser = undefined;
|
|
40
42
|
|
|
41
43
|
/** Provides services related to the URL */
|
|
42
44
|
this.urlRuleFactory = new UrlRuleFactory(this, this.stateService, globals);
|
|
43
45
|
|
|
44
46
|
/**
|
|
45
47
|
* The nested [[UrlRules]] API for managing URL rules and rewrites
|
|
46
|
-
*
|
|
47
|
-
* See: [[UrlRules]] for details
|
|
48
48
|
* @type {UrlRules}
|
|
49
49
|
*/
|
|
50
50
|
this.rules = new UrlRules(this.urlRuleFactory);
|
|
51
51
|
/**
|
|
52
52
|
* The nested [[UrlConfig]] API to configure the URL and retrieve URL information
|
|
53
|
-
*
|
|
54
|
-
* See: [[UrlConfig]] for details
|
|
55
53
|
* @type {import("./url-config.js").UrlConfigProvider}
|
|
56
54
|
*/
|
|
57
55
|
this.config = urlConfigProvider;
|
|
@@ -59,72 +57,69 @@ export class UrlService {
|
|
|
59
57
|
/** Creates a new [[Param]] for a given location (DefType) */
|
|
60
58
|
this.paramFactory = new ParamFactory(this.config);
|
|
61
59
|
|
|
62
|
-
/**
|
|
63
|
-
* Gets the path part of the current url
|
|
64
|
-
*
|
|
65
|
-
* If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`
|
|
66
|
-
*
|
|
67
|
-
* @return the path portion of the url
|
|
68
|
-
*/
|
|
69
|
-
this.path = () => this.$location.path();
|
|
70
|
-
/**
|
|
71
|
-
* Gets the search part of the current url as an object
|
|
72
|
-
*
|
|
73
|
-
* If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`
|
|
74
|
-
*
|
|
75
|
-
* @return the search (query) portion of the url, as an object
|
|
76
|
-
*/
|
|
77
|
-
this.search = () => this.$location.search();
|
|
78
|
-
/**
|
|
79
|
-
* Gets the hash part of the current url
|
|
80
|
-
*
|
|
81
|
-
* If the current URL is `/some/path?query=value#anchor`, this returns `anchor`
|
|
82
|
-
*
|
|
83
|
-
* @return the hash (anchor) portion of the url
|
|
84
|
-
*/
|
|
85
|
-
this.hash = () => this.$location.hash();
|
|
86
|
-
|
|
87
60
|
this._urlListeners = [];
|
|
88
61
|
}
|
|
89
62
|
|
|
63
|
+
/**
|
|
64
|
+
* Gets the path part of the current url
|
|
65
|
+
*
|
|
66
|
+
* If the current URL is `/some/path?query=value#anchor`, this returns `/some/path`
|
|
67
|
+
*
|
|
68
|
+
* @return {string} the path portion of the url
|
|
69
|
+
*/
|
|
70
|
+
getPath() {
|
|
71
|
+
return this.$location.getPath();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Gets the search part of the current url as an object
|
|
76
|
+
*
|
|
77
|
+
* If the current URL is `/some/path?query=value#anchor`, this returns `{ query: 'value' }`
|
|
78
|
+
*
|
|
79
|
+
* @return {Object} the search (query) portion of the url, as an object
|
|
80
|
+
*/
|
|
81
|
+
getSearch() {
|
|
82
|
+
return this.$location.getSearch();
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Gets the hash part of the current url
|
|
86
|
+
*
|
|
87
|
+
* If the current URL is `/some/path?query=value#anchor`, this returns `anchor`
|
|
88
|
+
*
|
|
89
|
+
* @return {string} the hash (anchor) portion of the url
|
|
90
|
+
*/
|
|
91
|
+
getHash() {
|
|
92
|
+
return this.$location.getHash();
|
|
93
|
+
}
|
|
94
|
+
|
|
90
95
|
$get = [
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
"$rootScope",
|
|
96
|
+
$t.$location,
|
|
97
|
+
$t.$rootScope,
|
|
94
98
|
/**
|
|
95
99
|
*
|
|
96
|
-
* @param {import('../../
|
|
97
|
-
* @param {import('../../services/browser.js').Browser} $browser
|
|
100
|
+
* @param {import('../../services/location/location.js').Location} $location
|
|
98
101
|
* @param {import('../../core/scope/scope.js').Scope} $rootScope
|
|
99
102
|
* @returns {UrlService}
|
|
100
103
|
*/
|
|
101
|
-
($location, $
|
|
104
|
+
($location, $rootScope) => {
|
|
102
105
|
this.$location = $location;
|
|
103
|
-
this.$browser = $browser;
|
|
104
106
|
$rootScope.$on("$locationChangeSuccess", (evt) => {
|
|
105
107
|
this._urlListeners.forEach((fn) => {
|
|
106
108
|
fn(evt);
|
|
107
109
|
});
|
|
108
110
|
});
|
|
109
|
-
this.listen();
|
|
111
|
+
this.listen(true);
|
|
110
112
|
return this;
|
|
111
113
|
},
|
|
112
114
|
];
|
|
113
115
|
|
|
114
116
|
/**
|
|
115
|
-
* @returns {
|
|
117
|
+
* @returns {string}
|
|
116
118
|
*/
|
|
117
|
-
html5Mode() {
|
|
118
|
-
return (
|
|
119
|
-
this.$locationProvider.getHtml5Mode().enabled &&
|
|
120
|
-
typeof history !== "undefined"
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
|
|
124
119
|
baseHref() {
|
|
125
120
|
return (
|
|
126
121
|
this._baseHref ||
|
|
127
|
-
(this._baseHref =
|
|
122
|
+
(this._baseHref = getBaseHref() || window.location.pathname)
|
|
128
123
|
);
|
|
129
124
|
}
|
|
130
125
|
|
|
@@ -175,20 +170,18 @@ export class UrlService {
|
|
|
175
170
|
* @param {string} [newUrl] The new value for the URL.
|
|
176
171
|
* This url should reflect only the new internal [[path]], [[search]], and [[hash]] values.
|
|
177
172
|
* It should not include the protocol, site, port, or base path of an absolute HREF.
|
|
178
|
-
* @param {boolean} [replace] When true, replaces the current history entry (instead of appending it) with this new url
|
|
179
173
|
* @param {any} [state] The history's state object, i.e., pushState (if the LocationServices implementation supports it)
|
|
180
174
|
*
|
|
181
175
|
* @return the url (after potentially being processed)
|
|
182
176
|
*/
|
|
183
|
-
url(newUrl,
|
|
184
|
-
if (isDefined(newUrl)) this.$location.
|
|
185
|
-
if (
|
|
186
|
-
|
|
187
|
-
return this.$location.url();
|
|
177
|
+
url(newUrl, state) {
|
|
178
|
+
if (isDefined(newUrl)) this.$location.setUrl(newUrl);
|
|
179
|
+
if (state) this.$location.setState(state);
|
|
180
|
+
return this.$location.getUrl();
|
|
188
181
|
}
|
|
189
182
|
|
|
190
183
|
/**
|
|
191
|
-
* @
|
|
184
|
+
* @private
|
|
192
185
|
*
|
|
193
186
|
* Registers a low level url change handler
|
|
194
187
|
*
|
|
@@ -199,8 +192,8 @@ export class UrlService {
|
|
|
199
192
|
* let deregisterFn = locationServices.onChange((evt) => console.log("url change", evt));
|
|
200
193
|
* ```
|
|
201
194
|
*
|
|
202
|
-
* @param callback a function that will be called when the url is changing
|
|
203
|
-
* @return a function that de-registers the callback
|
|
195
|
+
* @param {Function} callback a function that will be called when the url is changing
|
|
196
|
+
* @return {Function} a function that de-registers the callback
|
|
204
197
|
*/
|
|
205
198
|
onChange(callback) {
|
|
206
199
|
this._urlListeners.push(callback);
|
|
@@ -208,13 +201,21 @@ export class UrlService {
|
|
|
208
201
|
}
|
|
209
202
|
|
|
210
203
|
/**
|
|
211
|
-
* Gets the current URL parts
|
|
204
|
+
* Gets the current URL parts.
|
|
205
|
+
*
|
|
206
|
+
* Returns an object with the `path`, `search`, and `hash` components
|
|
207
|
+
* of the current browser location.
|
|
212
208
|
*
|
|
213
|
-
*
|
|
209
|
+
* @returns {import("../../services/location/interface.ts").UrlParts} The current URL's path, search, and hash.
|
|
214
210
|
*/
|
|
215
211
|
parts() {
|
|
216
|
-
return {
|
|
212
|
+
return {
|
|
213
|
+
path: this.$location.getPath(),
|
|
214
|
+
search: this.$location.getSearch(),
|
|
215
|
+
hash: this.$location.getHash(),
|
|
216
|
+
};
|
|
217
217
|
}
|
|
218
|
+
|
|
218
219
|
/**
|
|
219
220
|
* Activates the best rule for the current URL
|
|
220
221
|
*
|
|
@@ -238,16 +239,16 @@ export class UrlService {
|
|
|
238
239
|
if (evt && evt.defaultPrevented) return;
|
|
239
240
|
const stateService = this.stateService;
|
|
240
241
|
const url = {
|
|
241
|
-
path: this.
|
|
242
|
-
search: this.
|
|
243
|
-
hash: this.
|
|
242
|
+
path: this.$location.getPath(),
|
|
243
|
+
search: this.$location.getSearch(),
|
|
244
|
+
hash: this.$location.getHash(),
|
|
244
245
|
};
|
|
245
246
|
/**
|
|
246
247
|
* @type {*}
|
|
247
248
|
*/
|
|
248
249
|
const best = this.match(url);
|
|
249
250
|
const applyResult = pattern([
|
|
250
|
-
[isString, (newurl) => this.url(newurl
|
|
251
|
+
[isString, (newurl) => this.url(newurl)],
|
|
251
252
|
[
|
|
252
253
|
TargetState.isDef,
|
|
253
254
|
(def) => stateService.go(def.state, def.params, def.options),
|
|
@@ -280,7 +281,7 @@ export class UrlService {
|
|
|
280
281
|
* });
|
|
281
282
|
* ```
|
|
282
283
|
*
|
|
283
|
-
* @param enabled `true` or `false` to start or stop listening to URL changes
|
|
284
|
+
* @param {boolean} enabled `true` or `false` to start or stop listening to URL changes
|
|
284
285
|
*/
|
|
285
286
|
listen(enabled) {
|
|
286
287
|
if (enabled === false) {
|
|
@@ -358,7 +359,7 @@ export class UrlService {
|
|
|
358
359
|
* ```js
|
|
359
360
|
* matcher = $umf.compile("/about/:person");
|
|
360
361
|
* params = { person: "bob" };
|
|
361
|
-
* $bob = $
|
|
362
|
+
* $bob = $url.href(matcher, params);
|
|
362
363
|
* // $bob == "/about/bob";
|
|
363
364
|
* ```
|
|
364
365
|
*
|
|
@@ -374,22 +375,18 @@ export class UrlService {
|
|
|
374
375
|
let url = urlMatcher.format(params);
|
|
375
376
|
if (url == null) return null;
|
|
376
377
|
options = options || { absolute: false };
|
|
377
|
-
const isHtml5 = this.
|
|
378
|
-
if (!isHtml5
|
|
379
|
-
url = "#" + this.$locationProvider.
|
|
378
|
+
const isHtml5 = this.$locationProvider.html5ModeConf.enabled;
|
|
379
|
+
if (!isHtml5) {
|
|
380
|
+
url = "#" + this.$locationProvider.hashPrefixConf + url;
|
|
380
381
|
}
|
|
381
382
|
url = appendBasePath(url, isHtml5, options.absolute, this.baseHref());
|
|
382
383
|
if (!options.absolute || !url) {
|
|
383
384
|
return url;
|
|
384
385
|
}
|
|
385
386
|
const slash = !isHtml5 && url ? "/" : "";
|
|
386
|
-
const cfgPort = this.$location.port();
|
|
387
|
-
const port = cfgPort === 80 || cfgPort === 443 ? "" : ":" + cfgPort;
|
|
388
387
|
return [
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
this.$location.host(),
|
|
392
|
-
port,
|
|
388
|
+
`${window.location.protocol}//`,
|
|
389
|
+
window.location.host,
|
|
393
390
|
slash,
|
|
394
391
|
url,
|
|
395
392
|
].join("");
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { dealoc } from "../../shared/dom.js";
|
|
2
|
-
import { Angular } from "../../
|
|
2
|
+
import { Angular } from "../../angular.js";
|
|
3
3
|
import { map, find } from "../../shared/common.js";
|
|
4
4
|
|
|
5
5
|
describe("UrlMatcher", () => {
|
|
@@ -15,8 +15,8 @@ describe("UrlMatcher", () => {
|
|
|
15
15
|
"defaultModule",
|
|
16
16
|
]);
|
|
17
17
|
|
|
18
|
-
$injector.invoke(($
|
|
19
|
-
$url = $
|
|
18
|
+
$injector.invoke((_$url_, _$location_) => {
|
|
19
|
+
$url = _$url_;
|
|
20
20
|
$location = _$location_;
|
|
21
21
|
});
|
|
22
22
|
});
|
|
@@ -359,7 +359,7 @@ describe("UrlMatcher", () => {
|
|
|
359
359
|
expect(matcher).not.toBe(base);
|
|
360
360
|
});
|
|
361
361
|
|
|
362
|
-
it("should respect $
|
|
362
|
+
it("should respect $urlProvider.strictMode", () => {
|
|
363
363
|
let m = $url.compile("/");
|
|
364
364
|
$url.config.strictMode(false);
|
|
365
365
|
m = m.append($url.compile("foo"));
|
|
@@ -367,7 +367,7 @@ describe("UrlMatcher", () => {
|
|
|
367
367
|
expect(m.exec("/foo/")).toEqual({});
|
|
368
368
|
});
|
|
369
369
|
|
|
370
|
-
it("should respect $
|
|
370
|
+
it("should respect $urlProvider.caseInsensitive", () => {
|
|
371
371
|
let m = $url.compile("/");
|
|
372
372
|
$url.config.caseInsensitive(true);
|
|
373
373
|
m = m.append($url.compile("foo"));
|
|
@@ -375,7 +375,7 @@ describe("UrlMatcher", () => {
|
|
|
375
375
|
expect(m.exec("/FOO")).toEqual({});
|
|
376
376
|
});
|
|
377
377
|
|
|
378
|
-
it("should respect $
|
|
378
|
+
it("should respect $urlProvider.caseInsensitive when validating regex params", () => {
|
|
379
379
|
let m = $url.compile("/");
|
|
380
380
|
$url.config.caseInsensitive(true);
|
|
381
381
|
m = m.append($url.compile("foo/{param:bar}"));
|
|
@@ -441,15 +441,21 @@ describe("UrlMatcher", () => {
|
|
|
441
441
|
});
|
|
442
442
|
|
|
443
443
|
$url.url("/foo");
|
|
444
|
-
expect(m.exec($url.
|
|
444
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
445
|
+
param1: undefined,
|
|
446
|
+
});
|
|
445
447
|
$url.url("/foo?param1=bar");
|
|
446
|
-
expect(m.exec($url.
|
|
448
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
449
|
+
param1: "bar",
|
|
450
|
+
}); // auto unwrap
|
|
447
451
|
$url.url("/foo?param1=");
|
|
448
|
-
expect(m.exec($url.
|
|
452
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
453
|
+
param1: undefined,
|
|
454
|
+
});
|
|
449
455
|
$url.url("/foo?param1=bar¶m1=baz");
|
|
450
|
-
if (Array.isArray($url.
|
|
456
|
+
if (Array.isArray($url.getSearch()))
|
|
451
457
|
// conditional for angular 1.0.8
|
|
452
|
-
expect(m.exec($url.
|
|
458
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
453
459
|
param1: ["bar", "baz"],
|
|
454
460
|
});
|
|
455
461
|
|
|
@@ -485,15 +491,21 @@ describe("UrlMatcher", () => {
|
|
|
485
491
|
});
|
|
486
492
|
|
|
487
493
|
$url.url("/foo");
|
|
488
|
-
expect(m.exec($url.
|
|
494
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
495
|
+
param1: undefined,
|
|
496
|
+
});
|
|
489
497
|
$url.url("/foo?param1=");
|
|
490
|
-
expect(m.exec($url.
|
|
498
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
499
|
+
param1: undefined,
|
|
500
|
+
});
|
|
491
501
|
$url.url("/foo?param1=bar");
|
|
492
|
-
expect(m.exec($url.
|
|
502
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
503
|
+
param1: ["bar"],
|
|
504
|
+
});
|
|
493
505
|
$url.url("/foo?param1=bar¶m1=baz");
|
|
494
|
-
if (Array.isArray($url.
|
|
506
|
+
if (Array.isArray($url.getSearch()))
|
|
495
507
|
// conditional for angular 1.0.8
|
|
496
|
-
expect(m.exec($url.
|
|
508
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
497
509
|
param1: ["bar", "baz"],
|
|
498
510
|
});
|
|
499
511
|
|
|
@@ -512,16 +524,16 @@ describe("UrlMatcher", () => {
|
|
|
512
524
|
expect(m.exec("/foo")).toEqual({ "param1[]": undefined });
|
|
513
525
|
|
|
514
526
|
$url.url("/foo?param1[]=bar");
|
|
515
|
-
expect(m.exec($url.
|
|
527
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
516
528
|
"param1[]": ["bar"],
|
|
517
529
|
});
|
|
518
530
|
expect(m.format({ "param1[]": "bar" })).toBe("/foo?param1[]=bar");
|
|
519
531
|
expect(m.format({ "param1[]": ["bar"] })).toBe("/foo?param1[]=bar");
|
|
520
532
|
|
|
521
533
|
$url.url("/foo?param1[]=bar¶m1[]=baz");
|
|
522
|
-
if (Array.isArray($url.
|
|
534
|
+
if (Array.isArray($url.getSearch()))
|
|
523
535
|
// conditional for angular 1.0.8
|
|
524
|
-
expect(m.exec($url.
|
|
536
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
525
537
|
"param1[]": ["bar", "baz"],
|
|
526
538
|
});
|
|
527
539
|
expect(m.format({ "param1[]": ["bar", "baz"] })).toBe(
|
|
@@ -575,14 +587,16 @@ describe("UrlMatcher", () => {
|
|
|
575
587
|
expect(m.exec("/foo")).toEqual({ param1: undefined });
|
|
576
588
|
|
|
577
589
|
$url.url("/foo?param1=bar");
|
|
578
|
-
expect(m.exec($url.
|
|
590
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
591
|
+
param1: "bar",
|
|
592
|
+
});
|
|
579
593
|
expect(m.format({ param1: "bar" })).toBe("/foo?param1=bar");
|
|
580
594
|
expect(m.format({ param1: ["bar"] })).toBe("/foo?param1=bar");
|
|
581
595
|
|
|
582
596
|
$url.url("/foo?param1=bar¶m1=baz");
|
|
583
|
-
if (Array.isArray($url.
|
|
597
|
+
if (Array.isArray($url.getSearch()))
|
|
584
598
|
// conditional for angular 1.0.8
|
|
585
|
-
expect(m.exec($url.
|
|
599
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
586
600
|
param1: "bar,baz",
|
|
587
601
|
}); // coerced to string
|
|
588
602
|
expect(m.format({ param1: ["bar", "baz"] })).toBe(
|
|
@@ -610,7 +624,9 @@ describe("UrlMatcher", () => {
|
|
|
610
624
|
expect(m.exec("/foo/")).toEqual({ param1: undefined });
|
|
611
625
|
expect(m.exec("/foo/bar")).toEqual({ param1: ["bar"] });
|
|
612
626
|
$url.url("/foo/bar-baz");
|
|
613
|
-
expect(m.exec($location.
|
|
627
|
+
expect(m.exec($location.getUrl())).toEqual({
|
|
628
|
+
param1: ["bar", "baz"],
|
|
629
|
+
});
|
|
614
630
|
|
|
615
631
|
expect(m.format({ param1: [] })).toEqual("/foo/");
|
|
616
632
|
expect(m.format({ param1: ["bar"] })).toEqual("/foo/bar");
|
|
@@ -633,15 +649,15 @@ describe("UrlMatcher", () => {
|
|
|
633
649
|
expect(m.exec("/foo/1-2")).toEqual({ "param1[]": ["1", "2"] });
|
|
634
650
|
|
|
635
651
|
$url.url("/foo/");
|
|
636
|
-
expect(m.exec($url.
|
|
652
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
637
653
|
"param1[]": undefined,
|
|
638
654
|
});
|
|
639
655
|
$url.url("/foo/bar");
|
|
640
|
-
expect(m.exec($url.
|
|
656
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
641
657
|
"param1[]": ["bar"],
|
|
642
658
|
});
|
|
643
659
|
$url.url("/foo/bar-baz");
|
|
644
|
-
expect(m.exec($url.
|
|
660
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
645
661
|
"param1[]": ["bar", "baz"],
|
|
646
662
|
});
|
|
647
663
|
|
|
@@ -685,19 +701,19 @@ describe("UrlMatcher", () => {
|
|
|
685
701
|
|
|
686
702
|
// check that we handle $location.url decodes correctly
|
|
687
703
|
$url.url(m.format({ "param1[]": ["bar-", "-baz"] }));
|
|
688
|
-
expect(m.exec($url.
|
|
704
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
689
705
|
"param1[]": ["bar-", "-baz"],
|
|
690
706
|
});
|
|
691
707
|
|
|
692
708
|
// check that we handle $location.url decodes correctly for multiple hyphens
|
|
693
709
|
$url.url(m.format({ "param1[]": ["bar-bar-bar-", "-baz-baz-baz"] }));
|
|
694
|
-
expect(m.exec($url.
|
|
710
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
695
711
|
"param1[]": ["bar-bar-bar-", "-baz-baz-baz"],
|
|
696
712
|
});
|
|
697
713
|
|
|
698
714
|
// check that pre-encoded values are passed correctly
|
|
699
715
|
$url.url(m.format({ "param1[]": ["%2C%20%5C%2C", "-baz"] }));
|
|
700
|
-
expect(m.exec($url.
|
|
716
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
701
717
|
"param1[]": ["%2C%20%5C%2C", "-baz"],
|
|
702
718
|
});
|
|
703
719
|
});
|
|
@@ -708,9 +724,9 @@ describe("UrlMatcher", () => {
|
|
|
708
724
|
// describe(".type()", ( ) => {
|
|
709
725
|
// let $url;
|
|
710
726
|
// beforeEach(
|
|
711
|
-
// module("ng.router.util", function ($
|
|
712
|
-
// $url = $
|
|
713
|
-
// $
|
|
727
|
+
// module("ng.router.util", function ($urlProvider) {
|
|
728
|
+
// $url = $urlProvider;
|
|
729
|
+
// $urlProvider.type("myType", {}, ( ) => {
|
|
714
730
|
// return {
|
|
715
731
|
// decode: ( ) => {
|
|
716
732
|
// return { status: "decoded" };
|
|
@@ -744,9 +760,9 @@ describe("UrlMatcher", () => {
|
|
|
744
760
|
// let $url;
|
|
745
761
|
// let $url;
|
|
746
762
|
|
|
747
|
-
// beforeEach(function ($urlMatcherFactory, $
|
|
763
|
+
// beforeEach(function ($urlMatcherFactory, $url) {
|
|
748
764
|
// $url = $urlMatcherFactory;
|
|
749
|
-
// $url = $
|
|
765
|
+
// $url = $url;
|
|
750
766
|
// });
|
|
751
767
|
|
|
752
768
|
// it("compiles patterns", ( ) => {
|
|
@@ -903,13 +919,13 @@ describe("UrlMatcher", () => {
|
|
|
903
919
|
// const m = $url.compile("/foo/{fooid:int}?{bar:int}");
|
|
904
920
|
|
|
905
921
|
// $url.url("/foo/5?bar=1");
|
|
906
|
-
// expect(m.exec($url.
|
|
922
|
+
// expect(m.exec($url.getPath(), $url.getSearch())).toEqual({ fooid: 5, bar: 1 });
|
|
907
923
|
// expect(m.format({ fooid: 5, bar: 1 })).toEqual("/foo/5?bar=1");
|
|
908
924
|
|
|
909
925
|
// $url.url("/foo/5?bar=1&bar=2&bar=3");
|
|
910
|
-
// if (Array.isArray($url.
|
|
926
|
+
// if (Array.isArray($url.getSearch()))
|
|
911
927
|
// // conditional for angular 1.0.8
|
|
912
|
-
// expect(m.exec($url.
|
|
928
|
+
// expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
913
929
|
// fooid: 5,
|
|
914
930
|
// bar: [1, 2, 3],
|
|
915
931
|
// });
|
|
@@ -937,11 +953,11 @@ describe("UrlMatcher", () => {
|
|
|
937
953
|
// });
|
|
938
954
|
|
|
939
955
|
// $url.url("/foo?bar=fox");
|
|
940
|
-
// expect(m.exec($url.
|
|
956
|
+
// expect(m.exec($url.getPath(), $url.getSearch())).toEqual({ bar: ["fox"] });
|
|
941
957
|
// expect(m.format({ bar: ["fox"] })).toEqual("/foo?bar=fox");
|
|
942
958
|
|
|
943
959
|
// $url.url("/foo?bar=quick-brown-fox");
|
|
944
|
-
// expect(m.exec($url.
|
|
960
|
+
// expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
945
961
|
// bar: ["quick", "brown", "fox"],
|
|
946
962
|
// });
|
|
947
963
|
// expect(m.format({ bar: ["quick", "brown", "fox"] })).toEqual(
|
|
@@ -5,6 +5,7 @@ const TEST_URL = "src/router/url/url.html";
|
|
|
5
5
|
test("unit tests contain no errors", async ({ page }) => {
|
|
6
6
|
await page.goto(TEST_URL);
|
|
7
7
|
await page.content();
|
|
8
|
+
await page.waitForTimeout(1000);
|
|
8
9
|
await expect(page.locator(".jasmine-overall-result")).toHaveText(
|
|
9
10
|
/0 failures/,
|
|
10
11
|
);
|
package/src/router/view/view.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import { equals,
|
|
1
|
+
import { applyPairs, equals, find, removeFrom } from "../../shared/common.js";
|
|
2
2
|
import { curry } from "../../shared/hof.js";
|
|
3
3
|
import { trace } from "../common/trace.js";
|
|
4
4
|
import { getViewConfigFactory } from "../state/views.js";
|
|
5
|
+
|
|
5
6
|
/**
|
|
6
7
|
* The View service
|
|
7
8
|
*
|
|
@@ -26,8 +27,7 @@ export class ViewService {
|
|
|
26
27
|
this._listeners = [];
|
|
27
28
|
this._pluginapi = {
|
|
28
29
|
_registeredUIView: (id) => {
|
|
29
|
-
|
|
30
|
-
return res;
|
|
30
|
+
return find(this._ngViews, (view) => view.id === id);
|
|
31
31
|
},
|
|
32
32
|
_registeredUIViews: () => this._ngViews,
|
|
33
33
|
_activeViewConfigs: () => this._viewConfigs,
|
|
@@ -65,8 +65,7 @@ export class ViewService {
|
|
|
65
65
|
throw new Error(
|
|
66
66
|
"ViewService: No view config factory registered for type " + decl.$type,
|
|
67
67
|
);
|
|
68
|
-
|
|
69
|
-
return cfgs;
|
|
68
|
+
return cfgFactory(path, decl);
|
|
70
69
|
}
|
|
71
70
|
/**
|
|
72
71
|
* Deactivates a ViewConfig.
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { dealoc } from "../../shared/dom.js";
|
|
2
|
-
import { Angular } from "../../
|
|
2
|
+
import { Angular } from "../../angular.js";
|
|
3
3
|
import { curry } from "../../shared/hof.js";
|
|
4
4
|
import { StateMatcher } from "../state/state-matcher.js";
|
|
5
5
|
import { StateBuilder } from "../state/state-builder.js";
|
|
@@ -17,7 +17,7 @@ describe("view", () => {
|
|
|
17
17
|
$injector,
|
|
18
18
|
elem = document.getElementById("app"),
|
|
19
19
|
$controllerProvider,
|
|
20
|
-
$
|
|
20
|
+
$urlProvider,
|
|
21
21
|
$view,
|
|
22
22
|
root,
|
|
23
23
|
states;
|
|
@@ -27,15 +27,13 @@ describe("view", () => {
|
|
|
27
27
|
window.angular = new Angular();
|
|
28
28
|
window.angular
|
|
29
29
|
.module("defaultModule", [])
|
|
30
|
-
.config(
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
},
|
|
38
|
-
);
|
|
30
|
+
.config(function (_$provide_, _$controllerProvider_, _$urlProvider_) {
|
|
31
|
+
_$provide_.factory("foo", () => {
|
|
32
|
+
return "Foo";
|
|
33
|
+
});
|
|
34
|
+
$controllerProvider = _$controllerProvider_;
|
|
35
|
+
$urlProvider = _$urlProvider_;
|
|
36
|
+
});
|
|
39
37
|
$injector = window.angular.bootstrap(document.getElementById("app"), [
|
|
40
38
|
"defaultModule",
|
|
41
39
|
]);
|
|
@@ -46,7 +44,7 @@ describe("view", () => {
|
|
|
46
44
|
$injector = _$injector_;
|
|
47
45
|
states = {};
|
|
48
46
|
const matcher = new StateMatcher(states);
|
|
49
|
-
const stateBuilder = new StateBuilder(matcher, $
|
|
47
|
+
const stateBuilder = new StateBuilder(matcher, $urlProvider);
|
|
50
48
|
stateBuilder.builder("views", ng1ViewsBuilder);
|
|
51
49
|
register = registerState(states, stateBuilder);
|
|
52
50
|
root = register({ name: "" });
|
|
@@ -5,6 +5,7 @@ const TEST_URL = "src/router/view/view.html";
|
|
|
5
5
|
test("unit tests contain no errors", async ({ page }) => {
|
|
6
6
|
await page.goto(TEST_URL);
|
|
7
7
|
await page.content();
|
|
8
|
+
await page.waitForTimeout(1000);
|
|
8
9
|
await expect(page.locator(".jasmine-overall-result")).toHaveText(
|
|
9
10
|
/0 failures/,
|
|
10
11
|
);
|