@angular-wave/angular.ts 0.9.3 → 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.
Files changed (703) hide show
  1. package/@types/angular.d.ts +4 -19
  2. package/@types/animations/animate.d.ts +2 -2
  3. package/@types/animations/animation.d.ts +1 -1
  4. package/@types/core/compile/attributes.d.ts +1 -1
  5. package/@types/core/compile/compile.d.ts +2 -2
  6. package/@types/core/controller/controller.d.ts +1 -1
  7. package/@types/core/controller/interface.d.ts +6 -0
  8. package/@types/core/di/ng-module.d.ts +27 -26
  9. package/@types/core/filter/filter.d.ts +5 -5
  10. package/@types/core/interpolate/interface.d.ts +13 -0
  11. package/@types/core/interpolate/interpolate.d.ts +1 -13
  12. package/@types/core/scope/scope.d.ts +4 -1
  13. package/@types/directive/http/http.d.ts +16 -16
  14. package/@types/directive/http/interface.d.ts +27 -0
  15. package/@types/directive/include/include.d.ts +4 -4
  16. package/@types/directive/inject/inject.d.ts +12 -0
  17. package/@types/directive/model/model.d.ts +1 -1
  18. package/@types/directive/script/script.d.ts +2 -2
  19. package/@types/directive/setter/setter.d.ts +4 -4
  20. package/@types/filters/filter.d.ts +2 -2
  21. package/@types/filters/filters.d.ts +2 -2
  22. package/@types/filters/interface.d.ts +8 -0
  23. package/@types/filters/limit-to.d.ts +2 -2
  24. package/@types/filters/order-by.d.ts +2 -2
  25. package/@types/interface.d.ts +105 -82
  26. package/@types/namespace.d.ts +76 -0
  27. package/@types/router/state/interface.d.ts +8 -8
  28. package/@types/router/state-filters.d.ts +4 -4
  29. package/@types/router/template-factory.d.ts +8 -8
  30. package/@types/router/transition/hook-builder.d.ts +5 -2
  31. package/@types/router/transition/hook-registry.d.ts +11 -2
  32. package/@types/router/transition/transition-service.d.ts +6 -2
  33. package/@types/router/transition/transition.d.ts +2 -2
  34. package/@types/router/view/view.d.ts +1 -8
  35. package/@types/router/view-scroll.d.ts +4 -2
  36. package/@types/services/{anchor-scroll.d.ts → anchor-scroll/anchor-scroll.d.ts} +2 -2
  37. package/@types/services/exception/exception-handler.d.ts +2 -2
  38. package/@types/services/exception/interface.d.ts +1 -1
  39. package/@types/services/http/http.d.ts +40 -2
  40. package/@types/services/http/interface.d.ts +11 -0
  41. package/@types/services/location/location.d.ts +1 -4
  42. package/@types/services/sce/sce.d.ts +3 -4
  43. package/@types/services/template-cache/template-cache.d.ts +4 -4
  44. package/@types/services/template-request/interface.d.ts +22 -0
  45. package/@types/services/{template-request.d.ts → template-request/template-request.d.ts} +4 -7
  46. package/@types/shared/common.d.ts +8 -69
  47. package/@types/shared/hof.d.ts +7 -7
  48. package/dist/angular-ts.esm.js +510 -570
  49. package/dist/angular-ts.umd.js +510 -570
  50. package/dist/angular-ts.umd.min.js +1 -1
  51. package/package.json +8 -1
  52. package/.github/workflows/ci.yml +0 -104
  53. package/.github/workflows/gh-pages.yml +0 -75
  54. package/.husky/pre-commit +0 -5
  55. package/.prettierignore +0 -9
  56. package/@types/services/cookie-reader.d.ts +0 -4
  57. package/@types/services/http-backend/http-backend.d.ts +0 -58
  58. package/@types/services/template-cache/interface.d.ts +0 -10
  59. package/CHANGELOG.md +0 -17667
  60. package/CODE_OF_CONDUCT.md +0 -3
  61. package/CONTRIBUTING.md +0 -247
  62. package/DEVELOPERS.md +0 -499
  63. package/Makefile +0 -60
  64. package/RELEASE.md +0 -86
  65. package/TRIAGING.md +0 -127
  66. package/docs/.cspell.yml +0 -8
  67. package/docs/.github/dependabot.yml +0 -14
  68. package/docs/.nvmrc +0 -1
  69. package/docs/CONTRIBUTING.md +0 -28
  70. package/docs/Dockerfile +0 -4
  71. package/docs/LICENSE +0 -201
  72. package/docs/README.md +0 -217
  73. package/docs/assets/icons/logo.svg +0 -1
  74. package/docs/assets/scss/_variables_project.scss +0 -12
  75. package/docs/assets/scss/_variables_project_after_bs.scss +0 -8
  76. package/docs/assets/scss/index.scss +0 -48
  77. package/docs/config.yaml +0 -15
  78. package/docs/content/_index.md +0 -28
  79. package/docs/content/docs/_index.md +0 -61
  80. package/docs/content/docs/directive/_index.md +0 -4
  81. package/docs/content/docs/directive/app.md +0 -11
  82. package/docs/content/docs/directive/aria.md +0 -0
  83. package/docs/content/docs/directive/bind.md +0 -72
  84. package/docs/content/docs/directive/blur.md +0 -38
  85. package/docs/content/docs/directive/channel.md +0 -37
  86. package/docs/content/docs/directive/class-even.md +0 -47
  87. package/docs/content/docs/directive/class-odd.md +0 -48
  88. package/docs/content/docs/directive/class.md +0 -64
  89. package/docs/content/docs/directive/click.md +0 -41
  90. package/docs/content/docs/directive/cloak.md +0 -74
  91. package/docs/content/docs/directive/copy.md +0 -38
  92. package/docs/content/docs/directive/cut.md +0 -40
  93. package/docs/content/docs/directive/dblclick.md +0 -41
  94. package/docs/content/docs/directive/focus.md +0 -38
  95. package/docs/content/docs/directive/get.md +0 -203
  96. package/docs/content/docs/directive/include.md +0 -7
  97. package/docs/content/docs/directive/keydown.md +0 -38
  98. package/docs/content/docs/directive/keyup.md +0 -38
  99. package/docs/content/docs/directive/load.md +0 -43
  100. package/docs/content/docs/directive/mousedown.md +0 -38
  101. package/docs/content/docs/directive/mouseenter.md +0 -38
  102. package/docs/content/docs/directive/mouseleave.md +0 -38
  103. package/docs/content/docs/directive/mousemove.md +0 -38
  104. package/docs/content/docs/directive/mouseout.md +0 -38
  105. package/docs/content/docs/directive/mouseover.md +0 -38
  106. package/docs/content/docs/directive/mouseup.md +0 -38
  107. package/docs/content/docs/directive/non-bindable.md +0 -28
  108. package/docs/content/docs/filter/_index.md +0 -4
  109. package/docs/content/docs/provider/_index.md +0 -4
  110. package/docs/content/docs/provider/eventBusProvider.md +0 -35
  111. package/docs/content/docs/provider/locationProvider.md +0 -26
  112. package/docs/content/docs/provider/logProvider.md +0 -59
  113. package/docs/content/docs/provider/templateCacheProvider.md +0 -100
  114. package/docs/content/docs/service/_index.md +0 -4
  115. package/docs/content/docs/service/eventBus.md +0 -56
  116. package/docs/content/docs/service/location.md +0 -57
  117. package/docs/content/docs/service/log.md +0 -113
  118. package/docs/content/docs/service/templateCache.md +0 -64
  119. package/docs/content/docs/service/url.md +0 -5
  120. package/docs/docker-compose.yaml +0 -12
  121. package/docs/docsy.work +0 -5
  122. package/docs/docsy.work.sum +0 -0
  123. package/docs/go.mod +0 -5
  124. package/docs/go.sum +0 -6
  125. package/docs/hugo-disabled.toml +0 -220
  126. package/docs/hugo.yaml +0 -200
  127. package/docs/layouts/404.html +0 -13
  128. package/docs/layouts/_markup/render-heading.html +0 -1
  129. package/docs/layouts/partials/hooks/head-end.html +0 -3
  130. package/docs/layouts/shortcodes/showcss.html +0 -2
  131. package/docs/layouts/shortcodes/showhtml.html +0 -2
  132. package/docs/layouts/shortcodes/showjs.html +0 -2
  133. package/docs/layouts/shortcodes/showraw.html +0 -1
  134. package/docs/layouts/shortcodes/version.html +0 -1
  135. package/docs/package-lock.json +0 -2293
  136. package/docs/package.json +0 -53
  137. package/docs/static/examples/counter/counter-test.html +0 -13
  138. package/docs/static/examples/counter/counter.html +0 -5
  139. package/docs/static/examples/counter/counter.test.js +0 -28
  140. package/docs/static/examples/eventbus/eventbus-test.html +0 -15
  141. package/docs/static/examples/eventbus/eventbus.html +0 -13
  142. package/docs/static/examples/eventbus/eventbus.js +0 -15
  143. package/docs/static/examples/eventbus/eventbus.test.js +0 -19
  144. package/docs/static/examples/ng-bind/ng-bind.html +0 -9
  145. package/docs/static/examples/ng-blur/ng-blur.html +0 -9
  146. package/docs/static/examples/ng-channel/ng-channel-test.html +0 -17
  147. package/docs/static/examples/ng-channel/ng-channel.html +0 -24
  148. package/docs/static/examples/ng-channel/ng-channel.test.js +0 -31
  149. package/docs/static/examples/ng-class/ng-class.html +0 -71
  150. package/docs/static/examples/ng-class-even/ng-class-even.html +0 -8
  151. package/docs/static/examples/ng-class-odd/ng-class-odd.html +0 -8
  152. package/docs/static/examples/ng-click/ng-click.html +0 -6
  153. package/docs/static/examples/ng-copy/ng-copy.html +0 -6
  154. package/docs/static/examples/ng-cut/ng-cut.html +0 -6
  155. package/docs/static/examples/ng-dblclick/ng-dblclick.html +0 -10
  156. package/docs/static/examples/ng-focus/ng-focus.html +0 -9
  157. package/docs/static/examples/ng-keydown/ng-keydown.html +0 -9
  158. package/docs/static/examples/ng-keyup/ng-keyup.html +0 -9
  159. package/docs/static/examples/ng-load/ng-load.html +0 -8
  160. package/docs/static/examples/ng-mousedown/ng-mousedown.html +0 -6
  161. package/docs/static/examples/ng-mouseenter/ng-mouseenter.html +0 -4
  162. package/docs/static/examples/ng-mouseleave/ng-mouseleave.html +0 -4
  163. package/docs/static/examples/ng-mousemove/ng-mousemove.html +0 -4
  164. package/docs/static/examples/ng-mouseout/ng-mouseout.html +0 -4
  165. package/docs/static/examples/ng-mouseover/ng-mouseover.html +0 -4
  166. package/docs/static/examples/ng-mouseup/ng-mouseup.html +0 -4
  167. package/docs/static/examples/ng-non-bindable/ng-non-bindable-test.html +0 -13
  168. package/docs/static/examples/ng-non-bindable/ng-non-bindable.html +0 -3
  169. package/docs/static/examples/ng-non-bindable/ng-non-bindable.test.js +0 -11
  170. package/docs/static/typedoc/.nojekyll +0 -1
  171. package/docs/static/typedoc/assets/hierarchy.js +0 -1
  172. package/docs/static/typedoc/assets/highlight.css +0 -78
  173. package/docs/static/typedoc/assets/icons.js +0 -18
  174. package/docs/static/typedoc/assets/icons.svg +0 -1
  175. package/docs/static/typedoc/assets/main.js +0 -60
  176. package/docs/static/typedoc/assets/navigation.js +0 -1
  177. package/docs/static/typedoc/assets/search.js +0 -1
  178. package/docs/static/typedoc/assets/style.css +0 -1633
  179. package/docs/static/typedoc/classes/Location.html +0 -55
  180. package/docs/static/typedoc/classes/LocationProvider.html +0 -20
  181. package/docs/static/typedoc/classes/LogProvider.html +0 -6
  182. package/docs/static/typedoc/classes/PubSub.html +0 -71
  183. package/docs/static/typedoc/classes/PubSubProvider.html +0 -3
  184. package/docs/static/typedoc/classes/TemplateCacheProvider.html +0 -5
  185. package/docs/static/typedoc/hierarchy.html +0 -1
  186. package/docs/static/typedoc/index.html +0 -1
  187. package/docs/static/typedoc/interfaces/ChangesObject.html +0 -6
  188. package/docs/static/typedoc/interfaces/ComponentOptions.html +0 -16
  189. package/docs/static/typedoc/interfaces/Controller.html +0 -12
  190. package/docs/static/typedoc/interfaces/DefaultPorts.html +0 -5
  191. package/docs/static/typedoc/interfaces/Directive.html +0 -37
  192. package/docs/static/typedoc/interfaces/DirectivePrePost.html +0 -4
  193. package/docs/static/typedoc/interfaces/Html5Mode.html +0 -23
  194. package/docs/static/typedoc/interfaces/HttpHeadersGetter.html +0 -1
  195. package/docs/static/typedoc/interfaces/HttpProviderDefaults.html +0 -31
  196. package/docs/static/typedoc/interfaces/HttpRequestConfigHeaders.html +0 -6
  197. package/docs/static/typedoc/interfaces/HttpRequestTransformer.html +0 -1
  198. package/docs/static/typedoc/interfaces/HttpResponse.html +0 -7
  199. package/docs/static/typedoc/interfaces/HttpResponseTransformer.html +0 -1
  200. package/docs/static/typedoc/interfaces/HttpService.html +0 -38
  201. package/docs/static/typedoc/interfaces/LogService.html +0 -12
  202. package/docs/static/typedoc/interfaces/NgModelController.html +0 -30
  203. package/docs/static/typedoc/interfaces/NgModelOptions.html +0 -16
  204. package/docs/static/typedoc/interfaces/Provider.html +0 -34
  205. package/docs/static/typedoc/interfaces/RequestConfig.html +0 -48
  206. package/docs/static/typedoc/interfaces/RequestShortcutConfig.html +0 -38
  207. package/docs/static/typedoc/interfaces/ServiceProvider.html +0 -5
  208. package/docs/static/typedoc/interfaces/TemplateCache.html +0 -7
  209. package/docs/static/typedoc/interfaces/TranscludeFunctionObject.html +0 -8
  210. package/docs/static/typedoc/interfaces/UrlParts.html +0 -9
  211. package/docs/static/typedoc/types/AnnotatedDirectiveFactory.html +0 -1
  212. package/docs/static/typedoc/types/AnnotatedFactory.html +0 -8
  213. package/docs/static/typedoc/types/CloneAttachFunction.html +0 -2
  214. package/docs/static/typedoc/types/ControllerConstructor.html +0 -2
  215. package/docs/static/typedoc/types/DirectiveCompileFn.html +0 -2
  216. package/docs/static/typedoc/types/DirectiveController.html +0 -2
  217. package/docs/static/typedoc/types/DirectiveFactory.html +0 -1
  218. package/docs/static/typedoc/types/DirectiveFactoryFn.html +0 -1
  219. package/docs/static/typedoc/types/DirectiveLinkFn.html +0 -2
  220. package/docs/static/typedoc/types/ExpandoStore.html +0 -2
  221. package/docs/static/typedoc/types/Expression.html +0 -6
  222. package/docs/static/typedoc/types/FilterFactory.html +0 -2
  223. package/docs/static/typedoc/types/FilterFn.html +0 -2
  224. package/docs/static/typedoc/types/HttpPromise.html +0 -1
  225. package/docs/static/typedoc/types/HttpResponseStatus.html +0 -1
  226. package/docs/static/typedoc/types/Injectable.html +0 -4
  227. package/docs/static/typedoc/types/InjectableClass.html +0 -1
  228. package/docs/static/typedoc/types/InjectableFactory.html +0 -1
  229. package/docs/static/typedoc/types/LogCall.html +0 -2
  230. package/docs/static/typedoc/types/LogServiceFactory.html +0 -2
  231. package/docs/static/typedoc/types/OnChangesObject.html +0 -2
  232. package/docs/static/typedoc/types/SwapModeType.html +0 -2
  233. package/docs/static/typedoc/types/TController.html +0 -2
  234. package/docs/static/typedoc/types/UrlChangeListener.html +0 -5
  235. package/docs/static/typedoc/variables/EventBus.html +0 -1
  236. package/docs/static/typedoc/variables/SwapMode.html +0 -11
  237. package/docs/static/version.js +0 -13
  238. package/docs/test-results/.last-run.json +0 -4
  239. package/docs/test-results/static-examples-counter-counter-counter-example/error-context.md +0 -50
  240. package/eslint.config.js +0 -26
  241. package/images/android-chrome-192x192.png +0 -0
  242. package/images/android-chrome-512x512.png +0 -0
  243. package/images/apple-touch-icon.png +0 -0
  244. package/images/favicon-16x16.png +0 -0
  245. package/images/favicon-32x32.png +0 -0
  246. package/images/favicon.ico +0 -0
  247. package/images/site.webmanifest +0 -19
  248. package/index.html +0 -86
  249. package/legacy.d.ts +0 -2599
  250. package/playwright.config.ts +0 -81
  251. package/public/jasmine/boot0.js +0 -66
  252. package/public/jasmine/boot1.js +0 -134
  253. package/public/jasmine/jasmine-html.js +0 -970
  254. package/public/jasmine/jasmine.css +0 -323
  255. package/public/jasmine/jasmine.js +0 -11406
  256. package/public/public/README.md +0 -1
  257. package/public/public/circle.html +0 -1
  258. package/public/public/jasmine-helper.css +0 -9
  259. package/public/public/my_child_directive.html +0 -1
  260. package/public/public/my_directive.html +0 -1
  261. package/public/public/my_other_directive.html +0 -1
  262. package/public/public/test.html +0 -1
  263. package/rollup.config.js +0 -51
  264. package/src/angular.js +0 -293
  265. package/src/angular.spec.js +0 -1191
  266. package/src/animations/animate-cache.js +0 -80
  267. package/src/animations/animate-children-directive.js +0 -32
  268. package/src/animations/animate-children-directive.md +0 -80
  269. package/src/animations/animate-css-driver.js +0 -284
  270. package/src/animations/animate-css.html +0 -58
  271. package/src/animations/animate-css.js +0 -915
  272. package/src/animations/animate-css.md +0 -263
  273. package/src/animations/animate-js-driver.js +0 -60
  274. package/src/animations/animate-js.html +0 -47
  275. package/src/animations/animate-js.js +0 -371
  276. package/src/animations/animate-queue.js +0 -859
  277. package/src/animations/animate-runner.js +0 -193
  278. package/src/animations/animate-swap.js +0 -33
  279. package/src/animations/animate-swap.md +0 -88
  280. package/src/animations/animate.html +0 -19
  281. package/src/animations/animate.js +0 -546
  282. package/src/animations/animate.md +0 -933
  283. package/src/animations/animate.spec.js +0 -490
  284. package/src/animations/animation.js +0 -519
  285. package/src/animations/animations.test.js +0 -10
  286. package/src/animations/interface.ts +0 -19
  287. package/src/animations/raf-scheduler.html +0 -19
  288. package/src/animations/raf-scheduler.js +0 -92
  289. package/src/animations/raf-scheduler.spec.js +0 -98
  290. package/src/animations/shared.js +0 -341
  291. package/src/binding.html +0 -19
  292. package/src/binding.spec.js +0 -474
  293. package/src/binding.test.js +0 -10
  294. package/src/core/compile/attributes.js +0 -337
  295. package/src/core/compile/compile.html +0 -19
  296. package/src/core/compile/compile.js +0 -3270
  297. package/src/core/compile/compile.md +0 -1128
  298. package/src/core/compile/compile.spec.js +0 -15574
  299. package/src/core/compile/compile.test.js +0 -12
  300. package/src/core/controller/controller.html +0 -22
  301. package/src/core/controller/controller.js +0 -189
  302. package/src/core/controller/controller.spec.js +0 -334
  303. package/src/core/controller/controller.test.js +0 -12
  304. package/src/core/core.html +0 -20
  305. package/src/core/core.test.js +0 -12
  306. package/src/core/di/injector.html +0 -19
  307. package/src/core/di/injector.js +0 -307
  308. package/src/core/di/injector.md +0 -740
  309. package/src/core/di/injector.spec.js +0 -2310
  310. package/src/core/di/injector.test.js +0 -12
  311. package/src/core/di/internal-injector.js +0 -284
  312. package/src/core/di/ng-module.html +0 -19
  313. package/src/core/di/ng-module.js +0 -226
  314. package/src/core/di/ng-module.spec.js +0 -263
  315. package/src/core/di/ng-module.test.js +0 -12
  316. package/src/core/filter/filter.html +0 -19
  317. package/src/core/filter/filter.js +0 -55
  318. package/src/core/filter/filter.md +0 -132
  319. package/src/core/filter/filter.spec.js +0 -149
  320. package/src/core/filter/filter.test.js +0 -12
  321. package/src/core/interpolate/interpolate.html +0 -22
  322. package/src/core/interpolate/interpolate.js +0 -408
  323. package/src/core/interpolate/interpolate.spec.js +0 -601
  324. package/src/core/interpolate/interpolate.test.js +0 -12
  325. package/src/core/parse/ast/ast-node.ts +0 -81
  326. package/src/core/parse/ast/ast.html +0 -19
  327. package/src/core/parse/ast/ast.js +0 -574
  328. package/src/core/parse/ast/ast.spec.js +0 -1453
  329. package/src/core/parse/ast/ast.test.js +0 -10
  330. package/src/core/parse/ast-type.js +0 -23
  331. package/src/core/parse/interface.ts +0 -84
  332. package/src/core/parse/interpreter.js +0 -915
  333. package/src/core/parse/lexer/lexer.html +0 -19
  334. package/src/core/parse/lexer/lexer.js +0 -338
  335. package/src/core/parse/lexer/lexer.spec.js +0 -303
  336. package/src/core/parse/lexer/lexer.test.js +0 -10
  337. package/src/core/parse/lexer/token.ts +0 -22
  338. package/src/core/parse/parse.html +0 -19
  339. package/src/core/parse/parse.js +0 -337
  340. package/src/core/parse/parse.md +0 -57
  341. package/src/core/parse/parse.spec.js +0 -2107
  342. package/src/core/parse/parse.test.js +0 -10
  343. package/src/core/parse/parser/parser.html +0 -19
  344. package/src/core/parse/parser/parser.js +0 -64
  345. package/src/core/parse/parser/parser.spec.js +0 -8
  346. package/src/core/parse/parser/parser.test.js +0 -10
  347. package/src/core/prop.spec.js +0 -775
  348. package/src/core/root-element.spec.js +0 -14
  349. package/src/core/sanitize/interface.ts +0 -10
  350. package/src/core/sanitize/sanitize-uri.js +0 -75
  351. package/src/core/sanitize/sanitize-uri.spec.js +0 -249
  352. package/src/core/sanitize/sanitize-uri.test.js +0 -12
  353. package/src/core/sanitize/sanitize.html +0 -22
  354. package/src/core/scope/scope.html +0 -19
  355. package/src/core/scope/scope.js +0 -1249
  356. package/src/core/scope/scope.spec.js +0 -3000
  357. package/src/core/scope/scope.test.js +0 -12
  358. package/src/directive/aria/aria.html +0 -19
  359. package/src/directive/aria/aria.js +0 -382
  360. package/src/directive/aria/aria.md +0 -145
  361. package/src/directive/aria/aria.spec.js +0 -1241
  362. package/src/directive/aria/aria.test.js +0 -12
  363. package/src/directive/attrs/attrs.html +0 -19
  364. package/src/directive/attrs/attrs.js +0 -106
  365. package/src/directive/attrs/attrs.md +0 -224
  366. package/src/directive/attrs/attrs.spec.js +0 -71
  367. package/src/directive/attrs/attrs.test.js +0 -12
  368. package/src/directive/attrs/boolean.html +0 -19
  369. package/src/directive/attrs/boolean.spec.js +0 -137
  370. package/src/directive/attrs/boolean.test.js +0 -12
  371. package/src/directive/attrs/element-style.html +0 -22
  372. package/src/directive/attrs/element-style.spec.js +0 -85
  373. package/src/directive/attrs/element-style.test.js +0 -12
  374. package/src/directive/attrs/src.html +0 -19
  375. package/src/directive/attrs/src.spec.js +0 -163
  376. package/src/directive/attrs/src.test.js +0 -12
  377. package/src/directive/bind/bind-html.spec.js +0 -36
  378. package/src/directive/bind/bind.html +0 -20
  379. package/src/directive/bind/bind.js +0 -78
  380. package/src/directive/bind/bind.md +0 -142
  381. package/src/directive/bind/bind.spec.js +0 -314
  382. package/src/directive/bind/bind.test.js +0 -12
  383. package/src/directive/channel/channel.html +0 -19
  384. package/src/directive/channel/channel.js +0 -30
  385. package/src/directive/channel/channel.spec.js +0 -67
  386. package/src/directive/channel/channel.test.js +0 -10
  387. package/src/directive/class/class-test.html +0 -23
  388. package/src/directive/class/class.html +0 -19
  389. package/src/directive/class/class.js +0 -184
  390. package/src/directive/class/class.spec.js +0 -704
  391. package/src/directive/class/class.test.js +0 -12
  392. package/src/directive/cloak/cloak.html +0 -19
  393. package/src/directive/cloak/cloak.js +0 -11
  394. package/src/directive/cloak/cloak.spec.js +0 -44
  395. package/src/directive/cloak/cloak.test.js +0 -12
  396. package/src/directive/controller/controller.html +0 -22
  397. package/src/directive/controller/controller.js +0 -11
  398. package/src/directive/controller/controller.md +0 -46
  399. package/src/directive/controller/controller.spec.js +0 -175
  400. package/src/directive/controller/controller.test.js +0 -12
  401. package/src/directive/events/click.spec.js +0 -35
  402. package/src/directive/events/event.spec.js +0 -267
  403. package/src/directive/events/events-test.html +0 -36
  404. package/src/directive/events/events.html +0 -20
  405. package/src/directive/events/events.js +0 -65
  406. package/src/directive/events/events.md +0 -125
  407. package/src/directive/events/events.test.js +0 -12
  408. package/src/directive/form/form.html +0 -19
  409. package/src/directive/form/form.js +0 -669
  410. package/src/directive/form/form.spec.js +0 -1515
  411. package/src/directive/form/form.test.js +0 -12
  412. package/src/directive/http/delete.spec.js +0 -26
  413. package/src/directive/http/form-router-test.html +0 -44
  414. package/src/directive/http/form-test.html +0 -18
  415. package/src/directive/http/get.spec.js +0 -488
  416. package/src/directive/http/http.html +0 -22
  417. package/src/directive/http/http.js +0 -342
  418. package/src/directive/http/http.test.js +0 -12
  419. package/src/directive/http/post-example.html +0 -30
  420. package/src/directive/http/post.spec.js +0 -521
  421. package/src/directive/http/put.spec.js +0 -26
  422. package/src/directive/if/if-animate-css.html +0 -57
  423. package/src/directive/if/if-animate-svg.html +0 -25
  424. package/src/directive/if/if.html +0 -19
  425. package/src/directive/if/if.js +0 -72
  426. package/src/directive/if/if.md +0 -76
  427. package/src/directive/if/if.spec.js +0 -293
  428. package/src/directive/if/if.test.js +0 -114
  429. package/src/directive/include/include.html +0 -19
  430. package/src/directive/include/include.js +0 -151
  431. package/src/directive/include/include.md +0 -87
  432. package/src/directive/include/include.spec.js +0 -734
  433. package/src/directive/include/include.test.js +0 -12
  434. package/src/directive/init/init.html +0 -19
  435. package/src/directive/init/init.js +0 -22
  436. package/src/directive/init/init.md +0 -41
  437. package/src/directive/init/init.spec.js +0 -68
  438. package/src/directive/init/init.test.js +0 -12
  439. package/src/directive/input/input-example.html +0 -15
  440. package/src/directive/input/input.html +0 -19
  441. package/src/directive/input/input.js +0 -1078
  442. package/src/directive/input/input.md +0 -706
  443. package/src/directive/input/input.spec.js +0 -3700
  444. package/src/directive/input/input.test.js +0 -12
  445. package/src/directive/messages/messages.html +0 -22
  446. package/src/directive/messages/messages.js +0 -349
  447. package/src/directive/messages/messages.md +0 -543
  448. package/src/directive/messages/messages.spec.js +0 -1083
  449. package/src/directive/messages/messages.test.js +0 -12
  450. package/src/directive/model/change.md +0 -25
  451. package/src/directive/model/model.html +0 -19
  452. package/src/directive/model/model.js +0 -1170
  453. package/src/directive/model/model.spec.js +0 -1976
  454. package/src/directive/model/model.test.js +0 -12
  455. package/src/directive/model-options/model-option.test.js +0 -12
  456. package/src/directive/model-options/model-options.html +0 -22
  457. package/src/directive/model-options/model-options.js +0 -142
  458. package/src/directive/model-options/model-options.md +0 -407
  459. package/src/directive/model-options/model-options.spec.js +0 -1022
  460. package/src/directive/non-bindable/non-bindable.html +0 -22
  461. package/src/directive/non-bindable/non-bindable.js +0 -9
  462. package/src/directive/non-bindable/non-bindable.spec.js +0 -59
  463. package/src/directive/non-bindable/non-bindable.test.js +0 -12
  464. package/src/directive/observe/observe-demo.html +0 -184
  465. package/src/directive/observe/observe.html +0 -19
  466. package/src/directive/observe/observe.js +0 -41
  467. package/src/directive/observe/observe.spec.js +0 -106
  468. package/src/directive/observe/observe.test.js +0 -10
  469. package/src/directive/on/on.html +0 -19
  470. package/src/directive/on/on.spec.js +0 -215
  471. package/src/directive/on/on.test.js +0 -12
  472. package/src/directive/options/options-example.html +0 -17
  473. package/src/directive/options/options.html +0 -22
  474. package/src/directive/options/options.js +0 -542
  475. package/src/directive/options/options.md +0 -179
  476. package/src/directive/options/options.spec.js +0 -3554
  477. package/src/directive/options/options.test.js +0 -12
  478. package/src/directive/ref/href.html +0 -19
  479. package/src/directive/ref/href.spec.js +0 -141
  480. package/src/directive/ref/href.test.js +0 -19
  481. package/src/directive/ref/ref.html +0 -19
  482. package/src/directive/ref/ref.js +0 -89
  483. package/src/directive/ref/ref.spec.js +0 -546
  484. package/src/directive/repeat/repeat.html +0 -19
  485. package/src/directive/repeat/repeat.js +0 -333
  486. package/src/directive/repeat/repeat.md +0 -330
  487. package/src/directive/repeat/repeat.spec.js +0 -1209
  488. package/src/directive/repeat/repeat.test.js +0 -12
  489. package/src/directive/script/script.html +0 -19
  490. package/src/directive/script/script.js +0 -17
  491. package/src/directive/script/script.md +0 -11
  492. package/src/directive/script/script.spec.js +0 -47
  493. package/src/directive/script/script.test.js +0 -12
  494. package/src/directive/select/select.html +0 -19
  495. package/src/directive/select/select.js +0 -594
  496. package/src/directive/select/select.md +0 -74
  497. package/src/directive/select/select.spec.js +0 -2566
  498. package/src/directive/select/select.test.js +0 -12
  499. package/src/directive/setter/setter.html +0 -19
  500. package/src/directive/setter/setter.js +0 -59
  501. package/src/directive/setter/setter.spec.js +0 -100
  502. package/src/directive/setter/setter.test.js +0 -12
  503. package/src/directive/show-hide/show-hide.html +0 -22
  504. package/src/directive/show-hide/show-hide.js +0 -65
  505. package/src/directive/show-hide/show-hide.md +0 -255
  506. package/src/directive/show-hide/show-hide.spec.js +0 -268
  507. package/src/directive/show-hide/show-hide.test.js +0 -12
  508. package/src/directive/style/style.html +0 -19
  509. package/src/directive/style/style.js +0 -27
  510. package/src/directive/style/style.md +0 -23
  511. package/src/directive/style/style.spec.js +0 -183
  512. package/src/directive/style/style.test.js +0 -12
  513. package/src/directive/switch/switch.html +0 -19
  514. package/src/directive/switch/switch.js +0 -133
  515. package/src/directive/switch/switch.md +0 -66
  516. package/src/directive/switch/switch.spec.js +0 -509
  517. package/src/directive/switch/switch.test.js +0 -12
  518. package/src/directive/transclude/transclude.js +0 -122
  519. package/src/directive/validators/validators.html +0 -22
  520. package/src/directive/validators/validators.js +0 -346
  521. package/src/directive/validators/validators.spec.js +0 -740
  522. package/src/directive/validators/validators.test.js +0 -12
  523. package/src/filters/filter.js +0 -213
  524. package/src/filters/filter.md +0 -69
  525. package/src/filters/filter.spec.js +0 -719
  526. package/src/filters/filters.html +0 -22
  527. package/src/filters/filters.js +0 -239
  528. package/src/filters/filters.spec.js +0 -36
  529. package/src/filters/filters.test.js +0 -12
  530. package/src/filters/json.md +0 -16
  531. package/src/filters/limit-to.js +0 -55
  532. package/src/filters/limit-to.md +0 -19
  533. package/src/filters/limit-to.spec.js +0 -252
  534. package/src/filters/order-by.js +0 -181
  535. package/src/filters/order-by.md +0 -83
  536. package/src/filters/order-by.spec.js +0 -883
  537. package/src/index.js +0 -6
  538. package/src/index.spec.js +0 -11
  539. package/src/injection-tokens.js +0 -78
  540. package/src/interface.ts +0 -421
  541. package/src/ng.js +0 -289
  542. package/src/ng.spec.js +0 -33
  543. package/src/router/common/trace.js +0 -240
  544. package/src/router/directives/component-example.html +0 -37
  545. package/src/router/directives/state-directives.html +0 -22
  546. package/src/router/directives/state-directives.js +0 -393
  547. package/src/router/directives/state-directives.md +0 -435
  548. package/src/router/directives/state-directives.spec.js +0 -1091
  549. package/src/router/directives/state-directives.test.js +0 -10
  550. package/src/router/directives/view-directive.js +0 -489
  551. package/src/router/directives/view-directive.spec.js +0 -1937
  552. package/src/router/directives/view-directive.test.js +0 -10
  553. package/src/router/directives/view-directives.html +0 -22
  554. package/src/router/glob/glob.html +0 -19
  555. package/src/router/glob/glob.js +0 -102
  556. package/src/router/glob/glob.spec.js +0 -108
  557. package/src/router/glob/glob.test.js +0 -12
  558. package/src/router/hooks/core-resolvables.js +0 -38
  559. package/src/router/hooks/ignored-transition.js +0 -25
  560. package/src/router/hooks/invalid-transition.js +0 -14
  561. package/src/router/hooks/lazy-load.js +0 -104
  562. package/src/router/hooks/on-enter-exit-retain.js +0 -55
  563. package/src/router/hooks/redirect-to.js +0 -38
  564. package/src/router/hooks/resolve.js +0 -57
  565. package/src/router/hooks/update-globals.js +0 -34
  566. package/src/router/hooks/url.js +0 -34
  567. package/src/router/hooks/views.js +0 -41
  568. package/src/router/params/interface.ts +0 -626
  569. package/src/router/params/param-factory.js +0 -23
  570. package/src/router/params/param-type.js +0 -133
  571. package/src/router/params/param-types.js +0 -153
  572. package/src/router/params/param.js +0 -243
  573. package/src/router/params/state-params.js +0 -36
  574. package/src/router/path/path-node.js +0 -78
  575. package/src/router/path/path-utils.js +0 -207
  576. package/src/router/resolve/interface.ts +0 -208
  577. package/src/router/resolve/resolvable.js +0 -123
  578. package/src/router/resolve/resolve-context.js +0 -190
  579. package/src/router/router-test-hashbang.html +0 -45
  580. package/src/router/router-test.html +0 -41
  581. package/src/router/router.html +0 -22
  582. package/src/router/router.js +0 -54
  583. package/src/router/router.test.js +0 -12
  584. package/src/router/services.spec.js +0 -52
  585. package/src/router/state/README.md +0 -21
  586. package/src/router/state/interface.ts +0 -1007
  587. package/src/router/state/state-builder.js +0 -376
  588. package/src/router/state/state-builder.spec.js +0 -86
  589. package/src/router/state/state-matcher.js +0 -64
  590. package/src/router/state/state-object.js +0 -118
  591. package/src/router/state/state-queue-manager.js +0 -95
  592. package/src/router/state/state-registry.js +0 -257
  593. package/src/router/state/state-service.js +0 -699
  594. package/src/router/state/state.html +0 -23
  595. package/src/router/state/state.spec.js +0 -1002
  596. package/src/router/state/state.test.js +0 -12
  597. package/src/router/state/target-state.js +0 -162
  598. package/src/router/state/views.js +0 -195
  599. package/src/router/state-filter.spec.js +0 -139
  600. package/src/router/state-filters.js +0 -46
  601. package/src/router/template-factory.html +0 -19
  602. package/src/router/template-factory.js +0 -249
  603. package/src/router/template-factory.spec.js +0 -155
  604. package/src/router/template-factory.test.js +0 -12
  605. package/src/router/transition/hook-builder.js +0 -133
  606. package/src/router/transition/hook-registry.js +0 -172
  607. package/src/router/transition/interface.js +0 -18
  608. package/src/router/transition/interface.ts +0 -922
  609. package/src/router/transition/reject-factory.js +0 -122
  610. package/src/router/transition/transition-event-type.js +0 -26
  611. package/src/router/transition/transition-hook.js +0 -199
  612. package/src/router/transition/transition-service.js +0 -302
  613. package/src/router/transition/transition.js +0 -652
  614. package/src/router/url/url-config.js +0 -155
  615. package/src/router/url/url-matcher.js +0 -532
  616. package/src/router/url/url-rule.js +0 -231
  617. package/src/router/url/url-rules.js +0 -350
  618. package/src/router/url/url-service.js +0 -446
  619. package/src/router/url/url-service.spec.js +0 -1288
  620. package/src/router/url/url.html +0 -19
  621. package/src/router/url/url.test.js +0 -12
  622. package/src/router/view/interface.ts +0 -51
  623. package/src/router/view/view.html +0 -19
  624. package/src/router/view/view.js +0 -274
  625. package/src/router/view/view.spec.js +0 -100
  626. package/src/router/view/view.test.js +0 -12
  627. package/src/router/view-hook.spec.js +0 -215
  628. package/src/router/view-scroll.js +0 -33
  629. package/src/router/view-scroll.spec.js +0 -72
  630. package/src/services/anchor-scroll.html +0 -76
  631. package/src/services/anchor-scroll.js +0 -147
  632. package/src/services/cookie-reader.js +0 -48
  633. package/src/services/exception/exception-handler.js +0 -75
  634. package/src/services/exception/interface.ts +0 -7
  635. package/src/services/http/http.html +0 -23
  636. package/src/services/http/http.js +0 -922
  637. package/src/services/http/http.md +0 -413
  638. package/src/services/http/http.spec.js +0 -3941
  639. package/src/services/http/http.test.js +0 -11
  640. package/src/services/http/interface.ts +0 -243
  641. package/src/services/http/template-request.spec.js +0 -220
  642. package/src/services/http-backend/http-backend.html +0 -22
  643. package/src/services/http-backend/http-backend.js +0 -158
  644. package/src/services/http-backend/http-backend.spec.js +0 -389
  645. package/src/services/http-backend/http-backend.test.js +0 -12
  646. package/src/services/location/interface.ts +0 -70
  647. package/src/services/location/location.html +0 -22
  648. package/src/services/location/location.js +0 -1006
  649. package/src/services/location/location.spec.js +0 -3792
  650. package/src/services/location/location.test.js +0 -12
  651. package/src/services/log/interface.ts +0 -39
  652. package/src/services/log/log.html +0 -19
  653. package/src/services/log/log.js +0 -74
  654. package/src/services/log/log.spec.js +0 -64
  655. package/src/services/log/log.test.js +0 -12
  656. package/src/services/pubsub/pubsub.html +0 -19
  657. package/src/services/pubsub/pubsub.js +0 -349
  658. package/src/services/pubsub/pubsub.spec.js +0 -400
  659. package/src/services/pubsub/pubsub.test.js +0 -12
  660. package/src/services/sce/sce.html +0 -19
  661. package/src/services/sce/sce.js +0 -847
  662. package/src/services/sce/sce.md +0 -300
  663. package/src/services/sce/sce.spec.js +0 -617
  664. package/src/services/sce/sce.test.js +0 -12
  665. package/src/services/template-cache/interface.ts +0 -10
  666. package/src/services/template-cache/template-cache.html +0 -22
  667. package/src/services/template-cache/template-cache.js +0 -15
  668. package/src/services/template-cache/template-cache.spec.js +0 -134
  669. package/src/services/template-cache/template-cache.test.js +0 -12
  670. package/src/services/template-request.js +0 -142
  671. package/src/shared/cache.js +0 -7
  672. package/src/shared/common.js +0 -438
  673. package/src/shared/common.spec.js +0 -294
  674. package/src/shared/constants.js +0 -21
  675. package/src/shared/dom.js +0 -716
  676. package/src/shared/hof.js +0 -151
  677. package/src/shared/hof.spec.js +0 -60
  678. package/src/shared/interface.ts +0 -21
  679. package/src/shared/min-err.spec.js +0 -178
  680. package/src/shared/noderef.js +0 -225
  681. package/src/shared/predicates.js +0 -34
  682. package/src/shared/queue.js +0 -105
  683. package/src/shared/queue.spec.js +0 -80
  684. package/src/shared/shared.html +0 -24
  685. package/src/shared/shared.test.js +0 -12
  686. package/src/shared/strings.js +0 -142
  687. package/src/shared/strings.spec.js +0 -40
  688. package/src/shared/test-utils.js +0 -47
  689. package/src/shared/url-utils/interface.ts +0 -54
  690. package/src/shared/url-utils/url-utils.html +0 -22
  691. package/src/shared/url-utils/url-utils.js +0 -122
  692. package/src/shared/url-utils/url-utils.spec.js +0 -148
  693. package/src/shared/url-utils/url-utils.test.js +0 -12
  694. package/src/shared/utils.js +0 -1255
  695. package/src/shared/utils.spec.js +0 -178
  696. package/src/src.html +0 -21
  697. package/src/src.test.js +0 -10
  698. package/tsconfig.json +0 -19
  699. package/tsconfig.types.json +0 -14
  700. package/typedoc.json +0 -8
  701. package/utils/express.js +0 -203
  702. package/utils/version.cjs +0 -23
  703. package/vite.config.js +0 -14
