@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.
Files changed (645) hide show
  1. package/@types/index.d.ts +1 -84
  2. package/{src/index.ts → @types/namespace.d.ts} +4 -24
  3. package/@types/router/template-factory.d.ts +2 -2
  4. package/dist/angular-ts.esm.js +3 -3
  5. package/dist/angular-ts.umd.js +3 -3
  6. package/dist/angular-ts.umd.min.js +1 -1
  7. package/package.json +8 -1
  8. package/.github/workflows/ci.yml +0 -104
  9. package/.github/workflows/gh-pages.yml +0 -75
  10. package/.husky/pre-commit +0 -5
  11. package/.prettierignore +0 -9
  12. package/CHANGELOG.md +0 -17667
  13. package/CODE_OF_CONDUCT.md +0 -3
  14. package/CONTRIBUTING.md +0 -247
  15. package/DEVELOPERS.md +0 -499
  16. package/Makefile +0 -60
  17. package/RELEASE.md +0 -86
  18. package/TRIAGING.md +0 -127
  19. package/docs/.cspell.yml +0 -8
  20. package/docs/.github/dependabot.yml +0 -14
  21. package/docs/.nvmrc +0 -1
  22. package/docs/CONTRIBUTING.md +0 -28
  23. package/docs/Dockerfile +0 -4
  24. package/docs/LICENSE +0 -201
  25. package/docs/README.md +0 -217
  26. package/docs/assets/icons/logo.svg +0 -1
  27. package/docs/assets/scss/_variables_project.scss +0 -12
  28. package/docs/assets/scss/_variables_project_after_bs.scss +0 -8
  29. package/docs/assets/scss/index.scss +0 -48
  30. package/docs/config.yaml +0 -15
  31. package/docs/content/_index.md +0 -28
  32. package/docs/content/docs/_index.md +0 -61
  33. package/docs/content/docs/directive/_index.md +0 -4
  34. package/docs/content/docs/directive/app.md +0 -11
  35. package/docs/content/docs/directive/aria.md +0 -0
  36. package/docs/content/docs/directive/bind.md +0 -72
  37. package/docs/content/docs/directive/blur.md +0 -38
  38. package/docs/content/docs/directive/channel.md +0 -37
  39. package/docs/content/docs/directive/class-even.md +0 -47
  40. package/docs/content/docs/directive/class-odd.md +0 -48
  41. package/docs/content/docs/directive/class.md +0 -64
  42. package/docs/content/docs/directive/click.md +0 -41
  43. package/docs/content/docs/directive/cloak.md +0 -74
  44. package/docs/content/docs/directive/copy.md +0 -38
  45. package/docs/content/docs/directive/cut.md +0 -40
  46. package/docs/content/docs/directive/dblclick.md +0 -41
  47. package/docs/content/docs/directive/focus.md +0 -38
  48. package/docs/content/docs/directive/get.md +0 -203
  49. package/docs/content/docs/directive/include.md +0 -7
  50. package/docs/content/docs/directive/keydown.md +0 -38
  51. package/docs/content/docs/directive/keyup.md +0 -38
  52. package/docs/content/docs/directive/load.md +0 -43
  53. package/docs/content/docs/directive/mousedown.md +0 -38
  54. package/docs/content/docs/directive/mouseenter.md +0 -38
  55. package/docs/content/docs/directive/mouseleave.md +0 -38
  56. package/docs/content/docs/directive/mousemove.md +0 -38
  57. package/docs/content/docs/directive/mouseout.md +0 -38
  58. package/docs/content/docs/directive/mouseover.md +0 -38
  59. package/docs/content/docs/directive/mouseup.md +0 -38
  60. package/docs/content/docs/directive/non-bindable.md +0 -28
  61. package/docs/content/docs/filter/_index.md +0 -4
  62. package/docs/content/docs/filter/filter.md +0 -78
  63. package/docs/content/docs/filter/json.md +0 -19
  64. package/docs/content/docs/filter/limit-to.md +0 -30
  65. package/docs/content/docs/filter/order-by.md +0 -123
  66. package/docs/content/docs/provider/_index.md +0 -4
  67. package/docs/content/docs/provider/eventBusProvider.md +0 -35
  68. package/docs/content/docs/provider/locationProvider.md +0 -26
  69. package/docs/content/docs/provider/logProvider.md +0 -59
  70. package/docs/content/docs/provider/sceProvider.md +0 -194
  71. package/docs/content/docs/provider/templateCacheProvider.md +0 -100
  72. package/docs/content/docs/provider/templateRequestProvider.md +0 -5
  73. package/docs/content/docs/service/_index.md +0 -4
  74. package/docs/content/docs/service/compile.md +0 -5
  75. package/docs/content/docs/service/controller.md +0 -5
  76. package/docs/content/docs/service/eventBus.md +0 -56
  77. package/docs/content/docs/service/http.md +0 -161
  78. package/docs/content/docs/service/interpolation.md +0 -5
  79. package/docs/content/docs/service/location.md +0 -57
  80. package/docs/content/docs/service/log.md +0 -113
  81. package/docs/content/docs/service/parse.md +0 -5
  82. package/docs/content/docs/service/rootElement.md +0 -5
  83. package/docs/content/docs/service/rootScope.md +0 -5
  84. package/docs/content/docs/service/sce.md +0 -194
  85. package/docs/content/docs/service/templateCache.md +0 -64
  86. package/docs/content/docs/service/templateRequest.md +0 -5
  87. package/docs/content/docs/service/url.md +0 -5
  88. package/docs/content/docs/values/_index.md +0 -4
  89. package/docs/content/docs/values/document.md +0 -29
  90. package/docs/content/docs/values/window.md +0 -29
  91. package/docs/docker-compose.yaml +0 -12
  92. package/docs/docsy.work +0 -5
  93. package/docs/docsy.work.sum +0 -0
  94. package/docs/go.mod +0 -5
  95. package/docs/go.sum +0 -6
  96. package/docs/hugo-disabled.toml +0 -220
  97. package/docs/hugo.yaml +0 -200
  98. package/docs/layouts/404.html +0 -13
  99. package/docs/layouts/_markup/render-heading.html +0 -1
  100. package/docs/layouts/partials/hooks/head-end.html +0 -3
  101. package/docs/layouts/shortcodes/showcss.html +0 -2
  102. package/docs/layouts/shortcodes/showhtml.html +0 -2
  103. package/docs/layouts/shortcodes/showjs.html +0 -2
  104. package/docs/layouts/shortcodes/showraw.html +0 -1
  105. package/docs/layouts/shortcodes/version.html +0 -1
  106. package/docs/package-lock.json +0 -2293
  107. package/docs/package.json +0 -53
  108. package/docs/static/examples/counter/counter-test.html +0 -13
  109. package/docs/static/examples/counter/counter.html +0 -5
  110. package/docs/static/examples/counter/counter.test.js +0 -28
  111. package/docs/static/examples/document/document.html +0 -3
  112. package/docs/static/examples/eventbus/eventbus-test.html +0 -15
  113. package/docs/static/examples/eventbus/eventbus.html +0 -13
  114. package/docs/static/examples/eventbus/eventbus.js +0 -15
  115. package/docs/static/examples/eventbus/eventbus.test.js +0 -19
  116. package/docs/static/examples/i18n/i18n.html +0 -77
  117. package/docs/static/examples/ng-bind/ng-bind.html +0 -9
  118. package/docs/static/examples/ng-blur/ng-blur.html +0 -9
  119. package/docs/static/examples/ng-channel/ng-channel-test.html +0 -17
  120. package/docs/static/examples/ng-channel/ng-channel.html +0 -24
  121. package/docs/static/examples/ng-channel/ng-channel.test.js +0 -31
  122. package/docs/static/examples/ng-class/ng-class.html +0 -71
  123. package/docs/static/examples/ng-class-even/ng-class-even.html +0 -8
  124. package/docs/static/examples/ng-class-odd/ng-class-odd.html +0 -8
  125. package/docs/static/examples/ng-click/ng-click.html +0 -6
  126. package/docs/static/examples/ng-copy/ng-copy.html +0 -6
  127. package/docs/static/examples/ng-cut/ng-cut.html +0 -6
  128. package/docs/static/examples/ng-dblclick/ng-dblclick.html +0 -10
  129. package/docs/static/examples/ng-focus/ng-focus.html +0 -9
  130. package/docs/static/examples/ng-keydown/ng-keydown.html +0 -9
  131. package/docs/static/examples/ng-keyup/ng-keyup.html +0 -9
  132. package/docs/static/examples/ng-load/ng-load.html +0 -8
  133. package/docs/static/examples/ng-mousedown/ng-mousedown.html +0 -6
  134. package/docs/static/examples/ng-mouseenter/ng-mouseenter.html +0 -4
  135. package/docs/static/examples/ng-mouseleave/ng-mouseleave.html +0 -4
  136. package/docs/static/examples/ng-mousemove/ng-mousemove.html +0 -4
  137. package/docs/static/examples/ng-mouseout/ng-mouseout.html +0 -4
  138. package/docs/static/examples/ng-mouseover/ng-mouseover.html +0 -4
  139. package/docs/static/examples/ng-mouseup/ng-mouseup.html +0 -4
  140. package/docs/static/examples/ng-non-bindable/ng-non-bindable-test.html +0 -13
  141. package/docs/static/examples/ng-non-bindable/ng-non-bindable.html +0 -3
  142. package/docs/static/examples/ng-non-bindable/ng-non-bindable.test.js +0 -11
  143. package/docs/static/examples/window/window.html +0 -4
  144. package/docs/static/typedoc/.nojekyll +0 -1
  145. package/docs/static/typedoc/assets/hierarchy.js +0 -1
  146. package/docs/static/typedoc/assets/highlight.css +0 -29
  147. package/docs/static/typedoc/assets/icons.js +0 -18
  148. package/docs/static/typedoc/assets/icons.svg +0 -1
  149. package/docs/static/typedoc/assets/main.js +0 -60
  150. package/docs/static/typedoc/assets/navigation.js +0 -1
  151. package/docs/static/typedoc/assets/search.js +0 -1
  152. package/docs/static/typedoc/assets/style.css +0 -1633
  153. package/docs/static/typedoc/classes/Location.html +0 -55
  154. package/docs/static/typedoc/classes/LocationProvider.html +0 -20
  155. package/docs/static/typedoc/classes/LogProvider.html +0 -6
  156. package/docs/static/typedoc/classes/PubSub.html +0 -71
  157. package/docs/static/typedoc/classes/PubSubProvider.html +0 -4
  158. package/docs/static/typedoc/classes/TemplateCacheProvider.html +0 -5
  159. package/docs/static/typedoc/hierarchy.html +0 -1
  160. package/docs/static/typedoc/index.html +0 -1
  161. package/docs/static/typedoc/interfaces/DefaultPorts.html +0 -5
  162. package/docs/static/typedoc/interfaces/Html5Mode.html +0 -23
  163. package/docs/static/typedoc/interfaces/HttpHeadersGetter.html +0 -1
  164. package/docs/static/typedoc/interfaces/HttpProviderDefaults.html +0 -31
  165. package/docs/static/typedoc/interfaces/HttpRequestConfigHeaders.html +0 -6
  166. package/docs/static/typedoc/interfaces/HttpRequestTransformer.html +0 -1
  167. package/docs/static/typedoc/interfaces/HttpResponse.html +0 -7
  168. package/docs/static/typedoc/interfaces/HttpResponseTransformer.html +0 -1
  169. package/docs/static/typedoc/interfaces/HttpService.html +0 -38
  170. package/docs/static/typedoc/interfaces/LogService.html +0 -12
  171. package/docs/static/typedoc/interfaces/RequestConfig.html +0 -48
  172. package/docs/static/typedoc/interfaces/RequestShortcutConfig.html +0 -38
  173. package/docs/static/typedoc/interfaces/ServiceProvider.html +0 -5
  174. package/docs/static/typedoc/interfaces/UrlParts.html +0 -9
  175. package/docs/static/typedoc/types/HttpParamSerializer.html +0 -2
  176. package/docs/static/typedoc/types/HttpParams.html +0 -2
  177. package/docs/static/typedoc/types/HttpPromise.html +0 -1
  178. package/docs/static/typedoc/types/HttpResponseStatus.html +0 -1
  179. package/docs/static/typedoc/types/LogCall.html +0 -2
  180. package/docs/static/typedoc/types/LogServiceFactory.html +0 -2
  181. package/docs/static/typedoc/types/UrlChangeListener.html +0 -5
  182. package/docs/static/typedoc/variables/EventBus.html +0 -1
  183. package/docs/static/version.js +0 -13
  184. package/docs/test-results/.last-run.json +0 -4
  185. package/docs/test-results/static-examples-counter-counter-counter-example/error-context.md +0 -50
  186. package/eslint.config.js +0 -26
  187. package/images/android-chrome-192x192.png +0 -0
  188. package/images/android-chrome-512x512.png +0 -0
  189. package/images/apple-touch-icon.png +0 -0
  190. package/images/favicon-16x16.png +0 -0
  191. package/images/favicon-32x32.png +0 -0
  192. package/images/favicon.ico +0 -0
  193. package/images/site.webmanifest +0 -19
  194. package/index.html +0 -86
  195. package/legacy.d.ts +0 -1678
  196. package/playwright.config.ts +0 -81
  197. package/public/jasmine/boot0.js +0 -66
  198. package/public/jasmine/boot1.js +0 -134
  199. package/public/jasmine/jasmine-html.js +0 -970
  200. package/public/jasmine/jasmine.css +0 -323
  201. package/public/jasmine/jasmine.js +0 -11406
  202. package/public/public/README.md +0 -1
  203. package/public/public/circle.html +0 -1
  204. package/public/public/jasmine-helper.css +0 -9
  205. package/public/public/my_child_directive.html +0 -1
  206. package/public/public/my_directive.html +0 -1
  207. package/public/public/my_other_directive.html +0 -1
  208. package/public/public/test.html +0 -1
  209. package/rollup.config.js +0 -51
  210. package/src/angular.js +0 -286
  211. package/src/angular.spec.js +0 -1191
  212. package/src/animations/animate-cache.js +0 -80
  213. package/src/animations/animate-children-directive.js +0 -32
  214. package/src/animations/animate-children-directive.md +0 -80
  215. package/src/animations/animate-css-driver.js +0 -284
  216. package/src/animations/animate-css.html +0 -58
  217. package/src/animations/animate-css.js +0 -915
  218. package/src/animations/animate-css.md +0 -263
  219. package/src/animations/animate-js-driver.js +0 -60
  220. package/src/animations/animate-js.html +0 -47
  221. package/src/animations/animate-js.js +0 -371
  222. package/src/animations/animate-queue.js +0 -859
  223. package/src/animations/animate-runner.js +0 -193
  224. package/src/animations/animate-swap.js +0 -33
  225. package/src/animations/animate-swap.md +0 -88
  226. package/src/animations/animate.html +0 -19
  227. package/src/animations/animate.js +0 -546
  228. package/src/animations/animate.md +0 -933
  229. package/src/animations/animate.spec.js +0 -490
  230. package/src/animations/animation.js +0 -519
  231. package/src/animations/animations.test.js +0 -10
  232. package/src/animations/interface.ts +0 -19
  233. package/src/animations/raf-scheduler.html +0 -19
  234. package/src/animations/raf-scheduler.js +0 -92
  235. package/src/animations/raf-scheduler.spec.js +0 -98
  236. package/src/animations/shared.js +0 -341
  237. package/src/binding.html +0 -19
  238. package/src/binding.spec.js +0 -474
  239. package/src/binding.test.js +0 -10
  240. package/src/core/compile/attributes.js +0 -337
  241. package/src/core/compile/compile.html +0 -19
  242. package/src/core/compile/compile.js +0 -3271
  243. package/src/core/compile/compile.md +0 -1128
  244. package/src/core/compile/compile.spec.js +0 -15574
  245. package/src/core/compile/compile.test.js +0 -12
  246. package/src/core/controller/controller.html +0 -22
  247. package/src/core/controller/controller.js +0 -193
  248. package/src/core/controller/controller.spec.js +0 -334
  249. package/src/core/controller/controller.test.js +0 -12
  250. package/src/core/controller/interface.ts +0 -6
  251. package/src/core/core.html +0 -20
  252. package/src/core/core.test.js +0 -12
  253. package/src/core/di/injector.html +0 -19
  254. package/src/core/di/injector.js +0 -307
  255. package/src/core/di/injector.md +0 -740
  256. package/src/core/di/injector.spec.js +0 -2310
  257. package/src/core/di/injector.test.js +0 -12
  258. package/src/core/di/internal-injector.js +0 -286
  259. package/src/core/di/ng-module.html +0 -19
  260. package/src/core/di/ng-module.js +0 -229
  261. package/src/core/di/ng-module.spec.js +0 -263
  262. package/src/core/di/ng-module.test.js +0 -12
  263. package/src/core/filter/filter.html +0 -19
  264. package/src/core/filter/filter.js +0 -55
  265. package/src/core/filter/filter.md +0 -132
  266. package/src/core/filter/filter.spec.js +0 -149
  267. package/src/core/filter/filter.test.js +0 -12
  268. package/src/core/interpolate/interface.ts +0 -14
  269. package/src/core/interpolate/interpolate.html +0 -22
  270. package/src/core/interpolate/interpolate.js +0 -410
  271. package/src/core/interpolate/interpolate.spec.js +0 -601
  272. package/src/core/interpolate/interpolate.test.js +0 -12
  273. package/src/core/parse/ast/ast-node.ts +0 -81
  274. package/src/core/parse/ast/ast.html +0 -19
  275. package/src/core/parse/ast/ast.js +0 -574
  276. package/src/core/parse/ast/ast.spec.js +0 -1453
  277. package/src/core/parse/ast/ast.test.js +0 -10
  278. package/src/core/parse/ast-type.js +0 -23
  279. package/src/core/parse/interface.ts +0 -84
  280. package/src/core/parse/interpreter.js +0 -915
  281. package/src/core/parse/lexer/lexer.html +0 -19
  282. package/src/core/parse/lexer/lexer.js +0 -338
  283. package/src/core/parse/lexer/lexer.spec.js +0 -303
  284. package/src/core/parse/lexer/lexer.test.js +0 -10
  285. package/src/core/parse/lexer/token.ts +0 -22
  286. package/src/core/parse/parse.html +0 -19
  287. package/src/core/parse/parse.js +0 -337
  288. package/src/core/parse/parse.md +0 -57
  289. package/src/core/parse/parse.spec.js +0 -2107
  290. package/src/core/parse/parse.test.js +0 -10
  291. package/src/core/parse/parser/parser.html +0 -19
  292. package/src/core/parse/parser/parser.js +0 -64
  293. package/src/core/parse/parser/parser.spec.js +0 -8
  294. package/src/core/parse/parser/parser.test.js +0 -10
  295. package/src/core/prop.spec.js +0 -775
  296. package/src/core/root-element.spec.js +0 -14
  297. package/src/core/sanitize/interface.ts +0 -10
  298. package/src/core/sanitize/sanitize-uri.js +0 -75
  299. package/src/core/sanitize/sanitize-uri.spec.js +0 -249
  300. package/src/core/sanitize/sanitize-uri.test.js +0 -12
  301. package/src/core/sanitize/sanitize.html +0 -22
  302. package/src/core/scope/scope.html +0 -19
  303. package/src/core/scope/scope.js +0 -1252
  304. package/src/core/scope/scope.spec.js +0 -3000
  305. package/src/core/scope/scope.test.js +0 -12
  306. package/src/directive/aria/aria.html +0 -19
  307. package/src/directive/aria/aria.js +0 -382
  308. package/src/directive/aria/aria.md +0 -145
  309. package/src/directive/aria/aria.spec.js +0 -1241
  310. package/src/directive/aria/aria.test.js +0 -12
  311. package/src/directive/attrs/attrs.html +0 -19
  312. package/src/directive/attrs/attrs.js +0 -106
  313. package/src/directive/attrs/attrs.md +0 -224
  314. package/src/directive/attrs/attrs.spec.js +0 -71
  315. package/src/directive/attrs/attrs.test.js +0 -12
  316. package/src/directive/attrs/boolean.html +0 -19
  317. package/src/directive/attrs/boolean.spec.js +0 -137
  318. package/src/directive/attrs/boolean.test.js +0 -12
  319. package/src/directive/attrs/element-style.html +0 -22
  320. package/src/directive/attrs/element-style.spec.js +0 -85
  321. package/src/directive/attrs/element-style.test.js +0 -12
  322. package/src/directive/attrs/src.html +0 -19
  323. package/src/directive/attrs/src.spec.js +0 -163
  324. package/src/directive/attrs/src.test.js +0 -12
  325. package/src/directive/bind/bind-html.spec.js +0 -36
  326. package/src/directive/bind/bind.html +0 -20
  327. package/src/directive/bind/bind.js +0 -78
  328. package/src/directive/bind/bind.md +0 -142
  329. package/src/directive/bind/bind.spec.js +0 -314
  330. package/src/directive/bind/bind.test.js +0 -12
  331. package/src/directive/channel/channel.html +0 -19
  332. package/src/directive/channel/channel.js +0 -30
  333. package/src/directive/channel/channel.spec.js +0 -67
  334. package/src/directive/channel/channel.test.js +0 -10
  335. package/src/directive/class/class-test.html +0 -23
  336. package/src/directive/class/class.html +0 -19
  337. package/src/directive/class/class.js +0 -184
  338. package/src/directive/class/class.spec.js +0 -704
  339. package/src/directive/class/class.test.js +0 -12
  340. package/src/directive/cloak/cloak.html +0 -19
  341. package/src/directive/cloak/cloak.js +0 -11
  342. package/src/directive/cloak/cloak.spec.js +0 -44
  343. package/src/directive/cloak/cloak.test.js +0 -12
  344. package/src/directive/controller/controller.html +0 -22
  345. package/src/directive/controller/controller.js +0 -11
  346. package/src/directive/controller/controller.md +0 -46
  347. package/src/directive/controller/controller.spec.js +0 -175
  348. package/src/directive/controller/controller.test.js +0 -12
  349. package/src/directive/events/click.spec.js +0 -35
  350. package/src/directive/events/event.spec.js +0 -267
  351. package/src/directive/events/events-test.html +0 -36
  352. package/src/directive/events/events.html +0 -20
  353. package/src/directive/events/events.js +0 -65
  354. package/src/directive/events/events.md +0 -125
  355. package/src/directive/events/events.test.js +0 -12
  356. package/src/directive/form/form.html +0 -19
  357. package/src/directive/form/form.js +0 -669
  358. package/src/directive/form/form.spec.js +0 -1515
  359. package/src/directive/form/form.test.js +0 -12
  360. package/src/directive/http/delete.spec.js +0 -23
  361. package/src/directive/http/form-router-test.html +0 -44
  362. package/src/directive/http/form-test.html +0 -18
  363. package/src/directive/http/get.spec.js +0 -488
  364. package/src/directive/http/http.html +0 -22
  365. package/src/directive/http/http.js +0 -342
  366. package/src/directive/http/http.test.js +0 -12
  367. package/src/directive/http/interface.ts +0 -36
  368. package/src/directive/http/post-example.html +0 -30
  369. package/src/directive/http/post.spec.js +0 -521
  370. package/src/directive/http/put.spec.js +0 -23
  371. package/src/directive/if/if-animate-css.html +0 -57
  372. package/src/directive/if/if-animate-svg.html +0 -25
  373. package/src/directive/if/if.html +0 -19
  374. package/src/directive/if/if.js +0 -72
  375. package/src/directive/if/if.md +0 -76
  376. package/src/directive/if/if.spec.js +0 -293
  377. package/src/directive/if/if.test.js +0 -114
  378. package/src/directive/include/include.html +0 -19
  379. package/src/directive/include/include.js +0 -151
  380. package/src/directive/include/include.md +0 -87
  381. package/src/directive/include/include.spec.js +0 -734
  382. package/src/directive/include/include.test.js +0 -12
  383. package/src/directive/init/init.html +0 -19
  384. package/src/directive/init/init.js +0 -22
  385. package/src/directive/init/init.md +0 -41
  386. package/src/directive/init/init.spec.js +0 -68
  387. package/src/directive/init/init.test.js +0 -12
  388. package/src/directive/inject/inject.html +0 -19
  389. package/src/directive/inject/inject.js +0 -35
  390. package/src/directive/inject/inject.spec.js +0 -108
  391. package/src/directive/inject/inject.test.js +0 -12
  392. package/src/directive/input/input-example.html +0 -15
  393. package/src/directive/input/input.html +0 -19
  394. package/src/directive/input/input.js +0 -1078
  395. package/src/directive/input/input.md +0 -706
  396. package/src/directive/input/input.spec.js +0 -3700
  397. package/src/directive/input/input.test.js +0 -12
  398. package/src/directive/messages/messages.html +0 -22
  399. package/src/directive/messages/messages.js +0 -349
  400. package/src/directive/messages/messages.md +0 -543
  401. package/src/directive/messages/messages.spec.js +0 -1083
  402. package/src/directive/messages/messages.test.js +0 -12
  403. package/src/directive/model/change.md +0 -25
  404. package/src/directive/model/model.html +0 -19
  405. package/src/directive/model/model.js +0 -1170
  406. package/src/directive/model/model.spec.js +0 -1976
  407. package/src/directive/model/model.test.js +0 -12
  408. package/src/directive/model-options/model-option.test.js +0 -12
  409. package/src/directive/model-options/model-options.html +0 -22
  410. package/src/directive/model-options/model-options.js +0 -142
  411. package/src/directive/model-options/model-options.md +0 -407
  412. package/src/directive/model-options/model-options.spec.js +0 -1022
  413. package/src/directive/non-bindable/non-bindable.html +0 -22
  414. package/src/directive/non-bindable/non-bindable.js +0 -9
  415. package/src/directive/non-bindable/non-bindable.spec.js +0 -59
  416. package/src/directive/non-bindable/non-bindable.test.js +0 -12
  417. package/src/directive/observe/observe-demo.html +0 -184
  418. package/src/directive/observe/observe.html +0 -19
  419. package/src/directive/observe/observe.js +0 -41
  420. package/src/directive/observe/observe.spec.js +0 -106
  421. package/src/directive/observe/observe.test.js +0 -10
  422. package/src/directive/on/on.html +0 -19
  423. package/src/directive/on/on.spec.js +0 -215
  424. package/src/directive/on/on.test.js +0 -12
  425. package/src/directive/options/options-example.html +0 -17
  426. package/src/directive/options/options.html +0 -22
  427. package/src/directive/options/options.js +0 -542
  428. package/src/directive/options/options.md +0 -179
  429. package/src/directive/options/options.spec.js +0 -3554
  430. package/src/directive/options/options.test.js +0 -12
  431. package/src/directive/ref/href.html +0 -19
  432. package/src/directive/ref/href.spec.js +0 -141
  433. package/src/directive/ref/href.test.js +0 -19
  434. package/src/directive/ref/ref.html +0 -19
  435. package/src/directive/ref/ref.js +0 -89
  436. package/src/directive/ref/ref.spec.js +0 -546
  437. package/src/directive/repeat/repeat.html +0 -19
  438. package/src/directive/repeat/repeat.js +0 -333
  439. package/src/directive/repeat/repeat.md +0 -330
  440. package/src/directive/repeat/repeat.spec.js +0 -1209
  441. package/src/directive/repeat/repeat.test.js +0 -12
  442. package/src/directive/script/script.html +0 -19
  443. package/src/directive/script/script.js +0 -17
  444. package/src/directive/script/script.md +0 -11
  445. package/src/directive/script/script.spec.js +0 -47
  446. package/src/directive/script/script.test.js +0 -12
  447. package/src/directive/select/select.html +0 -19
  448. package/src/directive/select/select.js +0 -594
  449. package/src/directive/select/select.md +0 -74
  450. package/src/directive/select/select.spec.js +0 -2566
  451. package/src/directive/select/select.test.js +0 -12
  452. package/src/directive/setter/setter.html +0 -19
  453. package/src/directive/setter/setter.js +0 -59
  454. package/src/directive/setter/setter.spec.js +0 -100
  455. package/src/directive/setter/setter.test.js +0 -12
  456. package/src/directive/show-hide/show-hide.html +0 -22
  457. package/src/directive/show-hide/show-hide.js +0 -65
  458. package/src/directive/show-hide/show-hide.md +0 -255
  459. package/src/directive/show-hide/show-hide.spec.js +0 -268
  460. package/src/directive/show-hide/show-hide.test.js +0 -12
  461. package/src/directive/style/style.html +0 -19
  462. package/src/directive/style/style.js +0 -27
  463. package/src/directive/style/style.md +0 -23
  464. package/src/directive/style/style.spec.js +0 -183
  465. package/src/directive/style/style.test.js +0 -12
  466. package/src/directive/switch/switch.html +0 -19
  467. package/src/directive/switch/switch.js +0 -133
  468. package/src/directive/switch/switch.md +0 -66
  469. package/src/directive/switch/switch.spec.js +0 -509
  470. package/src/directive/switch/switch.test.js +0 -12
  471. package/src/directive/transclude/transclude.js +0 -122
  472. package/src/directive/validators/validators.html +0 -22
  473. package/src/directive/validators/validators.js +0 -346
  474. package/src/directive/validators/validators.spec.js +0 -740
  475. package/src/directive/validators/validators.test.js +0 -12
  476. package/src/filters/filter.js +0 -213
  477. package/src/filters/filter.spec.js +0 -719
  478. package/src/filters/filters.html +0 -22
  479. package/src/filters/filters.js +0 -239
  480. package/src/filters/filters.spec.js +0 -36
  481. package/src/filters/filters.test.js +0 -12
  482. package/src/filters/interface.ts +0 -9
  483. package/src/filters/limit-to.js +0 -55
  484. package/src/filters/limit-to.spec.js +0 -252
  485. package/src/filters/order-by.js +0 -181
  486. package/src/filters/order-by.spec.js +0 -883
  487. package/src/index.js +0 -6
  488. package/src/index.spec.js +0 -11
  489. package/src/injection-tokens.js +0 -81
  490. package/src/interface.ts +0 -430
  491. package/src/ng.js +0 -291
  492. package/src/ng.spec.js +0 -45
  493. package/src/router/common/trace.js +0 -240
  494. package/src/router/directives/component-example.html +0 -37
  495. package/src/router/directives/state-directives.html +0 -22
  496. package/src/router/directives/state-directives.js +0 -393
  497. package/src/router/directives/state-directives.md +0 -435
  498. package/src/router/directives/state-directives.spec.js +0 -1091
  499. package/src/router/directives/state-directives.test.js +0 -10
  500. package/src/router/directives/view-directive.js +0 -489
  501. package/src/router/directives/view-directive.spec.js +0 -1921
  502. package/src/router/directives/view-directive.test.js +0 -10
  503. package/src/router/directives/view-directives.html +0 -22
  504. package/src/router/glob/glob.html +0 -19
  505. package/src/router/glob/glob.js +0 -102
  506. package/src/router/glob/glob.spec.js +0 -108
  507. package/src/router/glob/glob.test.js +0 -12
  508. package/src/router/hooks/core-resolvables.js +0 -38
  509. package/src/router/hooks/ignored-transition.js +0 -25
  510. package/src/router/hooks/invalid-transition.js +0 -14
  511. package/src/router/hooks/lazy-load.js +0 -104
  512. package/src/router/hooks/on-enter-exit-retain.js +0 -55
  513. package/src/router/hooks/redirect-to.js +0 -38
  514. package/src/router/hooks/resolve.js +0 -57
  515. package/src/router/hooks/update-globals.js +0 -34
  516. package/src/router/hooks/url.js +0 -34
  517. package/src/router/hooks/views.js +0 -41
  518. package/src/router/params/interface.ts +0 -626
  519. package/src/router/params/param-factory.js +0 -23
  520. package/src/router/params/param-type.js +0 -133
  521. package/src/router/params/param-types.js +0 -153
  522. package/src/router/params/param.js +0 -243
  523. package/src/router/params/state-params.js +0 -36
  524. package/src/router/path/path-node.js +0 -78
  525. package/src/router/path/path-utils.js +0 -207
  526. package/src/router/resolve/interface.ts +0 -208
  527. package/src/router/resolve/resolvable.js +0 -123
  528. package/src/router/resolve/resolve-context.js +0 -190
  529. package/src/router/router-test-hashbang.html +0 -45
  530. package/src/router/router-test.html +0 -41
  531. package/src/router/router.html +0 -22
  532. package/src/router/router.js +0 -54
  533. package/src/router/router.test.js +0 -12
  534. package/src/router/services.spec.js +0 -52
  535. package/src/router/state/interface.ts +0 -1007
  536. package/src/router/state/state-builder.js +0 -376
  537. package/src/router/state/state-builder.spec.js +0 -86
  538. package/src/router/state/state-matcher.js +0 -64
  539. package/src/router/state/state-object.js +0 -118
  540. package/src/router/state/state-queue-manager.js +0 -95
  541. package/src/router/state/state-registry.js +0 -262
  542. package/src/router/state/state-service.js +0 -687
  543. package/src/router/state/state.html +0 -23
  544. package/src/router/state/state.spec.js +0 -1002
  545. package/src/router/state/state.test.js +0 -12
  546. package/src/router/state/target-state.js +0 -162
  547. package/src/router/state/views.js +0 -195
  548. package/src/router/state-filter.spec.js +0 -139
  549. package/src/router/state-filters.js +0 -46
  550. package/src/router/template-factory.html +0 -19
  551. package/src/router/template-factory.js +0 -249
  552. package/src/router/template-factory.spec.js +0 -146
  553. package/src/router/template-factory.test.js +0 -12
  554. package/src/router/transition/hook-builder.js +0 -137
  555. package/src/router/transition/hook-registry.js +0 -181
  556. package/src/router/transition/interface.js +0 -18
  557. package/src/router/transition/interface.ts +0 -922
  558. package/src/router/transition/reject-factory.js +0 -122
  559. package/src/router/transition/transition-event-type.js +0 -26
  560. package/src/router/transition/transition-hook.js +0 -199
  561. package/src/router/transition/transition-service.js +0 -297
  562. package/src/router/transition/transition.js +0 -653
  563. package/src/router/url/url-config.js +0 -155
  564. package/src/router/url/url-matcher.js +0 -532
  565. package/src/router/url/url-rule.js +0 -231
  566. package/src/router/url/url-rules.js +0 -350
  567. package/src/router/url/url-service.js +0 -446
  568. package/src/router/url/url-service.spec.js +0 -1288
  569. package/src/router/url/url.html +0 -19
  570. package/src/router/url/url.test.js +0 -12
  571. package/src/router/view/interface.ts +0 -51
  572. package/src/router/view/view.html +0 -19
  573. package/src/router/view/view.js +0 -262
  574. package/src/router/view/view.spec.js +0 -100
  575. package/src/router/view/view.test.js +0 -12
  576. package/src/router/view-hook.spec.js +0 -215
  577. package/src/router/view-scroll.js +0 -33
  578. package/src/router/view-scroll.spec.js +0 -72
  579. package/src/services/anchor-scroll/anchor-scroll.html +0 -76
  580. package/src/services/anchor-scroll/anchor-scroll.js +0 -147
  581. package/src/services/exception/exception-handler.js +0 -75
  582. package/src/services/exception/interface.ts +0 -7
  583. package/src/services/http/http.html +0 -23
  584. package/src/services/http/http.js +0 -1109
  585. package/src/services/http/http.spec.js +0 -4320
  586. package/src/services/http/http.test.js +0 -11
  587. package/src/services/http/interface.ts +0 -256
  588. package/src/services/http/template-request.spec.js +0 -220
  589. package/src/services/location/interface.ts +0 -70
  590. package/src/services/location/location.html +0 -22
  591. package/src/services/location/location.js +0 -1006
  592. package/src/services/location/location.spec.js +0 -3792
  593. package/src/services/location/location.test.js +0 -12
  594. package/src/services/log/interface.ts +0 -39
  595. package/src/services/log/log.html +0 -19
  596. package/src/services/log/log.js +0 -74
  597. package/src/services/log/log.spec.js +0 -64
  598. package/src/services/log/log.test.js +0 -12
  599. package/src/services/pubsub/pubsub.html +0 -19
  600. package/src/services/pubsub/pubsub.js +0 -349
  601. package/src/services/pubsub/pubsub.spec.js +0 -400
  602. package/src/services/pubsub/pubsub.test.js +0 -12
  603. package/src/services/sce/sce.html +0 -19
  604. package/src/services/sce/sce.js +0 -852
  605. package/src/services/sce/sce.spec.js +0 -617
  606. package/src/services/sce/sce.test.js +0 -12
  607. package/src/services/template-cache/template-cache.html +0 -22
  608. package/src/services/template-cache/template-cache.js +0 -15
  609. package/src/services/template-cache/template-cache.spec.js +0 -134
  610. package/src/services/template-cache/template-cache.test.js +0 -12
  611. package/src/services/template-request/interface.ts +0 -23
  612. package/src/services/template-request/template-request.js +0 -142
  613. package/src/shared/cache.js +0 -7
  614. package/src/shared/common.js +0 -365
  615. package/src/shared/common.spec.js +0 -294
  616. package/src/shared/constants.js +0 -21
  617. package/src/shared/dom.js +0 -716
  618. package/src/shared/hof.js +0 -157
  619. package/src/shared/hof.spec.js +0 -60
  620. package/src/shared/interface.ts +0 -21
  621. package/src/shared/min-err.spec.js +0 -178
  622. package/src/shared/noderef.js +0 -225
  623. package/src/shared/predicates.js +0 -34
  624. package/src/shared/queue.js +0 -105
  625. package/src/shared/queue.spec.js +0 -80
  626. package/src/shared/shared.html +0 -24
  627. package/src/shared/shared.test.js +0 -12
  628. package/src/shared/strings.js +0 -142
  629. package/src/shared/strings.spec.js +0 -40
  630. package/src/shared/test-utils.js +0 -47
  631. package/src/shared/url-utils/interface.ts +0 -54
  632. package/src/shared/url-utils/url-utils.html +0 -22
  633. package/src/shared/url-utils/url-utils.js +0 -122
  634. package/src/shared/url-utils/url-utils.spec.js +0 -148
  635. package/src/shared/url-utils/url-utils.test.js +0 -12
  636. package/src/shared/utils.js +0 -1255
  637. package/src/shared/utils.spec.js +0 -178
  638. package/src/src.html +0 -21
  639. package/src/src.test.js +0 -10
  640. package/tsconfig.json +0 -19
  641. package/tsconfig.types.json +0 -14
  642. package/typedoc.json +0 -8
  643. package/utils/express.js +0 -203
  644. package/utils/version.cjs +0 -23
  645. package/vite.config.js +0 -14
