@angular-wave/angular.ts 0.7.8 → 0.8.1
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/{loader.d.ts → angular.d.ts} +3 -3
- package/@types/core/di/ng-module.d.ts +61 -25
- package/@types/core/parse/parse.d.ts +6 -7
- package/@types/directive/bind/bind.d.ts +2 -1
- package/@types/index.d.ts +1 -1
- package/@types/interface.d.ts +4 -2
- package/@types/{public.d.ts → ng.d.ts} +2 -2
- package/@types/router/directives/state-directives.d.ts +2 -2
- package/@types/router/directives/view-directive.d.ts +1 -1
- package/@types/router/params/param-type.d.ts +0 -1
- package/@types/router/path/path-utils.d.ts +8 -11
- package/@types/router/{globals.d.ts → router.d.ts} +2 -2
- 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 +2 -2
- package/@types/router/state/state-service.d.ts +14 -16
- package/@types/router/state-filters.d.ts +24 -2
- package/@types/router/transition/transition-service.d.ts +3 -3
- package/@types/router/transition/transition.d.ts +16 -19
- package/@types/router/url/url-matcher.d.ts +3 -4
- package/@types/router/url/url-rule.d.ts +14 -4
- package/@types/router/url/url-rules.d.ts +26 -6
- package/@types/router/url/url-service.d.ts +28 -38
- package/@types/services/http/http.d.ts +48 -1
- package/@types/services/http-backend/http-backend.d.ts +48 -35
- package/@types/services/location/interface.d.ts +55 -0
- package/@types/services/location/location.d.ts +225 -252
- package/@types/shared/common.d.ts +0 -2
- package/@types/shared/hof.d.ts +0 -6
- package/@types/shared/interface.d.ts +0 -4
- package/@types/{router/common → shared}/queue.d.ts +2 -2
- package/@types/shared/url-utils/interface.d.ts +0 -1
- package/@types/shared/url-utils/url-utils.d.ts +0 -5
- package/@types/shared/utils.d.ts +29 -6
- package/CHANGELOG.md +0 -72
- package/CONTRIBUTING.md +0 -1
- package/DEVELOPERS.md +0 -1
- package/Makefile +6 -3
- package/TRIAGING.md +0 -1
- package/dist/angular-ts.esm.js +1048 -1150
- package/dist/angular-ts.umd.js +1048 -1150
- 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 +1 -1
- 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 +3 -3
- 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 +2 -2
- package/docs/content/docs/service/location.md +57 -0
- package/docs/content/docs/service/url.md +5 -0
- package/docs/layouts/partials/hooks/head-end.html +1 -1
- 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-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 +3 -3
- package/docs/static/typedoc/index.html +1 -1
- package/docs/static/typedoc/interfaces/DefaultPorts.html +5 -0
- package/docs/static/typedoc/interfaces/Html5Mode.html +23 -0
- package/docs/static/typedoc/interfaces/Provider.html +2 -1
- package/docs/static/typedoc/interfaces/UrlParts.html +9 -0
- package/docs/static/typedoc/types/AnnotatedFactory.html +1 -1
- package/docs/static/typedoc/types/Expression.html +1 -1
- package/docs/static/typedoc/types/Injectable.html +4 -1
- package/docs/static/typedoc/types/InjectableFactory.html +1 -4
- package/docs/static/typedoc/types/UrlChangeListener.html +5 -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/package.json +2 -2
- package/src/{loader.js → angular.js} +11 -11
- package/src/angular.spec.js +189 -21
- package/src/animations/animate-css.js +17 -18
- package/src/animations/animate.spec.js +1 -1
- package/src/animations/shared.js +2 -3
- package/src/binding.spec.js +1 -1
- package/src/core/compile/compile.js +4 -7
- 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 +7 -8
- 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 +3 -6
- package/src/core/di/ng-module.js +26 -21
- package/src/core/filter/filter.js +1 -1
- 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/lexer/lexer.spec.js +1 -1
- package/src/core/parse/parse.js +150 -146
- package/src/core/parse/parse.spec.js +46 -46
- package/src/core/prop.spec.js +1 -1
- package/src/core/root-element.spec.js +1 -1
- package/src/core/scope/scope.js +10 -11
- 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.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 +6 -6
- 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 +1 -1
- package/src/directive/http/form-test.html +18 -0
- package/src/directive/http/get.spec.js +1 -1
- package/src/directive/http/http.js +12 -3
- package/src/directive/http/post.spec.js +504 -9
- package/src/directive/http/put.spec.js +1 -1
- package/src/directive/if/if.spec.js +1 -1
- 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 +13 -15
- package/src/directive/input/input.spec.js +1 -2
- package/src/directive/input/input.test.js +1 -0
- package/src/directive/messages/messages.md +0 -4
- package/src/directive/messages/messages.spec.js +1 -1
- package/src/directive/messages/messages.test.js +1 -0
- package/src/directive/model/model.js +13 -13
- 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.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.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.spec.js +1 -1
- 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.spec.js +1 -1
- package/src/directive/switch/switch.test.js +1 -0
- 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 +7 -3
- package/src/interface.ts +4 -3
- package/src/loader.md +0 -155
- package/src/{public.js → ng.js} +11 -12
- package/src/{public.spec.js → ng.spec.js} +2 -2
- package/src/router/directives/state-directives.js +5 -5
- package/src/router/directives/state-directives.spec.js +8 -7
- package/src/router/directives/view-directive.js +7 -13
- package/src/router/directives/view-directive.spec.js +22 -23
- package/src/router/{common/common.html → glob/glob.html} +2 -3
- package/src/router/{common/common.test.js → glob/glob.test.js} +2 -1
- package/src/router/params/param-type.js +0 -1
- package/src/router/params/param.js +1 -1
- package/src/router/path/path-utils.js +5 -0
- package/src/router/router-test-hashbang.html +45 -0
- package/src/router/{globals.js → router.js} +2 -2
- package/src/router/services.spec.js +8 -9
- 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 +4 -4
- package/src/router/state/state-service.js +14 -14
- 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 +13 -9
- package/src/router/template-factory.js +5 -4
- package/src/router/template-factory.spec.js +7 -7
- package/src/router/transition/hook-registry.js +1 -1
- package/src/router/transition/transition-service.js +7 -6
- package/src/router/transition/transition.js +6 -6
- package/src/router/url/url-matcher.js +12 -14
- package/src/router/url/url-rule.js +8 -2
- package/src/router/url/url-rules.js +8 -5
- package/src/router/url/url-service.js +80 -76
- package/src/router/url/url-service.spec.js +61 -78
- 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.js +3 -1
- package/src/router/view-scroll.spec.js +12 -12
- package/src/services/anchor-scroll.html +2 -2
- package/src/services/anchor-scroll.js +5 -4
- package/src/services/http/http.js +9 -4
- package/src/services/http/http.spec.js +2 -7
- package/src/services/http/template-request.spec.js +1 -1
- package/src/services/http-backend/http-backend.js +51 -77
- package/src/services/http-backend/http-backend.spec.js +1 -2
- package/src/services/http-backend/http-backend.test.js +1 -0
- package/src/services/location/interface.ts +62 -0
- package/src/services/location/location.js +439 -519
- package/src/services/location/location.spec.js +915 -530
- package/src/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/services/sce/sce.js +5 -7
- package/src/services/sce/sce.md +2 -2
- package/src/services/sce/sce.spec.js +1 -1
- package/src/services/template-cache/template-cache.spec.js +1 -1
- package/src/services/template-cache/template-cache.test.js +1 -0
- package/src/shared/common.js +5 -10
- package/src/shared/common.spec.js +1 -1
- package/src/shared/hof.js +0 -14
- 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/url-utils/interface.ts +0 -2
- package/src/shared/url-utils/url-utils.js +6 -30
- package/src/shared/url-utils/url-utils.spec.js +10 -9
- package/src/shared/utils.js +32 -9
- package/src/shared/utils.spec.js +35 -1
- package/src/src.html +1 -2
- package/typedoc.json +0 -1
- package/utils/express.js +27 -1
- package/utils/version.cjs +23 -0
- package/@types/router/state-provider.d.ts +0 -123
- 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/location/location.md +0 -114
- package/src/shared/url-utils/url-utils.md +0 -46
- /package/@types/router/{common → glob}/glob.d.ts +0 -0
- /package/src/router/{common → glob}/glob.js +0 -0
- /package/src/router/{common → glob}/glob.spec.js +0 -0
- /package/src/{router/common → shared}/queue.spec.js +0 -0
|
@@ -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", () => {
|
|
@@ -10,13 +10,18 @@ describe("UrlMatcher", () => {
|
|
|
10
10
|
beforeEach(() => {
|
|
11
11
|
dealoc(document.getElementById("app"));
|
|
12
12
|
window.angular = new Angular();
|
|
13
|
-
window.angular
|
|
13
|
+
window.angular
|
|
14
|
+
.module("defaultModule", [])
|
|
15
|
+
.config(
|
|
16
|
+
($locationProvider) =>
|
|
17
|
+
($locationProvider.html5ModeConf.enabled = false),
|
|
18
|
+
);
|
|
14
19
|
$injector = window.angular.bootstrap(document.getElementById("app"), [
|
|
15
20
|
"defaultModule",
|
|
16
21
|
]);
|
|
17
22
|
|
|
18
|
-
$injector.invoke(($
|
|
19
|
-
$url = $
|
|
23
|
+
$injector.invoke((_$url_, _$location_) => {
|
|
24
|
+
$url = _$url_;
|
|
20
25
|
$location = _$location_;
|
|
21
26
|
});
|
|
22
27
|
});
|
|
@@ -80,44 +85,6 @@ describe("UrlMatcher", () => {
|
|
|
80
85
|
expect(matcher.format(array)).toBe("/?foo=bar&foo=baz");
|
|
81
86
|
});
|
|
82
87
|
|
|
83
|
-
it("should encode and decode slashes in parameter values as ~2F", () => {
|
|
84
|
-
const matcher1 = $url.compile("/:foo");
|
|
85
|
-
|
|
86
|
-
expect(matcher1.format({ foo: "/" })).toBe("/~2F");
|
|
87
|
-
expect(matcher1.format({ foo: "//" })).toBe("/~2F~2F");
|
|
88
|
-
|
|
89
|
-
expect(matcher1.exec("/")).toBeTruthy();
|
|
90
|
-
expect(matcher1.exec("//")).not.toBeTruthy();
|
|
91
|
-
|
|
92
|
-
expect(matcher1.exec("/").foo).toBe("");
|
|
93
|
-
expect(matcher1.exec("/123").foo).toBe("123");
|
|
94
|
-
expect(matcher1.exec("/~2F").foo).toBe("/");
|
|
95
|
-
expect(matcher1.exec("/123~2F").foo).toBe("123/");
|
|
96
|
-
|
|
97
|
-
// param :foo should match between two slashes
|
|
98
|
-
const matcher2 = $url.compile("/:foo/");
|
|
99
|
-
|
|
100
|
-
expect(matcher2.exec("/")).not.toBeTruthy();
|
|
101
|
-
expect(matcher2.exec("//")).toBeTruthy();
|
|
102
|
-
|
|
103
|
-
expect(matcher2.exec("//").foo).toBe("");
|
|
104
|
-
expect(matcher2.exec("/123/").foo).toBe("123");
|
|
105
|
-
expect(matcher2.exec("/~2F/").foo).toBe("/");
|
|
106
|
-
expect(matcher2.exec("/123~2F/").foo).toBe("123/");
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
it("should encode and decode tildes in parameter values as ~~", () => {
|
|
110
|
-
const matcher1 = $url.compile("/:foo");
|
|
111
|
-
|
|
112
|
-
expect(matcher1.format({ foo: "abc" })).toBe("/abc");
|
|
113
|
-
expect(matcher1.format({ foo: "~abc" })).toBe("/~~abc");
|
|
114
|
-
expect(matcher1.format({ foo: "~2F" })).toBe("/~~2F");
|
|
115
|
-
|
|
116
|
-
expect(matcher1.exec("/abc").foo).toBe("abc");
|
|
117
|
-
expect(matcher1.exec("/~~abc").foo).toBe("~abc");
|
|
118
|
-
expect(matcher1.exec("/~~2F").foo).toBe("~2F");
|
|
119
|
-
});
|
|
120
|
-
|
|
121
88
|
describe("snake-case parameters", () => {
|
|
122
89
|
it("should match if properly formatted", () => {
|
|
123
90
|
const matcher = $url.compile(
|
|
@@ -359,7 +326,7 @@ describe("UrlMatcher", () => {
|
|
|
359
326
|
expect(matcher).not.toBe(base);
|
|
360
327
|
});
|
|
361
328
|
|
|
362
|
-
it("should respect $
|
|
329
|
+
it("should respect $urlProvider.strictMode", () => {
|
|
363
330
|
let m = $url.compile("/");
|
|
364
331
|
$url.config.strictMode(false);
|
|
365
332
|
m = m.append($url.compile("foo"));
|
|
@@ -367,7 +334,7 @@ describe("UrlMatcher", () => {
|
|
|
367
334
|
expect(m.exec("/foo/")).toEqual({});
|
|
368
335
|
});
|
|
369
336
|
|
|
370
|
-
it("should respect $
|
|
337
|
+
it("should respect $urlProvider.caseInsensitive", () => {
|
|
371
338
|
let m = $url.compile("/");
|
|
372
339
|
$url.config.caseInsensitive(true);
|
|
373
340
|
m = m.append($url.compile("foo"));
|
|
@@ -375,7 +342,7 @@ describe("UrlMatcher", () => {
|
|
|
375
342
|
expect(m.exec("/FOO")).toEqual({});
|
|
376
343
|
});
|
|
377
344
|
|
|
378
|
-
it("should respect $
|
|
345
|
+
it("should respect $urlProvider.caseInsensitive when validating regex params", () => {
|
|
379
346
|
let m = $url.compile("/");
|
|
380
347
|
$url.config.caseInsensitive(true);
|
|
381
348
|
m = m.append($url.compile("foo/{param:bar}"));
|
|
@@ -441,15 +408,21 @@ describe("UrlMatcher", () => {
|
|
|
441
408
|
});
|
|
442
409
|
|
|
443
410
|
$url.url("/foo");
|
|
444
|
-
expect(m.exec($url.
|
|
411
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
412
|
+
param1: undefined,
|
|
413
|
+
});
|
|
445
414
|
$url.url("/foo?param1=bar");
|
|
446
|
-
expect(m.exec($url.
|
|
415
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
416
|
+
param1: "bar",
|
|
417
|
+
}); // auto unwrap
|
|
447
418
|
$url.url("/foo?param1=");
|
|
448
|
-
expect(m.exec($url.
|
|
419
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
420
|
+
param1: undefined,
|
|
421
|
+
});
|
|
449
422
|
$url.url("/foo?param1=bar¶m1=baz");
|
|
450
|
-
if (Array.isArray($url.
|
|
423
|
+
if (Array.isArray($url.getSearch()))
|
|
451
424
|
// conditional for angular 1.0.8
|
|
452
|
-
expect(m.exec($url.
|
|
425
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
453
426
|
param1: ["bar", "baz"],
|
|
454
427
|
});
|
|
455
428
|
|
|
@@ -485,15 +458,21 @@ describe("UrlMatcher", () => {
|
|
|
485
458
|
});
|
|
486
459
|
|
|
487
460
|
$url.url("/foo");
|
|
488
|
-
expect(m.exec($url.
|
|
461
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
462
|
+
param1: undefined,
|
|
463
|
+
});
|
|
489
464
|
$url.url("/foo?param1=");
|
|
490
|
-
expect(m.exec($url.
|
|
465
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
466
|
+
param1: undefined,
|
|
467
|
+
});
|
|
491
468
|
$url.url("/foo?param1=bar");
|
|
492
|
-
expect(m.exec($url.
|
|
469
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
470
|
+
param1: ["bar"],
|
|
471
|
+
});
|
|
493
472
|
$url.url("/foo?param1=bar¶m1=baz");
|
|
494
|
-
if (Array.isArray($url.
|
|
473
|
+
if (Array.isArray($url.getSearch()))
|
|
495
474
|
// conditional for angular 1.0.8
|
|
496
|
-
expect(m.exec($url.
|
|
475
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
497
476
|
param1: ["bar", "baz"],
|
|
498
477
|
});
|
|
499
478
|
|
|
@@ -512,16 +491,16 @@ describe("UrlMatcher", () => {
|
|
|
512
491
|
expect(m.exec("/foo")).toEqual({ "param1[]": undefined });
|
|
513
492
|
|
|
514
493
|
$url.url("/foo?param1[]=bar");
|
|
515
|
-
expect(m.exec($url.
|
|
494
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
516
495
|
"param1[]": ["bar"],
|
|
517
496
|
});
|
|
518
497
|
expect(m.format({ "param1[]": "bar" })).toBe("/foo?param1[]=bar");
|
|
519
498
|
expect(m.format({ "param1[]": ["bar"] })).toBe("/foo?param1[]=bar");
|
|
520
499
|
|
|
521
500
|
$url.url("/foo?param1[]=bar¶m1[]=baz");
|
|
522
|
-
if (Array.isArray($url.
|
|
501
|
+
if (Array.isArray($url.getSearch()))
|
|
523
502
|
// conditional for angular 1.0.8
|
|
524
|
-
expect(m.exec($url.
|
|
503
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
525
504
|
"param1[]": ["bar", "baz"],
|
|
526
505
|
});
|
|
527
506
|
expect(m.format({ "param1[]": ["bar", "baz"] })).toBe(
|
|
@@ -575,14 +554,16 @@ describe("UrlMatcher", () => {
|
|
|
575
554
|
expect(m.exec("/foo")).toEqual({ param1: undefined });
|
|
576
555
|
|
|
577
556
|
$url.url("/foo?param1=bar");
|
|
578
|
-
expect(m.exec($url.
|
|
557
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
558
|
+
param1: "bar",
|
|
559
|
+
});
|
|
579
560
|
expect(m.format({ param1: "bar" })).toBe("/foo?param1=bar");
|
|
580
561
|
expect(m.format({ param1: ["bar"] })).toBe("/foo?param1=bar");
|
|
581
562
|
|
|
582
563
|
$url.url("/foo?param1=bar¶m1=baz");
|
|
583
|
-
if (Array.isArray($url.
|
|
564
|
+
if (Array.isArray($url.getSearch()))
|
|
584
565
|
// conditional for angular 1.0.8
|
|
585
|
-
expect(m.exec($url.
|
|
566
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
586
567
|
param1: "bar,baz",
|
|
587
568
|
}); // coerced to string
|
|
588
569
|
expect(m.format({ param1: ["bar", "baz"] })).toBe(
|
|
@@ -610,7 +591,9 @@ describe("UrlMatcher", () => {
|
|
|
610
591
|
expect(m.exec("/foo/")).toEqual({ param1: undefined });
|
|
611
592
|
expect(m.exec("/foo/bar")).toEqual({ param1: ["bar"] });
|
|
612
593
|
$url.url("/foo/bar-baz");
|
|
613
|
-
expect(m.exec($location.
|
|
594
|
+
expect(m.exec($location.getUrl())).toEqual({
|
|
595
|
+
param1: ["bar", "baz"],
|
|
596
|
+
});
|
|
614
597
|
|
|
615
598
|
expect(m.format({ param1: [] })).toEqual("/foo/");
|
|
616
599
|
expect(m.format({ param1: ["bar"] })).toEqual("/foo/bar");
|
|
@@ -633,15 +616,15 @@ describe("UrlMatcher", () => {
|
|
|
633
616
|
expect(m.exec("/foo/1-2")).toEqual({ "param1[]": ["1", "2"] });
|
|
634
617
|
|
|
635
618
|
$url.url("/foo/");
|
|
636
|
-
expect(m.exec($url.
|
|
619
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
637
620
|
"param1[]": undefined,
|
|
638
621
|
});
|
|
639
622
|
$url.url("/foo/bar");
|
|
640
|
-
expect(m.exec($url.
|
|
623
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
641
624
|
"param1[]": ["bar"],
|
|
642
625
|
});
|
|
643
626
|
$url.url("/foo/bar-baz");
|
|
644
|
-
expect(m.exec($url.
|
|
627
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
645
628
|
"param1[]": ["bar", "baz"],
|
|
646
629
|
});
|
|
647
630
|
|
|
@@ -685,19 +668,19 @@ describe("UrlMatcher", () => {
|
|
|
685
668
|
|
|
686
669
|
// check that we handle $location.url decodes correctly
|
|
687
670
|
$url.url(m.format({ "param1[]": ["bar-", "-baz"] }));
|
|
688
|
-
expect(m.exec($url.
|
|
671
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
689
672
|
"param1[]": ["bar-", "-baz"],
|
|
690
673
|
});
|
|
691
674
|
|
|
692
675
|
// check that we handle $location.url decodes correctly for multiple hyphens
|
|
693
676
|
$url.url(m.format({ "param1[]": ["bar-bar-bar-", "-baz-baz-baz"] }));
|
|
694
|
-
expect(m.exec($url.
|
|
677
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
695
678
|
"param1[]": ["bar-bar-bar-", "-baz-baz-baz"],
|
|
696
679
|
});
|
|
697
680
|
|
|
698
681
|
// check that pre-encoded values are passed correctly
|
|
699
682
|
$url.url(m.format({ "param1[]": ["%2C%20%5C%2C", "-baz"] }));
|
|
700
|
-
expect(m.exec($url.
|
|
683
|
+
expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
701
684
|
"param1[]": ["%2C%20%5C%2C", "-baz"],
|
|
702
685
|
});
|
|
703
686
|
});
|
|
@@ -708,9 +691,9 @@ describe("UrlMatcher", () => {
|
|
|
708
691
|
// describe(".type()", ( ) => {
|
|
709
692
|
// let $url;
|
|
710
693
|
// beforeEach(
|
|
711
|
-
// module("ng.router.util", function ($
|
|
712
|
-
// $url = $
|
|
713
|
-
// $
|
|
694
|
+
// module("ng.router.util", function ($urlProvider) {
|
|
695
|
+
// $url = $urlProvider;
|
|
696
|
+
// $urlProvider.type("myType", {}, ( ) => {
|
|
714
697
|
// return {
|
|
715
698
|
// decode: ( ) => {
|
|
716
699
|
// return { status: "decoded" };
|
|
@@ -744,9 +727,9 @@ describe("UrlMatcher", () => {
|
|
|
744
727
|
// let $url;
|
|
745
728
|
// let $url;
|
|
746
729
|
|
|
747
|
-
// beforeEach(function ($urlMatcherFactory, $
|
|
730
|
+
// beforeEach(function ($urlMatcherFactory, $url) {
|
|
748
731
|
// $url = $urlMatcherFactory;
|
|
749
|
-
// $url = $
|
|
732
|
+
// $url = $url;
|
|
750
733
|
// });
|
|
751
734
|
|
|
752
735
|
// it("compiles patterns", ( ) => {
|
|
@@ -903,13 +886,13 @@ describe("UrlMatcher", () => {
|
|
|
903
886
|
// const m = $url.compile("/foo/{fooid:int}?{bar:int}");
|
|
904
887
|
|
|
905
888
|
// $url.url("/foo/5?bar=1");
|
|
906
|
-
// expect(m.exec($url.
|
|
889
|
+
// expect(m.exec($url.getPath(), $url.getSearch())).toEqual({ fooid: 5, bar: 1 });
|
|
907
890
|
// expect(m.format({ fooid: 5, bar: 1 })).toEqual("/foo/5?bar=1");
|
|
908
891
|
|
|
909
892
|
// $url.url("/foo/5?bar=1&bar=2&bar=3");
|
|
910
|
-
// if (Array.isArray($url.
|
|
893
|
+
// if (Array.isArray($url.getSearch()))
|
|
911
894
|
// // conditional for angular 1.0.8
|
|
912
|
-
// expect(m.exec($url.
|
|
895
|
+
// expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
913
896
|
// fooid: 5,
|
|
914
897
|
// bar: [1, 2, 3],
|
|
915
898
|
// });
|
|
@@ -937,11 +920,11 @@ describe("UrlMatcher", () => {
|
|
|
937
920
|
// });
|
|
938
921
|
|
|
939
922
|
// $url.url("/foo?bar=fox");
|
|
940
|
-
// expect(m.exec($url.
|
|
923
|
+
// expect(m.exec($url.getPath(), $url.getSearch())).toEqual({ bar: ["fox"] });
|
|
941
924
|
// expect(m.format({ bar: ["fox"] })).toEqual("/foo?bar=fox");
|
|
942
925
|
|
|
943
926
|
// $url.url("/foo?bar=quick-brown-fox");
|
|
944
|
-
// expect(m.exec($url.
|
|
927
|
+
// expect(m.exec($url.getPath(), $url.getSearch())).toEqual({
|
|
945
928
|
// bar: ["quick", "brown", "fox"],
|
|
946
929
|
// });
|
|
947
930
|
// 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
|
);
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { $injectTokens as $t } from "../injection-tokens.js";
|
|
2
|
+
|
|
1
3
|
export class ViewScrollProvider {
|
|
2
4
|
constructor() {
|
|
3
5
|
this.enabled = false;
|
|
@@ -8,7 +10,7 @@ export class ViewScrollProvider {
|
|
|
8
10
|
}
|
|
9
11
|
|
|
10
12
|
$get = [
|
|
11
|
-
|
|
13
|
+
$t.$anchorScroll,
|
|
12
14
|
/**
|
|
13
15
|
* @param {import('../services/anchor-scroll.js').AnchorScrollObject} $anchorScroll
|
|
14
16
|
* @returns {import('../services/anchor-scroll.js').AnchorScrollObject|Function}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { dealoc } from "../shared/dom.js";
|
|
2
|
-
import { Angular } from "../
|
|
2
|
+
import { Angular } from "../angular.js";
|
|
3
3
|
import { wait } from "../shared/test-utils.js";
|
|
4
4
|
|
|
5
5
|
describe("ngView", () => {
|
|
6
6
|
describe("scrollIntoView", () => {
|
|
7
|
-
let elem, $anchorScroll, $
|
|
7
|
+
let elem, $anchorScroll, $viewScroll;
|
|
8
8
|
|
|
9
9
|
beforeEach(() => {
|
|
10
10
|
dealoc(document.getElementById("app"));
|
|
@@ -14,15 +14,15 @@ describe("ngView", () => {
|
|
|
14
14
|
"defaultModule",
|
|
15
15
|
]);
|
|
16
16
|
|
|
17
|
-
$injector.invoke((_$
|
|
17
|
+
$injector.invoke((_$viewScroll_, _$anchorScroll_) => {
|
|
18
18
|
$anchorScroll = _$anchorScroll_;
|
|
19
|
-
$
|
|
19
|
+
$viewScroll = _$viewScroll_;
|
|
20
20
|
});
|
|
21
21
|
elem = [{ scrollIntoView: jasmine.createSpy("scrollIntoView") }];
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
it("should scroll element into view after timeout", async () => {
|
|
25
|
-
$
|
|
25
|
+
$viewScroll(elem[0]);
|
|
26
26
|
expect(elem[0].scrollIntoView).not.toHaveBeenCalled();
|
|
27
27
|
|
|
28
28
|
await wait(100);
|
|
@@ -31,7 +31,7 @@ describe("ngView", () => {
|
|
|
31
31
|
|
|
32
32
|
it("should return the promise from the timeout", async () => {
|
|
33
33
|
dealoc(document.getElementById("app"));
|
|
34
|
-
const promise = $
|
|
34
|
+
const promise = $viewScroll(elem[0]);
|
|
35
35
|
|
|
36
36
|
await wait(10);
|
|
37
37
|
expect(elem[0].scrollIntoView).toHaveBeenCalled();
|
|
@@ -40,32 +40,32 @@ describe("ngView", () => {
|
|
|
40
40
|
});
|
|
41
41
|
|
|
42
42
|
describe("useAnchorScroll", () => {
|
|
43
|
-
let elem, $anchorScroll, $
|
|
43
|
+
let elem, $anchorScroll, $viewScroll;
|
|
44
44
|
|
|
45
45
|
beforeEach(() => {
|
|
46
46
|
dealoc(document.getElementById("app"));
|
|
47
47
|
window.angular = new Angular();
|
|
48
48
|
let module = window.angular.module("defaultModule", []);
|
|
49
|
-
module.config(($provide, $
|
|
49
|
+
module.config(($provide, $viewScrollProvider) => {
|
|
50
50
|
$provide.decorator("$anchorScroll", function ($delegate) {
|
|
51
51
|
return jasmine.createSpy("$anchorScroll");
|
|
52
52
|
});
|
|
53
|
-
$
|
|
53
|
+
$viewScrollProvider.useAnchorScroll();
|
|
54
54
|
});
|
|
55
55
|
|
|
56
56
|
let $injector = window.angular.bootstrap(document.getElementById("app"), [
|
|
57
57
|
"defaultModule",
|
|
58
58
|
]);
|
|
59
59
|
|
|
60
|
-
$injector.invoke((_$
|
|
60
|
+
$injector.invoke((_$viewScroll_, _$anchorScroll_) => {
|
|
61
61
|
$anchorScroll = _$anchorScroll_;
|
|
62
|
-
$
|
|
62
|
+
$viewScroll = _$viewScroll_;
|
|
63
63
|
});
|
|
64
64
|
elem = [{ scrollIntoView: jasmine.createSpy("scrollIntoView") }];
|
|
65
65
|
});
|
|
66
66
|
|
|
67
67
|
it("should call $anchorScroll", () => {
|
|
68
|
-
$
|
|
68
|
+
$viewScroll();
|
|
69
69
|
expect($anchorScroll).toHaveBeenCalled();
|
|
70
70
|
});
|
|
71
71
|
});
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
$scope.gotoAnchor = function (x) {
|
|
24
24
|
window.$locationTest = $location;
|
|
25
25
|
const newHash = "anchor" + x;
|
|
26
|
-
if ($location.
|
|
26
|
+
if ($location.getHash() !== newHash) {
|
|
27
27
|
// set the $location.hash to `newHash` and
|
|
28
28
|
// $anchorScroll will automatically scroll to it
|
|
29
|
-
$location.
|
|
29
|
+
$location.setHash("anchor" + x);
|
|
30
30
|
} else {
|
|
31
31
|
// call $anchorScroll() explicitly,
|
|
32
32
|
// since $location.hash hasn't changed
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
isString,
|
|
6
6
|
getNodeName,
|
|
7
7
|
} from "../shared/utils.js";
|
|
8
|
+
import { $injectTokens as $t } from "../injection-tokens.js";
|
|
8
9
|
|
|
9
10
|
/**
|
|
10
11
|
* @typedef {Object} AnchorScrollObject
|
|
@@ -25,8 +26,8 @@ export class AnchorScrollProvider {
|
|
|
25
26
|
}
|
|
26
27
|
|
|
27
28
|
$get = [
|
|
28
|
-
|
|
29
|
-
|
|
29
|
+
$t.$location,
|
|
30
|
+
$t.$rootScope,
|
|
30
31
|
/**
|
|
31
32
|
*
|
|
32
33
|
* @param {import('../services/location/location.js').Location} $location
|
|
@@ -104,7 +105,7 @@ export class AnchorScrollProvider {
|
|
|
104
105
|
? hash
|
|
105
106
|
: isNumber(hash)
|
|
106
107
|
? hash.toString()
|
|
107
|
-
: $location.
|
|
108
|
+
: $location.getHash();
|
|
108
109
|
let elm;
|
|
109
110
|
|
|
110
111
|
// empty hash, scroll to the top of the page
|
|
@@ -121,7 +122,7 @@ export class AnchorScrollProvider {
|
|
|
121
122
|
};
|
|
122
123
|
|
|
123
124
|
// does not scroll when user clicks on anchor link that is currently on
|
|
124
|
-
// (no url change, no $location.
|
|
125
|
+
// (no url change, no $location.getHash() change), browser native does scroll
|
|
125
126
|
if (this.autoScrollingEnabled) {
|
|
126
127
|
$rootScope["$location"] = $location;
|
|
127
128
|
$rootScope.$watch("$location.$$hash", (newVal, oldVal) => {
|
|
@@ -291,6 +291,7 @@ export function HttpProvider() {
|
|
|
291
291
|
});
|
|
292
292
|
|
|
293
293
|
let useApplyAsync = false;
|
|
294
|
+
|
|
294
295
|
/**
|
|
295
296
|
* Configure $http service to combine processing of multiple http responses received at around
|
|
296
297
|
* the same time via {@link ng.$rootScope.Scope#$applyAsync $rootScope.$applyAsync}. This can result in
|
|
@@ -323,7 +324,7 @@ export function HttpProvider() {
|
|
|
323
324
|
*
|
|
324
325
|
* {@link ng.$http#interceptors Interceptors detailed info}
|
|
325
326
|
*/
|
|
326
|
-
|
|
327
|
+
this.interceptors = [];
|
|
327
328
|
|
|
328
329
|
/**
|
|
329
330
|
* Array containing URLs whose origins are trusted to receive the XSRF token. See the
|
|
@@ -360,8 +361,10 @@ export function HttpProvider() {
|
|
|
360
361
|
* $http.get('https://stats.example.com/activity').then(...);
|
|
361
362
|
* }]);
|
|
362
363
|
* ```
|
|
364
|
+
*
|
|
365
|
+
* @type {string[]}
|
|
363
366
|
*/
|
|
364
|
-
|
|
367
|
+
this.xsrfTrustedOrigins = [];
|
|
365
368
|
|
|
366
369
|
/**
|
|
367
370
|
* This property is deprecated. Use {@link $httpProvider#xsrfTrustedOrigins xsrfTrustedOrigins}
|
|
@@ -407,7 +410,7 @@ export function HttpProvider() {
|
|
|
407
410
|
*/
|
|
408
411
|
const reversedInterceptors = [];
|
|
409
412
|
|
|
410
|
-
|
|
413
|
+
this.interceptors.forEach((interceptorFactory) => {
|
|
411
414
|
reversedInterceptors.unshift(
|
|
412
415
|
isString(interceptorFactory)
|
|
413
416
|
? $injector.get(interceptorFactory)
|
|
@@ -418,7 +421,9 @@ export function HttpProvider() {
|
|
|
418
421
|
/**
|
|
419
422
|
* A function to check request URLs against a list of allowed origins.
|
|
420
423
|
*/
|
|
421
|
-
const urlIsAllowedOrigin = urlIsAllowedOriginFactory(
|
|
424
|
+
const urlIsAllowedOrigin = urlIsAllowedOriginFactory(
|
|
425
|
+
this.xsrfTrustedOrigins,
|
|
426
|
+
);
|
|
422
427
|
|
|
423
428
|
/**
|
|
424
429
|
* @property {Array.<Object>} requestConfig Array of config objects for currently pending
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createInjector } from "../../core/di/injector.js";
|
|
2
2
|
import { isObject } from "../../shared/utils.js";
|
|
3
|
-
import { Angular } from "../../
|
|
3
|
+
import { Angular } from "../../angular.js";
|
|
4
4
|
import { wait } from "../../shared/test-utils.js";
|
|
5
5
|
|
|
6
6
|
export function getLastAjaxRequest() {
|
|
@@ -238,12 +238,7 @@ describe("$http", function () {
|
|
|
238
238
|
});
|
|
239
239
|
expect(response.headers).toBeDefined();
|
|
240
240
|
expect(response.headers instanceof Function).toBe(true);
|
|
241
|
-
expect(response.headers("Content-Type")).toBe(
|
|
242
|
-
"application/json; charset=utf-8",
|
|
243
|
-
);
|
|
244
|
-
expect(response.headers("content-type")).toBe(
|
|
245
|
-
"application/json; charset=utf-8",
|
|
246
|
-
);
|
|
241
|
+
expect(response.headers("Content-Type")).toBe("text/html; charset=utf-8");
|
|
247
242
|
});
|
|
248
243
|
|
|
249
244
|
it("may returns all response headers", async function () {
|