@@ -1,1191 +0,0 @@
1
- import {
2
- encodeUriQuery,
3
- encodeUriSegment,
4
- equals,
5
- extend,
6
- fromJson,
7
- getNodeName,
8
- hashKey,
9
- isArrayLike,
10
- isDate,
11
- isDefined,
12
- isElement,
13
- isError,
14
- isRegExp,
15
- isWindow,
16
- lowercase,
17
- nextUid,
18
- parseKeyValue,
19
- shallowCopy,
20
- snakeCase,
21
- toJson,
22
- toKeyValue,
23
- uppercase,
24
- } from "./shared/utils.js";
25
- import { createElementFromHTML, dealoc, startingTag } from "./shared/dom.js";
26
- import { Angular } from "./angular.js";
27
- import { createInjector } from "./core/di/injector.js";
28
- import { wait } from "./shared/test-utils.js";
29
-
30
- describe("angular", () => {
31
- let element, document, module, injector, $rootScope, $compile, angular;
32
-
33
- beforeEach(() => {
34
- angular = new Angular();
35
- module = angular.module("defaultModule", ["ng"]);
36
- injector = createInjector(["ng", "defaultModule"]);
37
- $rootScope = injector.get("$rootScope");
38
- $compile = injector.get("$compile");
39
- });
40
-
41
- beforeEach(() => {
42
- document = window.document;
43
- });
44
-
45
- afterEach(() => {
46
- dealoc(element);
47
- });
48
-
49
- describe("case", () => {
50
- it("should change case", () => {
51
- expect(lowercase("ABC90")).toEqual("abc90");
52
- expect(uppercase("abc90")).toEqual("ABC90");
53
- });
54
-
55
- it("should change case of non-ASCII letters", () => {
56
- expect(lowercase("Ω")).toEqual("ω");
57
- expect(uppercase("ω")).toEqual("Ω");
58
- });
59
- });
60
-
61
- describe("extend", () => {
62
- it("should not copy the private $$hashKey", () => {
63
- let src;
64
- let dst;
65
- src = {};
66
- dst = {};
67
- hashKey(src);
68
- dst = extend(dst, src);
69
- expect(hashKey(dst)).not.toEqual(hashKey(src));
70
- });
71
-
72
- it("should copy the properties of the source object onto the destination object", () => {
73
- let destination;
74
- let source;
75
- destination = {};
76
- source = { foo: true };
77
- destination = extend(destination, source);
78
- expect(isDefined(destination.foo)).toBe(true);
79
- });
80
-
81
- it("ISSUE #4751 - should copy the length property of an object source to the destination object", () => {
82
- let destination;
83
- let source;
84
- destination = {};
85
- source = { radius: 30, length: 0 };
86
- destination = extend(destination, source);
87
- expect(isDefined(destination.length)).toBe(true);
88
- expect(isDefined(destination.radius)).toBe(true);
89
- });
90
-
91
- it("should retain the previous $$hashKey", () => {
92
- let src;
93
- let dst;
94
- let h;
95
- src = {};
96
- dst = {};
97
- h = hashKey(dst);
98
- hashKey(src);
99
- dst = extend(dst, src);
100
- // make sure we don't copy the key
101
- expect(hashKey(dst)).not.toEqual(hashKey(src));
102
- // make sure we retain the old key
103
- expect(hashKey(dst)).toEqual(h);
104
- });
105
-
106
- it("should work when extending with itself", () => {
107
- let src;
108
- let dst;
109
- let h;
110
- dst = src = {};
111
- h = hashKey(dst);
112
- dst = extend(dst, src);
113
- // make sure we retain the old key
114
- expect(hashKey(dst)).toEqual(h);
115
- });
116
-
117
- it("should copy dates by reference", () => {
118
- const src = { date: new Date() };
119
- const dst = {};
120
-
121
- extend(dst, src);
122
-
123
- expect(dst.date).toBe(src.date);
124
- });
125
-
126
- it("should copy elements by reference", () => {
127
- const src = {
128
- element: document.createElement("div"),
129
- jqObject: createElementFromHTML(
130
- "<p><span>s1</span><span>s2</span></p>",
131
- ).querySelectorAll("span"),
132
- };
133
- const dst = {};
134
-
135
- extend(dst, src);
136
-
137
- expect(dst.element).toBe(src.element);
138
- expect(dst.jqObject).toBe(src.jqObject);
139
- });
140
- });
141
-
142
- describe("shallow copy", () => {
143
- it("should make a copy", () => {
144
- const original = { key: {} };
145
- const copy = shallowCopy(original);
146
- expect(copy).toEqual(original);
147
- expect(copy.key).toBe(original.key);
148
- });
149
-
150
- it('should omit "$$"-prefixed properties', () => {
151
- const original = { $$some: true, $$: true };
152
- const clone = {};
153
-
154
- expect(shallowCopy(original, clone)).toBe(clone);
155
- expect(clone.$$some).toBeUndefined();
156
- expect(clone.$$).toBeUndefined();
157
- });
158
-
159
- it('should copy "$"-prefixed properties from copy', () => {
160
- const original = { $some: true };
161
- const clone = {};
162
-
163
- expect(shallowCopy(original, clone)).toBe(clone);
164
- expect(clone.$some).toBe(original.$some);
165
- });
166
-
167
- it("should handle arrays", () => {
168
- const original = [{}, 1];
169
- const clone = [];
170
-
171
- const aCopy = shallowCopy(original);
172
- expect(aCopy).not.toBe(original);
173
- expect(aCopy).toEqual(original);
174
- expect(aCopy[0]).toBe(original[0]);
175
-
176
- expect(shallowCopy(original, clone)).toBe(clone);
177
- expect(clone).toEqual(original);
178
- });
179
-
180
- it("should handle primitives", () => {
181
- expect(shallowCopy("test")).toBe("test");
182
- expect(shallowCopy(3)).toBe(3);
183
- expect(shallowCopy(true)).toBe(true);
184
- });
185
- });
186
-
187
- describe("elementHTML", () => {
188
- it("should dump element", () => {
189
- expect(
190
- startingTag('<div attr="123">something<span></span></div>'),
191
- ).toEqual('<div attr="123">');
192
- });
193
- });
194
-
195
- describe("equals", () => {
196
- it("should return true if same object", () => {
197
- const o = {};
198
- expect(equals(o, o)).toEqual(true);
199
- expect(equals(o, {})).toEqual(true);
200
- expect(equals(1, "1")).toEqual(false);
201
- expect(equals(1, "2")).toEqual(false);
202
- });
203
-
204
- it("should recurse into object", () => {
205
- expect(equals({}, {})).toEqual(true);
206
- expect(equals({ name: "misko" }, { name: "misko" })).toEqual(true);
207
- expect(equals({ name: "misko", age: 1 }, { name: "misko" })).toEqual(
208
- false,
209
- );
210
- expect(equals({ name: "misko" }, { name: "misko", age: 1 })).toEqual(
211
- false,
212
- );
213
- expect(equals({ name: "misko" }, { name: "adam" })).toEqual(false);
214
- expect(equals(["misko"], ["misko"])).toEqual(true);
215
- expect(equals(["misko"], ["adam"])).toEqual(false);
216
- expect(equals(["misko"], ["misko", "adam"])).toEqual(false);
217
- });
218
-
219
- it("should ignore undefined member variables during comparison", () => {
220
- const obj1 = { name: "misko" };
221
- const obj2 = { name: "misko", undefinedvar: undefined };
222
-
223
- expect(equals(obj1, obj2)).toBe(true);
224
- expect(equals(obj2, obj1)).toBe(true);
225
- });
226
-
227
- it("should ignore $ member variables", () => {
228
- expect(
229
- equals({ name: "misko", $id: 1 }, { name: "misko", $id: 2 }),
230
- ).toEqual(true);
231
- expect(equals({ name: "misko" }, { name: "misko", $id: 2 })).toEqual(
232
- true,
233
- );
234
- expect(equals({ name: "misko", $id: 1 }, { name: "misko" })).toEqual(
235
- true,
236
- );
237
- });
238
-
239
- it("should ignore functions", () => {
240
- expect(equals({ func() {} }, { bar() {} })).toEqual(true);
241
- });
242
-
243
- it("should work well with nulls", () => {
244
- expect(equals(null, "123")).toBe(false);
245
- expect(equals("123", null)).toBe(false);
246
-
247
- const obj = { foo: "bar" };
248
- expect(equals(null, obj)).toBe(false);
249
- expect(equals(obj, null)).toBe(false);
250
-
251
- expect(equals(null, null)).toBe(true);
252
- });
253
-
254
- it("should work well with undefined", () => {
255
- expect(equals(undefined, "123")).toBe(false);
256
- expect(equals("123", undefined)).toBe(false);
257
-
258
- const obj = { foo: "bar" };
259
- expect(equals(undefined, obj)).toBe(false);
260
- expect(equals(obj, undefined)).toBe(false);
261
-
262
- expect(equals(undefined, undefined)).toBe(true);
263
- });
264
-
265
- it("should treat two NaNs as equal", () => {
266
- expect(equals(NaN, NaN)).toBe(true);
267
- });
268
-
269
- it("should compare Scope instances only by identity", () => {
270
- const scope1 = $rootScope.$new();
271
- const scope2 = $rootScope.$new();
272
-
273
- expect(equals(scope1, scope1)).toBe(true);
274
- expect(equals(scope1, scope2)).toBe(false);
275
- expect(equals($rootScope, scope1)).toBe(false);
276
- expect(equals(undefined, scope1)).toBe(false);
277
- });
278
-
279
- it("should compare Window instances only by identity", () => {
280
- expect(equals(window, window)).toBe(true);
281
- expect(equals(window, window.document)).toBe(false);
282
- expect(equals(window, undefined)).toBe(false);
283
- });
284
-
285
- it("should compare dates", () => {
286
- expect(equals(new Date(0), new Date(0))).toBe(true);
287
- expect(equals(new Date(0), new Date(1))).toBe(false);
288
- expect(equals(new Date(0), 0)).toBe(false);
289
- expect(equals(0, new Date(0))).toBe(false);
290
-
291
- expect(equals(new Date(undefined), new Date(undefined))).toBe(true);
292
- expect(equals(new Date(undefined), new Date(0))).toBe(false);
293
- expect(equals(new Date(undefined), new Date(null))).toBe(false);
294
- expect(equals(new Date(undefined), new Date("wrong"))).toBe(true);
295
- expect(equals(new Date(), /abc/)).toBe(false);
296
- });
297
-
298
- it("should correctly test for keys that are present on Object.prototype", () => {
299
- expect(equals({}, { hasOwnProperty: 1 })).toBe(false);
300
- expect(equals({}, { toString: null })).toBe(false);
301
- });
302
-
303
- it("should compare regular expressions", () => {
304
- expect(equals(/abc/, /abc/)).toBe(true);
305
- expect(equals(/abc/i, new RegExp("abc", "i"))).toBe(true);
306
- expect(equals(new RegExp("abc", "i"), new RegExp("abc", "i"))).toBe(true);
307
- expect(equals(new RegExp("abc", "i"), new RegExp("abc"))).toBe(false);
308
- expect(equals(/abc/i, /abc/)).toBe(false);
309
- expect(equals(/abc/, /def/)).toBe(false);
310
- expect(equals(/^abc/, /abc/)).toBe(false);
311
- expect(equals(/^abc/, "/^abc/")).toBe(false);
312
- expect(equals(/abc/, new Date())).toBe(false);
313
- });
314
-
315
- it("should return false when comparing an object and an array", () => {
316
- expect(equals({}, [])).toBe(false);
317
- expect(equals([], {})).toBe(false);
318
- });
319
-
320
- it("should return false when comparing an object and a RegExp", () => {
321
- expect(equals({}, /abc/)).toBe(false);
322
- expect(equals({}, new RegExp("abc", "i"))).toBe(false);
323
- });
324
-
325
- it("should return false when comparing an object and a Date", () => {
326
- expect(equals({}, new Date())).toBe(false);
327
- });
328
-
329
- it("should safely compare objects with no prototype parent", () => {
330
- const o1 = extend(Object.create(null), {
331
- a: 1,
332
- b: 2,
333
- c: 3,
334
- });
335
- const o2 = extend(Object.create(null), {
336
- a: 1,
337
- b: 2,
338
- c: 3,
339
- });
340
- expect(equals(o1, o2)).toBe(true);
341
- o2.c = 2;
342
- expect(equals(o1, o2)).toBe(false);
343
- });
344
-
345
- it("should safely compare objects which shadow Object.prototype.hasOwnProperty", () => {
346
- const o1 = {
347
- hasOwnProperty: true,
348
- a: 1,
349
- b: 2,
350
- c: 3,
351
- };
352
- const o2 = {
353
- hasOwnProperty: true,
354
- a: 1,
355
- b: 2,
356
- c: 3,
357
- };
358
- expect(equals(o1, o2)).toBe(true);
359
- o1.hasOwnProperty = function () {};
360
- expect(equals(o1, o2)).toBe(false);
361
- });
362
- });
363
-
364
- describe("parseKeyValue", () => {
365
- it("should parse a string into key-value pairs", () => {
366
- expect(parseKeyValue("")).toEqual({});
367
- expect(parseKeyValue("simple=pair")).toEqual({ simple: "pair" });
368
- expect(parseKeyValue("first=1&second=2")).toEqual({
369
- first: "1",
370
- second: "2",
371
- });
372
- expect(parseKeyValue("escaped%20key=escaped%20value")).toEqual({
373
- "escaped key": "escaped value",
374
- });
375
- expect(parseKeyValue("emptyKey=")).toEqual({ emptyKey: "" });
376
- expect(parseKeyValue("flag1&key=value&flag2")).toEqual({
377
- flag1: true,
378
- key: "value",
379
- flag2: true,
380
- });
381
- });
382
- it("should ignore key values that are not valid URI components", () => {
383
- expect(() => {
384
- parseKeyValue("%");
385
- }).not.toThrow();
386
- expect(parseKeyValue("%")).toEqual({});
387
- expect(parseKeyValue("invalid=%")).toEqual({ invalid: undefined });
388
- expect(parseKeyValue("invalid=%&valid=good")).toEqual({
389
- invalid: undefined,
390
- valid: "good",
391
- });
392
- });
393
- it("should parse a string into key-value pairs with duplicates grouped in an array", () => {
394
- expect(parseKeyValue("")).toEqual({});
395
- expect(parseKeyValue("duplicate=pair")).toEqual({ duplicate: "pair" });
396
- expect(parseKeyValue("first=1&first=2")).toEqual({ first: ["1", "2"] });
397
- expect(
398
- parseKeyValue(
399
- "escaped%20key=escaped%20value&&escaped%20key=escaped%20value2",
400
- ),
401
- ).toEqual({ "escaped key": ["escaped value", "escaped value2"] });
402
- expect(parseKeyValue("flag1&key=value&flag1")).toEqual({
403
- flag1: [true, true],
404
- key: "value",
405
- });
406
- expect(parseKeyValue("flag1&flag1=value&flag1=value2&flag1")).toEqual({
407
- flag1: [true, "value", "value2", true],
408
- });
409
- });
410
-
411
- it("should ignore properties higher in the prototype chain", () => {
412
- expect(parseKeyValue("toString=123")).toEqual({
413
- toString: "123",
414
- });
415
- });
416
-
417
- it("should ignore badly escaped = characters", () => {
418
- expect(parseKeyValue("test=a=b")).toEqual({
419
- test: "a=b",
420
- });
421
- });
422
- });
423
-
424
- describe("toKeyValue", () => {
425
- it("should serialize key-value pairs into string", () => {
426
- expect(toKeyValue({})).toEqual("");
427
- expect(toKeyValue({ simple: "pair" })).toEqual("simple=pair");
428
- expect(toKeyValue({ first: "1", second: "2" })).toEqual(
429
- "first=1&second=2",
430
- );
431
- expect(toKeyValue({ "escaped key": "escaped value" })).toEqual(
432
- "escaped%20key=escaped%20value",
433
- );
434
- expect(toKeyValue({ emptyKey: "" })).toEqual("emptyKey=");
435
- });
436
-
437
- it("should serialize true values into flags", () => {
438
- expect(toKeyValue({ flag1: true, key: "value", flag2: true })).toEqual(
439
- "flag1&key=value&flag2",
440
- );
441
- });
442
-
443
- it("should serialize duplicates into duplicate param strings", () => {
444
- expect(toKeyValue({ key: [323, "value", true] })).toEqual(
445
- "key=323&key=value&key",
446
- );
447
- expect(toKeyValue({ key: [323, "value", true, 1234] })).toEqual(
448
- "key=323&key=value&key&key=1234",
449
- );
450
- });
451
- });
452
-
453
- describe("isArrayLike", () => {
454
- it("should return false if passed a number", () => {
455
- expect(isArrayLike(10)).toBe(false);
456
- });
457
-
458
- it("should return true if passed an array", () => {
459
- expect(isArrayLike([1, 2, 3, 4])).toBe(true);
460
- });
461
-
462
- it("should return true if passed an object", () => {
463
- expect(isArrayLike({ 0: "test", 1: "bob", 2: "tree", length: 3 })).toBe(
464
- true,
465
- );
466
- });
467
-
468
- it("should return true if passed arguments object", () => {
469
- function test(a, b, c) {
470
- expect(isArrayLike(arguments)).toBe(true);
471
- }
472
- test(1, 2, 3);
473
- });
474
-
475
- it("should return true if passed a nodelist", () => {
476
- const nodes1 = document.body.childNodes;
477
- expect(isArrayLike(nodes1)).toBe(true);
478
-
479
- const nodes2 = document.getElementsByTagName("nonExistingTagName");
480
- expect(isArrayLike(nodes2)).toBe(true);
481
- });
482
-
483
- it("should return false for objects with `length` but no matching indexable items", () => {
484
- const obj1 = {
485
- a: "a",
486
- b: "b",
487
- length: 10,
488
- };
489
- expect(isArrayLike(obj1)).toBe(false);
490
-
491
- const obj2 = {
492
- length: 0,
493
- };
494
- expect(isArrayLike(obj2)).toBe(false);
495
- });
496
-
497
- it("should return true for empty instances of an Array subclass", () => {
498
- function ArrayLike() {}
499
- ArrayLike.prototype = Array.prototype;
500
-
501
- const arrLike = new ArrayLike();
502
- expect(arrLike.length).toBe(0);
503
- expect(isArrayLike(arrLike)).toBe(true);
504
-
505
- arrLike.push(1, 2, 3);
506
- expect(arrLike.length).toBe(3);
507
- expect(isArrayLike(arrLike)).toBe(true);
508
- });
509
- });
510
-
511
- describe("encodeUriSegment", () => {
512
- it("should correctly encode uri segment and not encode chars defined as pchar set in rfc3986", () => {
513
- // don't encode alphanum
514
- expect(encodeUriSegment("asdf1234asdf")).toEqual("asdf1234asdf");
515
-
516
- // don't encode unreserved'
517
- expect(encodeUriSegment("-_.!~*'(); -_.!~*'();")).toEqual(
518
- "-_.!~*'();%20-_.!~*'();",
519
- );
520
-
521
- // don't encode the rest of pchar'
522
- expect(encodeUriSegment(":@&=+$, :@&=+$,")).toEqual(":@&=+$,%20:@&=+$,");
523
-
524
- // encode '/' and ' ''
525
- expect(encodeUriSegment("/; /;")).toEqual("%2F;%20%2F;");
526
- });
527
- });
528
-
529
- describe("encodeUriQuery", () => {
530
- it("should correctly encode uri query and not encode chars defined as pchar set in rfc3986", () => {
531
- // don't encode alphanum
532
- expect(encodeUriQuery("asdf1234asdf")).toEqual("asdf1234asdf");
533
-
534
- // don't encode unreserved
535
- expect(encodeUriQuery("-_.!~*'() -_.!~*'()")).toEqual(
536
- "-_.!~*'()+-_.!~*'()",
537
- );
538
-
539
- // don't encode the rest of pchar
540
- expect(encodeUriQuery(":@$, :@$,")).toEqual(":@$,+:@$,");
541
-
542
- // encode '&', ';', '=', '+', and '#'
543
- expect(encodeUriQuery("&;=+# &;=+#")).toEqual(
544
- "%26;%3D%2B%23+%26;%3D%2B%23",
545
- );
546
-
547
- // encode ' ' as '+'
548
- expect(encodeUriQuery(" ")).toEqual("++");
549
-
550
- // encode ' ' as '%20' when a flag is used
551
- expect(encodeUriQuery(" ", true)).toEqual("%20%20");
552
-
553
- // do not encode `null` as '+' when flag is used
554
- expect(encodeUriQuery("null", true)).toEqual("null");
555
-
556
- // do not encode `null` with no flag
557
- expect(encodeUriQuery("null")).toEqual("null");
558
- });
559
- });
560
-
561
- describe("angular.init", () => {
562
- let bootstrapSpy;
563
- let element;
564
-
565
- beforeEach(() => {
566
- element = {
567
- hasAttribute(name) {
568
- return !!element[name];
569
- },
570
-
571
- querySelector(arg) {
572
- return element.querySelector[arg] || null;
573
- },
574
-
575
- getAttribute(name) {
576
- return element[name];
577
- },
578
- };
579
- bootstrapSpy = spyOn(window.angular, "bootstrap").and.callThrough();
580
- });
581
-
582
- it("should do nothing when not found", () => {
583
- window.angular.init(element);
584
- expect(bootstrapSpy).not.toHaveBeenCalled();
585
- });
586
-
587
- it("should look for ngApp directive as attr", () => {
588
- window.angular.module("ABC", []);
589
- const appElement = createElementFromHTML('<div ng-app="ABC"></div>');
590
-
591
- window.angular.init(appElement);
592
- expect(bootstrapSpy).toHaveBeenCalled();
593
- });
594
-
595
- it("should look for ngApp directive using querySelectorAll", () => {
596
- window.angular.module("ABC", []);
597
- element.querySelector["[ng-app]"] = createElementFromHTML(
598
- '<div ng-app="ABC"></div>',
599
- );
600
- window.angular.init(element);
601
- expect(bootstrapSpy).toHaveBeenCalled();
602
- });
603
-
604
- it("should bootstrap anonymously", () => {
605
- element.querySelector["[ng-app]"] =
606
- createElementFromHTML("<div ng-app></div>");
607
- window.angular.init(element);
608
- expect(bootstrapSpy).toHaveBeenCalled();
609
- });
610
-
611
- it("should bootstrap if the annotation is on the root element", () => {
612
- const appElement = createElementFromHTML('<div ng-app=""></div>');
613
- window.angular.init(appElement);
614
- expect(bootstrapSpy).toHaveBeenCalled();
615
- });
616
-
617
- it("should complain if app module cannot be found", () => {
618
- const appElement = createElementFromHTML(
619
- '<div ng-app="doesntexist"></div>',
620
- );
621
- expect(() => {
622
- window.angular.init(appElement);
623
- }).toThrowError(/modulerr/);
624
- });
625
-
626
- it("should complain if an element has already been bootstrapped", () => {
627
- const element = createElementFromHTML("<div>bootstrap me!</div>");
628
- angular.bootstrap(element);
629
-
630
- expect(() => {
631
- angular.bootstrap(element);
632
- }).toThrowError(/btstrpd/);
633
-
634
- dealoc(element);
635
- });
636
-
637
- it("should complain if manually bootstrapping a document whose <html> element has already been bootstrapped", () => {
638
- angular.bootstrap(document.getElementsByTagName("html")[0]);
639
- expect(() => {
640
- angular.bootstrap(document);
641
- }).toThrowError(/btstrpd/);
642
-
643
- dealoc(document);
644
- });
645
-
646
- it("should bootstrap in strict mode when ng-strict-di attribute is specified", () => {
647
- const appElement = createElementFromHTML(
648
- '<div ng-app="" ng-strict-di></div>',
649
- );
650
- const root = createElementFromHTML("<div></div>");
651
- root.append(appElement);
652
-
653
- window.angular.init(root);
654
- expect(bootstrapSpy).toHaveBeenCalled();
655
- expect(bootstrapSpy.calls.mostRecent().args[2].strictDi).toBe(true);
656
-
657
- const injector = angular.getInjector(appElement);
658
- function testFactory($rootScope) {}
659
- expect(() => {
660
- injector.instantiate(testFactory);
661
- }).toThrowError(/strictdi/);
662
-
663
- dealoc(appElement);
664
- });
665
- });
666
-
667
- describe("AngularTS service", () => {
668
- it("should override services", () => {
669
- injector = createInjector([
670
- function ($provide) {
671
- $provide.value("fake", "old");
672
- $provide.value("fake", "new");
673
- },
674
- ]);
675
- expect(injector.get("fake")).toEqual("new");
676
- });
677
-
678
- it("should inject dependencies specified by $inject and ignore function argument name", () => {
679
- expect(
680
- angular
681
- .injector([
682
- function ($provide) {
683
- $provide.factory("svc1", () => "svc1");
684
- $provide.factory("svc2", [
685
- "svc1",
686
- function (s) {
687
- return `svc2-${s}`;
688
- },
689
- ]);
690
- },
691
- ])
692
- .get("svc2"),
693
- ).toEqual("svc2-svc1");
694
- });
695
- });
696
-
697
- describe("isDate", () => {
698
- it("should return true for Date object", () => {
699
- expect(isDate(new Date())).toBe(true);
700
- });
701
-
702
- it("should return false for non Date objects", () => {
703
- expect(isDate([])).toBe(false);
704
- expect(isDate("")).toBe(false);
705
- expect(isDate(23)).toBe(false);
706
- expect(isDate({})).toBe(false);
707
- });
708
- });
709
-
710
- describe("isError", () => {
711
- function testErrorFromDifferentContext(createError) {
712
- const iframe = document.createElement("iframe");
713
- document.getElementById("app").appendChild(iframe);
714
- try {
715
- const error = createError(iframe.contentWindow);
716
- expect(isError(error)).toBe(true);
717
- } finally {
718
- iframe.parentElement.removeChild(iframe);
719
- }
720
- }
721
-
722
- it("should not assume objects are errors", () => {
723
- const fakeError = { message: "A fake error", stack: "no stack here" };
724
- expect(isError(fakeError)).toBe(false);
725
- });
726
-
727
- it("should detect simple error instances", () => {
728
- expect(isError(new Error())).toBe(true);
729
- });
730
-
731
- it("should detect errors from another context", () => {
732
- testErrorFromDifferentContext((win) => new win.Error());
733
- });
734
-
735
- it("should detect DOMException errors from another context", () => {
736
- testErrorFromDifferentContext((win) => {
737
- try {
738
- win.document.querySelectorAll("");
739
- } catch (e) {
740
- return e;
741
- }
742
- });
743
- });
744
- });
745
-
746
- describe("isRegExp", () => {
747
- it("should return true for RegExp object", () => {
748
- expect(isRegExp(/^foobar$/)).toBe(true);
749
- expect(isRegExp(new RegExp("^foobar$/"))).toBe(true);
750
- });
751
-
752
- it("should return false for non RegExp objects", () => {
753
- expect(isRegExp([])).toBe(false);
754
- expect(isRegExp("")).toBe(false);
755
- expect(isRegExp(23)).toBe(false);
756
- expect(isRegExp({})).toBe(false);
757
- expect(isRegExp(new Date())).toBe(false);
758
- });
759
- });
760
-
761
- describe("isWindow", () => {
762
- it("should return true for the Window object", () => {
763
- expect(isWindow(window)).toBe(true);
764
- });
765
-
766
- it("should return false for any object that is not a Window", () => {
767
- expect(isWindow([])).toBe(false);
768
- expect(isWindow("")).toBeFalsy();
769
- expect(isWindow(23)).toBe(false);
770
- expect(isWindow({})).toBe(false);
771
- expect(isWindow(new Date())).toBe(false);
772
- expect(isWindow(document)).toBe(false);
773
- });
774
- });
775
-
776
- describe("compile", () => {
777
- it("should link to existing node and create scope", async () => {
778
- const template = createElementFromHTML(
779
- '<div>{{greeting = "hello world"}}</div>',
780
- );
781
- element = $compile(template)($rootScope);
782
- await wait();
783
-
784
- expect(template.innerHTML).toEqual("hello world");
785
- expect($rootScope.greeting).toEqual("hello world");
786
- });
787
-
788
- it("should link to existing node and given scope", async () => {
789
- const template = createElementFromHTML(
790
- '<div>{{greeting = "hello world"}}</div>',
791
- );
792
- element = $compile(template)($rootScope);
793
- await wait();
794
- expect(template.textContent).toEqual("hello world");
795
- });
796
-
797
- it("should link to new node and given scope", async () => {
798
- const template = createElementFromHTML(
799
- '<div>{{greeting = "hello world"}}</div>',
800
- );
801
-
802
- const compile = $compile(template);
803
- let templateClone = template.cloneNode(true);
804
-
805
- element = compile($rootScope, (clone) => {
806
- templateClone = clone;
807
- });
808
- await wait();
809
- expect(template.textContent).toEqual('{{greeting = "hello world"}}');
810
- expect(element.textContent).toEqual("hello world");
811
- expect(element).toEqual(templateClone);
812
- expect($rootScope.greeting).toEqual("hello world");
813
- });
814
-
815
- it("should link to cloned node and create scope", async () => {
816
- const template = createElementFromHTML(
817
- '<div>{{greeting = "hello world"}}</div>',
818
- );
819
- element = $compile(template)($rootScope, () => {});
820
- await wait();
821
- expect(template.textContent).toEqual('{{greeting = "hello world"}}');
822
- expect(element.textContent).toEqual("hello world");
823
- expect($rootScope.greeting).toEqual("hello world");
824
- });
825
- });
826
-
827
- describe("getNodeName", () => {
828
- it('should correctly detect node name with "namespace" when xmlns is defined', () => {
829
- const div = createElementFromHTML(
830
- '<div xmlns:ngtest="http://angularjs.org/">' +
831
- '<ngtest:foo ngtest:attr="bar"></ngtest:foo>' +
832
- "</div>",
833
- );
834
- expect(getNodeName(div.childNodes[0])).toBe("ngtest:foo");
835
- expect(div.childNodes[0].getAttribute("ngtest:attr")).toBe("bar");
836
- });
837
-
838
- it('should correctly detect node name with "namespace" when xmlns is NOT defined', () => {
839
- const div = createElementFromHTML(
840
- '<div xmlns:ngtest="http://angularjs.org/">' +
841
- '<ngtest:foo ngtest:attr="bar"></ng-test>' +
842
- "</div>",
843
- );
844
- expect(getNodeName(div.childNodes[0])).toBe("ngtest:foo");
845
- expect(div.childNodes[0].getAttribute("ngtest:attr")).toBe("bar");
846
- });
847
-
848
- it("should return undefined for elements without the .nodeName property", () => {
849
- // some elements, like SVGElementInstance don't have .nodeName property
850
- expect(getNodeName({})).toBeUndefined();
851
- });
852
- });
853
-
854
- describe("nextUid()", () => {
855
- it("should return new id per call", () => {
856
- const seen = {};
857
- let count = 100;
858
-
859
- while (count--) {
860
- const current = nextUid();
861
- expect(typeof current).toBe("number");
862
- expect(seen[current]).toBeFalsy();
863
- seen[current] = true;
864
- }
865
- });
866
- });
867
-
868
- describe("bootstrap", () => {
869
- let module, injector, $rootScope, $compile, angular;
870
-
871
- beforeEach(() => {
872
- angular = new Angular();
873
- module = angular.module("defaultModule", ["ng"]);
874
- injector = createInjector(["defaultModule"]);
875
- $rootScope = injector.get("$rootScope");
876
- $compile = injector.get("$compile");
877
- });
878
-
879
- it("should bootstrap app", () => {
880
- const element = createElementFromHTML("<div>{{1+2}}</div>");
881
- const injector = angular.bootstrap(element);
882
- expect(injector).toBeDefined();
883
- expect(angular.getInjector(element)).toBe(injector);
884
- // dealoc(element);
885
- });
886
-
887
- it("should complain if app module can't be found", () => {
888
- const element = createElementFromHTML("<div>{{1+2}}</div>");
889
-
890
- expect(() => {
891
- angular.bootstrap(element, ["doesntexist"]);
892
- }).toThrowError(/modulerr/);
893
-
894
- expect(element.innerHTML).toBe("{{1+2}}");
895
- dealoc(element);
896
- });
897
- });
898
-
899
- describe("startingElementHtml", () => {
900
- it("should show starting element tag only", () => {
901
- expect(startingTag('<ng-abc x="2A"><div>text</div></ng-abc>')).toBe(
902
- '<ng-abc x="2A">',
903
- );
904
- });
905
- });
906
-
907
- describe("startingTag", () => {
908
- it("should allow passing in Nodes instead of Elements", () => {
909
- const txtNode = document.createTextNode("some text");
910
- expect(startingTag(txtNode)).toBe("some text");
911
- });
912
- });
913
-
914
- describe("snakeCase", () => {
915
- it("should convert to snakeCase", () => {
916
- expect(snakeCase("ABC")).toEqual("a_b_c");
917
- expect(snakeCase("alanBobCharles")).toEqual("alan_bob_charles");
918
- });
919
-
920
- it("should allow separator to be overridden", () => {
921
- expect(snakeCase("ABC", "&")).toEqual("a&b&c");
922
- expect(snakeCase("alanBobCharles", "&")).toEqual("alan&bob&charles");
923
- });
924
- });
925
-
926
- describe("fromJson", () => {
927
- it("should delegate to JSON.parse", () => {
928
- const spy = spyOn(JSON, "parse").and.callThrough();
929
-
930
- expect(fromJson("{}")).toEqual({});
931
- expect(spy).toHaveBeenCalled();
932
- });
933
- });
934
-
935
- describe("toJson", () => {
936
- it("should delegate to JSON.stringify", () => {
937
- const spy = spyOn(JSON, "stringify").and.callThrough();
938
-
939
- expect(toJson({})).toEqual("{}");
940
- expect(spy).toHaveBeenCalled();
941
- });
942
-
943
- it("should format objects pretty", () => {
944
- expect(toJson({ a: 1, b: 2 }, true)).toBe('{\n "a": 1,\n "b": 2\n}');
945
- expect(toJson({ a: { b: 2 } }, true)).toBe(
946
- '{\n "a": {\n "b": 2\n }\n}',
947
- );
948
- expect(toJson({ a: 1, b: 2 }, false)).toBe('{"a":1,"b":2}');
949
- expect(toJson({ a: 1, b: 2 }, 0)).toBe('{"a":1,"b":2}');
950
- expect(toJson({ a: 1, b: 2 }, 1)).toBe('{\n "a": 1,\n "b": 2\n}');
951
- expect(toJson({ a: 1, b: 2 }, {})).toBe('{\n "a": 1,\n "b": 2\n}');
952
- });
953
-
954
- it("should not serialize properties starting with $$", () => {
955
- expect(toJson({ $$some: "value" }, false)).toEqual("{}");
956
- });
957
-
958
- it("should serialize properties starting with $", () => {
959
- expect(toJson({ $few: "v" }, false)).toEqual('{"$few":"v"}');
960
- });
961
-
962
- it("should not serialize scope instances", () => {
963
- expect(toJson({ key: $rootScope })).toEqual('{"key":"$SCOPE"}');
964
- });
965
-
966
- it("should serialize undefined as undefined", () => {
967
- expect(toJson(undefined)).toEqual(undefined);
968
- });
969
- });
970
-
971
- describe("isElement", () => {
972
- it("should return a boolean value", () => {
973
- const element = $compile("<p>Hello, world!</p>")($rootScope);
974
- const body = document.body;
975
- const expected = [
976
- false,
977
- false,
978
- false,
979
- false,
980
- false,
981
- false,
982
- false,
983
- true,
984
- true,
985
- ];
986
- const tests = [
987
- null,
988
- undefined,
989
- "string",
990
- 1001,
991
- {},
992
- 0,
993
- false,
994
- body,
995
- element,
996
- ];
997
- Object.entries(tests).forEach(([idx, value]) => {
998
- const result = isElement(value);
999
- expect(typeof result).toEqual("boolean");
1000
- expect(result).toEqual(expected[idx]);
1001
- });
1002
- });
1003
-
1004
- // Issue #4805
1005
- it("should return false for objects resembling a Backbone Collection", () => {
1006
- // Backbone stuff is sort of hard to mock, if you have a better way of doing this,
1007
- // please fix this.
1008
- const fakeBackboneCollection = {
1009
- children: [{}, {}, {}],
1010
- find() {},
1011
- on() {},
1012
- off() {},
1013
- bind() {},
1014
- };
1015
- expect(isElement(fakeBackboneCollection)).toBe(false);
1016
- });
1017
-
1018
- it("should return false for arrays with node-like properties", () => {
1019
- const array = [1, 2, 3];
1020
- array.on = true;
1021
- expect(isElement(array)).toBe(false);
1022
- });
1023
- });
1024
- });
1025
-
1026
- describe("module loader", () => {
1027
- let angular;
1028
- beforeEach(() => {
1029
- 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
- });