@angular-wave/angular.ts 0.7.8 → 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/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 +3 -1
- package/@types/{public.d.ts → ng.d.ts} +2 -2
- package/@types/router/globals.d.ts +1 -1
- 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-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 +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/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/Makefile +6 -3
- package/dist/angular-ts.esm.js +960 -1062
- package/dist/angular-ts.umd.js +960 -1062
- 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/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/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/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 +1 -1
- package/src/{loader.js → angular.js} +1 -1
- 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/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 +17 -16
- 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 +1 -1
- 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.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.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 +5 -1
- package/src/interface.ts +3 -1
- package/src/loader.md +0 -155
- package/src/{public.js → ng.js} +7 -8
- package/src/{public.spec.js → ng.spec.js} +1 -1
- package/src/router/directives/state-directives.spec.js +8 -7
- package/src/router/directives/view-directive.js +2 -8
- 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/common.test.js → glob/glob.test.js} +2 -1
- package/src/router/globals.js +1 -1
- 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 -2
- 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 +13 -9
- 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 +77 -76
- 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 -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 +433 -520
- package/src/services/location/location.spec.js +909 -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 +0 -5
- package/src/shared/common.spec.js +1 -1
- 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/{loader.d.ts → angular.d.ts} +0 -0
- /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
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>UrlChangeListener | AngularTS</title><meta name="description" content="Documentation for AngularTS"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../index.html" class="title">AngularTS</a><div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="" aria-current="page">UrlChangeListener</a></li></ul><h1>Type Alias UrlChangeListener</h1></div><div class="tsd-signature"><span class="tsd-kind-type-alias">UrlChangeListener</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">url</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">History</span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">"state"</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">void</span></div><div class="tsd-comment tsd-typography"><p>A callback function that gets called when the browser URL or state changes.</p>
|
|
2
|
+
</div><div class="tsd-type-declaration"><h4>Type declaration</h4><ul class="tsd-parameters"><li class="tsd-parameter-signature"><ul class="tsd-signatures"><li class="tsd-signature" id="__type"><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">url</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">state</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">History</span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">"state"</span><span class="tsd-signature-symbol">]</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span></li><li class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">url</span>: <span class="tsd-signature-type">string</span></span><div class="tsd-comment tsd-typography"><p>The new URL after the change (with trailing <code>#</code> removed).</p>
|
|
3
|
+
</div><div class="tsd-comment tsd-typography"></div></li><li><span><span class="tsd-kind-parameter">state</span>: <span class="tsd-signature-type">History</span><span class="tsd-signature-symbol">[</span><span class="tsd-signature-type">"state"</span><span class="tsd-signature-symbol">]</span></span><div class="tsd-comment tsd-typography"><p>The new history state associated with the URL (<code>history.state</code>).</p>
|
|
4
|
+
</div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><p>void</p>
|
|
5
|
+
<div class="tsd-comment tsd-typography"></div></li></ul></li></ul></div><div class="tsd-comment tsd-typography"></div></div><div class="col-sidebar"><div class="page-menu"><div class="tsd-navigation settings"><details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg><h3>Settings</h3></summary><div class="tsd-accordion-details"><div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span><ul id="tsd-filter-options"><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li><li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div><div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div><div class="site-menu"><nav class="tsd-navigation"><a href="../index.html">AngularTS</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* Version: 0.7.8 - July 17, 2025 11:49:51 */
|
|
2
|
+
// File for DOCsy to update doc version
|
|
3
|
+
window.VERSION = '0.7.8';
|
|
4
|
+
const script = document.createElement('script');
|
|
5
|
+
script.src =
|
|
6
|
+
'https://cdn.jsdelivr.net/npm/@angular-wave/angular.ts@' +
|
|
7
|
+
window.VERSION +
|
|
8
|
+
'/dist/angular-ts.umd.js';
|
|
9
|
+
script.type = 'text/javascript';
|
|
10
|
+
document.head.appendChild(script);
|
|
11
|
+
script.onload = function () {
|
|
12
|
+
window.dispatchEvent(new CustomEvent('AngularLoaded'));
|
|
13
|
+
};
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# Test info
|
|
2
|
+
|
|
3
|
+
- Name: counter example
|
|
4
|
+
- Location:
|
|
5
|
+
/home/anatoly/Applications/angular.ts/docs/static/examples/counter/counter.test.js:5:5
|
|
6
|
+
|
|
7
|
+
# Error details
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
Error: page.goto: Protocol error (Page.navigate): Cannot navigate to invalid URL
|
|
11
|
+
Call log:
|
|
12
|
+
- navigating to "docs/static/examples/counter/counter-test.html", waiting until "load"
|
|
13
|
+
|
|
14
|
+
at /home/anatoly/Applications/angular.ts/docs/static/examples/counter/counter.test.js:6:14
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
# Test source
|
|
18
|
+
|
|
19
|
+
```ts
|
|
20
|
+
1 | import { test, expect } from '@playwright/test';
|
|
21
|
+
2 |
|
|
22
|
+
3 | const TEST_URL = 'docs/static/examples/counter/counter-test.html';
|
|
23
|
+
4 |
|
|
24
|
+
5 | test('counter example', async ({ page }) => {
|
|
25
|
+
> 6 | await page.goto(TEST_URL);
|
|
26
|
+
| ^ Error: page.goto: Protocol error (Page.navigate): Cannot navigate to invalid URL
|
|
27
|
+
7 | await page.content();
|
|
28
|
+
8 |
|
|
29
|
+
9 | // Locate the button
|
|
30
|
+
10 | const counterButton = page.locator('button');
|
|
31
|
+
11 |
|
|
32
|
+
12 | // Verify initial count
|
|
33
|
+
13 | await expect(counterButton).toHaveText('Count is: 0');
|
|
34
|
+
14 |
|
|
35
|
+
15 | // Click once
|
|
36
|
+
16 | await counterButton.click();
|
|
37
|
+
17 | await expect(counterButton).toHaveText('Count is: 1');
|
|
38
|
+
18 |
|
|
39
|
+
19 | // Click again
|
|
40
|
+
20 | await counterButton.click();
|
|
41
|
+
21 | await expect(counterButton).toHaveText('Count is: 2');
|
|
42
|
+
22 |
|
|
43
|
+
23 | // Click three more times
|
|
44
|
+
24 | await counterButton.click();
|
|
45
|
+
25 | await counterButton.click();
|
|
46
|
+
26 | await counterButton.click();
|
|
47
|
+
27 | await expect(counterButton).toHaveText('Count is: 5');
|
|
48
|
+
28 | });
|
|
49
|
+
29 |
|
|
50
|
+
```
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@angular-wave/angular.ts",
|
|
3
3
|
"description": "A modern, optimized and type-safe version of AngularJS",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "0.
|
|
5
|
+
"version": "0.8.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "dist/angular-ts.esm.js",
|
|
8
8
|
"module": "dist/angular-ts.esm.js",
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
import { Cache } from "./shared/cache.js";
|
|
16
16
|
import { annotate, createInjector } from "./core/di/injector.js";
|
|
17
17
|
import { NgModule } from "./core/di/ng-module.js";
|
|
18
|
-
import { registerNgModule } from "./
|
|
18
|
+
import { registerNgModule } from "./ng.js";
|
|
19
19
|
import { unnestR } from "./shared/common.js";
|
|
20
20
|
import { EventBus } from "./services/pubsub/pubsub.js";
|
|
21
21
|
import { $injectTokens } from "./injection-tokens.js";
|
package/src/angular.spec.js
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
encodeUriQuery,
|
|
3
|
+
encodeUriSegment,
|
|
4
|
+
equals,
|
|
4
5
|
extend,
|
|
5
|
-
|
|
6
|
+
fromJson,
|
|
7
|
+
getNodeName,
|
|
8
|
+
hashKey,
|
|
9
|
+
isArrayLike,
|
|
6
10
|
isDate,
|
|
7
|
-
|
|
11
|
+
isDefined,
|
|
8
12
|
isElement,
|
|
9
|
-
shallowCopy,
|
|
10
|
-
equals,
|
|
11
|
-
isWindow,
|
|
12
|
-
hashKey,
|
|
13
|
-
toKeyValue,
|
|
14
|
-
parseKeyValue,
|
|
15
13
|
isError,
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
toJson,
|
|
20
|
-
fromJson,
|
|
14
|
+
isRegExp,
|
|
15
|
+
isWindow,
|
|
16
|
+
lowercase,
|
|
21
17
|
nextUid,
|
|
22
|
-
|
|
18
|
+
parseKeyValue,
|
|
19
|
+
shallowCopy,
|
|
23
20
|
snakeCase,
|
|
21
|
+
toJson,
|
|
22
|
+
toKeyValue,
|
|
23
|
+
uppercase,
|
|
24
24
|
} from "./shared/utils.js";
|
|
25
25
|
import { createElementFromHTML, dealoc, startingTag } from "./shared/dom.js";
|
|
26
|
-
import { Angular } from "./
|
|
26
|
+
import { Angular } from "./angular.js";
|
|
27
27
|
import { createInjector } from "./core/di/injector.js";
|
|
28
28
|
import { wait } from "./shared/test-utils.js";
|
|
29
29
|
|
|
@@ -594,15 +594,16 @@ describe("angular", () => {
|
|
|
594
594
|
|
|
595
595
|
it("should look for ngApp directive using querySelectorAll", () => {
|
|
596
596
|
window.angular.module("ABC", []);
|
|
597
|
-
|
|
598
|
-
|
|
597
|
+
element.querySelector["[ng-app]"] = createElementFromHTML(
|
|
598
|
+
'<div ng-app="ABC"></div>',
|
|
599
|
+
);
|
|
599
600
|
window.angular.init(element);
|
|
600
601
|
expect(bootstrapSpy).toHaveBeenCalled();
|
|
601
602
|
});
|
|
602
603
|
|
|
603
604
|
it("should bootstrap anonymously", () => {
|
|
604
|
-
|
|
605
|
-
|
|
605
|
+
element.querySelector["[ng-app]"] =
|
|
606
|
+
createElementFromHTML("<div ng-app></div>");
|
|
606
607
|
window.angular.init(element);
|
|
607
608
|
expect(bootstrapSpy).toHaveBeenCalled();
|
|
608
609
|
});
|
|
@@ -1021,3 +1022,170 @@ describe("angular", () => {
|
|
|
1021
1022
|
});
|
|
1022
1023
|
});
|
|
1023
1024
|
});
|
|
1025
|
+
|
|
1026
|
+
describe("module loader", () => {
|
|
1027
|
+
let angular;
|
|
1028
|
+
beforeEach(() => {
|
|
1029
|
+
angular = window.angular = new Angular();
|
|
1030
|
+
});
|
|
1031
|
+
|
|
1032
|
+
it("allows registering a module", () => {
|
|
1033
|
+
const myModule = angular.module("myModule", []);
|
|
1034
|
+
expect(myModule).toBeDefined();
|
|
1035
|
+
expect(myModule.name).toEqual("myModule");
|
|
1036
|
+
});
|
|
1037
|
+
|
|
1038
|
+
it("allows getting a module", () => {
|
|
1039
|
+
const myModule = angular.module("myModule", []);
|
|
1040
|
+
const gotModule = angular.module("myModule");
|
|
1041
|
+
expect(gotModule).toBeDefined();
|
|
1042
|
+
expect(gotModule).toBe(myModule);
|
|
1043
|
+
});
|
|
1044
|
+
|
|
1045
|
+
it("throws when trying to get a nonexistent module", () => {
|
|
1046
|
+
expect(() => {
|
|
1047
|
+
angular.module("nonexistent");
|
|
1048
|
+
}).toThrow();
|
|
1049
|
+
});
|
|
1050
|
+
|
|
1051
|
+
it("does not allow a module to be called hasOwnProperty", () => {
|
|
1052
|
+
expect(() => {
|
|
1053
|
+
angular.module("hasOwnProperty", []);
|
|
1054
|
+
}).toThrow();
|
|
1055
|
+
});
|
|
1056
|
+
|
|
1057
|
+
it("attaches the requires array to the registered module", () => {
|
|
1058
|
+
const myModule = angular.module("myModule", ["myOtherModule"]);
|
|
1059
|
+
expect(myModule.requires).toEqual(["myOtherModule"]);
|
|
1060
|
+
});
|
|
1061
|
+
|
|
1062
|
+
it("replaces a module when registered with same name again", () => {
|
|
1063
|
+
const myModule = angular.module("myModule", []);
|
|
1064
|
+
const myNewModule = angular.module("myModule", []);
|
|
1065
|
+
expect(myNewModule).not.toBe(myModule);
|
|
1066
|
+
});
|
|
1067
|
+
|
|
1068
|
+
it("should record calls", () => {
|
|
1069
|
+
const otherModule = angular.module("other", []);
|
|
1070
|
+
otherModule.config("otherInit");
|
|
1071
|
+
|
|
1072
|
+
const myModule = angular.module("my", ["other"], "config");
|
|
1073
|
+
|
|
1074
|
+
expect(
|
|
1075
|
+
myModule
|
|
1076
|
+
.decorator("dk", "dv")
|
|
1077
|
+
.provider("sk", "sv")
|
|
1078
|
+
.factory("fk", "fv")
|
|
1079
|
+
.service("a", "aa")
|
|
1080
|
+
.value("k", "v")
|
|
1081
|
+
.filter("f", "ff")
|
|
1082
|
+
.directive("d", "dd")
|
|
1083
|
+
.component("c", "cc")
|
|
1084
|
+
.controller("ctrl", "ccc")
|
|
1085
|
+
.config("init2")
|
|
1086
|
+
.constant("abc", 123)
|
|
1087
|
+
.run("runBlock"),
|
|
1088
|
+
).toBe(myModule);
|
|
1089
|
+
|
|
1090
|
+
expect(myModule.requires).toEqual(["other"]);
|
|
1091
|
+
expect(myModule.invokeQueue).toEqual([
|
|
1092
|
+
["$provide", "constant", jasmine.objectContaining(["abc", 123])],
|
|
1093
|
+
["$provide", "provider", jasmine.objectContaining(["sk", "sv"])],
|
|
1094
|
+
["$provide", "factory", jasmine.objectContaining(["fk", "fv"])],
|
|
1095
|
+
["$provide", "service", jasmine.objectContaining(["a", "aa"])],
|
|
1096
|
+
["$provide", "value", jasmine.objectContaining(["k", "v"])],
|
|
1097
|
+
["$filterProvider", "register", jasmine.objectContaining(["f", "ff"])],
|
|
1098
|
+
["$compileProvider", "directive", jasmine.objectContaining(["d", "dd"])],
|
|
1099
|
+
["$compileProvider", "component", jasmine.objectContaining(["c", "cc"])],
|
|
1100
|
+
[
|
|
1101
|
+
"$controllerProvider",
|
|
1102
|
+
"register",
|
|
1103
|
+
jasmine.objectContaining(["ctrl", "ccc"]),
|
|
1104
|
+
],
|
|
1105
|
+
]);
|
|
1106
|
+
expect(myModule.configBlocks).toEqual([
|
|
1107
|
+
["$injector", "invoke", jasmine.objectContaining(["config"])],
|
|
1108
|
+
["$provide", "decorator", jasmine.objectContaining(["dk", "dv"])],
|
|
1109
|
+
["$injector", "invoke", jasmine.objectContaining(["init2"])],
|
|
1110
|
+
]);
|
|
1111
|
+
expect(myModule.runBlocks).toEqual(["runBlock"]);
|
|
1112
|
+
});
|
|
1113
|
+
|
|
1114
|
+
it("should not throw error when `module.decorator` is declared before provider that it decorates", () => {
|
|
1115
|
+
angular
|
|
1116
|
+
.module("theModule", [])
|
|
1117
|
+
.decorator("theProvider", ($delegate) => $delegate)
|
|
1118
|
+
.factory("theProvider", () => ({}));
|
|
1119
|
+
|
|
1120
|
+
expect(() => {
|
|
1121
|
+
createInjector(["theModule"]);
|
|
1122
|
+
}).not.toThrow();
|
|
1123
|
+
});
|
|
1124
|
+
|
|
1125
|
+
it("should run decorators in order of declaration, even when mixed with provider.decorator", () => {
|
|
1126
|
+
let log = "";
|
|
1127
|
+
|
|
1128
|
+
angular
|
|
1129
|
+
.module("theModule", [])
|
|
1130
|
+
.factory("theProvider", () => ({ api: "provider" }))
|
|
1131
|
+
.decorator("theProvider", ($delegate) => {
|
|
1132
|
+
$delegate.api += "-first";
|
|
1133
|
+
return $delegate;
|
|
1134
|
+
})
|
|
1135
|
+
.config(($provide) => {
|
|
1136
|
+
$provide.decorator("theProvider", ($delegate) => {
|
|
1137
|
+
$delegate.api += "-second";
|
|
1138
|
+
return $delegate;
|
|
1139
|
+
});
|
|
1140
|
+
})
|
|
1141
|
+
.decorator("theProvider", ($delegate) => {
|
|
1142
|
+
$delegate.api += "-third";
|
|
1143
|
+
return $delegate;
|
|
1144
|
+
})
|
|
1145
|
+
.run((theProvider) => {
|
|
1146
|
+
log = theProvider.api;
|
|
1147
|
+
});
|
|
1148
|
+
|
|
1149
|
+
createInjector(["theModule"]);
|
|
1150
|
+
expect(log).toBe("provider-first-second-third");
|
|
1151
|
+
});
|
|
1152
|
+
|
|
1153
|
+
it("should decorate the last declared provider if multiple have been declared", () => {
|
|
1154
|
+
let log = "";
|
|
1155
|
+
|
|
1156
|
+
angular
|
|
1157
|
+
.module("theModule", [])
|
|
1158
|
+
.factory("theProvider", () => ({
|
|
1159
|
+
api: "firstProvider",
|
|
1160
|
+
}))
|
|
1161
|
+
.decorator("theProvider", ($delegate) => {
|
|
1162
|
+
$delegate.api += "-decorator";
|
|
1163
|
+
return $delegate;
|
|
1164
|
+
})
|
|
1165
|
+
.factory("theProvider", () => ({
|
|
1166
|
+
api: "secondProvider",
|
|
1167
|
+
}))
|
|
1168
|
+
.run((theProvider) => {
|
|
1169
|
+
log = theProvider.api;
|
|
1170
|
+
});
|
|
1171
|
+
|
|
1172
|
+
createInjector(["theModule"]);
|
|
1173
|
+
expect(log).toBe("secondProvider-decorator");
|
|
1174
|
+
});
|
|
1175
|
+
|
|
1176
|
+
it("should allow module redefinition", () => {
|
|
1177
|
+
expect(angular.module("a", [])).not.toBe(angular.module("a", []));
|
|
1178
|
+
});
|
|
1179
|
+
|
|
1180
|
+
it("should complain of no module", () => {
|
|
1181
|
+
expect(() => {
|
|
1182
|
+
angular.module("dontExist");
|
|
1183
|
+
}).toThrow();
|
|
1184
|
+
});
|
|
1185
|
+
|
|
1186
|
+
it('should complain if a module is called "hasOwnProperty', () => {
|
|
1187
|
+
expect(() => {
|
|
1188
|
+
angular.module("hasOwnProperty", []);
|
|
1189
|
+
}).toThrow();
|
|
1190
|
+
});
|
|
1191
|
+
});
|
|
@@ -5,33 +5,33 @@ import {
|
|
|
5
5
|
} from "../shared/dom.js";
|
|
6
6
|
import { isDefined } from "../shared/utils.js";
|
|
7
7
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
ACTIVE_CLASS_SUFFIX,
|
|
9
|
+
ADD_CLASS_SUFFIX,
|
|
10
10
|
ANIMATION_DELAY_PROP,
|
|
11
|
-
TRANSITION_PROP,
|
|
12
|
-
PROPERTY_KEY,
|
|
13
11
|
ANIMATION_DURATION_PROP,
|
|
14
12
|
ANIMATION_ITERATION_COUNT_KEY,
|
|
15
13
|
ANIMATION_PROP,
|
|
16
|
-
|
|
14
|
+
ANIMATIONEND_EVENT,
|
|
17
15
|
applyAnimationClassesFactory,
|
|
18
|
-
pendClasses,
|
|
19
|
-
prepareAnimationOptions,
|
|
20
|
-
packageStyles,
|
|
21
|
-
EVENT_CLASS_PREFIX,
|
|
22
|
-
ADD_CLASS_SUFFIX,
|
|
23
|
-
REMOVE_CLASS_SUFFIX,
|
|
24
|
-
applyInlineStyle,
|
|
25
|
-
SAFE_FAST_FORWARD_DURATION_VALUE,
|
|
26
|
-
ACTIVE_CLASS_SUFFIX,
|
|
27
16
|
applyAnimationFromStyles,
|
|
28
17
|
applyAnimationStyles,
|
|
18
|
+
applyAnimationToStyles,
|
|
19
|
+
applyInlineStyle,
|
|
29
20
|
blockKeyframeAnimations,
|
|
21
|
+
DURATION_KEY,
|
|
22
|
+
EVENT_CLASS_PREFIX,
|
|
23
|
+
packageStyles,
|
|
24
|
+
pendClasses,
|
|
25
|
+
prepareAnimationOptions,
|
|
26
|
+
PROPERTY_KEY,
|
|
27
|
+
REMOVE_CLASS_SUFFIX,
|
|
30
28
|
removeFromArray,
|
|
29
|
+
SAFE_FAST_FORWARD_DURATION_VALUE,
|
|
31
30
|
TIMING_KEY,
|
|
31
|
+
TRANSITION_DELAY_PROP,
|
|
32
|
+
TRANSITION_DURATION_PROP,
|
|
33
|
+
TRANSITION_PROP,
|
|
32
34
|
TRANSITIONEND_EVENT,
|
|
33
|
-
ANIMATIONEND_EVENT,
|
|
34
|
-
applyAnimationToStyles,
|
|
35
35
|
} from "./shared.js";
|
|
36
36
|
|
|
37
37
|
const ANIMATE_TIMER_KEY = "$$animateCss";
|
|
@@ -771,8 +771,7 @@ export function AnimateCssProvider() {
|
|
|
771
771
|
|
|
772
772
|
temporaryStyles.forEach((entry) => {
|
|
773
773
|
const key = entry[0];
|
|
774
|
-
|
|
775
|
-
node.style[key] = value;
|
|
774
|
+
node.style[key] = entry[1];
|
|
776
775
|
});
|
|
777
776
|
|
|
778
777
|
applyAnimationClasses(element, options);
|
|
@@ -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 { isObject } from "../../shared/utils.js";
|
|
4
4
|
import { isFunction } from "../../shared/utils.js";
|
|
5
5
|
import { createInjector } from "../di/injector.js";
|
package/src/animations/shared.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { isString, minErr
|
|
1
|
+
import { extend, isString, minErr } from "../shared/utils.js";
|
|
2
2
|
import { ASTType } from "../core/parse/ast-type.js";
|
|
3
3
|
|
|
4
4
|
export const ADD_CLASS_SUFFIX = "-add";
|
|
@@ -331,8 +331,7 @@ export function blockKeyframeAnimations(node, applyBlock) {
|
|
|
331
331
|
|
|
332
332
|
export function applyInlineStyle(node, styleTuple) {
|
|
333
333
|
const prop = styleTuple[0];
|
|
334
|
-
|
|
335
|
-
node.style[prop] = value;
|
|
334
|
+
node.style[prop] = styleTuple[1];
|
|
336
335
|
}
|
|
337
336
|
|
|
338
337
|
export function concatWithSpace(a, b) {
|
package/src/binding.spec.js
CHANGED
|
@@ -139,7 +139,7 @@ const EVENT_HANDLER_ATTR_REGEXP = /^(on[a-z]+|formaction)$/;
|
|
|
139
139
|
export const DirectiveSuffix = "Directive";
|
|
140
140
|
|
|
141
141
|
export class CompileProvider {
|
|
142
|
-
static $inject = ["$provide", "$$sanitizeUriProvider"];
|
|
142
|
+
/* @ignore */ static $inject = ["$provide", "$$sanitizeUriProvider"];
|
|
143
143
|
|
|
144
144
|
/**
|
|
145
145
|
* @param {import('../../interface.js').Provider} $provide
|
|
@@ -1216,8 +1216,7 @@ export class CompileProvider {
|
|
|
1216
1216
|
// Null out all of these references for garbage collection
|
|
1217
1217
|
compileNodes = transcludeFn = previousCompileContext = null;
|
|
1218
1218
|
}
|
|
1219
|
-
|
|
1220
|
-
return linked;
|
|
1219
|
+
return compiled.apply(this, arguments);
|
|
1221
1220
|
};
|
|
1222
1221
|
}
|
|
1223
1222
|
|
|
@@ -1561,14 +1560,13 @@ export class CompileProvider {
|
|
|
1561
1560
|
// * `undefined` - a slot that was not declared (i.e. invalid)
|
|
1562
1561
|
const slotTranscludeFn = boundTranscludeFn.$$slots[slotName];
|
|
1563
1562
|
if (slotTranscludeFn) {
|
|
1564
|
-
|
|
1563
|
+
return slotTranscludeFn(
|
|
1565
1564
|
scope,
|
|
1566
1565
|
cloneAttachFn,
|
|
1567
1566
|
transcludeControllers,
|
|
1568
1567
|
futureParentElement,
|
|
1569
1568
|
scopeToChild,
|
|
1570
1569
|
);
|
|
1571
|
-
return slotTranscludeRes;
|
|
1572
1570
|
}
|
|
1573
1571
|
|
|
1574
1572
|
if (isUndefined(slotTranscludeFn)) {
|
|
@@ -1581,14 +1579,13 @@ export class CompileProvider {
|
|
|
1581
1579
|
);
|
|
1582
1580
|
}
|
|
1583
1581
|
} else {
|
|
1584
|
-
|
|
1582
|
+
return boundTranscludeFn(
|
|
1585
1583
|
scope,
|
|
1586
1584
|
cloneAttachFn,
|
|
1587
1585
|
transcludeControllers,
|
|
1588
1586
|
futureParentElement,
|
|
1589
1587
|
scopeToChild,
|
|
1590
1588
|
);
|
|
1591
|
-
return boundTranscludeRes;
|
|
1592
1589
|
}
|
|
1593
1590
|
}
|
|
1594
1591
|
};
|
|
@@ -5,6 +5,7 @@ const TEST_URL = "src/core/controller/controller.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/core/di/injector.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
|
+
assert,
|
|
3
|
+
assertArg,
|
|
2
4
|
assertArgFn,
|
|
3
|
-
|
|
5
|
+
assertNotHasOwnProperty,
|
|
4
6
|
isFunction,
|
|
7
|
+
isObject,
|
|
5
8
|
isString,
|
|
6
9
|
isUndefined,
|
|
7
|
-
|
|
8
|
-
assertNotHasOwnProperty,
|
|
9
|
-
isObject,
|
|
10
|
-
assert,
|
|
10
|
+
minErr,
|
|
11
11
|
} from "../../shared/utils.js";
|
|
12
12
|
import { INJECTOR_LITERAL } from "./ng-module.js";
|
|
13
|
-
import {
|
|
13
|
+
import { InjectorService, ProviderInjector } from "./internal-injector.js";
|
|
14
14
|
|
|
15
15
|
const ARROW_ARG = /^([^(]+?)=>/;
|
|
16
16
|
const FN_ARGS = /^[^(]*\(\s*([^)]*)\)/m;
|
|
@@ -252,8 +252,7 @@ function stringifyFn(fn) {
|
|
|
252
252
|
*/
|
|
253
253
|
function extractArgs(fn) {
|
|
254
254
|
const fnText = stringifyFn(fn).replace(STRIP_COMMENTS, "");
|
|
255
|
-
|
|
256
|
-
return args;
|
|
255
|
+
return fnText.match(ARROW_ARG) || fnText.match(FN_ARGS);
|
|
257
256
|
}
|
|
258
257
|
|
|
259
258
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Angular } from "../../
|
|
1
|
+
import { Angular } from "../../angular.js";
|
|
2
2
|
import { createInjector, annotate } from "./injector.js";
|
|
3
3
|
import { extend } from "../../shared/utils.js";
|
|
4
4
|
|
|
@@ -296,7 +296,7 @@ describe("injector.modules", () => {
|
|
|
296
296
|
module.constant("b", 2);
|
|
297
297
|
const injector = createInjector(["myModule"]);
|
|
298
298
|
class Foo {
|
|
299
|
-
static $inject = ["a", "b"];
|
|
299
|
+
/* @ignore */ static $inject = ["a", "b"];
|
|
300
300
|
constructor(a, b) {
|
|
301
301
|
this.c = a + b;
|
|
302
302
|
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { test, expect } from "@playwright/test";
|
|
2
2
|
|
|
3
|
-
const TEST_URL = "src/core/di/injector.html";
|
|
3
|
+
const TEST_URL = "src/core/di/injector.html?random=false";
|
|
4
4
|
|
|
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(
|
|
8
|
+
await page.waitForTimeout(1000);
|
|
9
9
|
await expect(page.locator(".jasmine-overall-result")).toHaveText(
|
|
10
10
|
/0 failures/,
|
|
11
11
|
);
|
|
@@ -109,8 +109,7 @@ class AbstractInjector {
|
|
|
109
109
|
|
|
110
110
|
if (isClass(/** @type {Function} */ (fn))) {
|
|
111
111
|
args.unshift(null);
|
|
112
|
-
|
|
113
|
-
return res;
|
|
112
|
+
return new (Function.prototype.bind.apply(fn, args))();
|
|
114
113
|
} else {
|
|
115
114
|
return /** @type {Function} */ (fn).apply(self, args);
|
|
116
115
|
}
|
|
@@ -199,8 +198,7 @@ export class InjectorService extends AbstractInjector {
|
|
|
199
198
|
*/
|
|
200
199
|
factory(serviceName) {
|
|
201
200
|
const provider = this.providerInjector.get(serviceName + providerSuffix);
|
|
202
|
-
|
|
203
|
-
return res;
|
|
201
|
+
return this.invoke(provider.$get, provider, undefined, serviceName);
|
|
204
202
|
}
|
|
205
203
|
|
|
206
204
|
/**
|
|
@@ -234,8 +232,7 @@ function stringifyFn(fn) {
|
|
|
234
232
|
*/
|
|
235
233
|
function extractArgs(fn) {
|
|
236
234
|
const fnText = stringifyFn(fn).replace(STRIP_COMMENTS, "");
|
|
237
|
-
|
|
238
|
-
return args;
|
|
235
|
+
return fnText.match(ARROW_ARG) || fnText.match(FN_ARGS);
|
|
239
236
|
}
|
|
240
237
|
|
|
241
238
|
/**
|
|
@@ -5,6 +5,7 @@ const TEST_URL = "src/core/filter/filter.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
|
);
|