@angular-wave/angular.ts 0.9.4 → 0.9.5
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/index.d.ts +1 -84
- package/{src/index.ts → @types/namespace.d.ts} +4 -24
- package/@types/router/template-factory.d.ts +2 -2
- package/dist/angular-ts.esm.js +3 -3
- package/dist/angular-ts.umd.js +3 -3
- package/dist/angular-ts.umd.min.js +1 -1
- package/package.json +8 -1
- package/.github/workflows/ci.yml +0 -104
- package/.github/workflows/gh-pages.yml +0 -75
- package/.husky/pre-commit +0 -5
- package/.prettierignore +0 -9
- package/CHANGELOG.md +0 -17667
- package/CODE_OF_CONDUCT.md +0 -3
- package/CONTRIBUTING.md +0 -247
- package/DEVELOPERS.md +0 -499
- package/Makefile +0 -60
- package/RELEASE.md +0 -86
- package/TRIAGING.md +0 -127
- package/docs/.cspell.yml +0 -8
- package/docs/.github/dependabot.yml +0 -14
- package/docs/.nvmrc +0 -1
- package/docs/CONTRIBUTING.md +0 -28
- package/docs/Dockerfile +0 -4
- package/docs/LICENSE +0 -201
- package/docs/README.md +0 -217
- package/docs/assets/icons/logo.svg +0 -1
- package/docs/assets/scss/_variables_project.scss +0 -12
- package/docs/assets/scss/_variables_project_after_bs.scss +0 -8
- package/docs/assets/scss/index.scss +0 -48
- package/docs/config.yaml +0 -15
- package/docs/content/_index.md +0 -28
- package/docs/content/docs/_index.md +0 -61
- package/docs/content/docs/directive/_index.md +0 -4
- package/docs/content/docs/directive/app.md +0 -11
- package/docs/content/docs/directive/aria.md +0 -0
- package/docs/content/docs/directive/bind.md +0 -72
- package/docs/content/docs/directive/blur.md +0 -38
- package/docs/content/docs/directive/channel.md +0 -37
- package/docs/content/docs/directive/class-even.md +0 -47
- package/docs/content/docs/directive/class-odd.md +0 -48
- package/docs/content/docs/directive/class.md +0 -64
- package/docs/content/docs/directive/click.md +0 -41
- package/docs/content/docs/directive/cloak.md +0 -74
- package/docs/content/docs/directive/copy.md +0 -38
- package/docs/content/docs/directive/cut.md +0 -40
- package/docs/content/docs/directive/dblclick.md +0 -41
- package/docs/content/docs/directive/focus.md +0 -38
- package/docs/content/docs/directive/get.md +0 -203
- package/docs/content/docs/directive/include.md +0 -7
- package/docs/content/docs/directive/keydown.md +0 -38
- package/docs/content/docs/directive/keyup.md +0 -38
- package/docs/content/docs/directive/load.md +0 -43
- package/docs/content/docs/directive/mousedown.md +0 -38
- package/docs/content/docs/directive/mouseenter.md +0 -38
- package/docs/content/docs/directive/mouseleave.md +0 -38
- package/docs/content/docs/directive/mousemove.md +0 -38
- package/docs/content/docs/directive/mouseout.md +0 -38
- package/docs/content/docs/directive/mouseover.md +0 -38
- package/docs/content/docs/directive/mouseup.md +0 -38
- package/docs/content/docs/directive/non-bindable.md +0 -28
- package/docs/content/docs/filter/_index.md +0 -4
- package/docs/content/docs/filter/filter.md +0 -78
- package/docs/content/docs/filter/json.md +0 -19
- package/docs/content/docs/filter/limit-to.md +0 -30
- package/docs/content/docs/filter/order-by.md +0 -123
- package/docs/content/docs/provider/_index.md +0 -4
- package/docs/content/docs/provider/eventBusProvider.md +0 -35
- package/docs/content/docs/provider/locationProvider.md +0 -26
- package/docs/content/docs/provider/logProvider.md +0 -59
- package/docs/content/docs/provider/sceProvider.md +0 -194
- package/docs/content/docs/provider/templateCacheProvider.md +0 -100
- package/docs/content/docs/provider/templateRequestProvider.md +0 -5
- package/docs/content/docs/service/_index.md +0 -4
- package/docs/content/docs/service/compile.md +0 -5
- package/docs/content/docs/service/controller.md +0 -5
- package/docs/content/docs/service/eventBus.md +0 -56
- package/docs/content/docs/service/http.md +0 -161
- package/docs/content/docs/service/interpolation.md +0 -5
- package/docs/content/docs/service/location.md +0 -57
- package/docs/content/docs/service/log.md +0 -113
- package/docs/content/docs/service/parse.md +0 -5
- package/docs/content/docs/service/rootElement.md +0 -5
- package/docs/content/docs/service/rootScope.md +0 -5
- package/docs/content/docs/service/sce.md +0 -194
- package/docs/content/docs/service/templateCache.md +0 -64
- package/docs/content/docs/service/templateRequest.md +0 -5
- package/docs/content/docs/service/url.md +0 -5
- package/docs/content/docs/values/_index.md +0 -4
- package/docs/content/docs/values/document.md +0 -29
- package/docs/content/docs/values/window.md +0 -29
- package/docs/docker-compose.yaml +0 -12
- package/docs/docsy.work +0 -5
- package/docs/docsy.work.sum +0 -0
- package/docs/go.mod +0 -5
- package/docs/go.sum +0 -6
- package/docs/hugo-disabled.toml +0 -220
- package/docs/hugo.yaml +0 -200
- package/docs/layouts/404.html +0 -13
- package/docs/layouts/_markup/render-heading.html +0 -1
- package/docs/layouts/partials/hooks/head-end.html +0 -3
- package/docs/layouts/shortcodes/showcss.html +0 -2
- package/docs/layouts/shortcodes/showhtml.html +0 -2
- package/docs/layouts/shortcodes/showjs.html +0 -2
- package/docs/layouts/shortcodes/showraw.html +0 -1
- package/docs/layouts/shortcodes/version.html +0 -1
- package/docs/package-lock.json +0 -2293
- package/docs/package.json +0 -53
- package/docs/static/examples/counter/counter-test.html +0 -13
- package/docs/static/examples/counter/counter.html +0 -5
- package/docs/static/examples/counter/counter.test.js +0 -28
- package/docs/static/examples/document/document.html +0 -3
- package/docs/static/examples/eventbus/eventbus-test.html +0 -15
- package/docs/static/examples/eventbus/eventbus.html +0 -13
- package/docs/static/examples/eventbus/eventbus.js +0 -15
- package/docs/static/examples/eventbus/eventbus.test.js +0 -19
- package/docs/static/examples/i18n/i18n.html +0 -77
- package/docs/static/examples/ng-bind/ng-bind.html +0 -9
- package/docs/static/examples/ng-blur/ng-blur.html +0 -9
- package/docs/static/examples/ng-channel/ng-channel-test.html +0 -17
- package/docs/static/examples/ng-channel/ng-channel.html +0 -24
- package/docs/static/examples/ng-channel/ng-channel.test.js +0 -31
- package/docs/static/examples/ng-class/ng-class.html +0 -71
- package/docs/static/examples/ng-class-even/ng-class-even.html +0 -8
- package/docs/static/examples/ng-class-odd/ng-class-odd.html +0 -8
- package/docs/static/examples/ng-click/ng-click.html +0 -6
- package/docs/static/examples/ng-copy/ng-copy.html +0 -6
- package/docs/static/examples/ng-cut/ng-cut.html +0 -6
- package/docs/static/examples/ng-dblclick/ng-dblclick.html +0 -10
- package/docs/static/examples/ng-focus/ng-focus.html +0 -9
- package/docs/static/examples/ng-keydown/ng-keydown.html +0 -9
- package/docs/static/examples/ng-keyup/ng-keyup.html +0 -9
- package/docs/static/examples/ng-load/ng-load.html +0 -8
- package/docs/static/examples/ng-mousedown/ng-mousedown.html +0 -6
- package/docs/static/examples/ng-mouseenter/ng-mouseenter.html +0 -4
- package/docs/static/examples/ng-mouseleave/ng-mouseleave.html +0 -4
- package/docs/static/examples/ng-mousemove/ng-mousemove.html +0 -4
- package/docs/static/examples/ng-mouseout/ng-mouseout.html +0 -4
- package/docs/static/examples/ng-mouseover/ng-mouseover.html +0 -4
- package/docs/static/examples/ng-mouseup/ng-mouseup.html +0 -4
- package/docs/static/examples/ng-non-bindable/ng-non-bindable-test.html +0 -13
- package/docs/static/examples/ng-non-bindable/ng-non-bindable.html +0 -3
- package/docs/static/examples/ng-non-bindable/ng-non-bindable.test.js +0 -11
- package/docs/static/examples/window/window.html +0 -4
- package/docs/static/typedoc/.nojekyll +0 -1
- package/docs/static/typedoc/assets/hierarchy.js +0 -1
- package/docs/static/typedoc/assets/highlight.css +0 -29
- package/docs/static/typedoc/assets/icons.js +0 -18
- package/docs/static/typedoc/assets/icons.svg +0 -1
- package/docs/static/typedoc/assets/main.js +0 -60
- package/docs/static/typedoc/assets/navigation.js +0 -1
- package/docs/static/typedoc/assets/search.js +0 -1
- package/docs/static/typedoc/assets/style.css +0 -1633
- package/docs/static/typedoc/classes/Location.html +0 -55
- package/docs/static/typedoc/classes/LocationProvider.html +0 -20
- package/docs/static/typedoc/classes/LogProvider.html +0 -6
- package/docs/static/typedoc/classes/PubSub.html +0 -71
- package/docs/static/typedoc/classes/PubSubProvider.html +0 -4
- package/docs/static/typedoc/classes/TemplateCacheProvider.html +0 -5
- package/docs/static/typedoc/hierarchy.html +0 -1
- package/docs/static/typedoc/index.html +0 -1
- package/docs/static/typedoc/interfaces/DefaultPorts.html +0 -5
- package/docs/static/typedoc/interfaces/Html5Mode.html +0 -23
- package/docs/static/typedoc/interfaces/HttpHeadersGetter.html +0 -1
- package/docs/static/typedoc/interfaces/HttpProviderDefaults.html +0 -31
- package/docs/static/typedoc/interfaces/HttpRequestConfigHeaders.html +0 -6
- package/docs/static/typedoc/interfaces/HttpRequestTransformer.html +0 -1
- package/docs/static/typedoc/interfaces/HttpResponse.html +0 -7
- package/docs/static/typedoc/interfaces/HttpResponseTransformer.html +0 -1
- package/docs/static/typedoc/interfaces/HttpService.html +0 -38
- package/docs/static/typedoc/interfaces/LogService.html +0 -12
- package/docs/static/typedoc/interfaces/RequestConfig.html +0 -48
- package/docs/static/typedoc/interfaces/RequestShortcutConfig.html +0 -38
- package/docs/static/typedoc/interfaces/ServiceProvider.html +0 -5
- package/docs/static/typedoc/interfaces/UrlParts.html +0 -9
- package/docs/static/typedoc/types/HttpParamSerializer.html +0 -2
- package/docs/static/typedoc/types/HttpParams.html +0 -2
- package/docs/static/typedoc/types/HttpPromise.html +0 -1
- package/docs/static/typedoc/types/HttpResponseStatus.html +0 -1
- package/docs/static/typedoc/types/LogCall.html +0 -2
- package/docs/static/typedoc/types/LogServiceFactory.html +0 -2
- package/docs/static/typedoc/types/UrlChangeListener.html +0 -5
- package/docs/static/typedoc/variables/EventBus.html +0 -1
- package/docs/static/version.js +0 -13
- package/docs/test-results/.last-run.json +0 -4
- package/docs/test-results/static-examples-counter-counter-counter-example/error-context.md +0 -50
- package/eslint.config.js +0 -26
- package/images/android-chrome-192x192.png +0 -0
- package/images/android-chrome-512x512.png +0 -0
- package/images/apple-touch-icon.png +0 -0
- package/images/favicon-16x16.png +0 -0
- package/images/favicon-32x32.png +0 -0
- package/images/favicon.ico +0 -0
- package/images/site.webmanifest +0 -19
- package/index.html +0 -86
- package/legacy.d.ts +0 -1678
- package/playwright.config.ts +0 -81
- package/public/jasmine/boot0.js +0 -66
- package/public/jasmine/boot1.js +0 -134
- package/public/jasmine/jasmine-html.js +0 -970
- package/public/jasmine/jasmine.css +0 -323
- package/public/jasmine/jasmine.js +0 -11406
- package/public/public/README.md +0 -1
- package/public/public/circle.html +0 -1
- package/public/public/jasmine-helper.css +0 -9
- package/public/public/my_child_directive.html +0 -1
- package/public/public/my_directive.html +0 -1
- package/public/public/my_other_directive.html +0 -1
- package/public/public/test.html +0 -1
- package/rollup.config.js +0 -51
- package/src/angular.js +0 -286
- package/src/angular.spec.js +0 -1191
- package/src/animations/animate-cache.js +0 -80
- package/src/animations/animate-children-directive.js +0 -32
- package/src/animations/animate-children-directive.md +0 -80
- package/src/animations/animate-css-driver.js +0 -284
- package/src/animations/animate-css.html +0 -58
- package/src/animations/animate-css.js +0 -915
- package/src/animations/animate-css.md +0 -263
- package/src/animations/animate-js-driver.js +0 -60
- package/src/animations/animate-js.html +0 -47
- package/src/animations/animate-js.js +0 -371
- package/src/animations/animate-queue.js +0 -859
- package/src/animations/animate-runner.js +0 -193
- package/src/animations/animate-swap.js +0 -33
- package/src/animations/animate-swap.md +0 -88
- package/src/animations/animate.html +0 -19
- package/src/animations/animate.js +0 -546
- package/src/animations/animate.md +0 -933
- package/src/animations/animate.spec.js +0 -490
- package/src/animations/animation.js +0 -519
- package/src/animations/animations.test.js +0 -10
- package/src/animations/interface.ts +0 -19
- package/src/animations/raf-scheduler.html +0 -19
- package/src/animations/raf-scheduler.js +0 -92
- package/src/animations/raf-scheduler.spec.js +0 -98
- package/src/animations/shared.js +0 -341
- package/src/binding.html +0 -19
- package/src/binding.spec.js +0 -474
- package/src/binding.test.js +0 -10
- package/src/core/compile/attributes.js +0 -337
- package/src/core/compile/compile.html +0 -19
- package/src/core/compile/compile.js +0 -3271
- package/src/core/compile/compile.md +0 -1128
- package/src/core/compile/compile.spec.js +0 -15574
- package/src/core/compile/compile.test.js +0 -12
- package/src/core/controller/controller.html +0 -22
- package/src/core/controller/controller.js +0 -193
- package/src/core/controller/controller.spec.js +0 -334
- package/src/core/controller/controller.test.js +0 -12
- package/src/core/controller/interface.ts +0 -6
- package/src/core/core.html +0 -20
- package/src/core/core.test.js +0 -12
- package/src/core/di/injector.html +0 -19
- package/src/core/di/injector.js +0 -307
- package/src/core/di/injector.md +0 -740
- package/src/core/di/injector.spec.js +0 -2310
- package/src/core/di/injector.test.js +0 -12
- package/src/core/di/internal-injector.js +0 -286
- package/src/core/di/ng-module.html +0 -19
- package/src/core/di/ng-module.js +0 -229
- package/src/core/di/ng-module.spec.js +0 -263
- package/src/core/di/ng-module.test.js +0 -12
- package/src/core/filter/filter.html +0 -19
- package/src/core/filter/filter.js +0 -55
- package/src/core/filter/filter.md +0 -132
- package/src/core/filter/filter.spec.js +0 -149
- package/src/core/filter/filter.test.js +0 -12
- package/src/core/interpolate/interface.ts +0 -14
- package/src/core/interpolate/interpolate.html +0 -22
- package/src/core/interpolate/interpolate.js +0 -410
- package/src/core/interpolate/interpolate.spec.js +0 -601
- package/src/core/interpolate/interpolate.test.js +0 -12
- package/src/core/parse/ast/ast-node.ts +0 -81
- package/src/core/parse/ast/ast.html +0 -19
- package/src/core/parse/ast/ast.js +0 -574
- package/src/core/parse/ast/ast.spec.js +0 -1453
- package/src/core/parse/ast/ast.test.js +0 -10
- package/src/core/parse/ast-type.js +0 -23
- package/src/core/parse/interface.ts +0 -84
- package/src/core/parse/interpreter.js +0 -915
- package/src/core/parse/lexer/lexer.html +0 -19
- package/src/core/parse/lexer/lexer.js +0 -338
- package/src/core/parse/lexer/lexer.spec.js +0 -303
- package/src/core/parse/lexer/lexer.test.js +0 -10
- package/src/core/parse/lexer/token.ts +0 -22
- package/src/core/parse/parse.html +0 -19
- package/src/core/parse/parse.js +0 -337
- package/src/core/parse/parse.md +0 -57
- package/src/core/parse/parse.spec.js +0 -2107
- package/src/core/parse/parse.test.js +0 -10
- package/src/core/parse/parser/parser.html +0 -19
- package/src/core/parse/parser/parser.js +0 -64
- package/src/core/parse/parser/parser.spec.js +0 -8
- package/src/core/parse/parser/parser.test.js +0 -10
- package/src/core/prop.spec.js +0 -775
- package/src/core/root-element.spec.js +0 -14
- package/src/core/sanitize/interface.ts +0 -10
- package/src/core/sanitize/sanitize-uri.js +0 -75
- package/src/core/sanitize/sanitize-uri.spec.js +0 -249
- package/src/core/sanitize/sanitize-uri.test.js +0 -12
- package/src/core/sanitize/sanitize.html +0 -22
- package/src/core/scope/scope.html +0 -19
- package/src/core/scope/scope.js +0 -1252
- package/src/core/scope/scope.spec.js +0 -3000
- package/src/core/scope/scope.test.js +0 -12
- package/src/directive/aria/aria.html +0 -19
- package/src/directive/aria/aria.js +0 -382
- package/src/directive/aria/aria.md +0 -145
- package/src/directive/aria/aria.spec.js +0 -1241
- package/src/directive/aria/aria.test.js +0 -12
- package/src/directive/attrs/attrs.html +0 -19
- package/src/directive/attrs/attrs.js +0 -106
- package/src/directive/attrs/attrs.md +0 -224
- package/src/directive/attrs/attrs.spec.js +0 -71
- package/src/directive/attrs/attrs.test.js +0 -12
- package/src/directive/attrs/boolean.html +0 -19
- package/src/directive/attrs/boolean.spec.js +0 -137
- package/src/directive/attrs/boolean.test.js +0 -12
- package/src/directive/attrs/element-style.html +0 -22
- package/src/directive/attrs/element-style.spec.js +0 -85
- package/src/directive/attrs/element-style.test.js +0 -12
- package/src/directive/attrs/src.html +0 -19
- package/src/directive/attrs/src.spec.js +0 -163
- package/src/directive/attrs/src.test.js +0 -12
- package/src/directive/bind/bind-html.spec.js +0 -36
- package/src/directive/bind/bind.html +0 -20
- package/src/directive/bind/bind.js +0 -78
- package/src/directive/bind/bind.md +0 -142
- package/src/directive/bind/bind.spec.js +0 -314
- package/src/directive/bind/bind.test.js +0 -12
- package/src/directive/channel/channel.html +0 -19
- package/src/directive/channel/channel.js +0 -30
- package/src/directive/channel/channel.spec.js +0 -67
- package/src/directive/channel/channel.test.js +0 -10
- package/src/directive/class/class-test.html +0 -23
- package/src/directive/class/class.html +0 -19
- package/src/directive/class/class.js +0 -184
- package/src/directive/class/class.spec.js +0 -704
- package/src/directive/class/class.test.js +0 -12
- package/src/directive/cloak/cloak.html +0 -19
- package/src/directive/cloak/cloak.js +0 -11
- package/src/directive/cloak/cloak.spec.js +0 -44
- package/src/directive/cloak/cloak.test.js +0 -12
- package/src/directive/controller/controller.html +0 -22
- package/src/directive/controller/controller.js +0 -11
- package/src/directive/controller/controller.md +0 -46
- package/src/directive/controller/controller.spec.js +0 -175
- package/src/directive/controller/controller.test.js +0 -12
- package/src/directive/events/click.spec.js +0 -35
- package/src/directive/events/event.spec.js +0 -267
- package/src/directive/events/events-test.html +0 -36
- package/src/directive/events/events.html +0 -20
- package/src/directive/events/events.js +0 -65
- package/src/directive/events/events.md +0 -125
- package/src/directive/events/events.test.js +0 -12
- package/src/directive/form/form.html +0 -19
- package/src/directive/form/form.js +0 -669
- package/src/directive/form/form.spec.js +0 -1515
- package/src/directive/form/form.test.js +0 -12
- package/src/directive/http/delete.spec.js +0 -23
- package/src/directive/http/form-router-test.html +0 -44
- package/src/directive/http/form-test.html +0 -18
- package/src/directive/http/get.spec.js +0 -488
- package/src/directive/http/http.html +0 -22
- package/src/directive/http/http.js +0 -342
- package/src/directive/http/http.test.js +0 -12
- package/src/directive/http/interface.ts +0 -36
- package/src/directive/http/post-example.html +0 -30
- package/src/directive/http/post.spec.js +0 -521
- package/src/directive/http/put.spec.js +0 -23
- package/src/directive/if/if-animate-css.html +0 -57
- package/src/directive/if/if-animate-svg.html +0 -25
- package/src/directive/if/if.html +0 -19
- package/src/directive/if/if.js +0 -72
- package/src/directive/if/if.md +0 -76
- package/src/directive/if/if.spec.js +0 -293
- package/src/directive/if/if.test.js +0 -114
- package/src/directive/include/include.html +0 -19
- package/src/directive/include/include.js +0 -151
- package/src/directive/include/include.md +0 -87
- package/src/directive/include/include.spec.js +0 -734
- package/src/directive/include/include.test.js +0 -12
- package/src/directive/init/init.html +0 -19
- package/src/directive/init/init.js +0 -22
- package/src/directive/init/init.md +0 -41
- package/src/directive/init/init.spec.js +0 -68
- package/src/directive/init/init.test.js +0 -12
- package/src/directive/inject/inject.html +0 -19
- package/src/directive/inject/inject.js +0 -35
- package/src/directive/inject/inject.spec.js +0 -108
- package/src/directive/inject/inject.test.js +0 -12
- package/src/directive/input/input-example.html +0 -15
- package/src/directive/input/input.html +0 -19
- package/src/directive/input/input.js +0 -1078
- package/src/directive/input/input.md +0 -706
- package/src/directive/input/input.spec.js +0 -3700
- package/src/directive/input/input.test.js +0 -12
- package/src/directive/messages/messages.html +0 -22
- package/src/directive/messages/messages.js +0 -349
- package/src/directive/messages/messages.md +0 -543
- package/src/directive/messages/messages.spec.js +0 -1083
- package/src/directive/messages/messages.test.js +0 -12
- package/src/directive/model/change.md +0 -25
- package/src/directive/model/model.html +0 -19
- package/src/directive/model/model.js +0 -1170
- package/src/directive/model/model.spec.js +0 -1976
- package/src/directive/model/model.test.js +0 -12
- package/src/directive/model-options/model-option.test.js +0 -12
- package/src/directive/model-options/model-options.html +0 -22
- package/src/directive/model-options/model-options.js +0 -142
- package/src/directive/model-options/model-options.md +0 -407
- package/src/directive/model-options/model-options.spec.js +0 -1022
- package/src/directive/non-bindable/non-bindable.html +0 -22
- package/src/directive/non-bindable/non-bindable.js +0 -9
- package/src/directive/non-bindable/non-bindable.spec.js +0 -59
- package/src/directive/non-bindable/non-bindable.test.js +0 -12
- package/src/directive/observe/observe-demo.html +0 -184
- package/src/directive/observe/observe.html +0 -19
- package/src/directive/observe/observe.js +0 -41
- package/src/directive/observe/observe.spec.js +0 -106
- package/src/directive/observe/observe.test.js +0 -10
- package/src/directive/on/on.html +0 -19
- package/src/directive/on/on.spec.js +0 -215
- package/src/directive/on/on.test.js +0 -12
- package/src/directive/options/options-example.html +0 -17
- package/src/directive/options/options.html +0 -22
- package/src/directive/options/options.js +0 -542
- package/src/directive/options/options.md +0 -179
- package/src/directive/options/options.spec.js +0 -3554
- package/src/directive/options/options.test.js +0 -12
- package/src/directive/ref/href.html +0 -19
- package/src/directive/ref/href.spec.js +0 -141
- package/src/directive/ref/href.test.js +0 -19
- package/src/directive/ref/ref.html +0 -19
- package/src/directive/ref/ref.js +0 -89
- package/src/directive/ref/ref.spec.js +0 -546
- package/src/directive/repeat/repeat.html +0 -19
- package/src/directive/repeat/repeat.js +0 -333
- package/src/directive/repeat/repeat.md +0 -330
- package/src/directive/repeat/repeat.spec.js +0 -1209
- package/src/directive/repeat/repeat.test.js +0 -12
- package/src/directive/script/script.html +0 -19
- package/src/directive/script/script.js +0 -17
- package/src/directive/script/script.md +0 -11
- package/src/directive/script/script.spec.js +0 -47
- package/src/directive/script/script.test.js +0 -12
- package/src/directive/select/select.html +0 -19
- package/src/directive/select/select.js +0 -594
- package/src/directive/select/select.md +0 -74
- package/src/directive/select/select.spec.js +0 -2566
- package/src/directive/select/select.test.js +0 -12
- package/src/directive/setter/setter.html +0 -19
- package/src/directive/setter/setter.js +0 -59
- package/src/directive/setter/setter.spec.js +0 -100
- package/src/directive/setter/setter.test.js +0 -12
- package/src/directive/show-hide/show-hide.html +0 -22
- package/src/directive/show-hide/show-hide.js +0 -65
- package/src/directive/show-hide/show-hide.md +0 -255
- package/src/directive/show-hide/show-hide.spec.js +0 -268
- package/src/directive/show-hide/show-hide.test.js +0 -12
- package/src/directive/style/style.html +0 -19
- package/src/directive/style/style.js +0 -27
- package/src/directive/style/style.md +0 -23
- package/src/directive/style/style.spec.js +0 -183
- package/src/directive/style/style.test.js +0 -12
- package/src/directive/switch/switch.html +0 -19
- package/src/directive/switch/switch.js +0 -133
- package/src/directive/switch/switch.md +0 -66
- package/src/directive/switch/switch.spec.js +0 -509
- package/src/directive/switch/switch.test.js +0 -12
- package/src/directive/transclude/transclude.js +0 -122
- package/src/directive/validators/validators.html +0 -22
- package/src/directive/validators/validators.js +0 -346
- package/src/directive/validators/validators.spec.js +0 -740
- package/src/directive/validators/validators.test.js +0 -12
- package/src/filters/filter.js +0 -213
- package/src/filters/filter.spec.js +0 -719
- package/src/filters/filters.html +0 -22
- package/src/filters/filters.js +0 -239
- package/src/filters/filters.spec.js +0 -36
- package/src/filters/filters.test.js +0 -12
- package/src/filters/interface.ts +0 -9
- package/src/filters/limit-to.js +0 -55
- package/src/filters/limit-to.spec.js +0 -252
- package/src/filters/order-by.js +0 -181
- package/src/filters/order-by.spec.js +0 -883
- package/src/index.js +0 -6
- package/src/index.spec.js +0 -11
- package/src/injection-tokens.js +0 -81
- package/src/interface.ts +0 -430
- package/src/ng.js +0 -291
- package/src/ng.spec.js +0 -45
- package/src/router/common/trace.js +0 -240
- package/src/router/directives/component-example.html +0 -37
- package/src/router/directives/state-directives.html +0 -22
- package/src/router/directives/state-directives.js +0 -393
- package/src/router/directives/state-directives.md +0 -435
- package/src/router/directives/state-directives.spec.js +0 -1091
- package/src/router/directives/state-directives.test.js +0 -10
- package/src/router/directives/view-directive.js +0 -489
- package/src/router/directives/view-directive.spec.js +0 -1921
- package/src/router/directives/view-directive.test.js +0 -10
- package/src/router/directives/view-directives.html +0 -22
- package/src/router/glob/glob.html +0 -19
- package/src/router/glob/glob.js +0 -102
- package/src/router/glob/glob.spec.js +0 -108
- package/src/router/glob/glob.test.js +0 -12
- package/src/router/hooks/core-resolvables.js +0 -38
- package/src/router/hooks/ignored-transition.js +0 -25
- package/src/router/hooks/invalid-transition.js +0 -14
- package/src/router/hooks/lazy-load.js +0 -104
- package/src/router/hooks/on-enter-exit-retain.js +0 -55
- package/src/router/hooks/redirect-to.js +0 -38
- package/src/router/hooks/resolve.js +0 -57
- package/src/router/hooks/update-globals.js +0 -34
- package/src/router/hooks/url.js +0 -34
- package/src/router/hooks/views.js +0 -41
- package/src/router/params/interface.ts +0 -626
- package/src/router/params/param-factory.js +0 -23
- package/src/router/params/param-type.js +0 -133
- package/src/router/params/param-types.js +0 -153
- package/src/router/params/param.js +0 -243
- package/src/router/params/state-params.js +0 -36
- package/src/router/path/path-node.js +0 -78
- package/src/router/path/path-utils.js +0 -207
- package/src/router/resolve/interface.ts +0 -208
- package/src/router/resolve/resolvable.js +0 -123
- package/src/router/resolve/resolve-context.js +0 -190
- package/src/router/router-test-hashbang.html +0 -45
- package/src/router/router-test.html +0 -41
- package/src/router/router.html +0 -22
- package/src/router/router.js +0 -54
- package/src/router/router.test.js +0 -12
- package/src/router/services.spec.js +0 -52
- package/src/router/state/interface.ts +0 -1007
- package/src/router/state/state-builder.js +0 -376
- package/src/router/state/state-builder.spec.js +0 -86
- package/src/router/state/state-matcher.js +0 -64
- package/src/router/state/state-object.js +0 -118
- package/src/router/state/state-queue-manager.js +0 -95
- package/src/router/state/state-registry.js +0 -262
- package/src/router/state/state-service.js +0 -687
- package/src/router/state/state.html +0 -23
- package/src/router/state/state.spec.js +0 -1002
- package/src/router/state/state.test.js +0 -12
- package/src/router/state/target-state.js +0 -162
- package/src/router/state/views.js +0 -195
- package/src/router/state-filter.spec.js +0 -139
- package/src/router/state-filters.js +0 -46
- package/src/router/template-factory.html +0 -19
- package/src/router/template-factory.js +0 -249
- package/src/router/template-factory.spec.js +0 -146
- package/src/router/template-factory.test.js +0 -12
- package/src/router/transition/hook-builder.js +0 -137
- package/src/router/transition/hook-registry.js +0 -181
- package/src/router/transition/interface.js +0 -18
- package/src/router/transition/interface.ts +0 -922
- package/src/router/transition/reject-factory.js +0 -122
- package/src/router/transition/transition-event-type.js +0 -26
- package/src/router/transition/transition-hook.js +0 -199
- package/src/router/transition/transition-service.js +0 -297
- package/src/router/transition/transition.js +0 -653
- package/src/router/url/url-config.js +0 -155
- package/src/router/url/url-matcher.js +0 -532
- package/src/router/url/url-rule.js +0 -231
- package/src/router/url/url-rules.js +0 -350
- package/src/router/url/url-service.js +0 -446
- package/src/router/url/url-service.spec.js +0 -1288
- package/src/router/url/url.html +0 -19
- package/src/router/url/url.test.js +0 -12
- package/src/router/view/interface.ts +0 -51
- package/src/router/view/view.html +0 -19
- package/src/router/view/view.js +0 -262
- package/src/router/view/view.spec.js +0 -100
- package/src/router/view/view.test.js +0 -12
- package/src/router/view-hook.spec.js +0 -215
- package/src/router/view-scroll.js +0 -33
- package/src/router/view-scroll.spec.js +0 -72
- package/src/services/anchor-scroll/anchor-scroll.html +0 -76
- package/src/services/anchor-scroll/anchor-scroll.js +0 -147
- package/src/services/exception/exception-handler.js +0 -75
- package/src/services/exception/interface.ts +0 -7
- package/src/services/http/http.html +0 -23
- package/src/services/http/http.js +0 -1109
- package/src/services/http/http.spec.js +0 -4320
- package/src/services/http/http.test.js +0 -11
- package/src/services/http/interface.ts +0 -256
- package/src/services/http/template-request.spec.js +0 -220
- package/src/services/location/interface.ts +0 -70
- package/src/services/location/location.html +0 -22
- package/src/services/location/location.js +0 -1006
- package/src/services/location/location.spec.js +0 -3792
- package/src/services/location/location.test.js +0 -12
- package/src/services/log/interface.ts +0 -39
- package/src/services/log/log.html +0 -19
- package/src/services/log/log.js +0 -74
- package/src/services/log/log.spec.js +0 -64
- package/src/services/log/log.test.js +0 -12
- package/src/services/pubsub/pubsub.html +0 -19
- package/src/services/pubsub/pubsub.js +0 -349
- package/src/services/pubsub/pubsub.spec.js +0 -400
- package/src/services/pubsub/pubsub.test.js +0 -12
- package/src/services/sce/sce.html +0 -19
- package/src/services/sce/sce.js +0 -852
- package/src/services/sce/sce.spec.js +0 -617
- package/src/services/sce/sce.test.js +0 -12
- package/src/services/template-cache/template-cache.html +0 -22
- package/src/services/template-cache/template-cache.js +0 -15
- package/src/services/template-cache/template-cache.spec.js +0 -134
- package/src/services/template-cache/template-cache.test.js +0 -12
- package/src/services/template-request/interface.ts +0 -23
- package/src/services/template-request/template-request.js +0 -142
- package/src/shared/cache.js +0 -7
- package/src/shared/common.js +0 -365
- package/src/shared/common.spec.js +0 -294
- package/src/shared/constants.js +0 -21
- package/src/shared/dom.js +0 -716
- package/src/shared/hof.js +0 -157
- package/src/shared/hof.spec.js +0 -60
- package/src/shared/interface.ts +0 -21
- package/src/shared/min-err.spec.js +0 -178
- package/src/shared/noderef.js +0 -225
- package/src/shared/predicates.js +0 -34
- package/src/shared/queue.js +0 -105
- package/src/shared/queue.spec.js +0 -80
- package/src/shared/shared.html +0 -24
- package/src/shared/shared.test.js +0 -12
- package/src/shared/strings.js +0 -142
- package/src/shared/strings.spec.js +0 -40
- package/src/shared/test-utils.js +0 -47
- package/src/shared/url-utils/interface.ts +0 -54
- package/src/shared/url-utils/url-utils.html +0 -22
- package/src/shared/url-utils/url-utils.js +0 -122
- package/src/shared/url-utils/url-utils.spec.js +0 -148
- package/src/shared/url-utils/url-utils.test.js +0 -12
- package/src/shared/utils.js +0 -1255
- package/src/shared/utils.spec.js +0 -178
- package/src/src.html +0 -21
- package/src/src.test.js +0 -10
- package/tsconfig.json +0 -19
- package/tsconfig.types.json +0 -14
- package/typedoc.json +0 -8
- package/utils/express.js +0 -203
- package/utils/version.cjs +0 -23
- package/vite.config.js +0 -14
|
@@ -1,376 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
applyPairs,
|
|
3
|
-
inherit,
|
|
4
|
-
omit,
|
|
5
|
-
tail,
|
|
6
|
-
copy,
|
|
7
|
-
map,
|
|
8
|
-
} from "../../shared/common.js";
|
|
9
|
-
import { hasOwn, isDefined, isFunction, isString } from "../../shared/utils.js";
|
|
10
|
-
import { stringify } from "../../shared/strings.js";
|
|
11
|
-
import { is, pattern, val } from "../../shared/hof.js";
|
|
12
|
-
import { Resolvable } from "../resolve/resolvable.js";
|
|
13
|
-
import { annotate } from "../../core/di/injector.js";
|
|
14
|
-
|
|
15
|
-
function parseUrl(url) {
|
|
16
|
-
if (!isString(url)) return false;
|
|
17
|
-
const root = url.charAt(0) === "^";
|
|
18
|
-
return { val: root ? url.substring(1) : url, root };
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function selfBuilder(state) {
|
|
22
|
-
state.self.$$state = () => state;
|
|
23
|
-
return state.self;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
function dataBuilder(state) {
|
|
27
|
-
if (state.parent && state.parent.data) {
|
|
28
|
-
state.data = state.self.data = inherit(state.parent.data, state.data);
|
|
29
|
-
}
|
|
30
|
-
return state.data;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
function getUrlBuilder($url, root) {
|
|
34
|
-
return function (stateObject) {
|
|
35
|
-
let stateDec = stateObject.self;
|
|
36
|
-
// For future states, i.e., states whose name ends with `.**`,
|
|
37
|
-
// match anything that starts with the url prefix
|
|
38
|
-
if (
|
|
39
|
-
stateDec &&
|
|
40
|
-
stateDec.url &&
|
|
41
|
-
stateDec.name &&
|
|
42
|
-
stateDec.name.match(/\.\*\*$/)
|
|
43
|
-
) {
|
|
44
|
-
const newStateDec = {};
|
|
45
|
-
copy(stateDec, newStateDec);
|
|
46
|
-
newStateDec.url += "{remainder:any}"; // match any path (.*)
|
|
47
|
-
stateDec = newStateDec;
|
|
48
|
-
}
|
|
49
|
-
const parent = stateObject.parent;
|
|
50
|
-
const parsed = parseUrl(stateDec.url);
|
|
51
|
-
const url = !parsed
|
|
52
|
-
? stateDec.url
|
|
53
|
-
: $url.compile(parsed.val, { state: stateDec });
|
|
54
|
-
if (!url) return null;
|
|
55
|
-
if (!$url.isMatcher(url))
|
|
56
|
-
throw new Error(`Invalid url '${url}' in state '${stateObject}'`);
|
|
57
|
-
return parsed && parsed.root
|
|
58
|
-
? url
|
|
59
|
-
: ((parent && parent.navigable) || root()).url.append(url);
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
function getNavigableBuilder(isRoot) {
|
|
64
|
-
return function (state) {
|
|
65
|
-
return !isRoot(state) && state.url
|
|
66
|
-
? state
|
|
67
|
-
: state.parent
|
|
68
|
-
? state.parent.navigable
|
|
69
|
-
: null;
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* @param {import("../params/param-factory.js").ParamFactory} paramFactory
|
|
75
|
-
*/
|
|
76
|
-
function getParamsBuilder(paramFactory) {
|
|
77
|
-
return function (state) {
|
|
78
|
-
const makeConfigParam = (_config, id) =>
|
|
79
|
-
paramFactory.fromConfig(id, null, state.self);
|
|
80
|
-
const urlParams =
|
|
81
|
-
(state.url && state.url.parameters({ inherit: false })) || [];
|
|
82
|
-
const nonUrlParams = Object.values(
|
|
83
|
-
map(
|
|
84
|
-
omit(
|
|
85
|
-
state.params || {},
|
|
86
|
-
urlParams.map((x) => x.id),
|
|
87
|
-
),
|
|
88
|
-
makeConfigParam,
|
|
89
|
-
),
|
|
90
|
-
);
|
|
91
|
-
return urlParams
|
|
92
|
-
.concat(nonUrlParams)
|
|
93
|
-
.map((p) => [p.id, p])
|
|
94
|
-
.reduce(applyPairs, {});
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
function pathBuilder(state) {
|
|
99
|
-
return state.parent ? state.parent.path.concat(state) : [state];
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
function includesBuilder(state) {
|
|
103
|
-
const includes = state.parent ? Object.assign({}, state.parent.includes) : {};
|
|
104
|
-
includes[state.name] = true;
|
|
105
|
-
return includes;
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* This is a [[StateBuilder.builder]] function for the `resolve:` block on a [[StateDeclaration]].
|
|
110
|
-
*
|
|
111
|
-
* When the [[StateBuilder]] builds a [[StateObject]] object from a raw [[StateDeclaration]], this builder
|
|
112
|
-
* validates the `resolve` property and converts it to a [[Resolvable]] array.
|
|
113
|
-
*
|
|
114
|
-
* resolve: input value can be:
|
|
115
|
-
*
|
|
116
|
-
* {
|
|
117
|
-
* // analyzed but not injected
|
|
118
|
-
* myFooResolve: function() { return "myFooData"; },
|
|
119
|
-
*
|
|
120
|
-
* // function.toString() parsed, "DependencyName" dep as string (not min-safe)
|
|
121
|
-
* myBarResolve: function(DependencyName) { return DependencyName.fetchSomethingAsPromise() },
|
|
122
|
-
*
|
|
123
|
-
* // Array split; "DependencyName" dep as string
|
|
124
|
-
* myBazResolve: [ "DependencyName", function(dep) { return dep.fetchSomethingAsPromise() },
|
|
125
|
-
*
|
|
126
|
-
* // Array split; DependencyType dep as token (compared using ===)
|
|
127
|
-
* myQuxResolve: [ DependencyType, function(dep) { return dep.fetchSometingAsPromise() },
|
|
128
|
-
*
|
|
129
|
-
* // val.$inject used as deps
|
|
130
|
-
* // where:
|
|
131
|
-
* // corgeResolve.$inject = ["DependencyName"];
|
|
132
|
-
* // function corgeResolve(dep) { dep.fetchSometingAsPromise() }
|
|
133
|
-
* // then "DependencyName" dep as string
|
|
134
|
-
* myCorgeResolve: corgeResolve,
|
|
135
|
-
*
|
|
136
|
-
* // inject service by name
|
|
137
|
-
* // When a string is found, desugar creating a resolve that injects the named service
|
|
138
|
-
* myGraultResolve: "SomeService"
|
|
139
|
-
* }
|
|
140
|
-
*
|
|
141
|
-
* or:
|
|
142
|
-
*
|
|
143
|
-
* [
|
|
144
|
-
* new Resolvable("myFooResolve", function() { return "myFooData" }),
|
|
145
|
-
* new Resolvable("myBarResolve", function(dep) { return dep.fetchSomethingAsPromise() }, [ "DependencyName" ]),
|
|
146
|
-
* { provide: "myBazResolve", useFactory: function(dep) { dep.fetchSomethingAsPromise() }, deps: [ "DependencyName" ] }
|
|
147
|
-
* ]
|
|
148
|
-
*/
|
|
149
|
-
export function resolvablesBuilder(state) {
|
|
150
|
-
/** convert resolve: {} and resolvePolicy: {} objects to an array of tuples */
|
|
151
|
-
const objects2Tuples = (resolveObj, resolvePolicies) =>
|
|
152
|
-
Object.keys(resolveObj || {}).map((token) => ({
|
|
153
|
-
token,
|
|
154
|
-
val: resolveObj[token],
|
|
155
|
-
deps: undefined,
|
|
156
|
-
policy: resolvePolicies[token],
|
|
157
|
-
}));
|
|
158
|
-
/** fetch DI annotations from a function or ng1-style array */
|
|
159
|
-
const annotateFn = (fn) => {
|
|
160
|
-
const $injector = window["angular"].$injector;
|
|
161
|
-
// ng1 doesn't have an $injector until runtime.
|
|
162
|
-
// If the $injector doesn't exist, use "deferred" literal as a
|
|
163
|
-
// marker indicating they should be annotated when runtime starts
|
|
164
|
-
return (
|
|
165
|
-
fn["$inject"] ||
|
|
166
|
-
($injector && annotate(fn, $injector.strictDi)) ||
|
|
167
|
-
"deferred"
|
|
168
|
-
);
|
|
169
|
-
};
|
|
170
|
-
/** true if the object has both `token` and `resolveFn`, and is probably a [[ResolveLiteral]] */
|
|
171
|
-
const isResolveLiteral = (obj) => !!(obj.token && obj.resolveFn);
|
|
172
|
-
/** true if the object looks like a tuple from obj2Tuples */
|
|
173
|
-
const isTupleFromObj = (obj) =>
|
|
174
|
-
!!(
|
|
175
|
-
obj &&
|
|
176
|
-
obj.val &&
|
|
177
|
-
(isString(obj.val) || Array.isArray(obj.val) || isFunction(obj.val))
|
|
178
|
-
);
|
|
179
|
-
|
|
180
|
-
// Given a literal resolve or provider object, returns a Resolvable
|
|
181
|
-
const literal2Resolvable = pattern([
|
|
182
|
-
[
|
|
183
|
-
(x) => x.resolveFn,
|
|
184
|
-
(p) => new Resolvable(getToken(p), p.resolveFn, p.deps, p.policy),
|
|
185
|
-
],
|
|
186
|
-
[
|
|
187
|
-
(x) => x.useFactory,
|
|
188
|
-
(p) =>
|
|
189
|
-
new Resolvable(
|
|
190
|
-
getToken(p),
|
|
191
|
-
p.useFactory,
|
|
192
|
-
p.deps || p.dependencies,
|
|
193
|
-
p.policy,
|
|
194
|
-
),
|
|
195
|
-
],
|
|
196
|
-
[
|
|
197
|
-
(x) => x.useClass,
|
|
198
|
-
(p) => new Resolvable(getToken(p), () => new p.useClass(), [], p.policy),
|
|
199
|
-
],
|
|
200
|
-
[
|
|
201
|
-
(x) => x.useValue,
|
|
202
|
-
(p) =>
|
|
203
|
-
new Resolvable(getToken(p), () => p.useValue, [], p.policy, p.useValue),
|
|
204
|
-
],
|
|
205
|
-
[
|
|
206
|
-
(x) => x.useExisting,
|
|
207
|
-
(p) => new Resolvable(getToken(p), (x) => x, [p.useExisting], p.policy),
|
|
208
|
-
],
|
|
209
|
-
]);
|
|
210
|
-
const tuple2Resolvable = pattern([
|
|
211
|
-
[
|
|
212
|
-
(x) => isString(x.val),
|
|
213
|
-
(tuple) =>
|
|
214
|
-
new Resolvable(tuple.token, (x) => x, [tuple.val], tuple.policy),
|
|
215
|
-
],
|
|
216
|
-
[
|
|
217
|
-
(x) => Array.isArray(x.val),
|
|
218
|
-
(tuple) =>
|
|
219
|
-
new Resolvable(
|
|
220
|
-
tuple.token,
|
|
221
|
-
tail(tuple.val),
|
|
222
|
-
tuple.val.slice(0, -1),
|
|
223
|
-
tuple.policy,
|
|
224
|
-
),
|
|
225
|
-
],
|
|
226
|
-
[
|
|
227
|
-
(x) => isFunction(x.val),
|
|
228
|
-
(tuple) =>
|
|
229
|
-
new Resolvable(
|
|
230
|
-
tuple.token,
|
|
231
|
-
tuple.val,
|
|
232
|
-
annotateFn(tuple.val),
|
|
233
|
-
tuple.policy,
|
|
234
|
-
),
|
|
235
|
-
],
|
|
236
|
-
]);
|
|
237
|
-
const item2Resolvable = pattern([
|
|
238
|
-
[is(Resolvable), (r) => r],
|
|
239
|
-
[isResolveLiteral, literal2Resolvable],
|
|
240
|
-
[isTupleFromObj, tuple2Resolvable],
|
|
241
|
-
[
|
|
242
|
-
val(true),
|
|
243
|
-
(obj) => {
|
|
244
|
-
throw new Error("Invalid resolve value: " + stringify(obj));
|
|
245
|
-
},
|
|
246
|
-
],
|
|
247
|
-
]);
|
|
248
|
-
// If resolveBlock is already an array, use it as-is.
|
|
249
|
-
// Otherwise, assume it's an object and convert to an Array of tuples
|
|
250
|
-
const decl = state.resolve;
|
|
251
|
-
const items = Array.isArray(decl)
|
|
252
|
-
? decl
|
|
253
|
-
: objects2Tuples(decl, state.resolvePolicy || {});
|
|
254
|
-
return items.map(item2Resolvable);
|
|
255
|
-
}
|
|
256
|
-
/**
|
|
257
|
-
* A internal global service
|
|
258
|
-
*
|
|
259
|
-
* StateBuilder is a factory for the internal [[StateObject]] objects.
|
|
260
|
-
*
|
|
261
|
-
* When you register a state with the [[StateRegistry]], you register a plain old javascript object which
|
|
262
|
-
* conforms to the [[StateDeclaration]] interface. This factory takes that object and builds the corresponding
|
|
263
|
-
* [[StateObject]] object, which has an API and is used internally.
|
|
264
|
-
*
|
|
265
|
-
* Custom properties or API may be added to the internal [[StateObject]] object by registering a decorator function
|
|
266
|
-
* using the [[builder]] method.
|
|
267
|
-
*/
|
|
268
|
-
export class StateBuilder {
|
|
269
|
-
/**
|
|
270
|
-
* @param {import('./state-matcher.js').StateMatcher} matcher
|
|
271
|
-
* @param urlService
|
|
272
|
-
*/
|
|
273
|
-
constructor(matcher, urlService) {
|
|
274
|
-
this.matcher = matcher;
|
|
275
|
-
this.$injector = undefined;
|
|
276
|
-
const self = this;
|
|
277
|
-
const root = () => matcher.find("");
|
|
278
|
-
function parentBuilder(state) {
|
|
279
|
-
if (isRoot(state)) return null;
|
|
280
|
-
return matcher.find(self.parentName(state)) || root();
|
|
281
|
-
}
|
|
282
|
-
this.builders = {
|
|
283
|
-
name: [(state) => state.name],
|
|
284
|
-
self: [selfBuilder],
|
|
285
|
-
parent: [parentBuilder],
|
|
286
|
-
data: [dataBuilder],
|
|
287
|
-
// Build a URLMatcher if necessary, either via a relative or absolute URL
|
|
288
|
-
url: [getUrlBuilder(urlService, root)],
|
|
289
|
-
// Keep track of the closest ancestor state that has a URL (i.e. is navigable)
|
|
290
|
-
navigable: [getNavigableBuilder(isRoot)],
|
|
291
|
-
// TODO
|
|
292
|
-
params: [getParamsBuilder(urlService.paramFactory)],
|
|
293
|
-
// Each framework-specific ng-router implementation should define its own `views` builder
|
|
294
|
-
// e.g., src/ng1/statebuilders/views.ts
|
|
295
|
-
views: [],
|
|
296
|
-
// Keep a full path from the root down to this state as this is needed for state activation.
|
|
297
|
-
path: [pathBuilder],
|
|
298
|
-
// Speed up $state.includes() as it's used a lot
|
|
299
|
-
includes: [includesBuilder],
|
|
300
|
-
resolvables: [resolvablesBuilder],
|
|
301
|
-
};
|
|
302
|
-
}
|
|
303
|
-
builder(name, fn) {
|
|
304
|
-
const builders = this.builders;
|
|
305
|
-
const array = builders[name] || [];
|
|
306
|
-
// Backwards compat: if only one builder exists, return it, else return whole arary.
|
|
307
|
-
if (isString(name) && !isDefined(fn))
|
|
308
|
-
return array.length > 1 ? array : array[0];
|
|
309
|
-
if (!isString(name) || !isFunction(fn)) return;
|
|
310
|
-
builders[name] = array;
|
|
311
|
-
builders[name].push(fn);
|
|
312
|
-
return () => builders[name].splice(builders[name].indexOf(fn, 1)) && null;
|
|
313
|
-
}
|
|
314
|
-
/**
|
|
315
|
-
* Builds all of the properties on an essentially blank State object, returning a State object which has all its
|
|
316
|
-
* properties and API built.
|
|
317
|
-
*
|
|
318
|
-
* @param state an uninitialized State object
|
|
319
|
-
* @returns the built State object
|
|
320
|
-
*/
|
|
321
|
-
build(state) {
|
|
322
|
-
const { matcher, builders } = this;
|
|
323
|
-
const parent = this.parentName(state);
|
|
324
|
-
if (parent && !matcher.find(parent, undefined, false)) {
|
|
325
|
-
return null;
|
|
326
|
-
}
|
|
327
|
-
for (const key in builders) {
|
|
328
|
-
if (!hasOwn(builders, key)) continue;
|
|
329
|
-
const chain = builders[key].reduce(
|
|
330
|
-
(parentFn, step) => (_state) => step(_state, parentFn),
|
|
331
|
-
() => {},
|
|
332
|
-
);
|
|
333
|
-
state[key] = chain(state);
|
|
334
|
-
}
|
|
335
|
-
return state;
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
parentName(state) {
|
|
339
|
-
// name = 'foo.bar.baz.**'
|
|
340
|
-
const name = state.name || "";
|
|
341
|
-
// segments = ['foo', 'bar', 'baz', '.**']
|
|
342
|
-
const segments = name.split(".");
|
|
343
|
-
// segments = ['foo', 'bar', 'baz']
|
|
344
|
-
const lastSegment = segments.pop();
|
|
345
|
-
// segments = ['foo', 'bar'] (ignore .** segment for future states)
|
|
346
|
-
if (lastSegment === "**") segments.pop();
|
|
347
|
-
if (segments.length) {
|
|
348
|
-
if (state.parent) {
|
|
349
|
-
throw new Error(
|
|
350
|
-
`States that specify the 'parent:' property should not have a '.' in their name (${name})`,
|
|
351
|
-
);
|
|
352
|
-
}
|
|
353
|
-
// 'foo.bar'
|
|
354
|
-
return segments.join(".");
|
|
355
|
-
}
|
|
356
|
-
if (!state.parent) return "";
|
|
357
|
-
return isString(state.parent) ? state.parent : state.parent.name;
|
|
358
|
-
}
|
|
359
|
-
name(state) {
|
|
360
|
-
const name = state.name;
|
|
361
|
-
if (name.indexOf(".") !== -1 || !state.parent) return name;
|
|
362
|
-
const parentName = isString(state.parent)
|
|
363
|
-
? state.parent
|
|
364
|
-
: state.parent.name;
|
|
365
|
-
return parentName ? parentName + "." + name : name;
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
function isRoot(state) {
|
|
370
|
-
return state.name === "";
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
/** extracts the token from a Provider or provide literal */
|
|
374
|
-
function getToken(p) {
|
|
375
|
-
return p.provide || p.token;
|
|
376
|
-
}
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { StateBuilder } from "./state-builder.js";
|
|
2
|
-
import { Angular } from "../../angular.js";
|
|
3
|
-
import { dealoc } from "../../shared/dom.js";
|
|
4
|
-
|
|
5
|
-
// TODO refactor this to url service as it is using the provider right now
|
|
6
|
-
describe("StateBuilder", function () {
|
|
7
|
-
const parent = { name: "" };
|
|
8
|
-
let builder;
|
|
9
|
-
let $stateRegistry;
|
|
10
|
-
|
|
11
|
-
beforeEach(function () {
|
|
12
|
-
dealoc(document.getElementById("app"));
|
|
13
|
-
window.angular = new Angular();
|
|
14
|
-
window.angular.module("default", []);
|
|
15
|
-
let $injector = window.angular.bootstrap(document.getElementById("app"), [
|
|
16
|
-
"default",
|
|
17
|
-
]);
|
|
18
|
-
$stateRegistry = $injector.get("$stateRegistry");
|
|
19
|
-
builder = $stateRegistry.builder;
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
it("expect it to be configured by state registry", () => {
|
|
23
|
-
expect($stateRegistry).toBeDefined();
|
|
24
|
-
expect($stateRegistry.builder).toBeDefined();
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("should use the state object to build a default view, when no `views` property is found", function () {
|
|
28
|
-
const config = {
|
|
29
|
-
url: "/foo",
|
|
30
|
-
templateUrl: "/foo.html",
|
|
31
|
-
controller: "FooController",
|
|
32
|
-
parent: parent,
|
|
33
|
-
};
|
|
34
|
-
const built = builder.builder("views")(config);
|
|
35
|
-
|
|
36
|
-
expect(built.$default).not.toEqual(config);
|
|
37
|
-
expect(built.$default).toEqual(
|
|
38
|
-
jasmine.objectContaining({
|
|
39
|
-
templateUrl: "/foo.html",
|
|
40
|
-
controller: "FooController",
|
|
41
|
-
resolveAs: "$resolve",
|
|
42
|
-
}),
|
|
43
|
-
);
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
it("It should use the views object to build views, when defined", function () {
|
|
47
|
-
const config = { a: { foo: "bar", controller: "FooController" } };
|
|
48
|
-
const builtViews = builder.builder("views")({
|
|
49
|
-
parent: parent,
|
|
50
|
-
views: config,
|
|
51
|
-
});
|
|
52
|
-
expect(builtViews.a.foo).toEqual(config.a.foo);
|
|
53
|
-
expect(builtViews.a.controller).toEqual(config.a.controller);
|
|
54
|
-
});
|
|
55
|
-
|
|
56
|
-
it("should not allow a view config with both component and template keys", function () {
|
|
57
|
-
const config = {
|
|
58
|
-
name: "foo",
|
|
59
|
-
url: "/foo",
|
|
60
|
-
template: "<h1>hey</h1>",
|
|
61
|
-
controller: "FooController",
|
|
62
|
-
parent: parent,
|
|
63
|
-
};
|
|
64
|
-
expect(() => builder.builder("views")(config)).not.toThrow();
|
|
65
|
-
expect(() =>
|
|
66
|
-
builder.builder("views")(
|
|
67
|
-
Object.assign({ component: "fooComponent" }, config),
|
|
68
|
-
),
|
|
69
|
-
).toThrow();
|
|
70
|
-
expect(() =>
|
|
71
|
-
builder.builder("views")(
|
|
72
|
-
Object.assign({ componentProvider: () => "fooComponent" }, config),
|
|
73
|
-
),
|
|
74
|
-
).toThrow();
|
|
75
|
-
expect(() =>
|
|
76
|
-
builder.builder("views")(Object.assign({ bindings: {} }, config)),
|
|
77
|
-
).toThrow();
|
|
78
|
-
});
|
|
79
|
-
|
|
80
|
-
it("should replace a resolve: string value with a function that injects the service of the same name", function () {
|
|
81
|
-
const config = { resolve: { foo: "bar" } };
|
|
82
|
-
expect(builder.builder("resolvables")).toBeDefined();
|
|
83
|
-
const built = builder.builder("resolvables")(config);
|
|
84
|
-
expect(built[0].deps).toEqual(["bar"]);
|
|
85
|
-
});
|
|
86
|
-
});
|
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { isString } from "../../shared/utils.js";
|
|
2
|
-
export class StateMatcher {
|
|
3
|
-
constructor(_states) {
|
|
4
|
-
this._states = _states;
|
|
5
|
-
}
|
|
6
|
-
isRelative(stateName) {
|
|
7
|
-
stateName = stateName || "";
|
|
8
|
-
return stateName.indexOf(".") === 0 || stateName.indexOf("^") === 0;
|
|
9
|
-
}
|
|
10
|
-
find(stateOrName, base, matchGlob = true) {
|
|
11
|
-
if (!stateOrName && stateOrName !== "") return undefined;
|
|
12
|
-
const isStr = isString(stateOrName);
|
|
13
|
-
let name = isStr ? stateOrName : stateOrName.name;
|
|
14
|
-
if (this.isRelative(name)) name = this.resolvePath(name, base);
|
|
15
|
-
const state = this._states[name];
|
|
16
|
-
if (
|
|
17
|
-
state &&
|
|
18
|
-
(isStr ||
|
|
19
|
-
(!isStr && (state === stateOrName || state.self === stateOrName)))
|
|
20
|
-
) {
|
|
21
|
-
return state;
|
|
22
|
-
} else if (isStr && matchGlob) {
|
|
23
|
-
const _states = Object.values(this._states);
|
|
24
|
-
const matches = _states.filter(
|
|
25
|
-
(_state) =>
|
|
26
|
-
_state.__stateObjectCache.nameGlob &&
|
|
27
|
-
_state.__stateObjectCache.nameGlob.matches(name),
|
|
28
|
-
);
|
|
29
|
-
if (matches.length > 1) {
|
|
30
|
-
console.error(
|
|
31
|
-
`stateMatcher.find: Found multiple matches for ${name} using glob: `,
|
|
32
|
-
matches.map((match) => match.name),
|
|
33
|
-
);
|
|
34
|
-
}
|
|
35
|
-
return matches[0];
|
|
36
|
-
}
|
|
37
|
-
return undefined;
|
|
38
|
-
}
|
|
39
|
-
resolvePath(name, base) {
|
|
40
|
-
if (!base) throw new Error(`No reference point given for path '${name}'`);
|
|
41
|
-
const baseState = this.find(base);
|
|
42
|
-
const splitName = name.split(".");
|
|
43
|
-
const pathLength = splitName.length;
|
|
44
|
-
let i = 0,
|
|
45
|
-
current = baseState;
|
|
46
|
-
for (; i < pathLength; i++) {
|
|
47
|
-
if (splitName[i] === "" && i === 0) {
|
|
48
|
-
current = baseState;
|
|
49
|
-
continue;
|
|
50
|
-
}
|
|
51
|
-
if (splitName[i] === "^") {
|
|
52
|
-
if (!current.parent)
|
|
53
|
-
throw new Error(
|
|
54
|
-
`Path '${name}' not valid for state '${baseState.name}'`,
|
|
55
|
-
);
|
|
56
|
-
current = current.parent;
|
|
57
|
-
continue;
|
|
58
|
-
}
|
|
59
|
-
break;
|
|
60
|
-
}
|
|
61
|
-
const relName = splitName.slice(i).join(".");
|
|
62
|
-
return current.name + (current.name && relName ? "." : "") + relName;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
import { defaults, find } from "../../shared/common.js";
|
|
2
|
-
import { propEq } from "../../shared/hof.js";
|
|
3
|
-
import { Glob } from "../glob/glob.js";
|
|
4
|
-
import { hasOwn, isFunction, isObject } from "../../shared/utils.js";
|
|
5
|
-
|
|
6
|
-
/** @typedef {import('./interface.js').StateDeclaration} StateDeclaration */
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Internal representation of a ng-router state.
|
|
10
|
-
*
|
|
11
|
-
* Instances of this class are created when a [[StateDeclaration]] is registered with the [[StateRegistry]].
|
|
12
|
-
*
|
|
13
|
-
* A registered [[StateDeclaration]] is augmented with a getter ([[StateDeclaration.$$state]]) which returns the corresponding [[StateObject]] object.
|
|
14
|
-
*
|
|
15
|
-
* This class prototypally inherits from the corresponding [[StateDeclaration]].
|
|
16
|
-
* Each of its own properties (i.e., `hasOwnProperty`) are built using builders from the [[StateBuilder]].
|
|
17
|
-
* @implements {StateDeclaration}
|
|
18
|
-
*/
|
|
19
|
-
export class StateObject {
|
|
20
|
-
name = undefined;
|
|
21
|
-
navigable = undefined;
|
|
22
|
-
/** @type {?StateObject} */
|
|
23
|
-
parent = undefined;
|
|
24
|
-
params = undefined;
|
|
25
|
-
url = undefined;
|
|
26
|
-
includes = undefined;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* @param {import('./interface.js').StateDeclaration} config
|
|
30
|
-
*/
|
|
31
|
-
constructor(config) {
|
|
32
|
-
Object.assign(this, config);
|
|
33
|
-
this.$$state = () => {
|
|
34
|
-
return this;
|
|
35
|
-
};
|
|
36
|
-
/**
|
|
37
|
-
* @type {import('./interface.js').StateDeclaration}
|
|
38
|
-
*/
|
|
39
|
-
this.self = config;
|
|
40
|
-
/**
|
|
41
|
-
* @type {?Glob}
|
|
42
|
-
*/
|
|
43
|
-
const nameGlob = this.name ? Glob.fromString(this.name) : null;
|
|
44
|
-
this.__stateObjectCache = { nameGlob };
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Returns true if the provided parameter is the same state.
|
|
48
|
-
*
|
|
49
|
-
* Compares the identity of the state against the passed value, which is either an object
|
|
50
|
-
* reference to the actual `State` instance, the original definition object passed to
|
|
51
|
-
* `$stateProvider.state()`, or the fully-qualified name.
|
|
52
|
-
*
|
|
53
|
-
* @param ref Can be one of (a) a `State` instance, (b) an object that was passed
|
|
54
|
-
* into `$stateProvider.state()`, (c) the fully-qualified name of a state as a string.
|
|
55
|
-
* @returns Returns `true` if `ref` matches the current `State` instance.
|
|
56
|
-
*/
|
|
57
|
-
is(ref) {
|
|
58
|
-
return this === ref || this.self === ref || this.fqn() === ref;
|
|
59
|
-
}
|
|
60
|
-
/**
|
|
61
|
-
* @deprecated this does not properly handle dot notation
|
|
62
|
-
* @returns Returns a dot-separated name of the state.
|
|
63
|
-
*/
|
|
64
|
-
fqn() {
|
|
65
|
-
if (!this.parent || !(this.parent instanceof this.constructor))
|
|
66
|
-
return this.name;
|
|
67
|
-
const name = this.parent.fqn();
|
|
68
|
-
return name ? name + "." + this.name : this.name;
|
|
69
|
-
}
|
|
70
|
-
/**
|
|
71
|
-
* Returns the root node of this state's tree.
|
|
72
|
-
*
|
|
73
|
-
* @returns The root of this state's tree.
|
|
74
|
-
*/
|
|
75
|
-
root() {
|
|
76
|
-
return (this.parent && this.parent.root()) || this;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Gets the state's `Param` objects
|
|
80
|
-
*
|
|
81
|
-
* Gets the list of [[Param]] objects owned by the state.
|
|
82
|
-
* If `opts.inherit` is true, it also includes the ancestor states' [[Param]] objects.
|
|
83
|
-
* If `opts.matchingKeys` exists, returns only `Param`s whose `id` is a key on the `matchingKeys` object
|
|
84
|
-
*
|
|
85
|
-
* @param opts options
|
|
86
|
-
*/
|
|
87
|
-
parameters(opts) {
|
|
88
|
-
opts = defaults(opts, { inherit: true, matchingKeys: null });
|
|
89
|
-
const inherited =
|
|
90
|
-
(opts.inherit && this.parent && this.parent.parameters()) || [];
|
|
91
|
-
return inherited
|
|
92
|
-
.concat(Object.values(this.params))
|
|
93
|
-
.filter(
|
|
94
|
-
(param) => !opts.matchingKeys || hasOwn(opts.matchingKeys, param.id),
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Returns a single [[Param]] that is owned by the state
|
|
99
|
-
*
|
|
100
|
-
* If `opts.inherit` is true, it also searches the ancestor states` [[Param]]s.
|
|
101
|
-
* @param id the name of the [[Param]] to return
|
|
102
|
-
* @param opts options
|
|
103
|
-
*/
|
|
104
|
-
parameter(id, opts = {}) {
|
|
105
|
-
return (
|
|
106
|
-
(this.url && this.url.parameter(id, opts)) ||
|
|
107
|
-
find(Object.values(this.params), propEq("id", id)) ||
|
|
108
|
-
(opts.inherit && this.parent && this.parent.parameter(id))
|
|
109
|
-
);
|
|
110
|
-
}
|
|
111
|
-
toString() {
|
|
112
|
-
return this.fqn();
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
/** Predicate which returns true if the object is a [[StateDeclaration]] object */
|
|
116
|
-
StateObject.isStateDeclaration = (obj) => isFunction(obj["$$state"]);
|
|
117
|
-
/** Predicate which returns true if the object is an internal [[StateObject]] object */
|
|
118
|
-
StateObject.isState = (obj) => isObject(obj["__stateObjectCache"]);
|