@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,25 +1,14 @@
|
|
|
1
|
-
import { trimEmptyHash
|
|
1
|
+
import { trimEmptyHash } from "../../shared/url-utils/url-utils.js";
|
|
2
2
|
import { isDefined, isPromiseLike, isUndefined } from "../../shared/utils.js";
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* HTTP backend used by the
|
|
5
|
+
* HTTP backend used by the `$http` that delegates to
|
|
6
6
|
* XMLHttpRequest object and deals with browser incompatibilities.
|
|
7
|
-
*
|
|
8
|
-
* You should never need to use this service directly, instead use the higher-level abstractions:
|
|
9
|
-
* {@link ng.$http $http}.
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* HTTP backend used by the {@link ng.$http service} that delegates to
|
|
14
|
-
* XMLHttpRequest object and deals with browser incompatibilities.
|
|
15
|
-
*
|
|
16
|
-
* You should never need to use this service directly, instead use the higher-level abstractions:
|
|
17
|
-
* {@link ng.$http $http}.
|
|
18
|
-
*
|
|
7
|
+
* You should never need to use this service directly.
|
|
19
8
|
*/
|
|
20
9
|
export class HttpBackendProvider {
|
|
21
10
|
constructor() {
|
|
22
|
-
this.$get =
|
|
11
|
+
this.$get = () => createHttpBackend();
|
|
23
12
|
}
|
|
24
13
|
}
|
|
25
14
|
|
|
@@ -27,7 +16,21 @@ export class HttpBackendProvider {
|
|
|
27
16
|
* @returns
|
|
28
17
|
*/
|
|
29
18
|
export function createHttpBackend() {
|
|
30
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Makes an HTTP request using XMLHttpRequest with flexible options.
|
|
21
|
+
*
|
|
22
|
+
* @param {string} method - The HTTP method (e.g., "GET", "POST").
|
|
23
|
+
* @param {string} [url] - The URL to send the request to. Defaults to the current page URL.
|
|
24
|
+
* @param {*} [post] - The body to send with the request, if any.
|
|
25
|
+
* @param {function(number, any, string|null, string, string): void} [callback] - Callback invoked when the request completes.
|
|
26
|
+
* @param {Object<string, string|undefined>} [headers] - Headers to set on the request.
|
|
27
|
+
* @param {number|Promise<any>} [timeout] - Timeout in ms or a cancellable promise.
|
|
28
|
+
* @param {boolean} [withCredentials] - Whether to send credentials with the request.
|
|
29
|
+
* @param {XMLHttpRequestResponseType} [responseType] - The type of data expected in the response.
|
|
30
|
+
* @param {Object<string, EventListener>} [eventHandlers] - Event listeners for the XMLHttpRequest object.
|
|
31
|
+
* @param {Object<string, EventListener>} [uploadEventHandlers] - Event listeners for the XMLHttpRequest.upload object.
|
|
32
|
+
* @returns {void}
|
|
33
|
+
*/
|
|
31
34
|
return function (
|
|
32
35
|
method,
|
|
33
36
|
url,
|
|
@@ -44,34 +47,31 @@ export function createHttpBackend() {
|
|
|
44
47
|
|
|
45
48
|
const xhr = new XMLHttpRequest();
|
|
46
49
|
let abortedByTimeout = false;
|
|
50
|
+
let timeoutId;
|
|
47
51
|
|
|
48
52
|
xhr.open(method, url, true);
|
|
53
|
+
|
|
49
54
|
if (headers) {
|
|
50
|
-
|
|
55
|
+
for (const [key, value] of Object.entries(headers)) {
|
|
51
56
|
if (isDefined(value)) {
|
|
52
57
|
xhr.setRequestHeader(key, value);
|
|
53
58
|
}
|
|
54
|
-
}
|
|
59
|
+
}
|
|
55
60
|
}
|
|
56
61
|
|
|
57
|
-
xhr.onload =
|
|
62
|
+
xhr.onload = () => {
|
|
63
|
+
let status = xhr.status || 0;
|
|
58
64
|
const statusText = xhr.statusText || "";
|
|
59
65
|
|
|
60
|
-
let status = xhr.status;
|
|
61
|
-
|
|
62
|
-
// fix status code when it is 0 (0 status is undocumented).
|
|
63
|
-
// Occurs when accessing file resources or on Android 4.1 stock browser
|
|
64
|
-
// while retrieving files from application cache.
|
|
65
66
|
if (status === 0) {
|
|
66
67
|
status = xhr.response
|
|
67
68
|
? 200
|
|
68
|
-
:
|
|
69
|
+
: new URL(url).protocol === "file:"
|
|
69
70
|
? 404
|
|
70
71
|
: 0;
|
|
71
72
|
}
|
|
72
73
|
|
|
73
74
|
completeRequest(
|
|
74
|
-
callback,
|
|
75
75
|
status,
|
|
76
76
|
xhr.response,
|
|
77
77
|
xhr.getAllResponseHeaders(),
|
|
@@ -80,20 +80,11 @@ export function createHttpBackend() {
|
|
|
80
80
|
);
|
|
81
81
|
};
|
|
82
82
|
|
|
83
|
-
xhr.onerror =
|
|
84
|
-
|
|
85
|
-
// See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error
|
|
86
|
-
completeRequest(callback, -1, null, null, "", "error");
|
|
87
|
-
};
|
|
88
|
-
xhr.ontimeout = function () {
|
|
89
|
-
// The response is always empty
|
|
90
|
-
// See https://xhr.spec.whatwg.org/#request-error-steps and https://fetch.spec.whatwg.org/#concept-network-error
|
|
91
|
-
completeRequest(callback, -1, null, null, "", "timeout");
|
|
92
|
-
};
|
|
83
|
+
xhr.onerror = () => completeRequest(-1, null, null, "", "error");
|
|
84
|
+
xhr.ontimeout = () => completeRequest(-1, null, null, "", "timeout");
|
|
93
85
|
|
|
94
|
-
xhr.onabort =
|
|
86
|
+
xhr.onabort = () => {
|
|
95
87
|
completeRequest(
|
|
96
|
-
callback,
|
|
97
88
|
-1,
|
|
98
89
|
null,
|
|
99
90
|
null,
|
|
@@ -103,16 +94,15 @@ export function createHttpBackend() {
|
|
|
103
94
|
};
|
|
104
95
|
|
|
105
96
|
if (eventHandlers) {
|
|
106
|
-
eventHandlers
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
});
|
|
97
|
+
for (const [key, handler] of Object.entries(eventHandlers)) {
|
|
98
|
+
xhr.addEventListener(key, handler);
|
|
99
|
+
}
|
|
110
100
|
}
|
|
111
101
|
|
|
112
102
|
if (uploadEventHandlers) {
|
|
113
|
-
|
|
114
|
-
xhr.upload.addEventListener(key,
|
|
115
|
-
}
|
|
103
|
+
for (const [key, handler] of Object.entries(uploadEventHandlers)) {
|
|
104
|
+
xhr.upload.addEventListener(key, handler);
|
|
105
|
+
}
|
|
116
106
|
}
|
|
117
107
|
|
|
118
108
|
if (withCredentials) {
|
|
@@ -123,61 +113,45 @@ export function createHttpBackend() {
|
|
|
123
113
|
try {
|
|
124
114
|
xhr.responseType = responseType;
|
|
125
115
|
} catch (e) {
|
|
126
|
-
|
|
127
|
-
// https://bugs.webkit.org/show_bug.cgi?id=73648. Versions of Safari prior to 7 are
|
|
128
|
-
// known to throw when setting the value "json" as the response type. Other older
|
|
129
|
-
// browsers implementing the responseType
|
|
130
|
-
//
|
|
131
|
-
// The json response type can be ignored if not supported, because JSON payloads are
|
|
132
|
-
// parsed on the client-side regardless.
|
|
133
|
-
if (responseType !== "json") {
|
|
134
|
-
throw e;
|
|
135
|
-
}
|
|
116
|
+
if (responseType !== "json") throw e;
|
|
136
117
|
}
|
|
137
118
|
}
|
|
138
119
|
|
|
139
120
|
xhr.send(isUndefined(post) ? null : post);
|
|
140
121
|
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
//
|
|
144
|
-
// http.timeout = numerical timeout timeout
|
|
145
|
-
// http.timeout = $timeout timeout
|
|
146
|
-
// http.timeout = promise abort
|
|
147
|
-
// xhr.abort() abort (The xhr object is normally inaccessible, but
|
|
148
|
-
// can be exposed with the xhrFactory)
|
|
149
|
-
/** @type {number} */
|
|
150
|
-
let timeoutId;
|
|
151
|
-
if (timeout > 0) {
|
|
152
|
-
timeoutId = setTimeout(() => {
|
|
153
|
-
timeoutRequest("timeout");
|
|
154
|
-
}, timeout);
|
|
122
|
+
if (typeof timeout === "number" && timeout > 0) {
|
|
123
|
+
timeoutId = setTimeout(() => timeoutRequest("timeout"), timeout);
|
|
155
124
|
} else if (isPromiseLike(timeout)) {
|
|
156
|
-
timeout.then(() => {
|
|
157
|
-
timeoutRequest(isDefined(timeout
|
|
125
|
+
/** @type {Promise} */ (timeout).then(() => {
|
|
126
|
+
timeoutRequest(isDefined(timeout["$$timeoutId"]) ? "timeout" : "abort");
|
|
158
127
|
});
|
|
159
128
|
}
|
|
160
129
|
|
|
130
|
+
/**
|
|
131
|
+
* @param {"timeout"|"abort"} reason
|
|
132
|
+
*/
|
|
161
133
|
function timeoutRequest(reason) {
|
|
162
134
|
abortedByTimeout = reason === "timeout";
|
|
163
|
-
if (xhr)
|
|
164
|
-
xhr.abort();
|
|
165
|
-
}
|
|
135
|
+
if (xhr) xhr.abort();
|
|
166
136
|
}
|
|
167
137
|
|
|
138
|
+
/**
|
|
139
|
+
* @param {number} status - HTTP status code or -1 for network errors.
|
|
140
|
+
* @param {*} response - The parsed or raw response from the server.
|
|
141
|
+
* @param {string|null} headersString - The raw response headers as a string.
|
|
142
|
+
* @param {string} statusText - The status text returned by the server.
|
|
143
|
+
* @param {"complete"|"error"|"timeout"|"abort"} xhrStatus - Final status of the request.
|
|
144
|
+
*/
|
|
168
145
|
function completeRequest(
|
|
169
|
-
callback,
|
|
170
146
|
status,
|
|
171
147
|
response,
|
|
172
148
|
headersString,
|
|
173
149
|
statusText,
|
|
174
150
|
xhrStatus,
|
|
175
151
|
) {
|
|
176
|
-
// cancel timeout and subsequent timeout promise resolution
|
|
177
152
|
if (isDefined(timeoutId)) {
|
|
178
153
|
clearTimeout(timeoutId);
|
|
179
154
|
}
|
|
180
|
-
|
|
181
155
|
callback(status, response, headersString, statusText, xhrStatus);
|
|
182
156
|
}
|
|
183
157
|
};
|
|
@@ -5,6 +5,7 @@ const TEST_URL = "src/services/http-backend/http-backend.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
|
);
|
|
@@ -6,3 +6,65 @@
|
|
|
6
6
|
* @returns void
|
|
7
7
|
*/
|
|
8
8
|
export type UrlChangeListener = (url: string, state: History["state"]) => void;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Represents the configuration options for HTML5 mode.
|
|
12
|
+
*/
|
|
13
|
+
export interface Html5Mode {
|
|
14
|
+
/**
|
|
15
|
+
* If true, will rely on `history.pushState` to change URLs where supported.
|
|
16
|
+
* Falls back to hash-prefixed paths in browsers that do not support `pushState`.
|
|
17
|
+
* @default false
|
|
18
|
+
*/
|
|
19
|
+
enabled: boolean;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* When html5Mode is enabled, specifies whether or not a `<base>` tag is required to be present.
|
|
23
|
+
* If both `enabled` and `requireBase` are true, and a `<base>` tag is not present,
|
|
24
|
+
* an error will be thrown when `$location` is injected.
|
|
25
|
+
* @default true
|
|
26
|
+
*/
|
|
27
|
+
requireBase: boolean;
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* When html5Mode is enabled, enables or disables URL rewriting for relative links.
|
|
31
|
+
* If set to a string, URL rewriting will only apply to links with an attribute that matches the given string.
|
|
32
|
+
* For example, if set to `'internal-link'`, URL rewriting will only occur for `<a internal-link>` links.
|
|
33
|
+
* Attribute name normalization does not apply here.
|
|
34
|
+
* @default true
|
|
35
|
+
*/
|
|
36
|
+
rewriteLinks: boolean | string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Represents default port numbers for various protocols.
|
|
41
|
+
*/
|
|
42
|
+
export interface DefaultPorts {
|
|
43
|
+
http: number;
|
|
44
|
+
https: number;
|
|
45
|
+
ftp: number;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/**
|
|
49
|
+
* Represents the individual components of a URL.
|
|
50
|
+
*/
|
|
51
|
+
export interface UrlParts {
|
|
52
|
+
/**
|
|
53
|
+
* The URL path (e.g. `/dashboard`, `/users/123`).
|
|
54
|
+
*/
|
|
55
|
+
path: string;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The parsed query string as an object.
|
|
59
|
+
* Mirrors AngularJS’s `$location.setSearch()` format.
|
|
60
|
+
*/
|
|
61
|
+
search: Record<
|
|
62
|
+
string,
|
|
63
|
+
string | number | boolean | (string | number | boolean)[]
|
|
64
|
+
>;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* The fragment identifier (everything after `#`, not including the `#` itself).
|
|
68
|
+
*/
|
|
69
|
+
hash: string;
|
|
70
|
+
}
|