@@ -1,1453 +0,0 @@
1
- import { AST } from "./ast.js";
2
- import { Lexer } from "../lexer/lexer.js";
3
- import { createInjector } from "../../di/injector.js";
4
- import { ASTType } from "../ast-type.js";
5
- import { Angular } from "../../../angular.js";
6
-
7
- describe("ast", () => {
8
- let $rootScope;
9
- let $parse;
10
- let logs = [];
11
-
12
- beforeEach(() => {
13
- window.angular = new Angular();
14
- window.angular
15
- .module("myModule", ["ng"])
16
- .decorator("$exceptionHandler", function () {
17
- return (exception, cause) => {
18
- logs.push(exception);
19
- console.error(exception, cause);
20
- };
21
- });
22
- let injector = createInjector(["myModule"]);
23
- $parse = injector.get("$parse");
24
- $rootScope = injector.get("$rootScope");
25
- });
26
-
27
- let createAst;
28
-
29
- beforeEach(() => {
30
- createAst = function () {
31
- const lexer = new Lexer({});
32
- const ast = new AST(lexer);
33
- return ast.ast.apply(ast, arguments);
34
- };
35
- });
36
-
37
- it("should handle an empty list of tokens", () => {
38
- expect(createAst("")).toEqual({ type: ASTType.Program, body: [] });
39
- });
40
-
41
- it("should understand identifiers", () => {
42
- expect(createAst("foo")).toEqual({
43
- type: ASTType.Program,
44
- body: [
45
- {
46
- type: ASTType.ExpressionStatement,
47
- expression: { type: ASTType.Identifier, name: "foo" },
48
- },
49
- ],
50
- });
51
- });
52
-
53
- it("should understand non-computed member expressions", () => {
54
- expect(createAst("foo.bar")).toEqual({
55
- type: ASTType.Program,
56
- body: [
57
- {
58
- type: ASTType.ExpressionStatement,
59
- expression: {
60
- type: ASTType.MemberExpression,
61
- object: { type: ASTType.Identifier, name: "foo" },
62
- property: { type: ASTType.Identifier, name: "bar" },
63
- computed: false,
64
- },
65
- },
66
- ],
67
- });
68
- });
69
-
70
- it("should associate non-computed member expressions left-to-right", () => {
71
- expect(createAst("foo.bar.baz")).toEqual({
72
- type: ASTType.Program,
73
- body: [
74
- {
75
- type: ASTType.ExpressionStatement,
76
- expression: {
77
- type: ASTType.MemberExpression,
78
- object: {
79
- type: ASTType.MemberExpression,
80
- object: { type: ASTType.Identifier, name: "foo" },
81
- property: { type: ASTType.Identifier, name: "bar" },
82
- computed: false,
83
- },
84
- property: { type: ASTType.Identifier, name: "baz" },
85
- computed: false,
86
- },
87
- },
88
- ],
89
- });
90
- });
91
-
92
- it("should understand computed member expressions", () => {
93
- expect(createAst("foo[bar]")).toEqual({
94
- type: ASTType.Program,
95
- body: [
96
- {
97
- type: ASTType.ExpressionStatement,
98
- expression: {
99
- type: ASTType.MemberExpression,
100
- object: { type: ASTType.Identifier, name: "foo" },
101
- property: { type: ASTType.Identifier, name: "bar" },
102
- computed: true,
103
- },
104
- },
105
- ],
106
- });
107
- });
108
-
109
- it("should associate computed member expressions left-to-right", () => {
110
- expect(createAst("foo[bar][baz]")).toEqual({
111
- type: ASTType.Program,
112
- body: [
113
- {
114
- type: ASTType.ExpressionStatement,
115
- expression: {
116
- type: ASTType.MemberExpression,
117
- object: {
118
- type: ASTType.MemberExpression,
119
- object: { type: ASTType.Identifier, name: "foo" },
120
- property: { type: ASTType.Identifier, name: "bar" },
121
- computed: true,
122
- },
123
- property: { type: ASTType.Identifier, name: "baz" },
124
- computed: true,
125
- },
126
- },
127
- ],
128
- });
129
- });
130
-
131
- it("should understand call expressions", () => {
132
- expect(createAst("foo()")).toEqual({
133
- type: ASTType.Program,
134
- body: [
135
- {
136
- type: ASTType.ExpressionStatement,
137
- expression: {
138
- type: ASTType.CallExpression,
139
- callee: { type: ASTType.Identifier, name: "foo" },
140
- arguments: [],
141
- },
142
- },
143
- ],
144
- });
145
- });
146
-
147
- it("should parse call expression arguments", () => {
148
- expect(createAst("foo(bar, baz)")).toEqual({
149
- type: ASTType.Program,
150
- body: [
151
- {
152
- type: ASTType.ExpressionStatement,
153
- expression: {
154
- type: ASTType.CallExpression,
155
- callee: { type: ASTType.Identifier, name: "foo" },
156
- arguments: [
157
- { type: ASTType.Identifier, name: "bar" },
158
- { type: ASTType.Identifier, name: "baz" },
159
- ],
160
- },
161
- },
162
- ],
163
- });
164
- });
165
-
166
- it("should parse call expression left-to-right", () => {
167
- expect(createAst("foo(bar, baz)(man, shell)")).toEqual({
168
- type: ASTType.Program,
169
- body: [
170
- {
171
- type: ASTType.ExpressionStatement,
172
- expression: {
173
- type: ASTType.CallExpression,
174
- callee: {
175
- type: ASTType.CallExpression,
176
- callee: { type: ASTType.Identifier, name: "foo" },
177
- arguments: [
178
- { type: ASTType.Identifier, name: "bar" },
179
- { type: ASTType.Identifier, name: "baz" },
180
- ],
181
- },
182
- arguments: [
183
- { type: ASTType.Identifier, name: "man" },
184
- { type: ASTType.Identifier, name: "shell" },
185
- ],
186
- },
187
- },
188
- ],
189
- });
190
- });
191
-
192
- it("should keep the context when having superfluous parenthesis", () => {
193
- expect(createAst("(foo)(bar, baz)")).toEqual({
194
- type: ASTType.Program,
195
- body: [
196
- {
197
- type: ASTType.ExpressionStatement,
198
- expression: {
199
- type: ASTType.CallExpression,
200
- callee: { type: ASTType.Identifier, name: "foo" },
201
- arguments: [
202
- { type: ASTType.Identifier, name: "bar" },
203
- { type: ASTType.Identifier, name: "baz" },
204
- ],
205
- },
206
- },
207
- ],
208
- });
209
- });
210
-
211
- it("should treat member expressions and call expression with the same precedence", () => {
212
- expect(createAst("foo.bar[baz]()")).toEqual({
213
- type: ASTType.Program,
214
- body: [
215
- {
216
- type: ASTType.ExpressionStatement,
217
- expression: {
218
- type: ASTType.CallExpression,
219
- callee: {
220
- type: ASTType.MemberExpression,
221
- object: {
222
- type: ASTType.MemberExpression,
223
- object: { type: ASTType.Identifier, name: "foo" },
224
- property: { type: ASTType.Identifier, name: "bar" },
225
- computed: false,
226
- },
227
- property: { type: ASTType.Identifier, name: "baz" },
228
- computed: true,
229
- },
230
- arguments: [],
231
- },
232
- },
233
- ],
234
- });
235
- expect(createAst("foo[bar]().baz")).toEqual({
236
- type: ASTType.Program,
237
- body: [
238
- {
239
- type: ASTType.ExpressionStatement,
240
- expression: {
241
- type: ASTType.MemberExpression,
242
- object: {
243
- type: ASTType.CallExpression,
244
- callee: {
245
- type: ASTType.MemberExpression,
246
- object: { type: ASTType.Identifier, name: "foo" },
247
- property: { type: ASTType.Identifier, name: "bar" },
248
- computed: true,
249
- },
250
- arguments: [],
251
- },
252
- property: { type: ASTType.Identifier, name: "baz" },
253
- computed: false,
254
- },
255
- },
256
- ],
257
- });
258
- expect(createAst("foo().bar[baz]")).toEqual({
259
- type: ASTType.Program,
260
- body: [
261
- {
262
- type: ASTType.ExpressionStatement,
263
- expression: {
264
- type: ASTType.MemberExpression,
265
- object: {
266
- type: ASTType.MemberExpression,
267
- object: {
268
- type: ASTType.CallExpression,
269
- callee: { type: ASTType.Identifier, name: "foo" },
270
- arguments: [],
271
- },
272
- property: { type: ASTType.Identifier, name: "bar" },
273
- computed: false,
274
- },
275
- property: { type: ASTType.Identifier, name: "baz" },
276
- computed: true,
277
- },
278
- },
279
- ],
280
- });
281
- });
282
-
283
- it("should understand literals", () => {
284
- // In a strict sense, `undefined` is not a literal but an identifier
285
- Object.entries({
286
- 123: 123,
287
- '"123"': "123",
288
- true: true,
289
- false: false,
290
- null: null,
291
- undefined: undefined,
292
- }).forEach(([expression, value]) => {
293
- expect(createAst(expression)).toEqual({
294
- type: ASTType.Program,
295
- body: [
296
- {
297
- type: ASTType.ExpressionStatement,
298
- expression: { type: ASTType.Literal, value },
299
- },
300
- ],
301
- });
302
- });
303
- });
304
-
305
- it("should understand the `this` expression", () => {
306
- expect(createAst("this")).toEqual({
307
- type: ASTType.Program,
308
- body: [
309
- {
310
- type: ASTType.ExpressionStatement,
311
- expression: { type: ASTType.ThisExpression },
312
- },
313
- ],
314
- });
315
- });
316
-
317
- it("should understand the `$locals` expression", () => {
318
- expect(createAst("$locals")).toEqual({
319
- type: ASTType.Program,
320
- body: [
321
- {
322
- type: ASTType.ExpressionStatement,
323
- expression: { type: ASTType.LocalsExpression },
324
- },
325
- ],
326
- });
327
- });
328
-
329
- it("should not confuse `this`, `$locals`, `undefined`, `true`, `false`, `null` when used as identifiers", () => {
330
- ["this", "$locals", "undefined", "true", "false", "null"].forEach(
331
- (identifier) => {
332
- expect(createAst(`foo.${identifier}`)).toEqual({
333
- type: ASTType.Program,
334
- body: [
335
- {
336
- type: ASTType.ExpressionStatement,
337
- expression: {
338
- type: ASTType.MemberExpression,
339
- object: { type: ASTType.Identifier, name: "foo" },
340
- property: { type: ASTType.Identifier, name: identifier },
341
- computed: false,
342
- },
343
- },
344
- ],
345
- });
346
- },
347
- );
348
- });
349
-
350
- it("should throw when trying to use non-identifiers as identifiers", () => {
351
- expect(() => {
352
- createAst("foo.)");
353
- }).toThrowError(/syntax/);
354
- });
355
-
356
- it("should throw when all tokens are not consumed", () => {
357
- expect(() => {
358
- createAst("foo bar");
359
- }).toThrowError(/syntax/);
360
- });
361
-
362
- it("should understand the unary operators `-`, `+` and `!`", () => {
363
- ["-", "+", "!"].forEach((operator) => {
364
- expect(createAst(`${operator}foo`)).toEqual({
365
- type: ASTType.Program,
366
- body: [
367
- {
368
- type: ASTType.ExpressionStatement,
369
- expression: {
370
- type: ASTType.UnaryExpression,
371
- operator,
372
- prefix: true,
373
- argument: { type: ASTType.Identifier, name: "foo" },
374
- },
375
- },
376
- ],
377
- });
378
- });
379
- });
380
-
381
- it("should handle all unary operators with the same precedence", () => {
382
- [
383
- ["+", "-", "!"],
384
- ["-", "!", "+"],
385
- ["!", "+", "-"],
386
- ].forEach((operators) => {
387
- expect(createAst(`${operators.join("")}foo`)).toEqual({
388
- type: ASTType.Program,
389
- body: [
390
- {
391
- type: ASTType.ExpressionStatement,
392
- expression: {
393
- type: ASTType.UnaryExpression,
394
- operator: operators[0],
395
- prefix: true,
396
- argument: {
397
- type: ASTType.UnaryExpression,
398
- operator: operators[1],
399
- prefix: true,
400
- argument: {
401
- type: ASTType.UnaryExpression,
402
- operator: operators[2],
403
- prefix: true,
404
- argument: { type: ASTType.Identifier, name: "foo" },
405
- },
406
- },
407
- },
408
- },
409
- ],
410
- });
411
- });
412
- });
413
-
414
- it("should be able to understand binary operators", () => {
415
- [
416
- "*",
417
- "/",
418
- "%",
419
- "+",
420
- "-",
421
- "<",
422
- ">",
423
- "<=",
424
- ">=",
425
- "==",
426
- "!=",
427
- "===",
428
- "!==",
429
- ].forEach((operator) => {
430
- expect(createAst(`foo${operator}bar`)).toEqual({
431
- type: ASTType.Program,
432
- body: [
433
- {
434
- type: ASTType.ExpressionStatement,
435
- expression: {
436
- type: ASTType.BinaryExpression,
437
- operator,
438
- left: { type: ASTType.Identifier, name: "foo" },
439
- right: { type: ASTType.Identifier, name: "bar" },
440
- },
441
- },
442
- ],
443
- });
444
- });
445
- });
446
-
447
- it("should associate binary operators with the same precedence left-to-right", () => {
448
- const operatorsByPrecedence = [
449
- ["*", "/", "%"],
450
- ["+", "-"],
451
- ["<", ">", "<=", ">="],
452
- ["==", "!=", "===", "!=="],
453
- ];
454
- operatorsByPrecedence.forEach((operators) => {
455
- operators.forEach((op1) => {
456
- operators.forEach((op2) => {
457
- expect(createAst(`foo${op1}bar${op2}baz`)).toEqual({
458
- type: ASTType.Program,
459
- body: [
460
- {
461
- type: ASTType.ExpressionStatement,
462
- expression: {
463
- type: ASTType.BinaryExpression,
464
- operator: op2,
465
- left: {
466
- type: ASTType.BinaryExpression,
467
- operator: op1,
468
- left: { type: ASTType.Identifier, name: "foo" },
469
- right: { type: ASTType.Identifier, name: "bar" },
470
- },
471
- right: { type: ASTType.Identifier, name: "baz" },
472
- },
473
- },
474
- ],
475
- });
476
- });
477
- });
478
- });
479
- });
480
-
481
- it("should give higher precedence to member calls than to unary expressions", () => {
482
- ["!", "+", "-"].forEach((operator) => {
483
- expect(createAst(`${operator}foo()`)).toEqual({
484
- type: ASTType.Program,
485
- body: [
486
- {
487
- type: ASTType.ExpressionStatement,
488
- expression: {
489
- type: ASTType.UnaryExpression,
490
- operator,
491
- prefix: true,
492
- argument: {
493
- type: ASTType.CallExpression,
494
- callee: { type: ASTType.Identifier, name: "foo" },
495
- arguments: [],
496
- },
497
- },
498
- },
499
- ],
500
- });
501
- expect(createAst(`${operator}foo.bar`)).toEqual({
502
- type: ASTType.Program,
503
- body: [
504
- {
505
- type: ASTType.ExpressionStatement,
506
- expression: {
507
- type: ASTType.UnaryExpression,
508
- operator,
509
- prefix: true,
510
- argument: {
511
- type: ASTType.MemberExpression,
512
- object: { type: ASTType.Identifier, name: "foo" },
513
- property: { type: ASTType.Identifier, name: "bar" },
514
- computed: false,
515
- },
516
- },
517
- },
518
- ],
519
- });
520
- expect(createAst(`${operator}foo[bar]`)).toEqual({
521
- type: ASTType.Program,
522
- body: [
523
- {
524
- type: ASTType.ExpressionStatement,
525
- expression: {
526
- type: ASTType.UnaryExpression,
527
- operator,
528
- prefix: true,
529
- argument: {
530
- type: ASTType.MemberExpression,
531
- object: { type: ASTType.Identifier, name: "foo" },
532
- property: { type: ASTType.Identifier, name: "bar" },
533
- computed: true,
534
- },
535
- },
536
- },
537
- ],
538
- });
539
- });
540
- });
541
-
542
- it("should give higher precedence to unary operators over multiplicative operators", () => {
543
- ["!", "+", "-"].forEach((op1) => {
544
- ["*", "/", "%"].forEach((op2) => {
545
- expect(createAst(`${op1}foo${op2}${op1}bar`)).toEqual({
546
- type: ASTType.Program,
547
- body: [
548
- {
549
- type: ASTType.ExpressionStatement,
550
- expression: {
551
- type: ASTType.BinaryExpression,
552
- operator: op2,
553
- left: {
554
- type: ASTType.UnaryExpression,
555
- operator: op1,
556
- prefix: true,
557
- argument: { type: ASTType.Identifier, name: "foo" },
558
- },
559
- right: {
560
- type: ASTType.UnaryExpression,
561
- operator: op1,
562
- prefix: true,
563
- argument: { type: ASTType.Identifier, name: "bar" },
564
- },
565
- },
566
- },
567
- ],
568
- });
569
- });
570
- });
571
- });
572
-
573
- it("should give binary operators their right precedence", () => {
574
- const operatorsByPrecedence = [
575
- ["*", "/", "%"],
576
- ["+", "-"],
577
- ["<", ">", "<=", ">="],
578
- ["==", "!=", "===", "!=="],
579
- ];
580
- for (let i = 0; i < operatorsByPrecedence.length - 1; ++i) {
581
- operatorsByPrecedence[i].forEach((op1) => {
582
- operatorsByPrecedence[i + 1].forEach((op2) => {
583
- expect(createAst(`foo${op1}bar${op2}baz${op1}man`)).toEqual({
584
- type: ASTType.Program,
585
- body: [
586
- {
587
- type: ASTType.ExpressionStatement,
588
- expression: {
589
- type: ASTType.BinaryExpression,
590
- operator: op2,
591
- left: {
592
- type: ASTType.BinaryExpression,
593
- operator: op1,
594
- left: { type: ASTType.Identifier, name: "foo" },
595
- right: { type: ASTType.Identifier, name: "bar" },
596
- },
597
- right: {
598
- type: ASTType.BinaryExpression,
599
- operator: op1,
600
- left: { type: ASTType.Identifier, name: "baz" },
601
- right: { type: ASTType.Identifier, name: "man" },
602
- },
603
- },
604
- },
605
- ],
606
- });
607
- });
608
- });
609
- }
610
- });
611
-
612
- it("should understand logical operators", () => {
613
- ["||", "&&"].forEach((operator) => {
614
- expect(createAst(`foo${operator}bar`)).toEqual({
615
- type: ASTType.Program,
616
- body: [
617
- {
618
- type: ASTType.ExpressionStatement,
619
- expression: {
620
- type: ASTType.LogicalExpression,
621
- operator,
622
- left: { type: ASTType.Identifier, name: "foo" },
623
- right: { type: ASTType.Identifier, name: "bar" },
624
- },
625
- },
626
- ],
627
- });
628
- });
629
- });
630
-
631
- it("should associate logical operators left-to-right", () => {
632
- ["||", "&&"].forEach((op) => {
633
- expect(createAst(`foo${op}bar${op}baz`)).toEqual({
634
- type: ASTType.Program,
635
- body: [
636
- {
637
- type: ASTType.ExpressionStatement,
638
- expression: {
639
- type: ASTType.LogicalExpression,
640
- operator: op,
641
- left: {
642
- type: ASTType.LogicalExpression,
643
- operator: op,
644
- left: { type: ASTType.Identifier, name: "foo" },
645
- right: { type: ASTType.Identifier, name: "bar" },
646
- },
647
- right: { type: ASTType.Identifier, name: "baz" },
648
- },
649
- },
650
- ],
651
- });
652
- });
653
- });
654
-
655
- it("should understand ternary operators", () => {
656
- expect(createAst("foo?bar:baz")).toEqual({
657
- type: ASTType.Program,
658
- body: [
659
- {
660
- type: ASTType.ExpressionStatement,
661
- expression: {
662
- type: ASTType.ConditionalExpression,
663
- test: { type: ASTType.Identifier, name: "foo" },
664
- alternate: { type: ASTType.Identifier, name: "bar" },
665
- consequent: { type: ASTType.Identifier, name: "baz" },
666
- },
667
- },
668
- ],
669
- });
670
- });
671
-
672
- it("should associate the conditional operator right-to-left", () => {
673
- expect(createAst("foo0?foo1:foo2?bar0?bar1:bar2:man0?man1:man2")).toEqual({
674
- type: ASTType.Program,
675
- body: [
676
- {
677
- type: ASTType.ExpressionStatement,
678
- expression: {
679
- type: ASTType.ConditionalExpression,
680
- test: { type: ASTType.Identifier, name: "foo0" },
681
- alternate: { type: ASTType.Identifier, name: "foo1" },
682
- consequent: {
683
- type: ASTType.ConditionalExpression,
684
- test: { type: ASTType.Identifier, name: "foo2" },
685
- alternate: {
686
- type: ASTType.ConditionalExpression,
687
- test: { type: ASTType.Identifier, name: "bar0" },
688
- alternate: { type: ASTType.Identifier, name: "bar1" },
689
- consequent: { type: ASTType.Identifier, name: "bar2" },
690
- },
691
- consequent: {
692
- type: ASTType.ConditionalExpression,
693
- test: { type: ASTType.Identifier, name: "man0" },
694
- alternate: { type: ASTType.Identifier, name: "man1" },
695
- consequent: { type: ASTType.Identifier, name: "man2" },
696
- },
697
- },
698
- },
699
- },
700
- ],
701
- });
702
- });
703
-
704
- it("should understand assignment operator", () => {
705
- // Currently, only `=` is supported
706
- expect(createAst("foo=bar")).toEqual({
707
- type: ASTType.Program,
708
- body: [
709
- {
710
- type: ASTType.ExpressionStatement,
711
- expression: {
712
- type: ASTType.AssignmentExpression,
713
- left: { type: ASTType.Identifier, name: "foo" },
714
- right: { type: ASTType.Identifier, name: "bar" },
715
- operator: "=",
716
- },
717
- },
718
- ],
719
- });
720
- });
721
-
722
- it("should associate assignments right-to-left", () => {
723
- // Currently, only `=` is supported
724
- expect(createAst("foo=bar=man")).toEqual({
725
- type: ASTType.Program,
726
- body: [
727
- {
728
- type: ASTType.ExpressionStatement,
729
- expression: {
730
- type: ASTType.AssignmentExpression,
731
- left: { type: ASTType.Identifier, name: "foo" },
732
- right: {
733
- type: ASTType.AssignmentExpression,
734
- left: { type: ASTType.Identifier, name: "bar" },
735
- right: { type: ASTType.Identifier, name: "man" },
736
- operator: "=",
737
- },
738
- operator: "=",
739
- },
740
- },
741
- ],
742
- });
743
- });
744
-
745
- it("should give higher precedence to equality than to the logical `and` operator", () => {
746
- ["==", "!=", "===", "!=="].forEach((operator) => {
747
- expect(createAst(`foo${operator}bar && man${operator}shell`)).toEqual({
748
- type: ASTType.Program,
749
- body: [
750
- {
751
- type: ASTType.ExpressionStatement,
752
- expression: {
753
- type: ASTType.LogicalExpression,
754
- operator: "&&",
755
- left: {
756
- type: ASTType.BinaryExpression,
757
- operator,
758
- left: { type: ASTType.Identifier, name: "foo" },
759
- right: { type: ASTType.Identifier, name: "bar" },
760
- },
761
- right: {
762
- type: ASTType.BinaryExpression,
763
- operator,
764
- left: { type: ASTType.Identifier, name: "man" },
765
- right: { type: ASTType.Identifier, name: "shell" },
766
- },
767
- },
768
- },
769
- ],
770
- });
771
- });
772
- });
773
-
774
- it("should give higher precedence to logical `and` than to logical `or`", () => {
775
- expect(createAst("foo&&bar||man&&shell")).toEqual({
776
- type: ASTType.Program,
777
- body: [
778
- {
779
- type: ASTType.ExpressionStatement,
780
- expression: {
781
- type: ASTType.LogicalExpression,
782
- operator: "||",
783
- left: {
784
- type: ASTType.LogicalExpression,
785
- operator: "&&",
786
- left: { type: ASTType.Identifier, name: "foo" },
787
- right: { type: ASTType.Identifier, name: "bar" },
788
- },
789
- right: {
790
- type: ASTType.LogicalExpression,
791
- operator: "&&",
792
- left: { type: ASTType.Identifier, name: "man" },
793
- right: { type: ASTType.Identifier, name: "shell" },
794
- },
795
- },
796
- },
797
- ],
798
- });
799
- });
800
-
801
- it("should give higher precedence to the logical `or` than to the conditional operator", () => {
802
- expect(createAst("foo||bar?man:shell")).toEqual({
803
- type: ASTType.Program,
804
- body: [
805
- {
806
- type: ASTType.ExpressionStatement,
807
- expression: {
808
- type: ASTType.ConditionalExpression,
809
- test: {
810
- type: ASTType.LogicalExpression,
811
- operator: "||",
812
- left: { type: ASTType.Identifier, name: "foo" },
813
- right: { type: ASTType.Identifier, name: "bar" },
814
- },
815
- alternate: { type: ASTType.Identifier, name: "man" },
816
- consequent: { type: ASTType.Identifier, name: "shell" },
817
- },
818
- },
819
- ],
820
- });
821
- });
822
-
823
- it("should give higher precedence to the conditional operator than to assignment operators", () => {
824
- expect(createAst("foo=bar?man:shell")).toEqual({
825
- type: ASTType.Program,
826
- body: [
827
- {
828
- type: ASTType.ExpressionStatement,
829
- expression: {
830
- type: ASTType.AssignmentExpression,
831
- left: { type: ASTType.Identifier, name: "foo" },
832
- right: {
833
- type: ASTType.ConditionalExpression,
834
- test: { type: ASTType.Identifier, name: "bar" },
835
- alternate: { type: ASTType.Identifier, name: "man" },
836
- consequent: { type: ASTType.Identifier, name: "shell" },
837
- },
838
- operator: "=",
839
- },
840
- },
841
- ],
842
- });
843
- });
844
-
845
- it("should understand array literals", () => {
846
- expect(createAst("[]")).toEqual({
847
- type: ASTType.Program,
848
- body: [
849
- {
850
- type: ASTType.ExpressionStatement,
851
- expression: {
852
- type: ASTType.ArrayExpression,
853
- elements: [],
854
- },
855
- },
856
- ],
857
- });
858
- expect(createAst("[foo]")).toEqual({
859
- type: ASTType.Program,
860
- body: [
861
- {
862
- type: ASTType.ExpressionStatement,
863
- expression: {
864
- type: ASTType.ArrayExpression,
865
- elements: [{ type: ASTType.Identifier, name: "foo" }],
866
- },
867
- },
868
- ],
869
- });
870
- expect(createAst("[foo,]")).toEqual({
871
- type: ASTType.Program,
872
- body: [
873
- {
874
- type: ASTType.ExpressionStatement,
875
- expression: {
876
- type: ASTType.ArrayExpression,
877
- elements: [{ type: ASTType.Identifier, name: "foo" }],
878
- },
879
- },
880
- ],
881
- });
882
- expect(createAst("[foo,bar,man,shell]")).toEqual({
883
- type: ASTType.Program,
884
- body: [
885
- {
886
- type: ASTType.ExpressionStatement,
887
- expression: {
888
- type: ASTType.ArrayExpression,
889
- elements: [
890
- { type: ASTType.Identifier, name: "foo" },
891
- { type: ASTType.Identifier, name: "bar" },
892
- { type: ASTType.Identifier, name: "man" },
893
- { type: ASTType.Identifier, name: "shell" },
894
- ],
895
- },
896
- },
897
- ],
898
- });
899
- expect(createAst("[foo,bar,man,shell,]")).toEqual({
900
- type: ASTType.Program,
901
- body: [
902
- {
903
- type: ASTType.ExpressionStatement,
904
- expression: {
905
- type: ASTType.ArrayExpression,
906
- elements: [
907
- { type: ASTType.Identifier, name: "foo" },
908
- { type: ASTType.Identifier, name: "bar" },
909
- { type: ASTType.Identifier, name: "man" },
910
- { type: ASTType.Identifier, name: "shell" },
911
- ],
912
- },
913
- },
914
- ],
915
- });
916
- });
917
-
918
- it("should understand objects", () => {
919
- expect(createAst("{}")).toEqual({
920
- type: ASTType.Program,
921
- body: [
922
- {
923
- type: ASTType.ExpressionStatement,
924
- expression: {
925
- type: ASTType.ObjectExpression,
926
- properties: [],
927
- },
928
- },
929
- ],
930
- });
931
- expect(createAst("{foo: bar}")).toEqual({
932
- type: ASTType.Program,
933
- body: [
934
- {
935
- type: ASTType.ExpressionStatement,
936
- expression: {
937
- type: ASTType.ObjectExpression,
938
- properties: [
939
- {
940
- type: ASTType.Property,
941
- kind: "init",
942
- key: { type: ASTType.Identifier, name: "foo" },
943
- computed: false,
944
- value: { type: ASTType.Identifier, name: "bar" },
945
- },
946
- ],
947
- },
948
- },
949
- ],
950
- });
951
- expect(createAst("{foo: bar,}")).toEqual({
952
- type: ASTType.Program,
953
- body: [
954
- {
955
- type: ASTType.ExpressionStatement,
956
- expression: {
957
- type: ASTType.ObjectExpression,
958
- properties: [
959
- {
960
- type: ASTType.Property,
961
- kind: "init",
962
- key: { type: ASTType.Identifier, name: "foo" },
963
- computed: false,
964
- value: { type: ASTType.Identifier, name: "bar" },
965
- },
966
- ],
967
- },
968
- },
969
- ],
970
- });
971
- expect(createAst('{foo: bar, "man": "shell", 42: 23}')).toEqual({
972
- type: ASTType.Program,
973
- body: [
974
- {
975
- type: ASTType.ExpressionStatement,
976
- expression: {
977
- type: ASTType.ObjectExpression,
978
- properties: [
979
- {
980
- type: ASTType.Property,
981
- kind: "init",
982
- key: { type: ASTType.Identifier, name: "foo" },
983
- computed: false,
984
- value: { type: ASTType.Identifier, name: "bar" },
985
- },
986
- {
987
- type: ASTType.Property,
988
- kind: "init",
989
- key: { type: ASTType.Literal, value: "man" },
990
- computed: false,
991
- value: { type: ASTType.Literal, value: "shell" },
992
- },
993
- {
994
- type: ASTType.Property,
995
- kind: "init",
996
- key: { type: ASTType.Literal, value: 42 },
997
- computed: false,
998
- value: { type: ASTType.Literal, value: 23 },
999
- },
1000
- ],
1001
- },
1002
- },
1003
- ],
1004
- });
1005
- expect(createAst('{foo: bar, "man": "shell", 42: 23,}')).toEqual({
1006
- type: ASTType.Program,
1007
- body: [
1008
- {
1009
- type: ASTType.ExpressionStatement,
1010
- expression: {
1011
- type: ASTType.ObjectExpression,
1012
- properties: [
1013
- {
1014
- type: ASTType.Property,
1015
- kind: "init",
1016
- key: { type: ASTType.Identifier, name: "foo" },
1017
- computed: false,
1018
- value: { type: ASTType.Identifier, name: "bar" },
1019
- },
1020
- {
1021
- type: ASTType.Property,
1022
- kind: "init",
1023
- key: { type: ASTType.Literal, value: "man" },
1024
- computed: false,
1025
- value: { type: ASTType.Literal, value: "shell" },
1026
- },
1027
- {
1028
- type: ASTType.Property,
1029
- kind: "init",
1030
- key: { type: ASTType.Literal, value: 42 },
1031
- computed: false,
1032
- value: { type: ASTType.Literal, value: 23 },
1033
- },
1034
- ],
1035
- },
1036
- },
1037
- ],
1038
- });
1039
- });
1040
-
1041
- it("should understand ES6 object initializer", () => {
1042
- // Shorthand properties definitions.
1043
- expect(createAst("{x, y, z}")).toEqual({
1044
- type: ASTType.Program,
1045
- body: [
1046
- {
1047
- type: ASTType.ExpressionStatement,
1048
- expression: {
1049
- type: ASTType.ObjectExpression,
1050
- properties: [
1051
- {
1052
- type: ASTType.Property,
1053
- kind: "init",
1054
- key: { type: ASTType.Identifier, name: "x" },
1055
- computed: false,
1056
- value: { type: ASTType.Identifier, name: "x" },
1057
- },
1058
- {
1059
- type: ASTType.Property,
1060
- kind: "init",
1061
- key: { type: ASTType.Identifier, name: "y" },
1062
- computed: false,
1063
- value: { type: ASTType.Identifier, name: "y" },
1064
- },
1065
- {
1066
- type: ASTType.Property,
1067
- kind: "init",
1068
- key: { type: ASTType.Identifier, name: "z" },
1069
- computed: false,
1070
- value: { type: ASTType.Identifier, name: "z" },
1071
- },
1072
- ],
1073
- },
1074
- },
1075
- ],
1076
- });
1077
- expect(() => {
1078
- createAst('{"foo"}');
1079
- }).toThrow();
1080
-
1081
- // Computed properties
1082
- expect(createAst("{[x]: x}")).toEqual({
1083
- type: ASTType.Program,
1084
- body: [
1085
- {
1086
- type: ASTType.ExpressionStatement,
1087
- expression: {
1088
- type: ASTType.ObjectExpression,
1089
- properties: [
1090
- {
1091
- type: ASTType.Property,
1092
- kind: "init",
1093
- key: { type: ASTType.Identifier, name: "x" },
1094
- computed: true,
1095
- value: { type: ASTType.Identifier, name: "x" },
1096
- },
1097
- ],
1098
- },
1099
- },
1100
- ],
1101
- });
1102
- expect(createAst("{[x + 1]: x}")).toEqual({
1103
- type: ASTType.Program,
1104
- body: [
1105
- {
1106
- type: ASTType.ExpressionStatement,
1107
- expression: {
1108
- type: ASTType.ObjectExpression,
1109
- properties: [
1110
- {
1111
- type: ASTType.Property,
1112
- kind: "init",
1113
- key: {
1114
- type: ASTType.BinaryExpression,
1115
- operator: "+",
1116
- left: { type: ASTType.Identifier, name: "x" },
1117
- right: { type: ASTType.Literal, value: 1 },
1118
- },
1119
- computed: true,
1120
- value: { type: ASTType.Identifier, name: "x" },
1121
- },
1122
- ],
1123
- },
1124
- },
1125
- ],
1126
- });
1127
- });
1128
-
1129
- it("should understand multiple expressions", () => {
1130
- expect(createAst("foo = bar; man = shell")).toEqual({
1131
- type: ASTType.Program,
1132
- body: [
1133
- {
1134
- type: ASTType.ExpressionStatement,
1135
- expression: {
1136
- type: ASTType.AssignmentExpression,
1137
- left: { type: ASTType.Identifier, name: "foo" },
1138
- right: { type: ASTType.Identifier, name: "bar" },
1139
- operator: "=",
1140
- },
1141
- },
1142
- {
1143
- type: ASTType.ExpressionStatement,
1144
- expression: {
1145
- type: ASTType.AssignmentExpression,
1146
- left: { type: ASTType.Identifier, name: "man" },
1147
- right: { type: ASTType.Identifier, name: "shell" },
1148
- operator: "=",
1149
- },
1150
- },
1151
- ],
1152
- });
1153
- });
1154
-
1155
- // This is non-standard syntax
1156
- it("should understand filters", () => {
1157
- expect(createAst("foo | bar")).toEqual({
1158
- type: ASTType.Program,
1159
- body: [
1160
- {
1161
- type: ASTType.ExpressionStatement,
1162
- expression: {
1163
- type: ASTType.CallExpression,
1164
- callee: { type: ASTType.Identifier, name: "bar" },
1165
- arguments: [{ type: ASTType.Identifier, name: "foo" }],
1166
- filter: true,
1167
- },
1168
- },
1169
- ],
1170
- });
1171
- });
1172
-
1173
- it("should understand filters with extra parameters", () => {
1174
- expect(createAst("foo | bar:baz")).toEqual({
1175
- type: ASTType.Program,
1176
- body: [
1177
- {
1178
- type: ASTType.ExpressionStatement,
1179
- expression: {
1180
- type: ASTType.CallExpression,
1181
- callee: { type: ASTType.Identifier, name: "bar" },
1182
- arguments: [
1183
- { type: ASTType.Identifier, name: "foo" },
1184
- { type: ASTType.Identifier, name: "baz" },
1185
- ],
1186
- filter: true,
1187
- },
1188
- },
1189
- ],
1190
- });
1191
- });
1192
-
1193
- it("should associate filters right-to-left", () => {
1194
- expect(createAst("foo | bar:man | shell")).toEqual({
1195
- type: ASTType.Program,
1196
- body: [
1197
- {
1198
- type: ASTType.ExpressionStatement,
1199
- expression: {
1200
- type: ASTType.CallExpression,
1201
- callee: { type: ASTType.Identifier, name: "shell" },
1202
- arguments: [
1203
- {
1204
- type: ASTType.CallExpression,
1205
- callee: { type: ASTType.Identifier, name: "bar" },
1206
- arguments: [
1207
- { type: ASTType.Identifier, name: "foo" },
1208
- { type: ASTType.Identifier, name: "man" },
1209
- ],
1210
- filter: true,
1211
- },
1212
- ],
1213
- filter: true,
1214
- },
1215
- },
1216
- ],
1217
- });
1218
- });
1219
-
1220
- it("should give higher precedence to assignments over filters", () => {
1221
- expect(createAst("foo=bar | man")).toEqual({
1222
- type: ASTType.Program,
1223
- body: [
1224
- {
1225
- type: ASTType.ExpressionStatement,
1226
- expression: {
1227
- type: ASTType.CallExpression,
1228
- callee: { type: ASTType.Identifier, name: "man" },
1229
- arguments: [
1230
- {
1231
- type: ASTType.AssignmentExpression,
1232
- left: { type: ASTType.Identifier, name: "foo" },
1233
- right: { type: ASTType.Identifier, name: "bar" },
1234
- operator: "=",
1235
- },
1236
- ],
1237
- filter: true,
1238
- },
1239
- },
1240
- ],
1241
- });
1242
- });
1243
-
1244
- it("should accept expression as filters parameters", () => {
1245
- expect(createAst("foo | bar:baz=man")).toEqual({
1246
- type: ASTType.Program,
1247
- body: [
1248
- {
1249
- type: ASTType.ExpressionStatement,
1250
- expression: {
1251
- type: ASTType.CallExpression,
1252
- callee: { type: ASTType.Identifier, name: "bar" },
1253
- arguments: [
1254
- { type: ASTType.Identifier, name: "foo" },
1255
- {
1256
- type: ASTType.AssignmentExpression,
1257
- left: { type: ASTType.Identifier, name: "baz" },
1258
- right: { type: ASTType.Identifier, name: "man" },
1259
- operator: "=",
1260
- },
1261
- ],
1262
- filter: true,
1263
- },
1264
- },
1265
- ],
1266
- });
1267
- });
1268
-
1269
- it("should accept expression as computer members", () => {
1270
- expect(createAst("foo[a = 1]")).toEqual({
1271
- type: ASTType.Program,
1272
- body: [
1273
- {
1274
- type: ASTType.ExpressionStatement,
1275
- expression: {
1276
- type: ASTType.MemberExpression,
1277
- object: { type: ASTType.Identifier, name: "foo" },
1278
- property: {
1279
- type: ASTType.AssignmentExpression,
1280
- left: { type: ASTType.Identifier, name: "a" },
1281
- right: { type: ASTType.Literal, value: 1 },
1282
- operator: "=",
1283
- },
1284
- computed: true,
1285
- },
1286
- },
1287
- ],
1288
- });
1289
- });
1290
-
1291
- it("should accept expression in function arguments", () => {
1292
- expect(createAst("foo(a = 1)")).toEqual({
1293
- type: ASTType.Program,
1294
- body: [
1295
- {
1296
- type: ASTType.ExpressionStatement,
1297
- expression: {
1298
- type: ASTType.CallExpression,
1299
- callee: { type: ASTType.Identifier, name: "foo" },
1300
- arguments: [
1301
- {
1302
- type: ASTType.AssignmentExpression,
1303
- left: { type: ASTType.Identifier, name: "a" },
1304
- right: { type: ASTType.Literal, value: 1 },
1305
- operator: "=",
1306
- },
1307
- ],
1308
- },
1309
- },
1310
- ],
1311
- });
1312
- });
1313
-
1314
- it("should accept expression as part of ternary operators", () => {
1315
- expect(createAst("foo || bar ? man = 1 : shell = 1")).toEqual({
1316
- type: ASTType.Program,
1317
- body: [
1318
- {
1319
- type: ASTType.ExpressionStatement,
1320
- expression: {
1321
- type: ASTType.ConditionalExpression,
1322
- test: {
1323
- type: ASTType.LogicalExpression,
1324
- operator: "||",
1325
- left: { type: ASTType.Identifier, name: "foo" },
1326
- right: { type: ASTType.Identifier, name: "bar" },
1327
- },
1328
- alternate: {
1329
- type: ASTType.AssignmentExpression,
1330
- left: { type: ASTType.Identifier, name: "man" },
1331
- right: { type: ASTType.Literal, value: 1 },
1332
- operator: "=",
1333
- },
1334
- consequent: {
1335
- type: ASTType.AssignmentExpression,
1336
- left: { type: ASTType.Identifier, name: "shell" },
1337
- right: { type: ASTType.Literal, value: 1 },
1338
- operator: "=",
1339
- },
1340
- },
1341
- },
1342
- ],
1343
- });
1344
- });
1345
-
1346
- it("should accept expression as part of array literals", () => {
1347
- expect(createAst("[foo = 1]")).toEqual({
1348
- type: ASTType.Program,
1349
- body: [
1350
- {
1351
- type: ASTType.ExpressionStatement,
1352
- expression: {
1353
- type: ASTType.ArrayExpression,
1354
- elements: [
1355
- {
1356
- type: ASTType.AssignmentExpression,
1357
- left: { type: ASTType.Identifier, name: "foo" },
1358
- right: { type: ASTType.Literal, value: 1 },
1359
- operator: "=",
1360
- },
1361
- ],
1362
- },
1363
- },
1364
- ],
1365
- });
1366
- });
1367
-
1368
- it("should accept expression as part of object literals", () => {
1369
- expect(createAst("{foo: bar = 1}")).toEqual({
1370
- type: ASTType.Program,
1371
- body: [
1372
- {
1373
- type: ASTType.ExpressionStatement,
1374
- expression: {
1375
- type: ASTType.ObjectExpression,
1376
- properties: [
1377
- {
1378
- type: ASTType.Property,
1379
- kind: "init",
1380
- key: { type: ASTType.Identifier, name: "foo" },
1381
- computed: false,
1382
- value: {
1383
- type: ASTType.AssignmentExpression,
1384
- left: { type: ASTType.Identifier, name: "bar" },
1385
- right: { type: ASTType.Literal, value: 1 },
1386
- operator: "=",
1387
- },
1388
- },
1389
- ],
1390
- },
1391
- },
1392
- ],
1393
- });
1394
- });
1395
-
1396
- it("should be possible to use parenthesis to indicate precedence", () => {
1397
- expect(createAst("(foo + bar).man")).toEqual({
1398
- type: ASTType.Program,
1399
- body: [
1400
- {
1401
- type: ASTType.ExpressionStatement,
1402
- expression: {
1403
- type: ASTType.MemberExpression,
1404
- object: {
1405
- type: ASTType.BinaryExpression,
1406
- operator: "+",
1407
- left: { type: ASTType.Identifier, name: "foo" },
1408
- right: { type: ASTType.Identifier, name: "bar" },
1409
- },
1410
- property: { type: ASTType.Identifier, name: "man" },
1411
- computed: false,
1412
- },
1413
- },
1414
- ],
1415
- });
1416
- });
1417
-
1418
- it("should skip empty expressions", () => {
1419
- expect(createAst("foo;;;;bar")).toEqual({
1420
- type: ASTType.Program,
1421
- body: [
1422
- {
1423
- type: ASTType.ExpressionStatement,
1424
- expression: { type: ASTType.Identifier, name: "foo" },
1425
- },
1426
- {
1427
- type: ASTType.ExpressionStatement,
1428
- expression: { type: ASTType.Identifier, name: "bar" },
1429
- },
1430
- ],
1431
- });
1432
- expect(createAst(";foo")).toEqual({
1433
- type: ASTType.Program,
1434
- body: [
1435
- {
1436
- type: ASTType.ExpressionStatement,
1437
- expression: { type: ASTType.Identifier, name: "foo" },
1438
- },
1439
- ],
1440
- });
1441
- expect(createAst("foo;")).toEqual({
1442
- type: ASTType.Program,
1443
- body: [
1444
- {
1445
- type: ASTType.ExpressionStatement,
1446
- expression: { type: ASTType.Identifier, name: "foo" },
1447
- },
1448
- ],
1449
- });
1450
- expect(createAst(";;;;")).toEqual({ type: ASTType.Program, body: [] });
1451
- expect(createAst("")).toEqual({ type: ASTType.Program, body: [] });
1452
- });
1453
- });