diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index e45f894288..f9e78c644f 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -5,7 +5,6 @@ If your PR is the addition of a new operator, please make sure all these boxes a
- [ ] Add the operator to Rx
- [ ] It must have a `-spec.ts` tests file covering the canonical corner cases, with marble diagram tests
-- [ ] If possible, write a `asDiagram` test case too, for PNG diagram generation purposes
- [ ] The spec file should have a type definition test at the end of the spec to verify type definition for various use cases
- [ ] The operator must be documented in JSDoc style in the implementation file, including also the PNG marble diagram image
- [ ] The operator should be listed in `docs_app/content/guide/operators.md` in a category of operators
diff --git a/docs_app/.gitignore b/docs_app/.gitignore
index 4790f4f2f7..295b0f5d0c 100644
--- a/docs_app/.gitignore
+++ b/docs_app/.gitignore
@@ -47,3 +47,6 @@ Thumbs.db
# copied dependencies
src/assets/js/lunr*
+
+assets/images/svgs/*
+!assets/images/svgs/.gitkeep
\ No newline at end of file
diff --git a/docs_app/assets/images/svgs/.gitkeep b/docs_app/assets/images/svgs/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/docs_app/content/guide/operators.md b/docs_app/content/guide/operators.md
index 8a22cdbd71..64733c3edf 100644
--- a/docs_app/content/guide/operators.md
+++ b/docs_app/content/guide/operators.md
@@ -111,7 +111,7 @@ To explain how operators work, textual descriptions are often not enough. Many o
Below you can see the anatomy of a marble diagram.
-
+
Throughout this documentation site, we extensively use marble diagrams to explain how operators work. They may be really useful in other contexts too, like on a whiteboard or even in our unit tests (as ASCII diagrams).
diff --git a/docs_app/content/navigation.json b/docs_app/content/navigation.json
index 498f3c8022..4768eef00b 100644
--- a/docs_app/content/navigation.json
+++ b/docs_app/content/navigation.json
@@ -1,24 +1,23 @@
{
- "TopBar": [
- {
- "url": "guide/overview",
- "title": "Overview"
- },
- {
- "url": "api",
- "title": "Reference"
- },
- {
- "url": "guide/v6/migration",
- "title": "Migration"
- },
- {
- "url": "team",
- "title": "Team"
- }
- ],
-
- "TopBarNarrow": [],
+ "TopBar": [
+ {
+ "url": "guide/overview",
+ "title": "Overview"
+ },
+ {
+ "url": "api",
+ "title": "Reference"
+ },
+ {
+ "url": "guide/v6/migration",
+ "title": "Migration"
+ },
+ {
+ "url": "team",
+ "title": "Team"
+ }
+ ],
+ "TopBarNarrow": [],
"SideNav": [
{
"url": "guide/overview",
@@ -28,8 +27,8 @@
{
"url": "guide/observable",
"title": "Observables"
- },
- {
+ },
+ {
"url": "guide/observer",
"title": "Observer"
},
@@ -41,26 +40,17 @@
"url": "guide/subscription",
"title": "Subscription"
},
- {
+ {
"url": "guide/subject",
"title": "Subjects"
},
- {
+ {
"url": "guide/scheduler",
"title": "Scheduler"
- },
+ },
{
- "title": "Testing",
- "children": [
- {
- "url": "guide/testing/marble-testing",
- "title": "Marble Testing"
- },
- {
- "url": "guide/testing/internal-marble-tests",
- "title": "Contribute tests to RxJS"
- }
- ]
+ "url": "guide/testing/marble-testing",
+ "title": "Marble Testing"
}
]
},
@@ -69,16 +59,16 @@
"title": "Installation",
"tooltip": "Installation"
},
- {
- "url": "api",
- "title": "Reference",
- "tooltip": "RxJS Reference"
- },
- {
- "tooltip": "Operator Decision Tree",
- "url": "operator-decision-tree",
- "title": "Operator Decision Tree"
- },
+ {
+ "url": "api",
+ "title": "Reference",
+ "tooltip": "RxJS Reference"
+ },
+ {
+ "tooltip": "Operator Decision Tree",
+ "url": "operator-decision-tree",
+ "title": "Operator Decision Tree"
+ },
{
"title": "About Version 6",
"children": [
@@ -98,9 +88,9 @@
]
},
{
- "url": "resources",
- "title": "External Resources",
- "tooltip": "External Resources"
+ "url": "resources",
+ "title": "External Resources",
+ "tooltip": "External Resources"
},
{
"url": "code-of-conduct",
@@ -109,4 +99,4 @@
}
],
"docVersions": []
-}
+}
\ No newline at end of file
diff --git a/docs_app/package-lock.json b/docs_app/package-lock.json
index cee5a7f67c..d9beffae68 100644
--- a/docs_app/package-lock.json
+++ b/docs_app/package-lock.json
@@ -1,5 +1,5 @@
{
- "name": "rxjs.io",
+ "name": "rxjs.dev",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
@@ -1767,23 +1767,79 @@
}
},
"@babel/helper-function-name": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
- "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
- "dev": true,
- "requires": {
- "@babel/helper-get-function-arity": "^7.0.0",
- "@babel/template": "^7.1.0",
- "@babel/types": "^7.0.0"
- }
- },
- "@babel/helper-get-function-arity": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
- "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+ "version": "7.9.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz",
+ "integrity": "sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw==",
"dev": true,
"requires": {
- "@babel/types": "^7.0.0"
+ "@babel/helper-get-function-arity": "^7.8.3",
+ "@babel/template": "^7.8.3",
+ "@babel/types": "^7.9.5"
+ },
+ "dependencies": {
+ "@babel/code-frame": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.8.3.tgz",
+ "integrity": "sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g==",
+ "dev": true,
+ "requires": {
+ "@babel/highlight": "^7.8.3"
+ }
+ },
+ "@babel/helper-get-function-arity": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz",
+ "integrity": "sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.8.3"
+ }
+ },
+ "@babel/highlight": {
+ "version": "7.9.0",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.9.0.tgz",
+ "integrity": "sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.9.0",
+ "chalk": "^2.0.0",
+ "js-tokens": "^4.0.0"
+ }
+ },
+ "@babel/parser": {
+ "version": "7.9.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.9.6.tgz",
+ "integrity": "sha512-AoeIEJn8vt+d/6+PXDRPaksYhnlbMIiejioBZvvMQsOjW/JYK6k/0dKnvvP3EhK5GfMBWDPtrxRtegWdAcdq9Q==",
+ "dev": true
+ },
+ "@babel/template": {
+ "version": "7.8.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.8.6.tgz",
+ "integrity": "sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg==",
+ "dev": true,
+ "requires": {
+ "@babel/code-frame": "^7.8.3",
+ "@babel/parser": "^7.8.6",
+ "@babel/types": "^7.8.6"
+ }
+ },
+ "@babel/types": {
+ "version": "7.9.6",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.9.6.tgz",
+ "integrity": "sha512-qxXzvBO//jO9ZnoasKF1uJzHd2+M6Q2ZPIVfnFps8JJvXy0ZBbwbNOmE6SGIY5XOY6d1Bo5lb9d9RJ8nv3WSeA==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-validator-identifier": "^7.9.5",
+ "lodash": "^4.17.13",
+ "to-fast-properties": "^2.0.0"
+ }
+ },
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "dev": true
+ }
}
},
"@babel/helper-hoist-variables": {
@@ -3618,6 +3674,76 @@
}
}
},
+ "@jsdevtools/rehype-inline-svg": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/@jsdevtools/rehype-inline-svg/-/rehype-inline-svg-1.1.1.tgz",
+ "integrity": "sha512-fEMItNDbftrDcO9Le5LAE7qEm7Gjyd2sEj+0fRGu1h3TK8EUjdW7RC5pyTEmBXYKRYpK7XXROW2LPiwEJ0be6A==",
+ "dev": true,
+ "requires": {
+ "rehype-parse": "^6.0.2",
+ "svgo": "^1.3.2",
+ "unified": "^8.4.2"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+ "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
+ "dev": true
+ },
+ "is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "dev": true
+ },
+ "unified": {
+ "version": "8.4.2",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-8.4.2.tgz",
+ "integrity": "sha512-JCrmN13jI4+h9UAyKEoGcDZV+i1E7BLFuG7OsaDvTXI5P0qhHX+vZO/kOhz9jn8HGENDKbwSeB0nVOg4gVStGA==",
+ "dev": true,
+ "requires": {
+ "bail": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-plain-obj": "^2.0.0",
+ "trough": "^1.0.0",
+ "vfile": "^4.0.0"
+ }
+ },
+ "unist-util-stringify-position": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
+ "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.2"
+ }
+ },
+ "vfile": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.1.tgz",
+ "integrity": "sha512-lRjkpyDGjVlBA7cDQhQ+gNcvB1BGaTHYuSOcY3S7OhDmBtnzX95FhtZZDecSTDm6aajFymyve6S5DN4ZHGezdQ==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "replace-ext": "1.0.0",
+ "unist-util-stringify-position": "^2.0.0",
+ "vfile-message": "^2.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
+ "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^2.0.0"
+ }
+ }
+ }
+ },
"@mrmlnc/readdir-enhanced": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",
@@ -3795,6 +3921,12 @@
"integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==",
"dev": true
},
+ "@types/svgo": {
+ "version": "1.3.3",
+ "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.3.tgz",
+ "integrity": "sha512-eDLVUvvTn+mol3NpP211DTH9JzSS6YKssRIhHNmXk5BiCl+gc4s+xQQjRFTSsGBohmka5qBsHX6qhL4x88Wkvg==",
+ "dev": true
+ },
"@types/unist": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.3.tgz",
@@ -4359,9 +4491,9 @@
}
},
"arg": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.0.tgz",
- "integrity": "sha512-ZWc51jO3qegGkVh8Hwpv636EkbesNV5ZNQPCtRa+0qytRYPEs9IYT9qITY9buezqUH5uqyzlWLcufrzU2rffdg==",
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
"dev": true
},
"argparse": {
@@ -5097,9 +5229,9 @@
}
},
"browserstack": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.5.2.tgz",
- "integrity": "sha512-+6AFt9HzhKykcPF79W6yjEUJcdvZOV0lIXdkORXMJftGrDl0OKWqRF4GHqpDNkxiceDT/uB7Fb/aDwktvXX7dg==",
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.0.tgz",
+ "integrity": "sha512-HJDJ0TSlmkwnt9RZ+v5gFpa1XZTBYTj0ywvLwJ3241J7vMw2jAsGNVhKHtmCOyg+VxeLZyaibO9UL71AsUeDIw==",
"dev": true,
"requires": {
"https-proxy-agent": "^2.2.1"
@@ -5415,18 +5547,26 @@
"integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
},
"catharsis": {
- "version": "0.8.9",
- "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.9.tgz",
- "integrity": "sha1-mMyJDKZS3S7w5ws3klMQ/56Q/Is=",
+ "version": "0.8.11",
+ "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.8.11.tgz",
+ "integrity": "sha512-a+xUyMV7hD1BrDQA/3iPV7oc+6W26BgVJO05PGEoatMyIuPScQKsde6i3YorWX1qs+AZjnJ18NqdKoCtKiNh1g==",
"dev": true,
"requires": {
- "underscore-contrib": "~0.3.0"
+ "lodash": "^4.17.14"
+ },
+ "dependencies": {
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+ "dev": true
+ }
}
},
"ccount": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.4.tgz",
- "integrity": "sha512-fpZ81yYfzentuieinmGnphk0pLkOTMm6MZdVqwd77ROvhko6iujLNGrHH5E7utq3ygWklwfmwuG+A7P+NpqT6w==",
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.0.5.tgz",
+ "integrity": "sha512-MOli1W+nfbPLlKEhInaxhRdp7KVLFxLN5ykwzHgLsLI3H3gs5jjFAK4Eoj3OzzcxCtumDaI8onoVDeQyWaNTkw==",
"dev": true
},
"chalk": {
@@ -5557,6 +5697,23 @@
"lighthouse-logger": "^1.0.0",
"mkdirp": "0.5.1",
"rimraf": "^2.6.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ }
}
},
"chrome-trace-event": {
@@ -6996,6 +7153,27 @@
"integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
"dev": true
},
+ "deep-rename-keys": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/deep-rename-keys/-/deep-rename-keys-0.2.1.tgz",
+ "integrity": "sha1-7eeFN9emaivmFRfir5Vtf1ij8dg=",
+ "dev": true,
+ "requires": {
+ "kind-of": "^3.0.2",
+ "rename-keys": "^1.1.2"
+ },
+ "dependencies": {
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "dev": true,
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ }
+ }
+ },
"default-gateway": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
@@ -7246,9 +7424,9 @@
}
},
"dgeni-packages": {
- "version": "0.27.3",
- "resolved": "https://registry.npmjs.org/dgeni-packages/-/dgeni-packages-0.27.3.tgz",
- "integrity": "sha512-wg4r0WjyaBaEl+VcyWq6oml8CVUe1aCCbsyMZ4xO9EqWrhULdWjh5bIiVyLzaea5LJvOHWBWpfjKuJZgX3ys8A==",
+ "version": "0.28.3",
+ "resolved": "https://registry.npmjs.org/dgeni-packages/-/dgeni-packages-0.28.3.tgz",
+ "integrity": "sha512-WyVzY3Q4ylfnc2677le5G7a7WqkF88rBSjU9IrAofqro71yzZeWLoEdr/gJY+lJZ0PrDyuRW05pFvIbvX8N0PQ==",
"dev": true,
"requires": {
"canonical-path": "^1.0.0",
@@ -7258,16 +7436,15 @@
"espree": "^2.2.3",
"estraverse": "^4.1.0",
"glob": "^7.0.5",
+ "htmlencode": "^0.0.4",
"htmlparser2": "^3.7.3",
- "lodash": "^4.13.1",
- "marked": "^0.3.2",
+ "lodash": "^4.17.13",
+ "marked": "^0.7.0",
"minimatch": "^3.0.2",
- "mkdirp": "^0.5.1",
- "mkdirp-promise": "^5.0.0",
- "node-html-encoder": "0.0.2",
+ "mkdirp": "^1.0.3",
"nunjucks": "^3.1.6",
+ "rehype": "^8.0.0",
"semver": "^5.2.0",
- "shelljs": "^0.7.0",
"source-map-support": "^0.4.15",
"spdx-license-list": "^2.1.0",
"stringmap": "^0.2.2",
@@ -7275,35 +7452,41 @@
"urlencode": "^1.1.0"
},
"dependencies": {
- "canonical-path": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz",
- "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==",
- "dev": true
- },
"espree": {
"version": "2.2.5",
"resolved": "https://registry.npmjs.org/espree/-/espree-2.2.5.tgz",
"integrity": "sha1-32kbkxCIlAKuspzAZnCMVmkLhUs=",
"dev": true
},
- "semver": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
- "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "lodash": {
+ "version": "4.17.15",
+ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
"dev": true
},
- "shelljs": {
- "version": "0.7.8",
- "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.7.8.tgz",
- "integrity": "sha1-3svPh0sNHl+3LhSxZKloMEjprLM=",
+ "mkdirp": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
+ "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==",
+ "dev": true
+ },
+ "rehype": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/rehype/-/rehype-8.0.0.tgz",
+ "integrity": "sha512-fqcYo/q4Xka0ZvS6abiHtZsN7/TauTzTZQfXqtWACo9Qz76Vv/8uzhOizAfDBjVPhbnDl3xPIMRArUdcV/xFaA==",
"dev": true,
"requires": {
- "glob": "^7.0.0",
- "interpret": "^1.0.0",
- "rechoir": "^0.6.2"
+ "rehype-parse": "^6.0.0",
+ "rehype-stringify": "^6.0.0",
+ "unified": "^7.0.0"
}
},
+ "semver": {
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "dev": true
+ },
"source-map": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
@@ -7334,9 +7517,9 @@
"dev": true
},
"diff": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.1.tgz",
- "integrity": "sha512-s2+XdvhPCOF01LRQBC8hf4vhbVmI2CGS5aZnxLJlT5FtdhPCDFq80q++zK2KlrVorVDdL5BOGZ/VfLrVtYNF+Q==",
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
+ "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
"dev": true
},
"diffie-hellman": {
@@ -10313,9 +10496,9 @@
}
},
"hast-util-from-parse5": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.1.tgz",
- "integrity": "sha512-UfPzdl6fbxGAxqGYNThRUhRlDYY7sXu6XU9nQeX4fFZtV+IHbyEJtd+DUuwOqNV4z3K05E/1rIkoVr/JHmeWWA==",
+ "version": "5.0.3",
+ "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-5.0.3.tgz",
+ "integrity": "sha512-gOc8UB99F6eWVWFtM9jUikjN7QkWxB3nY0df5Z0Zq1/Nkwl5V4hAAsl0tmwlgWl/1shlTF8DnNYLO8X6wRV9pA==",
"dev": true,
"requires": {
"ccount": "^1.0.3",
@@ -10338,9 +10521,9 @@
"dev": true
},
"hast-util-parse-selector": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.2.tgz",
- "integrity": "sha512-jIMtnzrLTjzqgVEQqPEmwEZV+ea4zHRFTP8Z2Utw0I5HuBOXHzUPPQWr6ouJdJqDKLbFU/OEiYwZ79LalZkmmw==",
+ "version": "2.2.4",
+ "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-2.2.4.tgz",
+ "integrity": "sha512-gW3sxfynIvZApL4L07wryYF4+C9VvH3AUi7LAnVXV4MneGEgwOByXvFo18BgmTWnm7oHAe874jKbIB1YhHSIzA==",
"dev": true
},
"hast-util-sanitize": {
@@ -10353,9 +10536,9 @@
}
},
"hast-util-to-html": {
- "version": "6.0.1",
- "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-6.0.1.tgz",
- "integrity": "sha512-9LjLAsO2gPO9H6N0VxZsK4sqNZY1A0lMNDfdpMseryV18Hri2++guFfPmjY58PzmtBlBvDflqktxjSm2I1o1yg==",
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-6.1.0.tgz",
+ "integrity": "sha512-IlC+LG2HGv0Y8js3wqdhg9O2sO4iVpRDbHOPwXd7qgeagpGsnY49i8yyazwqS35RA35WCzrBQE/n0M6GG/ewxA==",
"dev": true,
"requires": {
"ccount": "^1.0.0",
@@ -10363,11 +10546,22 @@
"hast-util-is-element": "^1.0.0",
"hast-util-whitespace": "^1.0.0",
"html-void-elements": "^1.0.0",
- "property-information": "^5.0.0",
+ "property-information": "^5.2.0",
"space-separated-tokens": "^1.0.0",
"stringify-entities": "^2.0.0",
"unist-util-is": "^3.0.0",
"xtend": "^4.0.1"
+ },
+ "dependencies": {
+ "property-information": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.5.0.tgz",
+ "integrity": "sha512-RgEbCx2HLa1chNgvChcx+rrCWD0ctBmGSE0M7lVm1yyv4UbvbrWoXp/BkVLZefzjrRBGW8/Js6uh/BnlHXFyjA==",
+ "dev": true,
+ "requires": {
+ "xtend": "^4.0.0"
+ }
+ }
}
},
"hast-util-to-string": {
@@ -10383,14 +10577,14 @@
"dev": true
},
"hastscript": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.0.tgz",
- "integrity": "sha512-7mOQX5VfVs/gmrOGlN8/EDfp1GqV6P3gTNVt+KnX4gbYhpASTM8bklFdFQCbFRAadURXAmw0R1QQdBdqp7jswQ==",
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-5.1.2.tgz",
+ "integrity": "sha512-WlztFuK+Lrvi3EggsqOkQ52rKbxkXL3RwB6t5lwoa8QLMemoWfBuL43eDrwOamJyR7uKQKdmKYaBH1NZBiIRrQ==",
"dev": true,
"requires": {
"comma-separated-tokens": "^1.0.0",
- "hast-util-parse-selector": "^2.2.0",
- "property-information": "^5.0.1",
+ "hast-util-parse-selector": "^2.0.0",
+ "property-information": "^5.0.0",
"space-separated-tokens": "^1.0.0"
}
},
@@ -10508,6 +10702,12 @@
"integrity": "sha512-yMk3naGPLrfvUV9TdDbuYXngh/TpHbA6TrOw3HL9kS8yhwx7i309BReNg7CbAJXGE+UMJ6je5OqJ7lC63o6YuQ==",
"dev": true
},
+ "htmlencode": {
+ "version": "0.0.4",
+ "resolved": "https://registry.npmjs.org/htmlencode/-/htmlencode-0.0.4.tgz",
+ "integrity": "sha1-9+LWr74YqHp45jujMI51N2Z0Dj8=",
+ "dev": true
+ },
"htmlparser2": {
"version": "3.10.1",
"resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
@@ -10523,9 +10723,9 @@
},
"dependencies": {
"readable-stream": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.3.0.tgz",
- "integrity": "sha512-EsI+s3k3XsW+fU8fQACLN59ky34AZ14LoeVZpYwmZvldCFo0r0gnelwF2TcMjLor/BTL5aDJVBMkss0dthToPw==",
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+ "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
"dev": true,
"requires": {
"inherits": "^2.0.3",
@@ -11090,8 +11290,7 @@
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
- "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
- "dev": true
+ "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
},
"is-callable": {
"version": "1.1.5",
@@ -11395,9 +11594,9 @@
"dev": true
},
"is-whitespace-character": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.3.tgz",
- "integrity": "sha512-SNPgMLz9JzPccD3nPctcj8sZlX9DAMJSKH8bP7Z6bohCwuNgX8xbWr1eTAYXX9Vpi/aSn8Y1akL9WgM3t43YNQ==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-whitespace-character/-/is-whitespace-character-1.0.4.tgz",
+ "integrity": "sha512-SDweEzfIZM0SJV0EUga669UTKlmL0Pq8Lno0QDQsPnvECB3IM2aP0gdx5TrU0A01MAPfViaZiI2V1QMZLaKK5w==",
"dev": true
},
"is-windows": {
@@ -11407,9 +11606,9 @@
"dev": true
},
"is-word-character": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.3.tgz",
- "integrity": "sha512-0wfcrFgOOOBdgRNT9H33xe6Zi6yhX/uoc4U8NBZGeQQB0ctU1dnlNTyL9JM2646bHDTpsDm1Brb3VPoCIMrd/A==",
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-word-character/-/is-word-character-1.0.4.tgz",
+ "integrity": "sha512-5SMO8RVennx3nZrqtKwCGyyetPE9VDba5ugvKLaD4KopPG5kR4mQ7tNt/r7feL5yt5h3lpuBbIUmCOG2eSzXHA==",
"dev": true
},
"is-wsl": {
@@ -12620,6 +12819,21 @@
"pify": "^3.0.0"
}
},
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+ "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
"opn": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
@@ -13159,9 +13373,9 @@
}
},
"make-error": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.5.tgz",
- "integrity": "sha512-c3sIjNUow0+8swNwVpqoH4YCShKNFkMaw6oH1mNS2haDZQqkeZFlHS3dhoeEbKKmJB4vXpJucU6oH75aDYeE9g==",
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
"dev": true
},
"make-fetch-happen": {
@@ -13308,9 +13522,9 @@
"dev": true
},
"marked": {
- "version": "0.3.19",
- "resolved": "https://registry.npmjs.org/marked/-/marked-0.3.19.tgz",
- "integrity": "sha512-ea2eGWOqNxPcXv8dyERdSr/6FmzvWwzjMxpfGB/sbMccXoct+xY+YukPD+QTUZwyvK7BZwcr4m21WBOW41pAkg==",
+ "version": "0.7.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
+ "integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==",
"dev": true
},
"marky": {
@@ -13328,6 +13542,13 @@
"charenc": "~0.0.1",
"crypt": "~0.0.1",
"is-buffer": "~1.1.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "0.0.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+ "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+ }
}
},
"md5.js": {
@@ -13745,31 +13966,22 @@
}
},
"mkdirp": {
- "version": "0.5.1",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
- "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+ "version": "0.5.5",
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": {
- "minimist": "0.0.8"
+ "minimist": "^1.2.5"
},
"dependencies": {
"minimist": {
- "version": "0.0.8",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
- "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
"dev": true
}
}
},
- "mkdirp-promise": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz",
- "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=",
- "dev": true,
- "requires": {
- "mkdirp": "*"
- }
- },
"morgan": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/morgan/-/morgan-1.9.1.tgz",
@@ -13927,55 +14139,10 @@
"integrity": "sha512-MmbQJ2MTESTjt3Gi/3yG1wGpIMhUfcIypUCGtTizFR9IiccFwxSpfp0vtIZlkFclEqERemxfnSdZEMR9VqqEFQ==",
"dev": true
},
- "node-html-encoder": {
- "version": "0.0.2",
- "resolved": "https://registry.npmjs.org/node-html-encoder/-/node-html-encoder-0.0.2.tgz",
- "integrity": "sha1-iXNhjXJ9pVJqgwtH0HwNgD4KFcY=",
- "dev": true
- },
- "node-libs-browser": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
- "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
- "dev": true,
- "requires": {
- "assert": "^1.1.1",
- "browserify-zlib": "^0.2.0",
- "buffer": "^4.3.0",
- "console-browserify": "^1.1.0",
- "constants-browserify": "^1.0.0",
- "crypto-browserify": "^3.11.0",
- "domain-browser": "^1.1.1",
- "events": "^3.0.0",
- "https-browserify": "^1.0.0",
- "os-browserify": "^0.3.0",
- "path-browserify": "0.0.1",
- "process": "^0.11.10",
- "punycode": "^1.2.4",
- "querystring-es3": "^0.2.0",
- "readable-stream": "^2.3.3",
- "stream-browserify": "^2.0.1",
- "stream-http": "^2.7.2",
- "string_decoder": "^1.0.0",
- "timers-browserify": "^2.0.4",
- "tty-browserify": "0.0.0",
- "url": "^0.11.0",
- "util": "^0.11.0",
- "vm-browserify": "^1.0.1"
- },
- "dependencies": {
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
- "dev": true
- }
- }
- },
- "node-releases": {
- "version": "1.1.55",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.55.tgz",
- "integrity": "sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w==",
+ "node-releases": {
+ "version": "1.1.55",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.55.tgz",
+ "integrity": "sha512-H3R3YR/8TjT5WPin/wOoHOUPHgvj8leuU/Keta/rwelEQN9pA/S2Dx8/se4pZ2LBxSd0nAGzsNzhqwa77v7F1w==",
"dev": true
},
"nomnom": {
@@ -14222,36 +14389,137 @@
"dev": true
},
"nunjucks": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.0.tgz",
- "integrity": "sha512-YS/qEQ6N7qCnUdm6EoYRBfJUdWNT0PpKbbRnogV2XyXbBm2STIP1O6yrdZHgwMVK7fIYUx7i8+yatEixnXSB1w==",
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/nunjucks/-/nunjucks-3.2.1.tgz",
+ "integrity": "sha512-LYlVuC1ZNSalQQkLNNPvcgPt2M9FTY9bs39mTCuFXtqh7jWbYzhDlmz2M6onPiXEhdZo+b9anRhc+uBGuJZ2bQ==",
"dev": true,
"requires": {
"a-sync-waterfall": "^1.0.0",
"asap": "^2.0.3",
- "chokidar": "^2.0.0",
- "yargs": "^3.32.0"
+ "chokidar": "^3.3.0",
+ "commander": "^3.0.2"
},
"dependencies": {
- "y18n": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
- "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=",
+ "anymatch": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
+ "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
+ "binary-extensions": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz",
+ "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==",
+ "dev": true,
+ "optional": true
+ },
+ "braces": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+ "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fill-range": "^7.0.1"
+ }
+ },
+ "chokidar": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.0.tgz",
+ "integrity": "sha512-aXAaho2VJtisB/1fg1+3nlLJqGOuewTzQpd/Tz0yTg2R0e4IGtshYvtjowyEumcBv2z+y4+kc75Mz7j5xJskcQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "anymatch": "~3.1.1",
+ "braces": "~3.0.2",
+ "fsevents": "~2.1.2",
+ "glob-parent": "~5.1.0",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.4.0"
+ }
+ },
+ "commander": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz",
+ "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==",
"dev": true
},
- "yargs": {
- "version": "3.32.0",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
- "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
+ "fill-range": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+ "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"dev": true,
+ "optional": true,
"requires": {
- "camelcase": "^2.0.1",
- "cliui": "^3.0.3",
- "decamelize": "^1.1.1",
- "os-locale": "^1.4.0",
- "string-width": "^1.0.1",
- "window-size": "^0.1.4",
- "y18n": "^3.2.0"
+ "to-regex-range": "^5.0.1"
+ }
+ },
+ "fsevents": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
+ "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+ "dev": true,
+ "optional": true
+ },
+ "glob-parent": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
+ "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ },
+ "is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
+ "is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "dev": true,
+ "optional": true
+ },
+ "normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "optional": true
+ },
+ "readdirp": {
+ "version": "3.4.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
+ "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
+ "to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "is-number": "^7.0.0"
}
}
}
@@ -14396,6 +14664,56 @@
"integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
"dev": true
},
+ "omit-deep": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/omit-deep/-/omit-deep-0.3.0.tgz",
+ "integrity": "sha1-IcivNJm8rdKWUaIyy8rLxSRF6+w=",
+ "dev": true,
+ "requires": {
+ "is-plain-object": "^2.0.1",
+ "unset-value": "^0.1.1"
+ },
+ "dependencies": {
+ "has-value": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+ "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+ "dev": true,
+ "requires": {
+ "get-value": "^2.0.3",
+ "has-values": "^0.1.4",
+ "isobject": "^2.0.0"
+ },
+ "dependencies": {
+ "isobject": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+ "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+ "dev": true,
+ "requires": {
+ "isarray": "1.0.0"
+ }
+ }
+ }
+ },
+ "has-values": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+ "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+ "dev": true
+ },
+ "unset-value": {
+ "version": "0.1.2",
+ "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-0.1.2.tgz",
+ "integrity": "sha1-UGgQuGfyfCpabpsEgzYx9t5Y0xA=",
+ "dev": true,
+ "requires": {
+ "has-value": "^0.3.1",
+ "isobject": "^3.0.0"
+ }
+ }
+ }
+ },
"on-finished": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz",
@@ -14696,9 +15014,9 @@
},
"dependencies": {
"semver": {
- "version": "5.7.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
- "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
+ "version": "5.7.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+ "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
"dev": true
}
}
@@ -14786,6 +15104,14 @@
"integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
"dev": true
},
+ "kind-of": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+ "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+ "requires": {
+ "is-buffer": "^1.1.5"
+ }
+ },
"npm-package-arg": {
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz",
@@ -14827,9 +15153,9 @@
}
},
"pako": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz",
- "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==",
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+ "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
"dev": true
},
"parallel-transform": {
@@ -16197,6 +16523,12 @@
"integrity": "sha512-w7fLxIRCRT7U8Qu53jQnJyPkYZIaR4n5151KMfcJlO/A9397Wxb1amJvROTK6TOnp7PfoAmg/qXiNHI+08jRfA==",
"dev": true
},
+ "queue-microtask": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.1.2.tgz",
+ "integrity": "sha512-F9wwNePtXrzZenAB3ax0Y8TSKGvuB7Qw16J30hspEUTbfUM+H827XyN3rlpwhVmtm5wuZtbKIHjOnwDn7MUxWQ==",
+ "dev": true
+ },
"randombytes": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
@@ -16662,25 +16994,85 @@
}
},
"rehype": {
- "version": "8.0.0",
- "resolved": "https://registry.npmjs.org/rehype/-/rehype-8.0.0.tgz",
- "integrity": "sha512-fqcYo/q4Xka0ZvS6abiHtZsN7/TauTzTZQfXqtWACo9Qz76Vv/8uzhOizAfDBjVPhbnDl3xPIMRArUdcV/xFaA==",
+ "version": "10.0.0",
+ "resolved": "https://registry.npmjs.org/rehype/-/rehype-10.0.0.tgz",
+ "integrity": "sha512-0W8M4Y91b2QuzDSTjkZgBOJo79bP089YbSQNPMqebuUVrp6iveoi+Ra6/H7fJwUxq8FCHGCGzkLaq3fvO9XnVg==",
"dev": true,
"requires": {
"rehype-parse": "^6.0.0",
"rehype-stringify": "^6.0.0",
- "unified": "^7.0.0"
+ "unified": "^9.0.0"
+ },
+ "dependencies": {
+ "is-buffer": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.4.tgz",
+ "integrity": "sha512-Kq1rokWXOPXWuaMAqZiJW4XxsmD9zGx9q4aePabbn3qCRGedtH7Cm+zV8WETitMfu1wdh+Rvd6w5egwSngUX2A==",
+ "dev": true
+ },
+ "is-plain-obj": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz",
+ "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==",
+ "dev": true
+ },
+ "unified": {
+ "version": "9.0.0",
+ "resolved": "https://registry.npmjs.org/unified/-/unified-9.0.0.tgz",
+ "integrity": "sha512-ssFo33gljU3PdlWLjNp15Inqb77d6JnJSfyplGJPT/a+fNRNyCBeveBAYJdO5khKdF6WVHa/yYCC7Xl6BDwZUQ==",
+ "dev": true,
+ "requires": {
+ "bail": "^1.0.0",
+ "extend": "^3.0.0",
+ "is-buffer": "^2.0.0",
+ "is-plain-obj": "^2.0.0",
+ "trough": "^1.0.0",
+ "vfile": "^4.0.0"
+ }
+ },
+ "unist-util-stringify-position": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz",
+ "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.2"
+ }
+ },
+ "vfile": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.1.0.tgz",
+ "integrity": "sha512-BaTPalregj++64xbGK6uIlsurN3BCRNM/P2Pg8HezlGzKd1O9PrwIac6bd9Pdx2uTb0QHoioZ+rXKolbVXEgJg==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "is-buffer": "^2.0.0",
+ "replace-ext": "1.0.0",
+ "unist-util-stringify-position": "^2.0.0",
+ "vfile-message": "^2.0.0"
+ }
+ },
+ "vfile-message": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz",
+ "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==",
+ "dev": true,
+ "requires": {
+ "@types/unist": "^2.0.0",
+ "unist-util-stringify-position": "^2.0.0"
+ }
+ }
}
},
"rehype-parse": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.0.tgz",
- "integrity": "sha512-V2OjMD0xcSt39G4uRdMTqDXXm6HwkUbLMDayYKA/d037j8/OtVSQ+tqKwYWOuyBeoCs/3clXRe30VUjeMDTBSA==",
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-6.0.2.tgz",
+ "integrity": "sha512-0S3CpvpTAgGmnz8kiCyFLGuW5yA4OQhyNTm/nwPopZ7+PI11WnGl1TTWTGv/2hPEe/g2jRLlhVVSsoDH8waRug==",
"dev": true,
"requires": {
"hast-util-from-parse5": "^5.0.0",
"parse5": "^5.0.0",
- "xtend": "^4.0.1"
+ "xtend": "^4.0.0"
}
},
"rehype-slug": {
@@ -16697,13 +17089,13 @@
}
},
"rehype-stringify": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-6.0.0.tgz",
- "integrity": "sha512-grV/hhA7z9GbUJZk0ILzprSE0YY9lvTmYuvgRjXdFXrrag5gNeqXBQIuG1m4zFW6PFm0YYnJ/qgf5y6yui4VsA==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-6.0.1.tgz",
+ "integrity": "sha512-JfEPRDD4DiG7jet4md7sY07v6ACeb2x+9HWQtRPm2iA6/ic31hCv1SNBUtpolJASxQ/D8gicXiviW4TJKEMPKQ==",
"dev": true,
"requires": {
"hast-util-to-html": "^6.0.0",
- "xtend": "^4.0.1"
+ "xtend": "^4.0.0"
}
},
"remark": {
@@ -16832,6 +17224,12 @@
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
"dev": true
},
+ "rename-keys": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/rename-keys/-/rename-keys-1.2.0.tgz",
+ "integrity": "sha512-U7XpAktpbSgHTRSNRrjKSrjYkZKuhUukfoBlXWXUExCAqhzh1TU3BDRAfJmarcl5voKS+pbKU9MvyLWKZ4UEEg==",
+ "dev": true
+ },
"repeat-element": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz",
@@ -17101,6 +17499,12 @@
"aproba": "^1.1.1"
}
},
+ "rusha": {
+ "version": "0.8.13",
+ "resolved": "https://registry.npmjs.org/rusha/-/rusha-0.8.13.tgz",
+ "integrity": "sha1-mghOe4YLF7/zAVuSxnpqM2GRUTo=",
+ "dev": true
+ },
"rx-lite": {
"version": "3.1.2",
"resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-3.1.2.tgz",
@@ -17551,6 +17955,16 @@
"integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=",
"dev": true
},
+ "simple-sha1": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/simple-sha1/-/simple-sha1-3.0.1.tgz",
+ "integrity": "sha512-q7ehqWfHc1VhOm7sW099YDZ4I0yYX7rqyhqqhHV1IYeUTjPOhHyD3mXvv8k2P+rO7+7c8R4/D+8ffzC9BE7Cqg==",
+ "dev": true,
+ "requires": {
+ "queue-microtask": "^1.1.2",
+ "rusha": "^0.8.1"
+ }
+ },
"simple-swizzle": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
@@ -18639,6 +19053,25 @@
"stable": "^0.1.8",
"unquote": "~1.1.1",
"util.promisify": "~1.0.0"
+ },
+ "dependencies": {
+ "sax": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+ "dev": true
+ }
+ }
+ },
+ "svgson": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/svgson/-/svgson-4.1.0.tgz",
+ "integrity": "sha512-DodISxHtdLKUghDYA+PGK4Qq350+CbBAkdvGLkBFSmWd9WKSg4dijgjB1IiRPTmsUCd+a7KYe+ILHtklYgQyzQ==",
+ "dev": true,
+ "requires": {
+ "deep-rename-keys": "^0.2.1",
+ "omit-deep": "0.3.0",
+ "xml-reader": "2.4.3"
}
},
"swap-case": {
@@ -18651,6 +19084,72 @@
"upper-case": "^1.1.1"
}
},
+ "swirly-parser": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/swirly-parser/-/swirly-parser-0.13.6.tgz",
+ "integrity": "sha512-LhWLTmE1Afq/N5XaIU3BlH3/pi+NfJ3I74iM6kWew6M4D3ZjEDK7aPRg9H4yiRDw2oTvNkc+2jg4P4put02IkQ==",
+ "dev": true,
+ "requires": {
+ "swirly-parser-rxjs": "^0.13.6"
+ }
+ },
+ "swirly-parser-rxjs": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/swirly-parser-rxjs/-/swirly-parser-rxjs-0.13.6.tgz",
+ "integrity": "sha512-vR7r37m61r//8tqTD8BDtuJQgTN56SQU4J/EN+2rSfX1eqjm4BPzbJeOXDYTMDoJUAemdy/pXUNNsyp6PSw54A==",
+ "dev": true
+ },
+ "swirly-renderer": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/swirly-renderer/-/swirly-renderer-0.13.6.tgz",
+ "integrity": "sha512-tlLFvO4alm6mmXYFhc1c3b4GCJMAR9Wt6+Cf/xtoiO0RbQ/Fx7OuGtTlGJEcTOq7bMlwc2p21maYQ4eZzDDCUQ==",
+ "dev": true,
+ "requires": {
+ "simple-sha1": "^3.0.1",
+ "swirly-theme-default-light": "^0.13.6"
+ },
+ "dependencies": {
+ "swirly-theme-default-base": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/swirly-theme-default-base/-/swirly-theme-default-base-0.13.6.tgz",
+ "integrity": "sha512-dzqLqAh2Vz+w+MAZFxkD/iV6+FCRPhW1U4ST4Pys12pc72zCtBhJXfL5UT2h1sGb1HlnEaI3JyK4LRhiRhenJg==",
+ "dev": true
+ },
+ "swirly-theme-default-light": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/swirly-theme-default-light/-/swirly-theme-default-light-0.13.6.tgz",
+ "integrity": "sha512-pEbbrTEU917xASubOz+JMNdFb7fSuKpkXhwUYcMXLWM+EtYcltsdvIqEjPimo3snBvLVYeW6k10mNhKtoTesEQ==",
+ "dev": true,
+ "requires": {
+ "swirly-theme-default-base": "^0.13.6"
+ }
+ }
+ }
+ },
+ "swirly-renderer-node": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/swirly-renderer-node/-/swirly-renderer-node-0.13.6.tgz",
+ "integrity": "sha512-7SLVRacSiEZ/x1VWoTeUjPjFiwsAxRBkPMsLbAa8Q7c4z+ZOUEKFOrQjNUEKG1qYEoYJI1PE6oWQVFVVfDcbcA==",
+ "dev": true,
+ "requires": {
+ "swirly-renderer": "^0.13.6",
+ "xmldom": "^0.3.0"
+ },
+ "dependencies": {
+ "xmldom": {
+ "version": "0.3.0",
+ "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.3.0.tgz",
+ "integrity": "sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==",
+ "dev": true
+ }
+ }
+ },
+ "swirly-types": {
+ "version": "0.13.6",
+ "resolved": "https://registry.npmjs.org/swirly-types/-/swirly-types-0.13.6.tgz",
+ "integrity": "sha512-97a0Vzp1E4OhcliUML+xuYUdKxTsDeFfsVgHBiscI9DgfsvxuZZv8dXEYP0oqQO4NwzAgyNJNhB4ggpgOx9xdQ==",
+ "dev": true
+ },
"symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
@@ -19200,16 +19699,34 @@
"dev": true
},
"ts-node": {
- "version": "8.2.0",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.2.0.tgz",
- "integrity": "sha512-m8XQwUurkbYqXrKqr3WHCW310utRNvV5OnRVeISeea7LoCWVcdfeB/Ntl8JYWFh+WRoUAdBgESrzKochQt7sMw==",
+ "version": "8.10.1",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.1.tgz",
+ "integrity": "sha512-bdNz1L4ekHiJul6SHtZWs1ujEKERJnHs4HxN7rjTyyVOFf3HaJ6sLqe6aPG62XTzAB/63pKRh5jTSWL0D7bsvw==",
"dev": true,
"requires": {
"arg": "^4.1.0",
"diff": "^4.0.1",
"make-error": "^1.1.1",
- "source-map-support": "^0.5.6",
- "yn": "^3.0.0"
+ "source-map-support": "^0.5.17",
+ "yn": "3.1.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true
+ },
+ "source-map-support": {
+ "version": "0.5.19",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+ "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+ "dev": true,
+ "requires": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ }
}
},
"tslib": {
@@ -19382,15 +19899,6 @@
"integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag=",
"dev": true
},
- "underscore-contrib": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/underscore-contrib/-/underscore-contrib-0.3.0.tgz",
- "integrity": "sha1-ZltmwkeD+PorGMn4y7Dix9SMJsc=",
- "dev": true,
- "requires": {
- "underscore": "1.6.0"
- }
- },
"unherit": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/unherit/-/unherit-1.1.2.tgz",
@@ -20159,9 +20667,9 @@
"integrity": "sha512-TOMFWtQdxzjWp8qx4DAraTWTsdhxVSiWa6NkPFSaPtZ1diKUxTn4yTix73A1euG1WbSOMMPcY51cnjTIHrGtDA=="
},
"web-namespaces": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.3.tgz",
- "integrity": "sha512-r8sAtNmgR0WKOKOxzuSgk09JsHlpKlB+uHi937qypOu3PZ17UxPrierFKDye/uNHjNTTEshu5PId8rojIPj/tA==",
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-1.1.4.tgz",
+ "integrity": "sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==",
"dev": true
},
"webdriver-js-extender": {
@@ -20277,6 +20785,43 @@
"path-is-absolute": "^1.0.0"
}
},
+ "node-libs-browser": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+ "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+ "dev": true,
+ "requires": {
+ "assert": "^1.1.1",
+ "browserify-zlib": "^0.2.0",
+ "buffer": "^4.3.0",
+ "console-browserify": "^1.1.0",
+ "constants-browserify": "^1.0.0",
+ "crypto-browserify": "^3.11.0",
+ "domain-browser": "^1.1.1",
+ "events": "^3.0.0",
+ "https-browserify": "^1.0.0",
+ "os-browserify": "^0.3.0",
+ "path-browserify": "0.0.1",
+ "process": "^0.11.10",
+ "punycode": "^1.2.4",
+ "querystring-es3": "^0.2.0",
+ "readable-stream": "^2.3.3",
+ "stream-browserify": "^2.0.1",
+ "stream-http": "^2.7.2",
+ "string_decoder": "^1.0.0",
+ "timers-browserify": "^2.0.4",
+ "tty-browserify": "0.0.0",
+ "url": "^0.11.0",
+ "util": "^0.11.0",
+ "vm-browserify": "^1.0.1"
+ }
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+ "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+ "dev": true
+ },
"schema-utils": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
@@ -20984,12 +21529,47 @@
"os-homedir": "^1.0.0"
}
},
+ "xml-lexer": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/xml-lexer/-/xml-lexer-0.2.2.tgz",
+ "integrity": "sha1-UYGTpKozTVj8fSSLVJB5uJkH4EY=",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "^2.0.0"
+ },
+ "dependencies": {
+ "eventemitter3": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
+ "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=",
+ "dev": true
+ }
+ }
+ },
"xml-name-validator": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz",
"integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==",
"dev": true
},
+ "xml-reader": {
+ "version": "2.4.3",
+ "resolved": "https://registry.npmjs.org/xml-reader/-/xml-reader-2.4.3.tgz",
+ "integrity": "sha1-n4EMr3xCWlqvuEixxFEDyecddTA=",
+ "dev": true,
+ "requires": {
+ "eventemitter3": "^2.0.0",
+ "xml-lexer": "^0.2.2"
+ },
+ "dependencies": {
+ "eventemitter3": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz",
+ "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=",
+ "dev": true
+ }
+ }
+ },
"xml2js": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
@@ -21223,9 +21803,9 @@
"dev": true
},
"yn": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.0.tgz",
- "integrity": "sha512-kKfnnYkbTfrAdd0xICNFw7Atm8nKpLcLv9AZGEt+kczL/WQVai4e2V6ZN8U/O+iI6WrNuJjNNOyu4zfhl9D3Hg==",
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
"dev": true
},
"zip-stream": {
diff --git a/docs_app/package.json b/docs_app/package.json
index b0589f814b..280b73d884 100644
--- a/docs_app/package.json
+++ b/docs_app/package.json
@@ -1,8 +1,8 @@
{
- "name": "rxjs.io",
+ "name": "rxjs.dev",
"version": "1.0.0",
"main": "index.js",
- "repository": "git@github.com:ReactiveX/ rxjs",
+ "repository": "git@github.com:ReactiveX/rxjs",
"author": "RxJS",
"license": "MIT",
"scripts": {
@@ -37,7 +37,8 @@
"build-ie-polyfills": "webpack-cli src/ie-polyfills.js -o src/generated/ie-polyfills.min.js --mode production",
"update-webdriver": "webdriver-manager update --standalone false --gecko false $CHROMEDRIVER_VERSION_ARG",
"~~build": "ng build --configuration=stable --prod --source-map",
- "~~clean-generated": "node --eval \"require('shelljs').rm('-rf', 'src/generated')\""
+ "~~clean-generated": "node --eval \"require('shelljs').rm('-rf', 'src/generated')\"",
+ "build:marbles": "ts-node -P ./tools/marbles/tsconfig.marbles.json ./tools/marbles/scripts/index.ts"
},
"engines": {
"node": ">=10.9"
@@ -70,9 +71,11 @@
"@angular-devkit/build-angular": "~0.901.4",
"@angular/cli": "^9.1.4",
"@angular/compiler-cli": "^9.1.4",
+ "@jsdevtools/rehype-inline-svg": "^1.1.1",
"@types/jasmine": "^3.3.13",
"@types/jasminewd2": "^2.0.3",
"@types/node": "^12.11.1",
+ "@types/svgo": "^1.3.3",
"archiver": "^3.0.0",
"canonical-path": "^1.0.0",
"chalk": "^2.1.0",
@@ -82,7 +85,8 @@
"cross-spawn": "^6.0.5",
"css-selector-parser": "^1.3.0",
"dgeni": "^0.4.12",
- "dgeni-packages": "^0.27.3",
+ "dgeni-packages": "^0.28.3",
+ "ee-first": "^1.1.1",
"entities": "^1.1.1",
"eslint": "^5.16.0",
"eslint-plugin-jasmine": "^2.2.0",
@@ -112,13 +116,18 @@
"lunr": "^2.1.0",
"mkdirp": "^0.5.1",
"protractor": "^5.2.0",
- "rehype": "^8.0.0",
+ "rehype": "^10.0.0",
"rehype-slug": "^2.0.3",
"remark": "^10.0.1",
"remark-html": "^9.0.0",
"rimraf": "^2.6.1",
"semver": "^6.1.1",
"shelljs": "^0.8.3",
+ "svgo": "^1.3.2",
+ "svgson": "^4.1.0",
+ "swirly-parser": "^0.13.6",
+ "swirly-renderer-node": "^0.13.6",
+ "swirly-types": "^0.13.6",
"tree-kill": "^1.1.0",
"ts-node": "^8.2.0",
"tslint": "^5.17.0",
diff --git a/docs_app/tools/marbles/diagrams/concatAll.txt b/docs_app/tools/marbles/diagrams/concatAll.txt
new file mode 100644
index 0000000000..eddffb105e
--- /dev/null
+++ b/docs_app/tools/marbles/diagrams/concatAll.txt
@@ -0,0 +1,11 @@
+x = ----a------b------|
+
+y = ---c-d---|
+
+z = ---e--f-|
+
+-x---y----z------|
+
+> concatAll
+
+-----a------b---------c-d------e--f-|
\ No newline at end of file
diff --git a/docs_app/tools/marbles/scripts/index.ts b/docs_app/tools/marbles/scripts/index.ts
new file mode 100644
index 0000000000..73a469ca64
--- /dev/null
+++ b/docs_app/tools/marbles/scripts/index.ts
@@ -0,0 +1,41 @@
+import { renderMarbleDiagram } from 'swirly-renderer-node';
+import { readdir, readFileSync, writeFileSync } from 'fs';
+import { join } from 'path';
+import { parseMarbleDiagramSpec } from 'swirly-parser';
+import { DiagramStyles } from 'swirly-types';
+import * as SVGO from 'svgo';
+
+const styles: DiagramStyles = {
+ frame_width: 20,
+ completion_height: 20,
+ higher_order_angle: 30,
+ arrow_fill_color: 'black',
+ background_color: 'rgba(255, 255, 255, 0.0)',
+ operator_fill_color: 'rgba(255, 255, 255, 0.0)'
+};
+
+const optimizeXml = async (unoptXml: string): Promise => {
+ const svgo = new SVGO({ plugins: [{ removeViewBox: false }] });
+ const { data } = await svgo.optimize(unoptXml);
+ return data;
+};
+
+const renderMarble = (path: string, fileName: string): Promise => {
+ const file = readFileSync(join(path, fileName));
+ const diagramSpec = parseMarbleDiagramSpec(file.toString());
+ const { xml: unoptXml } = renderMarbleDiagram(diagramSpec, { styles });
+ const optimizedSVGPromise = optimizeXml(unoptXml);
+ return optimizedSVGPromise.then((svgXML) => {
+ const svgFileName = fileName.split('.')[0] + '.svg';
+ const svgPath = join(process.cwd(), 'assets', 'images', 'svgs', svgFileName);
+ writeFileSync(svgPath, svgXML, { encoding: 'utf-8', flag: 'w' });
+ return true;
+ });
+};
+
+const diagramsPath = join(process.cwd(), 'tools', 'marbles', 'diagrams');
+readdir(diagramsPath, (err, files) => {
+ Promise.all(files.map(fileName => renderMarble(diagramsPath, fileName)))
+ .then(_ => console.log('All SVGs created'))
+ .catch(e => console.error('generating SVGs failed', e));
+});
\ No newline at end of file
diff --git a/docs_app/tools/marbles/tsconfig.marbles.json b/docs_app/tools/marbles/tsconfig.marbles.json
new file mode 100644
index 0000000000..8708c163d8
--- /dev/null
+++ b/docs_app/tools/marbles/tsconfig.marbles.json
@@ -0,0 +1,7 @@
+{
+ "extends": "../../tsconfig.json",
+ "compilerOptions": {
+ "module": "commonjs"
+ }
+ }
+
\ No newline at end of file
diff --git a/docs_app/tools/transforms/angular-api-package/index.js b/docs_app/tools/transforms/angular-api-package/index.js
index 5217bb65c7..f88940c3c3 100644
--- a/docs_app/tools/transforms/angular-api-package/index.js
+++ b/docs_app/tools/transforms/angular-api-package/index.js
@@ -195,7 +195,10 @@ module.exports = new Package('angular-api', [basePackage, typeScriptPackage])
.config(function(convertToJsonProcessor, postProcessHtml, API_DOC_TYPES_TO_RENDER, API_DOC_TYPES, autoLinkCode, embedMarbleDiagramsPostProcessor) {
convertToJsonProcessor.docTypes = convertToJsonProcessor.docTypes.concat(API_DOC_TYPES_TO_RENDER);
postProcessHtml.docTypes = convertToJsonProcessor.docTypes.concat(API_DOC_TYPES_TO_RENDER);
- postProcessHtml.plugins = [embedMarbleDiagramsPostProcessor.process];
+ postProcessHtml.plugins = [
+ [embedMarbleDiagramsPostProcessor.process],
+ [require('@jsdevtools/rehype-inline-svg'), {maxImageSize: 12000}]
+ ];
autoLinkCode.docTypes = API_DOC_TYPES;
autoLinkCode.codeElements = ['code', 'code-example', 'code-pane'];
});
diff --git a/docs_app/tools/transforms/post-process-package/processors/post-process-html.js b/docs_app/tools/transforms/post-process-package/processors/post-process-html.js
index d024a76f1a..d7b7e5da0a 100644
--- a/docs_app/tools/transforms/post-process-package/processors/post-process-html.js
+++ b/docs_app/tools/transforms/post-process-package/processors/post-process-html.js
@@ -17,7 +17,7 @@ const rehype = require('rehype');
* @property plugins {Function[]} the rehype plugins that will modify the HAST.
*
*/
-module.exports = function postProcessHtml(log, createDocMessage) {
+module.exports = function postProcessHtml() {
return {
$runAfter: ['docs-rendered'],
$runBefore: ['writing-files'],
@@ -25,12 +25,29 @@ module.exports = function postProcessHtml(log, createDocMessage) {
plugins: [],
$process(docs) {
const engine = rehype()
- .data('settings', { fragment: true });
- this.plugins.forEach(plugin => engine.use(plugin));
+ .data('settings', { fragment: true });
+ this.plugins.forEach(plugin => engine.use(...plugin));
- let vFile;
+ return Promise.all(docs
+ .filter(doc => this.docTypes.indexOf(doc.docType) !== -1)
+ .map(doc => {
+ doc.contents = doc.renderedContent;
+ return engine.process(doc).catch((e) => {
+ throw new Error(`processing markdown to html failed! ${e}`);
+ });
+ })
+ ).then(processedDocs => {
+ return processedDocs.map(doc => {
+ doc.renderedContent = doc.contents;
+ return doc;
+ });
+ });
+ }
+ };
+};
- docs
+/**
+ * docs
.filter(doc => this.docTypes.indexOf(doc.docType) !== -1)
.forEach(doc => {
try {
@@ -44,6 +61,4 @@ module.exports = function postProcessHtml(log, createDocMessage) {
throw new Error(createDocMessage(e.message, doc));
}
});
- }
- };
-};
+ */
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
index 755fdd2f4c..f1a03a5afd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -565,18 +565,6 @@
"integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=",
"dev": true
},
- "array-parallel": {
- "version": "0.1.3",
- "resolved": "https://registry.npmjs.org/array-parallel/-/array-parallel-0.1.3.tgz",
- "integrity": "sha1-j3hTCJJu1apHjEfmTRszS2wMlH0=",
- "dev": true
- },
- "array-series": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/array-series/-/array-series-0.1.5.tgz",
- "integrity": "sha1-3103v8XC7wdV4qpPkv6ufUtaly8=",
- "dev": true
- },
"array-union": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
@@ -763,8 +751,7 @@
"balanced-match": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
},
"base": {
"version": "0.11.2",
@@ -865,7 +852,6 @@
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
"integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "dev": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
@@ -1534,8 +1520,7 @@
"commander": {
"version": "2.20.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
- "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
- "dev": true
+ "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
},
"commondir": {
"version": "1.0.1",
@@ -1552,8 +1537,7 @@
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
"concat-stream": {
"version": "1.6.2",
@@ -2797,7 +2781,6 @@
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
- "dev": true,
"requires": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
@@ -2819,8 +2802,7 @@
"fs.realpath": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
- "dev": true
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
},
"fsevents": {
"version": "1.2.12",
@@ -3433,7 +3415,6 @@
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
- "dev": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
@@ -3491,45 +3472,6 @@
}
}
},
- "gm": {
- "version": "1.23.1",
- "resolved": "https://registry.npmjs.org/gm/-/gm-1.23.1.tgz",
- "integrity": "sha1-Lt7rlYCE0PjqeYjl2ZWxx9/BR3c=",
- "dev": true,
- "requires": {
- "array-parallel": "~0.1.3",
- "array-series": "~0.1.5",
- "cross-spawn": "^4.0.0",
- "debug": "^3.1.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
- "integrity": "sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE=",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "dev": true,
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
- "dev": true
- }
- }
- },
"google-closure-compiler-js": {
"version": "20170218.0.0",
"resolved": "https://registry.npmjs.org/google-closure-compiler-js/-/google-closure-compiler-js-20170218.0.0.tgz",
@@ -3544,8 +3486,7 @@
"graceful-fs": {
"version": "4.2.2",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
- "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
- "dev": true
+ "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q=="
},
"growl": {
"version": "1.10.3",
@@ -3669,6 +3610,11 @@
"integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=",
"dev": true
},
+ "highlight.js": {
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.0.3.tgz",
+ "integrity": "sha512-9FG7SSzv9yOY5CGGxfI6NDm7xLYtMOjKtPBxw7Zff3t5UcRcUNTGEeS8lNjhceL34KeetLMoGMFTGoaa83HwyQ=="
+ },
"hmac-drbg": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
@@ -3741,7 +3687,6 @@
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "dev": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
@@ -3750,8 +3695,7 @@
"inherits": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
- "dev": true
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
},
"inquirer": {
"version": "6.5.0",
@@ -3788,8 +3732,7 @@
"interpret": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz",
- "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==",
- "dev": true
+ "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw=="
},
"is-accessor-descriptor": {
"version": "0.1.6",
@@ -4153,7 +4096,6 @@
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
- "dev": true,
"requires": {
"graceful-fs": "^4.1.6"
}
@@ -4408,8 +4350,7 @@
"lodash": {
"version": "4.17.15",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
+ "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
},
"lodash.debounce": {
"version": "4.0.8",
@@ -4496,6 +4437,11 @@
"yallist": "^2.1.2"
}
},
+ "lunr": {
+ "version": "2.3.8",
+ "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.8.tgz",
+ "integrity": "sha512-oxMeX/Y35PNFuZoHp+jUj5OSEmLCaIH4KTFJh7a93cHBoFmpw2IoPs22VIz7vyO2YUnx2Tn9dzIwO2P/4quIRg=="
+ },
"magic-string": {
"version": "0.16.0",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.16.0.tgz",
@@ -4562,6 +4508,11 @@
"object-visit": "^1.0.0"
}
},
+ "marked": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/marked/-/marked-1.0.0.tgz",
+ "integrity": "sha512-Wo+L1pWTVibfrSr+TTtMuiMfNzmZWiOPeO7rZsQUY5bgsxpHesBEcIWJloWVTFnrMXnf/TL30eTFSGJddmQAng=="
+ },
"matcher": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/matcher/-/matcher-1.1.1.tgz",
@@ -4675,7 +4626,6 @@
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "dev": true,
"requires": {
"brace-expansion": "^1.1.7"
}
@@ -4893,8 +4843,7 @@
"neo-async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
- "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
- "dev": true
+ "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw=="
},
"nice-try": {
"version": "1.0.5",
@@ -5124,7 +5073,6 @@
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "dev": true,
"requires": {
"wrappy": "1"
}
@@ -5318,8 +5266,7 @@
"path-is-absolute": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
- "dev": true
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
},
"path-is-inside": {
"version": "1.0.2",
@@ -5336,8 +5283,7 @@
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw=="
},
"path-to-regexp": {
"version": "1.7.0",
@@ -5480,8 +5426,7 @@
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
- "dev": true
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA=="
},
"promise": {
"version": "8.0.1",
@@ -5740,7 +5685,6 @@
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
"integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
- "dev": true,
"requires": {
"resolve": "^1.1.6"
}
@@ -5846,7 +5790,6 @@
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
"integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
- "dev": true,
"requires": {
"path-parse": "^1.0.6"
}
@@ -7170,6 +7113,70 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "typedoc": {
+ "version": "0.17.6",
+ "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.17.6.tgz",
+ "integrity": "sha512-pQiYnhG3yJk7939cv2n8uFoTsSgy5Hfiw0dgOQYa9nT9Ya1013dMctQdAXMj8JbNu7KhcauQyq9Zql9D/TziLw==",
+ "requires": {
+ "fs-extra": "^8.1.0",
+ "handlebars": "^4.7.6",
+ "highlight.js": "^10.0.0",
+ "lodash": "^4.17.15",
+ "lunr": "^2.3.8",
+ "marked": "1.0.0",
+ "minimatch": "^3.0.0",
+ "progress": "^2.0.3",
+ "shelljs": "^0.8.4",
+ "typedoc-default-themes": "^0.10.1"
+ },
+ "dependencies": {
+ "handlebars": {
+ "version": "4.7.6",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz",
+ "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==",
+ "requires": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.0",
+ "source-map": "^0.6.1",
+ "uglify-js": "^3.1.4",
+ "wordwrap": "^1.0.0"
+ }
+ },
+ "minimist": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
+ },
+ "shelljs": {
+ "version": "0.8.4",
+ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.4.tgz",
+ "integrity": "sha512-7gk3UZ9kOfPLIAbslLzyWeGiEqx9e3rxwZM0KE6EL8GlGwjym9Mrlx5/p33bWTu9YG6vcS4MBxYZDHYr5lr8BQ==",
+ "requires": {
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
+ }
+ },
+ "source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
+ },
+ "wordwrap": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+ }
+ }
+ },
+ "typedoc-default-themes": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/typedoc-default-themes/-/typedoc-default-themes-0.10.1.tgz",
+ "integrity": "sha512-SuqAQI0CkwhqSJ2kaVTgl37cWs733uy9UGUqwtcds8pkFK8oRF4rZmCq+FXTGIb9hIUOu40rf5Kojg0Ha6akeg==",
+ "requires": {
+ "lunr": "^2.3.8"
+ }
+ },
"typescript": {
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.2.tgz",
@@ -7180,7 +7187,6 @@
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
"integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
- "dev": true,
"optional": true,
"requires": {
"commander": "~2.20.0",
@@ -7191,7 +7197,6 @@
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
- "dev": true,
"optional": true
}
}
@@ -7229,8 +7234,7 @@
"universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
- "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
- "dev": true
+ "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg=="
},
"unset-value": {
"version": "1.0.0",
@@ -7601,8 +7605,7 @@
"wrappy": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
- "dev": true
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
},
"write": {
"version": "0.2.1",
diff --git a/package.json b/package.json
index eeee15593a..34775b8642 100644
--- a/package.json
+++ b/package.json
@@ -39,7 +39,6 @@
"test:systemjs": "node integration/systemjs/systemjs-compatibility-spec.js",
"test:side-effects": "check-side-effects --test integration/side-effects/side-effects.json",
"test:side-effects:update": "npm run test:side-effects -- --update",
- "tests2png": "mkdirp docs_app/content/img && mocha --opts spec/support/tests2png.opts \"spec/**/*-spec.ts\"",
"compile": "tsc -b ./src/tsconfig.cjs.json ./src/tsconfig.cjs.spec.json ./src/tsconfig.esm.json ./src/tsconfig.esm5.json ./src/tsconfig.esm5.rollup.json ./src/tsconfig.types.json ./spec/tsconfig.json",
"build:clean": "shx rm -rf ./dist",
"build:global": "node ./tools/make-umd-bundle.js && node ./tools/make-closure-core.js",
@@ -94,7 +93,8 @@
},
"homepage": "https://github.com/ReactiveX/RxJS",
"dependencies": {
- "tslib": "^1.9.0"
+ "tslib": "^1.9.0",
+ "typedoc": "^0.17.6"
},
"devDependencies": {
"@angular-devkit/build-optimizer": "0.4.6",
@@ -119,7 +119,6 @@
"eslint-plugin-jasmine": "^2.10.1",
"fs-extra": "^8.1.0",
"glob": "7.1.2",
- "gm": "1.23.1",
"google-closure-compiler-js": "20170218.0.0",
"klaw-sync": "3.0.2",
"lint-staged": "^8.1.6",
diff --git a/spec/Observable-spec.ts b/spec/Observable-spec.ts
index f5a3863aba..4e111024d5 100644
--- a/spec/Observable-spec.ts
+++ b/spec/Observable-spec.ts
@@ -5,7 +5,7 @@ import { cold, expectObservable, expectSubscriptions } from './helpers/marble-te
import { Observable, config, Subscription, noop, Subscriber, Operator, NEVER, Subject, of, throwError, empty, interval } from 'rxjs';
import { map, multicast, refCount, filter, count, tap, combineLatest, concat, merge, race, zip, take, finalize } from 'rxjs/operators';
-declare const asDiagram: any, rxTestScheduler: any;
+declare const rxTestScheduler: any;
function expectFullObserver(val: any) {
expect(val).to.be.a('object');
@@ -632,13 +632,6 @@ describe('Observable', () => {
/** @test {Observable} */
describe('Observable.create', () => {
- asDiagram('create(obs => { obs.next(1); })')
- ('should create a cold observable that emits just 1', () => {
- const e1 = Observable.create((obs: Observer) => { obs.next(1); });
- const expected = 'x';
- expectObservable(e1).toBe(expected, { x: 1 });
- });
-
it('should create an Observable', () => {
const result = Observable.create(() => {
//noop
diff --git a/spec/helpers/testScheduler-ui.ts b/spec/helpers/testScheduler-ui.ts
index f4a53639c6..51941cd983 100644
--- a/spec/helpers/testScheduler-ui.ts
+++ b/spec/helpers/testScheduler-ui.ts
@@ -56,8 +56,6 @@ if (global && !(typeof window !== 'undefined')) {
global.Test = global.mocha.Test;
}
-const diagramFunction = global.asDiagram;
-
//mocha creates own global context per each test suite, simple patching to global won't deliver its context into test cases.
//this custom interface is just mimic of existing one amending test scheduler behavior previously test-helper does via global patching.
module.exports = function(suite: any) {
@@ -214,18 +212,6 @@ module.exports = function(suite: any) {
return test;
};
- /**
- * Describe a specification or test-case
- * to be represented as marble diagram png.
- * It will still serve as normal test cases as well.
- */
- context.asDiagram = function (label: any) {
- if (diagramFunction) {
- return diagramFunction(label, it);
- }
- return it;
- };
-
/**
* Exclusive test-case.
*/
diff --git a/spec/helpers/tests2png/diagram-test-runner.ts b/spec/helpers/tests2png/diagram-test-runner.ts
deleted file mode 100644
index bec2ada01f..0000000000
--- a/spec/helpers/tests2png/diagram-test-runner.ts
+++ /dev/null
@@ -1,104 +0,0 @@
-import { painter } from './painter';
-import { TestScheduler } from 'rxjs/testing';
-import { TestMessage } from '../../../src/internal/testing/TestMessage';
-import { TestStream } from './types';
-
-declare const global: any;
-
-export const rxTestScheduler: TestScheduler = global.rxTestScheduler;
-
-function getInputStreams(rxTestScheduler: TestScheduler): TestStream[] {
- return Array.prototype.concat.call([],
- rxTestScheduler.hotObservables
- .map(function (hot) {
- return {
- messages: hot.messages,
- subscription: {start: 0, end: '100%'},
- };
- })
- .slice(),
- rxTestScheduler.coldObservables
- .map(function (cold) {
- return {
- messages: cold.messages,
- cold: cold,
- };
- })
- .slice()
- );
-}
-
-function updateInputStreamsPostFlush(inputStreams: TestStream[]) {
- return inputStreams.map(function (singleInputStream) {
- if (singleInputStream.cold && singleInputStream.cold.subscriptions.length) {
- singleInputStream.subscription = {
- start: singleInputStream.cold.subscriptions[0].subscribedFrame,
- end: singleInputStream.cold.subscriptions[0].unsubscribedFrame,
- };
- }
- return singleInputStream;
- });
-}
-
-function postProcessOutputMessage(msg: TestMessage) {
- if (Array.isArray(msg.notification.value)
- && msg.notification.value.length
- && typeof msg.notification.value[0] === 'object') {
- msg.notification.value = {
- messages: msg.notification.value,
- subscription: {start: msg.frame, end: '100%'},
- };
- let completionFrame = msg.notification.value.messages
- .reduce(function (prev: number, x: TestMessage) {
- if (x.notification && x.notification.kind === 'C' && x.frame > prev) {
- return x.frame;
- } else {
- return prev;
- }
- }, -1);
- if (completionFrame > -1) {
- msg.notification.value.subscription.end = msg.frame + completionFrame;
- }
- }
- return msg;
-}
-
-function makeFilename(operatorLabel: string) {
- return /^(\w+)/.exec(operatorLabel)![1] + '.png';
-}
-
-type glitFn = (description: string, fn: () => void ) => any;
-type specFn = () => any;
-
-global.asDiagram = function asDiagram(operatorLabel: string, glit: glitFn) {
- return function specFnWithPainter(description: string, specFn: specFn) {
- if (specFn.length === 0) {
- glit(description, function () {
- let outputStreams: TestStream[] = [];
- global.rxTestScheduler = new TestScheduler(function (actual: TestMessage[]) {
- if (Array.isArray(actual) && actual.length > 0 && typeof actual[0].frame === 'number') {
- outputStreams.push({
- messages: actual.map(postProcessOutputMessage),
- subscription: {start: 0, end: '100%'}
- });
- } else if (Array.isArray(actual) && actual.length === 0) { // is the never Observable
- outputStreams.push({
- messages: [],
- subscription: {start: 0, end: '100%'}
- });
- }
- return true;
- });
- specFn();
- let inputStreams = getInputStreams(global.rxTestScheduler);
- global.rxTestScheduler.flush();
- inputStreams = updateInputStreamsPostFlush(inputStreams);
- let filename = './docs_app/content/img/' + makeFilename(operatorLabel);
- painter(inputStreams, operatorLabel, outputStreams, filename);
- console.log('Painted ' + filename);
- });
- } else {
- throw new Error('cannot generate PNG marble diagram for async test ' + description);
- }
- };
-};
diff --git a/spec/helpers/tests2png/painter.ts b/spec/helpers/tests2png/painter.ts
deleted file mode 100644
index 9e90e0f5ea..0000000000
--- a/spec/helpers/tests2png/painter.ts
+++ /dev/null
@@ -1,421 +0,0 @@
-/*eslint-disable no-param-reassign, no-use-before-define*/
-// @ts-ignore: Could not find a declaration file for module
-import * as gm from 'gm';
-// @ts-ignore: Could not find a declaration file for module
-import * as Color from 'color';
-import { cloneDeep, isEqual} from 'lodash';
-import { TestMessage } from '../../../src/internal/testing/TestMessage';
-import { GMObject, MarbleContent, TestStream } from './types';
-
-let canvasHeight: number | undefined;
-const CANVAS_WIDTH: number = 1280;
-const CANVAS_PADDING: number = 20;
-const OBSERVABLE_HEIGHT: number = 200;
-const OPERATOR_HEIGHT: number = 140;
-const ARROW_HEAD_SIZE: number = 18;
-const DEFAULT_MAX_FRAME: number = 10;
-const OBSERVABLE_END_PADDING: number = 5 * ARROW_HEAD_SIZE;
-const MARBLE_RADIUS: number = 32;
-const COMPLETE_HEIGHT: number = MARBLE_RADIUS;
-const TALLER_COMPLETE_HEIGHT: number = 1.8 * MARBLE_RADIUS;
-const SIN_45: number = 0.707106;
-const NESTED_STREAM_ANGLE: number = 18; // degrees
-const TO_RAD: number = (Math.PI / 180);
-const MESSAGES_WIDTH: number = (CANVAS_WIDTH - 2 * CANVAS_PADDING - OBSERVABLE_END_PADDING);
-const BLACK_COLOR: string = '#101010';
-const COLORS: string[] = ['#3EA1CB', '#FFCB46', '#FF6946', '#82D736'];
-const SPECIAL_COLOR: string = '#1010F0';
-const MESSAGE_OVERLAP_HEIGHT: number = TALLER_COMPLETE_HEIGHT;
-
-function colorToGhostColor(hex: string) {
- const c = Color(hex).mix(Color('white'));
- return c.toString(16);
-}
-
-function getMaxFrame(allStreams: TestStream[]): number {
- let allStreamsLen = allStreams.length;
- let max = 0;
- for (let i = 0; i < allStreamsLen; i++) {
- let messagesLen = allStreams[i].messages.length;
- for (let j = 0; j < messagesLen; j++) {
- if (allStreams[i].messages[j].frame > max) {
- max = allStreams[i].messages[j].frame;
- }
- }
- }
- return max;
-}
-
-function stringToColor(str: string) {
- let smallPrime1 = 59;
- let smallPrime2 = 97;
- let hash = str.split('')
- .map(function (x) { return x.charCodeAt(0); })
- .reduce(function (x, y) { return (x * smallPrime1) + (y * smallPrime2); }, 1);
- return COLORS[hash % COLORS.length];
-}
-
-function isNestedStreamData(message: TestMessage): boolean {
- return message.notification.kind === 'N' &&
- message.notification.value &&
- message.notification.value.messages;
-}
-
-function areEqualStreamData(leftStreamData: TestStream, rightStreamData: TestStream): boolean {
- if (leftStreamData.messages.length !== rightStreamData.messages.length) {
- return false;
- }
- for (let i = 0; i < leftStreamData.messages.length; i++) {
- let left = leftStreamData.messages[i];
- let right = rightStreamData.messages[i];
- if (left.frame !== right.frame) {
- return false;
- }
- if (left.notification.kind !== right.notification.kind) {
- return false;
- }
- if (left.notification.value !== right.notification.value) {
- return false;
- }
- }
- return true;
-}
-
-function measureObservableArrow(maxFrame: number, streamData: TestStream): { startX: number, endX: number } {
- let startX = CANVAS_PADDING +
- MESSAGES_WIDTH * (streamData.subscription!.start / maxFrame);
- let MAX_MESSAGES_WIDTH = CANVAS_WIDTH - CANVAS_PADDING;
- let lastMessageFrame = streamData.messages
- .reduce(function (acc, msg) {
- let frame = msg.frame;
- return frame > acc ? frame : acc;
- }, 0);
- let subscriptionEndX = typeof streamData.subscription!.end === 'number' ? CANVAS_PADDING +
- MESSAGES_WIDTH * (streamData.subscription!.end / maxFrame) +
- OBSERVABLE_END_PADDING : undefined;
- let streamEndX = startX +
- MESSAGES_WIDTH * (lastMessageFrame / maxFrame) +
- OBSERVABLE_END_PADDING;
- let endX = (streamData.subscription!.end === '100%') ?
- MAX_MESSAGES_WIDTH :
- Math.max(streamEndX, subscriptionEndX!);
-
- return {startX: startX, endX: endX};
-}
-
-function measureInclination(startX: number, endX: number, angle: number): number {
- let length = endX - startX;
- let cotAngle = Math.cos(angle * TO_RAD) / Math.sin(angle * TO_RAD);
- return (length / cotAngle);
-}
-
-function measureNestedStreamHeight(maxFrame: number, streamData: TestStream): number {
- let measurements = measureObservableArrow(maxFrame, streamData);
- let startX = measurements.startX;
- let endX = measurements.endX;
- return measureInclination(startX, endX, NESTED_STREAM_ANGLE);
-}
-
-function amountPriorOverlaps(message: TestMessage, messageIndex: number, otherMessages: TestMessage[]): number {
- return otherMessages.reduce(function (acc: number, otherMessage: TestMessage, otherIndex) {
- if (otherIndex < messageIndex
- && otherMessage.frame === message.frame
- && message.notification.kind === 'N'
- && otherMessage.notification.kind === 'N') {
- return acc + 1;
- }
- return acc;
- }, 0);
-}
-
-function measureStreamHeight(maxFrame: number): (streamData: TestStream) => number {
- return function measureStreamHeightWithMaxFrame(streamData: TestStream): number {
- let messages = streamData.messages;
- let maxMessageHeight = messages
- .map(function (msg: TestMessage, index) {
- let height = isNestedStreamData(msg) ?
- measureNestedStreamHeight(maxFrame, msg.notification.value) + OBSERVABLE_HEIGHT * 0.25 :
- OBSERVABLE_HEIGHT * 0.5;
- let overlapHeightBonus = amountPriorOverlaps(msg, index, messages) * MESSAGE_OVERLAP_HEIGHT;
- return height + overlapHeightBonus;
- })
- .reduce(function (acc, curr) {
- return curr > acc ? curr : acc;
- }, 0);
- maxMessageHeight = Math.max(maxMessageHeight, OBSERVABLE_HEIGHT * 0.5); // to avoid zero
- return OBSERVABLE_HEIGHT * 0.5 + maxMessageHeight;
- };
-}
-
-function drawObservableArrow(out: GMObject, maxFrame: number, y: number, angle: number, streamData: TestStream, isSpecial: boolean): GMObject {
- let measurements = measureObservableArrow(maxFrame, streamData);
- let startX = measurements.startX;
- let endX = measurements.endX;
-
- let outlineColor = BLACK_COLOR;
- if (isSpecial) {
- outlineColor = SPECIAL_COLOR;
- }
- if (streamData.isGhost) {
- outlineColor = colorToGhostColor(outlineColor);
- }
- out = out.stroke(outlineColor, 3);
- let inclination = measureInclination(startX, endX, angle);
- out = out.drawLine(startX, y, endX, y + inclination);
- out = out.draw(
- 'translate', String(endX) + ',' + String(y + inclination),
- 'rotate ' + String(angle),
- 'line',
- String(0) + ',' + String(0),
- String(-ARROW_HEAD_SIZE * 2) + ',' + String(-ARROW_HEAD_SIZE),
- 'line',
- String(0) + ',' + String(0),
- String(-ARROW_HEAD_SIZE * 2) + ',' + String(+ARROW_HEAD_SIZE));
- return out;
-}
-
-function stringifyContent(content: MarbleContent): string {
- let string = content;
- if (Array.isArray(content)) {
- string = '[' + content.join(',') + ']';
- } else if (typeof content === 'boolean') {
- return content ? 'true' : 'false';
- } else if (typeof content === 'object') {
- string = JSON.stringify(content).replace(/"/g, '');
- }
- return String('"' + string + '"');
-}
-
-function drawMarble(out: GMObject, x: number, y: number, inclination: number, content: MarbleContent, isSpecial: boolean, isGhost: boolean) {
- let fillColor = stringToColor(stringifyContent(content));
- let outlineColor = BLACK_COLOR;
- if (isSpecial) {
- outlineColor = SPECIAL_COLOR;
- }
- if (isGhost) {
- outlineColor = colorToGhostColor(outlineColor);
- fillColor = colorToGhostColor(fillColor);
- }
- out = out.stroke(outlineColor, 3);
- out = out.fill(fillColor);
- out = out.drawEllipse(x, y + inclination, MARBLE_RADIUS, MARBLE_RADIUS, 0, 360);
-
- out = out.strokeWidth(-1);
- out = out.fill(outlineColor);
- out = out.font('helvetica', 28);
- out = out.draw(
- 'translate ' + (x - CANVAS_WIDTH * 0.5) + ',' + (y + inclination - canvasHeight! * 0.5),
- 'gravity Center',
- 'text 0,0',
- stringifyContent(content));
- return out;
-}
-
-function drawError(out: GMObject, x: number, y: number, startX: number, angle: number, isSpecial: boolean, isGhost: boolean) {
- let inclination = measureInclination(startX, x, angle);
- let outlineColor = BLACK_COLOR;
- if (isSpecial) {
- outlineColor = SPECIAL_COLOR;
- }
- if (isGhost) {
- outlineColor = colorToGhostColor(outlineColor);
- }
- out = out.stroke(outlineColor, 3);
- out = out.draw(
- 'translate', String(x) + ',' + String(y + inclination),
- 'rotate ' + String(angle),
- 'line',
- String(-MARBLE_RADIUS * SIN_45) + ',' + String(-MARBLE_RADIUS * SIN_45),
- String(+MARBLE_RADIUS * SIN_45) + ',' + String(+MARBLE_RADIUS * SIN_45),
- 'line',
- String(+MARBLE_RADIUS * SIN_45) + ',' + String(-MARBLE_RADIUS * SIN_45),
- String(-MARBLE_RADIUS * SIN_45) + ',' + String(+MARBLE_RADIUS * SIN_45));
- return out;
-}
-
-function drawComplete(out: GMObject, x: number, y: number,
- maxFrame: number, angle: number, streamData: TestStream,
- isSpecial: boolean, isGhost: boolean) {
- let startX = CANVAS_PADDING +
- MESSAGES_WIDTH * (streamData.subscription!.start / maxFrame);
- let isOverlapping = streamData.messages.some(function (msg) {
- if (msg.notification.kind !== 'N') { return false; }
- let msgX = startX + MESSAGES_WIDTH * (msg.frame / maxFrame);
- return Math.abs(msgX - x) < MARBLE_RADIUS;
- });
- let outlineColor = BLACK_COLOR;
- if (isSpecial) {
- outlineColor = SPECIAL_COLOR;
- }
- if (isGhost) {
- outlineColor = colorToGhostColor(outlineColor);
- }
- let inclination = measureInclination(startX, x, angle);
- let radius = isOverlapping ? TALLER_COMPLETE_HEIGHT : COMPLETE_HEIGHT;
- out = out.stroke(outlineColor, 3);
- out = out.draw(
- 'translate', String(x) + ',' + String(y + inclination),
- 'rotate ' + String(angle),
- 'line',
- String(0) + ',' + String(-radius),
- String(0) + ',' + String(+radius));
- return out;
-}
-
-function drawNestedObservable(out: GMObject, maxFrame: number, y: number, streamData: TestStream): GMObject {
- let angle = NESTED_STREAM_ANGLE;
- out = drawObservableArrow(out, maxFrame, y, angle, streamData, false);
- out = drawObservableMessages(out, maxFrame, y, angle, streamData, false);
- return out;
-}
-
-function drawObservableMessages(out: GMObject, maxFrame: number, baseY: number, angle: number, streamData: TestStream, isSpecial: boolean): GMObject {
- let startX = CANVAS_PADDING +
- MESSAGES_WIDTH * (streamData.subscription!.start / maxFrame);
- let messages = streamData.messages;
-
- messages.slice().reverse().forEach(function (message: TestMessage, reversedIndex: number) {
- if (message.frame < 0) { // ignore messages with negative frames
- return;
- }
- let index = messages.length - reversedIndex - 1;
- let x = startX + MESSAGES_WIDTH * (message.frame / maxFrame);
- if (x - MARBLE_RADIUS < 0) { // out of screen, on the left
- x += MARBLE_RADIUS;
- }
- let y = baseY + amountPriorOverlaps(message, index, messages) * MESSAGE_OVERLAP_HEIGHT;
- let inclination = measureInclination(startX, x, angle);
- switch (message.notification.kind) {
- case 'N':
- if (isNestedStreamData(message)) {
- out = drawNestedObservable(out, maxFrame, y, message.notification.value);
- } else {
- out = drawMarble(out, x, y, inclination, message.notification.value, isSpecial, streamData.isGhost!);
- }
- break;
- case 'E': out = drawError(out, x, y, startX, angle, isSpecial, streamData.isGhost!); break;
- case 'C': out = drawComplete(out, x, y, maxFrame, angle, streamData, isSpecial, streamData.isGhost!); break;
- default: break;
- }
- });
- return out;
-}
-
-function drawObservable(out: GMObject, maxFrame: number, y: number, streamData: TestStream, isSpecial: boolean): GMObject {
- let offsetY = OBSERVABLE_HEIGHT * 0.5;
- let angle = 0;
- out = drawObservableArrow(out, maxFrame, y + offsetY, angle, streamData, isSpecial);
- out = drawObservableMessages(out, maxFrame, y + offsetY, angle, streamData, isSpecial);
- return out;
-}
-
-function drawOperator(out: GMObject, label: string, y: number): GMObject {
- out = out.stroke(BLACK_COLOR, 3);
- out = out.fill('#FFFFFF00');
- out = out.drawRectangle(
- CANVAS_PADDING, y,
- CANVAS_WIDTH - CANVAS_PADDING, y + OPERATOR_HEIGHT);
- out = out.strokeWidth(-1);
- out = out.fill(BLACK_COLOR);
- out = out.font('helvetica', 54);
- out = out.draw(
- 'translate 0,' + (y + OPERATOR_HEIGHT * 0.5 - canvasHeight! * 0.5),
- 'gravity Center',
- 'text 0,0',
- stringifyContent(label));
- return out;
-}
-
-// Remove cold inputStreams which are already nested in some higher order stream
-function removeDuplicateInputs(inputStreams: TestStream[], outputStreams: TestStream[]): TestStream[] {
- return inputStreams.filter(function (inputStream) {
- return !inputStreams.concat(outputStreams).some(function (otherStream: TestStream) {
- return otherStream.messages.some(function (msg) {
- let passes = isNestedStreamData(msg) &&
- inputStream.cold &&
- isEqual(msg.notification.value.messages, inputStream.cold.messages);
- if (passes) {
- if (inputStream.cold!.subscriptions.length) {
- msg.notification.value.subscription = {
- start: inputStream.cold!.subscriptions[0].subscribedFrame,
- end: inputStream.cold!.subscriptions[0].unsubscribedFrame
- };
- }
- }
- return passes;
- });
- });
- });
-}
-
-// For every inner stream in a higher order stream, create its ghost version
-// A ghost stream is a reference to an Observable that has not yet executed,
-// and is painted as a semi-transparent stream.
-function addGhostInnerInputs(inputStreams: TestStream[]): TestStream[] {
- for (let i = 0; i < inputStreams.length; i++) {
- let inputStream = inputStreams[i];
- for (let j = 0; j < inputStream.messages.length; j++) {
- let message = inputStream.messages[j];
- if (isNestedStreamData(message) && typeof message.isGhost !== 'boolean') {
- let referenceTime = message.frame;
- if (!message.notification.value.subscription) {
- // There was no subscription at all, so this nested Observable is ghost
- message.isGhost = true;
- message.notification.value.isGhost = true;
- message.frame = referenceTime;
- message.notification.value.subscription = { start: referenceTime, end: 0 };
- continue;
- }
- let subscriptionTime = message.notification.value.subscription.start;
- if (referenceTime !== subscriptionTime) {
- message.isGhost = false;
- message.notification.value.isGhost = false;
- message.frame = subscriptionTime;
-
- let ghost = cloneDeep(message);
- ghost.isGhost = true;
- ghost.notification.value.isGhost = true;
- ghost.frame = referenceTime;
- ghost.notification.value.subscription.start = referenceTime;
- ghost.notification.value.subscription.end -= subscriptionTime - referenceTime;
- inputStream.messages.push(ghost);
- }
- }
- }
- }
- return inputStreams;
-}
-
-function sanitizeHigherOrderInputStreams(inputStreams: TestStream[], outputStreams: TestStream[]): TestStream[] {
- let newInputStreams = removeDuplicateInputs(inputStreams, outputStreams);
- newInputStreams = addGhostInnerInputs(newInputStreams);
- return newInputStreams;
-}
-
-export function painter(inputStreams: TestStream[], operatorLabel: string, outputStreams: TestStream[], filename: string) {
- inputStreams = sanitizeHigherOrderInputStreams(inputStreams, outputStreams);
- const maxFrame = getMaxFrame(inputStreams.concat(outputStreams)) || DEFAULT_MAX_FRAME;
- let allStreamsHeight = inputStreams.concat(outputStreams)
- .map(measureStreamHeight(maxFrame))
- .reduce(function (x, y) { return x + y; }, 0);
- canvasHeight = allStreamsHeight + OPERATOR_HEIGHT;
-
- let heightSoFar = 0;
- let out: GMObject = gm(CANVAS_WIDTH, canvasHeight, '#ffffff');
- inputStreams.forEach(function (streamData) {
- out = drawObservable(out, maxFrame, heightSoFar, streamData, false);
- heightSoFar += measureStreamHeight(maxFrame)(streamData);
- });
- out = drawOperator(out, operatorLabel, heightSoFar);
- heightSoFar += OPERATOR_HEIGHT;
- outputStreams.forEach(function (streamData) {
- let isSpecial = inputStreams.length > 0 && areEqualStreamData(inputStreams[0], streamData);
- out = drawObservable(out, maxFrame, heightSoFar, streamData, isSpecial);
- heightSoFar += measureStreamHeight(maxFrame)(streamData);
- });
- out.write(filename, function (err: Error) {
- if (err) {
- return console.error(arguments);
- }
- });
-}
diff --git a/spec/helpers/tests2png/types.ts b/spec/helpers/tests2png/types.ts
deleted file mode 100644
index 6c85dc7b50..0000000000
--- a/spec/helpers/tests2png/types.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { TestMessage } from '../../../src/internal/testing/TestMessage';
-import { ColdObservable } from '../../../src/internal/testing/ColdObservable';
-
-export interface TestStream {
- messages: TestMessage[];
- cold?: ColdObservable;
- subscription?: {
- start: number;
- end: string | number;
- };
- isGhost?: boolean;
-}
-
-export type MarbleContent = string[] | boolean | string | object;
-
-export interface GMObject {
- size: (cb: Function) => GMObject;
- format: (cb: Function) => GMObject;
- depth: (cb: Function) => GMObject;
- color: (cb: Function) => GMObject;
- res: (cb: Function) => GMObject;
- filesize: (cb: Function) => GMObject;
- identify: (cb: Function) => GMObject;
- orientation: (cb: Function) => GMObject;
-
- draw: Function;
- drawArc: Function;
- drawBezier: Function;
- drawCircle: Function;
- drawEllipse: Function;
- drawLine: Function;
- drawPoint: Function;
- drawPolygon: Function;
- drawPolyline: Function;
- drawRectangle: Function;
- drawText: Function;
- fill: Function;
- font: Function;
- fontSize: Function;
- stroke: Function;
- strokeWidth: Function;
- setDraw: Function;
- write: Function;
-}
\ No newline at end of file
diff --git a/spec/observables/defer-spec.ts b/spec/observables/defer-spec.ts
index 819fd573fd..ff7658af12 100644
--- a/spec/observables/defer-spec.ts
+++ b/spec/observables/defer-spec.ts
@@ -3,12 +3,9 @@ import { defer, of } from 'rxjs';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { mergeMap } from 'rxjs/operators';
-declare function asDiagram(arg: string): Function;
-
/** @test {defer} */
describe('defer', () => {
- asDiagram('defer(() => Observable.of(a, b, c))')
- ('should defer the creation of a simple Observable', () => {
+ it('should defer the creation of a simple Observable', () => {
const expected = '-a--b--c--|';
const e1 = defer(() => cold('-a--b--c--|'));
expectObservable(e1).toBe(expected);
diff --git a/spec/observables/empty-spec.ts b/spec/observables/empty-spec.ts
index 2961b8dae2..2bcbf144d4 100644
--- a/spec/observables/empty-spec.ts
+++ b/spec/observables/empty-spec.ts
@@ -3,12 +3,11 @@ import { expectObservable } from '../helpers/marble-testing';
import { empty, EMPTY } from 'rxjs';
import { TestScheduler } from 'rxjs/testing';
-declare const asDiagram: any;
declare const rxTestScheduler: TestScheduler;
/** @test {empty} */
describe('empty', () => {
- asDiagram('empty')('should create a cold observable with only complete', () => {
+ it('should create a cold observable with only complete', () => {
const expected = '|';
const e1 = empty();
expectObservable(e1).toBe(expected);
diff --git a/spec/observables/forkJoin-spec.ts b/spec/observables/forkJoin-spec.ts
index 054b07bfa0..426fedda5b 100644
--- a/spec/observables/forkJoin-spec.ts
+++ b/spec/observables/forkJoin-spec.ts
@@ -4,21 +4,19 @@ import { lowerCaseO } from '../helpers/test-helper';
import { hot, expectObservable, expectSubscriptions, cold } from '../helpers/marble-testing';
declare const type: Function;
-declare const asDiagram: Function;
/** @test {forkJoin} */
describe('forkJoin', () => {
- asDiagram('forkJoin')
- ('should join the last values of the provided observables into an array', () => {
- const e1 = forkJoin([
- hot('-a--b-----c-d-e-|'),
- hot('--------f--g-h-i--j-|'),
- cold('--1--2-3-4---|'),
- ]);
- const expected = '--------------------(x|)';
-
- expectObservable(e1).toBe(expected, {x: ['e', 'j', '4']});
- });
+ it('should join the last values of the provided observables into an array', () => {
+ const e1 = forkJoin([
+ hot('-a--b-----c-d-e-|'),
+ hot('--------f--g-h-i--j-|'),
+ cold('--1--2-3-4---|'),
+ ]);
+ const expected = '--------------------(x|)';
+
+ expectObservable(e1).toBe(expected, {x: ['e', 'j', '4']});
+ });
it('should support the deprecated resultSelector with an Array of ObservableInputs', () => {
const results: Array = [];
diff --git a/spec/observables/from-spec.ts b/spec/observables/from-spec.ts
index 18dd71ca20..79c4c4afa2 100644
--- a/spec/observables/from-spec.ts
+++ b/spec/observables/from-spec.ts
@@ -4,7 +4,6 @@ import { asyncScheduler, of, from, Observable, asapScheduler, Observer, observab
import { first, concatMap, delay } from 'rxjs/operators';
// tslint:disable:no-any
-declare const asDiagram: any;
declare const expectObservable: any;
declare const type: any;
declare const rxTestScheduler: TestScheduler;
@@ -16,8 +15,7 @@ function getArguments(...args: T[]) {
/** @test {from} */
describe('from', () => {
- asDiagram('from([10, 20, 30])')
- ('should create an observable from an array', () => {
+ it('should create an observable from an array', () => {
const e1 = from([10, 20, 30]).pipe(
// for the purpose of making a nice diagram, spread out the synchronous emissions
concatMap((x, i) => of(x).pipe(
diff --git a/spec/observables/fromEvent-spec.ts b/spec/observables/fromEvent-spec.ts
index 9806dcabfa..d92d5a44fb 100644
--- a/spec/observables/fromEvent-spec.ts
+++ b/spec/observables/fromEvent-spec.ts
@@ -7,13 +7,11 @@ import { TestScheduler } from 'rxjs/testing';
declare const type: Function;
-declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;
/** @test {fromEvent} */
describe('fromEvent', () => {
- asDiagram('fromEvent(element, \'click\')')
- ('should create an observable of click on the element', () => {
+ it('should create an observable of click on the element', () => {
const target = {
addEventListener: (eventType: any, listener: any) => {
timer(50, 20, rxTestScheduler)
diff --git a/spec/observables/fromEventPattern-spec.ts b/spec/observables/fromEventPattern-spec.ts
index bad94e8e72..571f6499ac 100644
--- a/spec/observables/fromEventPattern-spec.ts
+++ b/spec/observables/fromEventPattern-spec.ts
@@ -6,13 +6,11 @@ import { fromEventPattern, noop, NEVER, timer } from 'rxjs';
import { mapTo, take, concat } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
-declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;
/** @test {fromEventPattern} */
describe('fromEventPattern', () => {
- asDiagram('fromEventPattern(addHandler, removeHandler)')
- ('should create an observable from the handler API', () => {
+ it('should create an observable from the handler API', () => {
function addHandler(h: any) {
timer(50, 20, rxTestScheduler).pipe(
mapTo('ev'),
diff --git a/spec/observables/generate-spec.ts b/spec/observables/generate-spec.ts
index 2a92f115ef..a378fdf9c2 100644
--- a/spec/observables/generate-spec.ts
+++ b/spec/observables/generate-spec.ts
@@ -4,7 +4,6 @@ import { expectObservable } from '../helpers/marble-testing';
import { generate, Subscriber } from 'rxjs';
import { take } from 'rxjs/operators';
-declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;
function err(): any {
@@ -12,24 +11,21 @@ function err(): any {
}
describe('generate', () => {
- asDiagram('generate(1, x => false, x => x + 1)')
- ('should complete if condition does not meet', () => {
+ it('should complete if condition does not meet', () => {
const source = generate(1, x => false, x => x + 1);
const expected = '|';
expectObservable(source).toBe(expected);
});
- asDiagram('generate(1, x => x == 1, x => x + 1)')
- ('should produce first value immediately', () => {
+ it('should produce first value immediately', () => {
const source = generate(1, x => x == 1, x => x + 1);
const expected = '(1|)';
expectObservable(source).toBe(expected, { '1': 1 });
});
- asDiagram('generate(1, x => x < 3, x => x + 1)')
- ('should produce all values synchronously', () => {
+ it('should produce all values synchronously', () => {
const source = generate(1, x => x < 3, x => x + 1);
const expected = '(12|)';
diff --git a/spec/observables/interval-spec.ts b/spec/observables/interval-spec.ts
index 9fce8a68b9..7a209920c0 100644
--- a/spec/observables/interval-spec.ts
+++ b/spec/observables/interval-spec.ts
@@ -5,12 +5,11 @@ import { TestScheduler } from 'rxjs/testing';
import { take, concat } from 'rxjs/operators';
import * as sinon from 'sinon';
-declare const asDiagram: any;
declare const rxTestScheduler: TestScheduler;
/** @test {interval} */
describe('interval', () => {
- asDiagram('interval(1000)')('should create an observable emitting periodically', () => {
+ it('should create an observable emitting periodically', () => {
const e1 = interval(20, rxTestScheduler).pipe(
take(6), // make it actually finite, so it can be rendered
concat(NEVER) // but pretend it's infinite by not completing
diff --git a/spec/observables/never-spec.ts b/spec/observables/never-spec.ts
index b7fea66ddd..8b8da877e1 100644
--- a/spec/observables/never-spec.ts
+++ b/spec/observables/never-spec.ts
@@ -2,11 +2,9 @@ import { NEVER } from 'rxjs';
import { expect } from 'chai';
import { expectObservable } from '../helpers/marble-testing';
-declare const asDiagram: any;
-
/** @test {NEVER} */
describe('NEVER', () => {
- asDiagram('NEVER')('should create a cold observable that never emits', () => {
+ it('should create a cold observable that never emits', () => {
const expected = '-';
const e1 = NEVER;
expectObservable(e1).toBe(expected);
diff --git a/spec/observables/of-spec.ts b/spec/observables/of-spec.ts
index 06e3a2664d..827ea66638 100644
--- a/spec/observables/of-spec.ts
+++ b/spec/observables/of-spec.ts
@@ -4,12 +4,11 @@ import { expectObservable } from '../helpers/marble-testing';
import { TestScheduler } from 'rxjs/testing';
import { concatMap, delay, concatAll } from 'rxjs/operators';
-declare const asDiagram: any;
declare const rxTestScheduler: TestScheduler;
/** @test {of} */
describe('of', () => {
- asDiagram('of(1, 2, 3)')('should create a cold observable that emits 1, 2, 3', () => {
+ it('should create a cold observable that emits 1, 2, 3', () => {
const e1 = of(1, 2, 3).pipe(
// for the purpose of making a nice diagram, spread out the synchronous emissions
concatMap((x, i) => of(x).pipe(delay(i === 0 ? 0 : 20, rxTestScheduler)))
diff --git a/spec/observables/pairs-spec.ts b/spec/observables/pairs-spec.ts
index 7e6e57b03b..644aefa7c8 100644
--- a/spec/observables/pairs-spec.ts
+++ b/spec/observables/pairs-spec.ts
@@ -3,12 +3,10 @@ import { expectObservable } from '../helpers/marble-testing';
import { TestScheduler } from 'rxjs/testing';
import { pairs } from 'rxjs';
-declare const asDiagram: any;
-
declare const rxTestScheduler: TestScheduler;
describe('pairs', () => {
- asDiagram('pairs({a: 1, b:2})')('should create an observable emits key-value pair', () => {
+ it('should create an observable emits key-value pair', () => {
const e1 = pairs({a: 1, b: 2}, rxTestScheduler);
const expected = '(ab|)';
const values = {
diff --git a/spec/observables/partition-spec.ts b/spec/observables/partition-spec.ts
index 58c27602bd..5b3a0019b4 100644
--- a/spec/observables/partition-spec.ts
+++ b/spec/observables/partition-spec.ts
@@ -3,8 +3,6 @@ import { Observable, partition, of } from 'rxjs';
import { mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
-
/** @test {partition} */
describe('Observable.prototype.partition', () => {
function expectObservableArray(result: Observable[], expected: string[]) {
@@ -13,7 +11,7 @@ describe('Observable.prototype.partition', () => {
}
}
- asDiagram('partition(x => x % 2 === 1)')('should partition an observable of ' +
+ it('should partition an observable of ' +
'integers into even and odd', () => {
const e1 = hot('--1-2---3------4--5---6--|');
const e1subs = '^ !';
diff --git a/spec/observables/range-spec.ts b/spec/observables/range-spec.ts
index 439245604b..b20c86cb41 100644
--- a/spec/observables/range-spec.ts
+++ b/spec/observables/range-spec.ts
@@ -6,13 +6,11 @@ import { expectObservable } from '../helpers/marble-testing';
import { dispatch } from 'rxjs/internal/observable/range';
import { concatMap, delay } from 'rxjs/operators';
-declare const asDiagram: any;
-
declare const rxTestScheduler: TestScheduler;
/** @test {range} */
describe('range', () => {
- asDiagram('range(1, 10)')('should create an observable with numbers 1 to 10', () => {
+ it('should create an observable with numbers 1 to 10', () => {
const e1 = range(1, 10)
// for the purpose of making a nice diagram, spread out the synchronous emissions
.pipe(concatMap((x, i) => of(x).pipe(delay(i === 0 ? 0 : 20, rxTestScheduler))));
diff --git a/spec/observables/throwError-spec.ts b/spec/observables/throwError-spec.ts
index a74ac8850c..05cf24d2cc 100644
--- a/spec/observables/throwError-spec.ts
+++ b/spec/observables/throwError-spec.ts
@@ -3,12 +3,11 @@ import { TestScheduler } from 'rxjs/testing';
import { throwError } from 'rxjs';
import { expectObservable } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;
/** @test {throw} */
describe('throwError', () => {
- asDiagram('throw(e)')('should create a cold observable that just emits an error', () => {
+ it('should create a cold observable that just emits an error', () => {
const expected = '#';
const e1 = throwError('error');
expectObservable(e1).toBe(expected);
diff --git a/spec/observables/timer-spec.ts b/spec/observables/timer-spec.ts
index 15a7a63a99..4e432dbb03 100644
--- a/spec/observables/timer-spec.ts
+++ b/spec/observables/timer-spec.ts
@@ -3,12 +3,11 @@ import { timer, NEVER, merge } from 'rxjs';
import { TestScheduler } from 'rxjs/testing';
import { mergeMap, take, concat } from 'rxjs/operators';
-declare const asDiagram: any;
declare const rxTestScheduler: TestScheduler;
/** @test {timer} */
describe('timer', () => {
- asDiagram('timer(3000, 1000)')('should create an observable emitting periodically', () => {
+ it('should create an observable emitting periodically', () => {
const e1 = timer(60, 20, rxTestScheduler).pipe(
take(4), // make it actually finite, so it can be rendered
concat(NEVER) // but pretend it's infinite by not completing
diff --git a/spec/operators/audit-spec.ts b/spec/operators/audit-spec.ts
index 75d6889270..641a41bf50 100644
--- a/spec/operators/audit-spec.ts
+++ b/spec/operators/audit-spec.ts
@@ -4,8 +4,6 @@ import { of, interval, EMPTY } from 'rxjs';
import { audit, take, mergeMap } from 'rxjs/operators';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
/** @test {audit} */
describe('audit operator', () => {
let testScheduler: TestScheduler;
@@ -14,7 +12,7 @@ describe('audit operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('audit')('should emit the last value in each time window', () => {
+ it('should emit the last value in each time window', () => {
testScheduler.run(({ hot, cold, expectObservable, expectSubscriptions }) => {
const e1 = hot(' -a-xy-----b--x--cxxx-|');
const e1subs = ' ^--------------------!';
diff --git a/spec/operators/auditTime-spec.ts b/spec/operators/auditTime-spec.ts
index d035ad9b45..99eec7f7d0 100644
--- a/spec/operators/auditTime-spec.ts
+++ b/spec/operators/auditTime-spec.ts
@@ -4,8 +4,6 @@ import { auditTime, take, map, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
/** @test {auditTime} */
describe('auditTime operator', () => {
let testScheduler: TestScheduler;
@@ -14,7 +12,7 @@ describe('auditTime operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('auditTime(5)')('should emit the last value in each time window', () => {
+ it('should emit the last value in each time window', () => {
testScheduler.run(({ hot, expectObservable, expectSubscriptions }) => {
const e1 = hot(' -a-x-y----b---x-cx---|');
const subs = ' ^--------------------!';
diff --git a/spec/operators/buffer-spec.ts b/spec/operators/buffer-spec.ts
index 6ce302ffb5..3cda51c918 100644
--- a/spec/operators/buffer-spec.ts
+++ b/spec/operators/buffer-spec.ts
@@ -3,8 +3,6 @@ import { EMPTY, NEVER, throwError, of } from 'rxjs';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
/** @test {buffer} */
describe('Observable.prototype.buffer', () => {
let testScheduler: TestScheduler;
@@ -13,7 +11,7 @@ describe('Observable.prototype.buffer', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('buffer')('should emit buffers that close and reopen', () => {
+ it('should emit buffers that close and reopen', () => {
testScheduler.run(({ hot, expectObservable }) => {
const a = hot(' -a-b-c-d-e-f-g-h-i-|');
const b = hot(' -----B-----B-----B-|');
diff --git a/spec/operators/bufferCount-spec.ts b/spec/operators/bufferCount-spec.ts
index 3205e75d89..6cac72cb44 100644
--- a/spec/operators/bufferCount-spec.ts
+++ b/spec/operators/bufferCount-spec.ts
@@ -4,8 +4,6 @@ import { bufferCount, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
/** @test {bufferCount} */
describe('bufferCount operator', () => {
let testScheduler: TestScheduler;
@@ -14,7 +12,7 @@ describe('bufferCount operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('bufferCount(3,2)')('should emit buffers at intervals', () => {
+ it('should emit buffers at intervals', () => {
testScheduler.run(({ hot, expectObservable }) => {
const values = {
v: ['a', 'b', 'c'],
diff --git a/spec/operators/bufferTime-spec.ts b/spec/operators/bufferTime-spec.ts
index 015473bb95..f7c8a3cbb5 100644
--- a/spec/operators/bufferTime-spec.ts
+++ b/spec/operators/bufferTime-spec.ts
@@ -3,8 +3,6 @@ import { bufferTime, mergeMap, take } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare const asDiagram: Function;
-
/** @test {bufferTime} */
describe('bufferTime operator', () => {
let testScheduler: TestScheduler;
@@ -13,7 +11,7 @@ describe('bufferTime operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('bufferTime(100)')('should emit buffers at intervals', () => {
+ it('should emit buffers at intervals', () => {
testScheduler.run(({ hot, time, expectObservable, expectSubscriptions }) => {
const e1 = hot(' ---a---b---c---d---e---f---g-----| ');
const subs = ' ^--------------------------------! ';
diff --git a/spec/operators/bufferToggle-spec.ts b/spec/operators/bufferToggle-spec.ts
index b01e0ad189..f9933d8f43 100644
--- a/spec/operators/bufferToggle-spec.ts
+++ b/spec/operators/bufferToggle-spec.ts
@@ -4,8 +4,6 @@ import { bufferToggle, mergeMap, mapTo } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
/** @test {bufferToggle} */
describe('bufferToggle operator', () => {
let testScheduler: TestScheduler;
@@ -14,7 +12,7 @@ describe('bufferToggle operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('bufferToggle')('should emit buffers using hot openings and hot closings', () => {
+ it('should emit buffers using hot openings and hot closings', () => {
testScheduler.run(({ hot, expectObservable }) => {
const e1 = hot(' ---a---b---c---d---e---f---g---|');
const e2 = hot(' --o------------------o---------|');
diff --git a/spec/operators/bufferWhen-spec.ts b/spec/operators/bufferWhen-spec.ts
index a33775ce25..4c98e89dd1 100644
--- a/spec/operators/bufferWhen-spec.ts
+++ b/spec/operators/bufferWhen-spec.ts
@@ -4,8 +4,6 @@ import { bufferWhen, mergeMap, takeWhile } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
/** @test {bufferWhen} */
describe('bufferWhen operator', () => {
let testScheduler: TestScheduler;
@@ -14,7 +12,7 @@ describe('bufferWhen operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('bufferWhen')('should emit buffers that close and reopen', () => {
+ it('should emit buffers that close and reopen', () => {
testScheduler.run(({ hot, cold, expectObservable }) => {
const e1 = hot('--a--^---b---c---d---e---f---g---------| ');
const e2 = cold(' --------------(s|) ');
diff --git a/spec/operators/catch-spec.ts b/spec/operators/catch-spec.ts
index 17904b2b07..5902db3d22 100644
--- a/spec/operators/catch-spec.ts
+++ b/spec/operators/catch-spec.ts
@@ -7,8 +7,6 @@ import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
import { asInteropObservable } from '../helpers/interop-helper';
-declare function asDiagram(arg: string): Function;
-
/** @test {catch} */
describe('catchError operator', () => {
let testScheduler: TestScheduler;
@@ -17,7 +15,7 @@ describe('catchError operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('catch')('should catch error and replace with a cold Observable', () => {
+ it('should catch error and replace with a cold Observable', () => {
testScheduler.run(({ hot, cold, expectObservable }) => {
const e1 = hot(' --a--b--# ');
const e2 = cold(' -1-2-3-|');
diff --git a/spec/operators/combineAll-spec.ts b/spec/operators/combineAll-spec.ts
index a79db20b9c..59da5d340c 100644
--- a/spec/operators/combineAll-spec.ts
+++ b/spec/operators/combineAll-spec.ts
@@ -4,7 +4,6 @@ import { combineAll, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {combineAll} */
@@ -15,7 +14,7 @@ describe('combineAll operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('combineAll')('should combine events from two observables', () => {
+ it('should combine events from two observables', () => {
testScheduler.run(({ hot, cold, expectObservable }) => {
const x = cold(' -a-----b---|');
const y = cold(' --1-2-| ');
diff --git a/spec/operators/combineLatest-legacy-spec.ts b/spec/operators/combineLatest-legacy-spec.ts
index 7440b09478..2b61b2848c 100644
--- a/spec/operators/combineLatest-legacy-spec.ts
+++ b/spec/operators/combineLatest-legacy-spec.ts
@@ -3,8 +3,6 @@ import { combineLatest, mergeMap, distinct, count } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
/** @test {combineLatest} */
describe('combineLatest', () => {
let testScheduler: TestScheduler;
@@ -13,7 +11,7 @@ describe('combineLatest', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('combineLatest')('should combine events from two cold observables', () => {
+ it('should combine events from two cold observables', () => {
testScheduler.run(({ cold, expectObservable }) => {
const e1 = cold(' -a--b-----c-d-e-|');
const e2 = cold(' --1--2-3-4---| ');
diff --git a/spec/operators/concat-spec.ts b/spec/operators/concat-spec.ts
index 44a99320fc..788cfcb8a1 100644
--- a/spec/operators/concat-spec.ts
+++ b/spec/operators/concat-spec.ts
@@ -4,8 +4,6 @@ import { concat, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {concat} */
@@ -16,7 +14,7 @@ describe('concat operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('concat')('should concatenate two cold observables', () => {
+ it('should concatenate two cold observables', () => {
testScheduler.run(({ cold, expectObservable }) => {
const e1 = cold(' --a--b-|');
const e2 = cold(' --x---y--|');
diff --git a/spec/operators/concatAll-spec.ts b/spec/operators/concatAll-spec.ts
index b1a2e70dfa..b616db3805 100644
--- a/spec/operators/concatAll-spec.ts
+++ b/spec/operators/concatAll-spec.ts
@@ -4,7 +4,6 @@ import { concatAll, take, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
declare const rxTestScheduler: TestScheduler;
@@ -16,7 +15,7 @@ describe('concatAll operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('concatAll')('should concat an observable of observables', () => {
+ it('should concat an observable of observables', () => {
testScheduler.run(({ cold, hot, expectObservable }) => {
const x = cold(' ----a------b------| ');
const y = cold(' ---c-d---| ');
diff --git a/spec/operators/concatMap-spec.ts b/spec/operators/concatMap-spec.ts
index c282ec4db6..1610d969fb 100644
--- a/spec/operators/concatMap-spec.ts
+++ b/spec/operators/concatMap-spec.ts
@@ -4,8 +4,6 @@ import { concatMap, mergeMap, map } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { observableMatcher } from '../helpers/observableMatcher';
-declare function asDiagram(arg: string): Function;
-
/** @test {concatMap} */
describe('Observable.prototype.concatMap', () => {
let testScheduler: TestScheduler;
@@ -14,7 +12,7 @@ describe('Observable.prototype.concatMap', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('concatMap(i => 10*i\u2014\u201410*i\u2014\u201410*i\u2014| )')('should map-and-flatten each item to an Observable', () => {
+ it('should map-and-flatten each item to an Observable', () => {
testScheduler.run(({ hot, cold, expectObservable, expectSubscriptions }) => {
const e1 = hot(' --1-----3--5-------|');
const e1subs = ' ^------------------!';
diff --git a/spec/operators/concatMapTo-spec.ts b/spec/operators/concatMapTo-spec.ts
index 06209e3fd9..e902903ab5 100644
--- a/spec/operators/concatMapTo-spec.ts
+++ b/spec/operators/concatMapTo-spec.ts
@@ -3,12 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { of, from } from 'rxjs';
import { concatMapTo, mergeMap } from 'rxjs/operators';
-declare function asDiagram(arg: string): Function;
-
/** @test {concatMapTo} */
describe('Observable.prototype.concatMapTo', () => {
- asDiagram('concatMapTo( 10\u2014\u201410\u2014\u201410\u2014| )')
- ('should map-and-flatten each item to an Observable', () => {
+ it('should map-and-flatten each item to an Observable', () => {
const e1 = hot('--1-----3--5-------|');
const e1subs = '^ !';
const e2 = cold('x-x-x| ', {x: 10});
diff --git a/spec/operators/count-spec.ts b/spec/operators/count-spec.ts
index 3b67c256f5..efdae7e1df 100644
--- a/spec/operators/count-spec.ts
+++ b/spec/operators/count-spec.ts
@@ -3,11 +3,9 @@ import { of, range } from 'rxjs';
import { count, skip, take, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
-
/** @test {count} */
describe('count operator', () => {
- asDiagram('count')('should count the values of an observable', () => {
+ it('should count the values of an observable', () => {
const source = hot('--a--b--c--|');
const subs = '^ !';
const expected = '-----------(x|)';
diff --git a/spec/operators/debounce-spec.ts b/spec/operators/debounce-spec.ts
index 92532e60a7..fbb4f81acd 100644
--- a/spec/operators/debounce-spec.ts
+++ b/spec/operators/debounce-spec.ts
@@ -5,7 +5,6 @@ import { TestScheduler } from 'rxjs/testing';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
declare const type: Function;
-declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;
@@ -15,7 +14,7 @@ describe('debounce operator', () => {
return () => timer(x, rxTestScheduler);
}
- asDiagram('debounce')('should debounce values by a specified cold Observable', () => {
+ it('should debounce values by a specified cold Observable', () => {
const e1 = hot('-a--bc--d---|');
const e2 = cold('--| ');
const expected = '---a---c--d-|';
diff --git a/spec/operators/debounceTime-spec.ts b/spec/operators/debounceTime-spec.ts
index f9ea8f21b0..a6528288f7 100644
--- a/spec/operators/debounceTime-spec.ts
+++ b/spec/operators/debounceTime-spec.ts
@@ -5,13 +5,11 @@ import { TestScheduler } from 'rxjs/testing';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { VirtualTimeScheduler } from '../../src/internal/scheduler/VirtualTimeScheduler';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {debounceTime} */
describe('debounceTime operator', () => {
- asDiagram('debounceTime(20)')('should debounce values by 20 time units', () => {
+ it('should debounce values by 20 time units', () => {
const e1 = hot('-a--bc--d---|');
const expected = '---a---c--d-|';
diff --git a/spec/operators/defaultIfEmpty-spec.ts b/spec/operators/defaultIfEmpty-spec.ts
index a3f4f5b625..270455eb8f 100644
--- a/spec/operators/defaultIfEmpty-spec.ts
+++ b/spec/operators/defaultIfEmpty-spec.ts
@@ -2,11 +2,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { of } from 'rxjs';
import { defaultIfEmpty, mergeMap } from 'rxjs/operators';
-declare function asDiagram(arg: string): Function;
-
/** @test {defaultIfEmpty} */
describe('Observable.prototype.defaultIfEmpty', () => {
- asDiagram('defaultIfEmpty(42)')('should return the Observable if not empty with a default value', () => {
+ it('should return the Observable if not empty with a default value', () => {
const e1 = hot('--------|');
const expected = '--------(x|)';
diff --git a/spec/operators/delay-spec.ts b/spec/operators/delay-spec.ts
index 0a398023c0..845d32a522 100644
--- a/spec/operators/delay-spec.ts
+++ b/spec/operators/delay-spec.ts
@@ -5,8 +5,6 @@ import * as sinon from 'sinon';
import { expect } from 'chai';
import { observableMatcher } from '../helpers/observableMatcher';
-declare const asDiagram: Function;
-
/** @test {delay} */
describe('delay operator', () => {
let testScheduler: TestScheduler;
@@ -15,7 +13,7 @@ describe('delay operator', () => {
testScheduler = new TestScheduler(observableMatcher);
});
- asDiagram('delay(20)')('should delay by specified timeframe', () => {
+ it('should delay by specified timeframe', () => {
testScheduler.run(({ hot, expectObservable, expectSubscriptions }) => {
const e1 = hot('---a--b--|');
const t = 2; // --|
diff --git a/spec/operators/delayWhen-spec.ts b/spec/operators/delayWhen-spec.ts
index 4426acc632..86139ad18d 100644
--- a/spec/operators/delayWhen-spec.ts
+++ b/spec/operators/delayWhen-spec.ts
@@ -4,13 +4,11 @@ import { TestScheduler } from 'rxjs/testing';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { expect } from 'chai';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {delayWhen} */
describe('delayWhen operator', () => {
- asDiagram('delayWhen(durationSelector)')('should delay by duration selector', () => {
+ it('should delay by duration selector', () => {
const e1 = hot('---a---b---c--|');
const expected = '-----a------c----(b|)';
const subs = '^ !';
diff --git a/spec/operators/dematerialize-spec.ts b/spec/operators/dematerialize-spec.ts
index 0fc114200f..d4a4aecd5c 100644
--- a/spec/operators/dematerialize-spec.ts
+++ b/spec/operators/dematerialize-spec.ts
@@ -2,13 +2,11 @@ import { of, Notification } from 'rxjs';
import { dematerialize, map, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
-
const NO_VALUES: { [key: string]: Notification } = {};
/** @test {dematerialize} */
describe('dematerialize operator', () => {
- asDiagram('dematerialize')('should dematerialize an Observable', () => {
+ it('should dematerialize an Observable', () => {
const values = {
a: '{x}',
b: '{y}',
diff --git a/spec/operators/distinctUntilChanged-spec.ts b/spec/operators/distinctUntilChanged-spec.ts
index fabfd87bf4..4fd32549e7 100644
--- a/spec/operators/distinctUntilChanged-spec.ts
+++ b/spec/operators/distinctUntilChanged-spec.ts
@@ -2,11 +2,9 @@ import { distinctUntilChanged, mergeMap } from 'rxjs/operators';
import { of } from 'rxjs';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
-
/** @test {distinctUntilChanged} */
describe('distinctUntilChanged operator', () => {
- asDiagram('distinctUntilChanged')('should distinguish between values', () => {
+ it('should distinguish between values', () => {
const e1 = hot('-1--2-2----1-3-|');
const expected = '-1--2------1-3-|';
diff --git a/spec/operators/distinctUntilKeyChanged-spec.ts b/spec/operators/distinctUntilKeyChanged-spec.ts
index 10674d0c94..af99926438 100644
--- a/spec/operators/distinctUntilKeyChanged-spec.ts
+++ b/spec/operators/distinctUntilKeyChanged-spec.ts
@@ -2,11 +2,9 @@ import { distinctUntilKeyChanged, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {distinctUntilKeyChanged} */
describe('distinctUntilKeyChanged operator', () => {
- asDiagram('distinctUntilKeyChanged(\'k\')')('should distinguish between values', () => {
+ it('should distinguish between values', () => {
const values = {a: {k: 1}, b: {k: 2}, c: {k: 3}};
const e1 = hot('-a--b-b----a-c-|', values);
const expected = '-a--b------a-c-|';
diff --git a/spec/operators/elementAt-spec.ts b/spec/operators/elementAt-spec.ts
index 93228b40d5..aa85e85b07 100644
--- a/spec/operators/elementAt-spec.ts
+++ b/spec/operators/elementAt-spec.ts
@@ -3,11 +3,9 @@ import { elementAt, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { ArgumentOutOfRangeError, of, range } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {elementAt} */
describe('elementAt operator', () => {
- asDiagram('elementAt(2)')('should return last element by zero-based index', () => {
+ it('should return last element by zero-based index', () => {
const source = hot('--a--b--c-d---|');
const subs = '^ ! ';
const expected = '--------(c|) ';
diff --git a/spec/operators/endWith-spec.ts b/spec/operators/endWith-spec.ts
index f42d33bc65..325b0f579e 100644
--- a/spec/operators/endWith-spec.ts
+++ b/spec/operators/endWith-spec.ts
@@ -3,15 +3,13 @@ import { endWith, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {endWith} */
describe('endWith operator', () => {
const defaultStartValue = 'x';
- asDiagram('endWith(s)')('should append to a cold Observable', () => {
+ it('should append to a cold Observable', () => {
const e1 = cold('---a--b--c--|');
const e1subs = '^ !';
const expected = '---a--b--c--(s|)';
diff --git a/spec/operators/every-spec.ts b/spec/operators/every-spec.ts
index 622b2371b8..ee357ddefa 100644
--- a/spec/operators/every-spec.ts
+++ b/spec/operators/every-spec.ts
@@ -3,8 +3,6 @@ import { every, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of, Observable, Observer } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {every} */
describe('every operator', () => {
function truePredicate(x: number | string) {
@@ -15,7 +13,7 @@ describe('every operator', () => {
return (+x) % 5 === 0;
}
- asDiagram('every(x => x % 5 === 0)')('should return false if only some of element matches with predicate', () => {
+ it('should return false if only some of element matches with predicate', () => {
const source = hot('--a--b--c--d--e--|', {a: 5, b: 10, c: 15, d: 18, e: 20});
const sourceSubs = '^ ! ';
const expected = '-----------(F|) ';
diff --git a/spec/operators/exhaust-spec.ts b/spec/operators/exhaust-spec.ts
index c5c7d32571..c5b0ff1b00 100644
--- a/spec/operators/exhaust-spec.ts
+++ b/spec/operators/exhaust-spec.ts
@@ -3,12 +3,11 @@ import { exhaust, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of, Observable } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {exhaust} */
describe('exhaust operator', () => {
- asDiagram('exhaust')('should handle a hot observable of hot observables', () => {
+ it('should handle a hot observable of hot observables', () => {
const x = cold( '--a---b---c--| ');
const y = cold( '---d--e---f---| ');
const z = cold( '---g--h---i---|');
diff --git a/spec/operators/exhaustMap-spec.ts b/spec/operators/exhaustMap-spec.ts
index 77f76e0523..75eb5d18af 100644
--- a/spec/operators/exhaustMap-spec.ts
+++ b/spec/operators/exhaustMap-spec.ts
@@ -4,12 +4,9 @@ import { exhaustMap, mergeMap, takeWhile, map } from 'rxjs/operators';
import { expect } from 'chai';
import { asInteropObservable } from '../helpers/interop-helper';
-declare function asDiagram(arg: string): Function;
-
/** @test {exhaustMap} */
describe('exhaustMap', () => {
- asDiagram('exhaustMap(i => 10*i\u2014\u201410*i\u2014\u201410*i\u2014| )')
- ('should map-and-flatten each item to an Observable', () => {
+ it('should map-and-flatten each item to an Observable', () => {
const e1 = hot('--1-----3--5-------|');
const e1subs = '^ !';
const e2 = cold('x-x-x| ', {x: 10});
diff --git a/spec/operators/expand-spec.ts b/spec/operators/expand-spec.ts
index 15b61a9430..925f4cefdc 100644
--- a/spec/operators/expand-spec.ts
+++ b/spec/operators/expand-spec.ts
@@ -4,15 +4,13 @@ import { TestScheduler } from 'rxjs/testing';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { Subscribable, EMPTY, Observable, of, Observer } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
declare const rxTestScheduler: TestScheduler;
/** @test {expand} */
describe('expand operator', () => {
- asDiagram('expand(x => x === 8 ? empty : \u2014\u20142*x\u2014| )')
- ('should recursively map-and-flatten each item to an Observable', () => {
+ it('should recursively map-and-flatten each item to an Observable', () => {
const e1 = hot('--x----| ', {x: 1});
const e1subs = '^ ! ';
const e2 = cold( '--c| ', {c: 2});
diff --git a/spec/operators/filter-spec.ts b/spec/operators/filter-spec.ts
index 5ca1a72469..ba4658dc07 100644
--- a/spec/operators/filter-spec.ts
+++ b/spec/operators/filter-spec.ts
@@ -3,8 +3,6 @@ import { filter, tap, map, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of, Observable, from } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {filter} */
describe('filter operator', () => {
function oddFilter(x: number | string) {
@@ -20,7 +18,7 @@ describe('filter operator', () => {
return true;
}
- asDiagram('filter(x => x % 2 === 1)')('should filter out even values', () => {
+ it('should filter out even values', () => {
const source = hot('--0--1--2--3--4--|');
const subs = '^ !';
const expected = '-----1-----3-----|';
diff --git a/spec/operators/find-spec.ts b/spec/operators/find-spec.ts
index c1ec914356..bae2b7b8b9 100644
--- a/spec/operators/find-spec.ts
+++ b/spec/operators/find-spec.ts
@@ -4,8 +4,6 @@ import { TestScheduler } from 'rxjs/testing';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of, Observable, from } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {find} */
@@ -14,7 +12,7 @@ describe('find operator', () => {
return true;
}
- asDiagram('find(x => x % 5 === 0)')('should return matching element from source emits single element', () => {
+ it('should return matching element from source emits single element', () => {
const values = {a: 3, b: 9, c: 15, d: 20};
const source = hot('---a--b--c--d---|', values);
const subs = '^ ! ';
diff --git a/spec/operators/findIndex-spec.ts b/spec/operators/findIndex-spec.ts
index 1dd023bf4c..36b6d00abd 100644
--- a/spec/operators/findIndex-spec.ts
+++ b/spec/operators/findIndex-spec.ts
@@ -3,8 +3,6 @@ import { TestScheduler } from 'rxjs/testing';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {findIndex} */
@@ -13,7 +11,7 @@ describe('findIndex operator', () => {
return true;
}
- asDiagram('findIndex(x => x % 5 === 0)')('should return matching element from source emits single element', () => {
+ it('should return matching element from source emits single element', () => {
const values = {a: 3, b: 9, c: 15, d: 20};
const source = hot('---a--b--c--d---|', values);
const subs = '^ ! ';
diff --git a/spec/operators/first-spec.ts b/spec/operators/first-spec.ts
index dea1931cb6..22b027f509 100644
--- a/spec/operators/first-spec.ts
+++ b/spec/operators/first-spec.ts
@@ -4,13 +4,11 @@ import { first, mergeMap, delay } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of, from, Observable, Subject, EmptyError } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {first} */
describe('Observable.prototype.first', () => {
- asDiagram('first')('should take the first value of an observable with many values', () => {
+ it('should take the first value of an observable with many values', () => {
const e1 = hot('-----a--b--c---d---|');
const expected = '-----(a|) ';
const sub = '^ ! ';
diff --git a/spec/operators/groupBy-spec.ts b/spec/operators/groupBy-spec.ts
index 92025bbc57..347d5d78d1 100644
--- a/spec/operators/groupBy-spec.ts
+++ b/spec/operators/groupBy-spec.ts
@@ -4,13 +4,11 @@ import { TestScheduler } from 'rxjs/testing';
import { ReplaySubject, of, GroupedObservable, Observable, Operator, Observer } from 'rxjs';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {groupBy} */
describe('groupBy operator', () => {
- asDiagram('groupBy(i => i % 2)')('should group numbers by odd/even', () => {
+ it('should group numbers by odd/even', () => {
const e1 = hot('--1---2---3---4---5---|');
const expected = '--x---y---------------|';
const x = cold( '1-------3-------5---|');
diff --git a/spec/operators/ignoreElements-spec.ts b/spec/operators/ignoreElements-spec.ts
index 6171fd4521..6f75c8bcdc 100644
--- a/spec/operators/ignoreElements-spec.ts
+++ b/spec/operators/ignoreElements-spec.ts
@@ -2,11 +2,9 @@ import { ignoreElements, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {ignoreElements} */
describe('ignoreElements operator', () => {
- asDiagram('ignoreElements')('should ignore all the elements of the source', () => {
+ it('should ignore all the elements of the source', () => {
const source = hot('--a--b--c--d--|');
const subs = '^ !';
const expected = '--------------|';
diff --git a/spec/operators/isEmpty-spec.ts b/spec/operators/isEmpty-spec.ts
index 4c50017390..88d864551a 100644
--- a/spec/operators/isEmpty-spec.ts
+++ b/spec/operators/isEmpty-spec.ts
@@ -2,11 +2,9 @@ import { isEmpty, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {isEmpty} */
describe('isEmpty operator', () => {
- asDiagram('isEmpty')('should return true if source is empty', () => {
+ it('should return true if source is empty', () => {
const source = hot('-----|');
const subs = '^ !';
const expected = '-----(T|)';
diff --git a/spec/operators/last-spec.ts b/spec/operators/last-spec.ts
index 1cb84e72b9..d3a33acc6c 100644
--- a/spec/operators/last-spec.ts
+++ b/spec/operators/last-spec.ts
@@ -3,11 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { last, mergeMap } from 'rxjs/operators';
import { EmptyError, of, from, Observable } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {last} */
describe('Observable.prototype.last', () => {
- asDiagram('last')('should take the last value of an observable', () => {
+ it('should take the last value of an observable', () => {
const e1 = hot('--a----b--c--|');
const e1subs = '^ !';
const expected = '-------------(c|)';
diff --git a/spec/operators/map-spec.ts b/spec/operators/map-spec.ts
index f829ff10e1..b44611b3a1 100644
--- a/spec/operators/map-spec.ts
+++ b/spec/operators/map-spec.ts
@@ -3,15 +3,13 @@ import { map, tap, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
// function shortcuts
const addDrama = function (x: number | string) { return x + '!'; };
const identity = function (x: T) { return x; };
/** @test {map} */
describe('map operator', () => {
- asDiagram('map(x => 10 * x)')('should map multiple values', () => {
+ it('should map multiple values', () => {
const a = cold('--1--2--3--|');
const asubs = '^ !';
const expected = '--x--y--z--|';
diff --git a/spec/operators/mapTo-spec.ts b/spec/operators/mapTo-spec.ts
index 470ce498df..8c1d9a417d 100644
--- a/spec/operators/mapTo-spec.ts
+++ b/spec/operators/mapTo-spec.ts
@@ -3,11 +3,9 @@ import { mapTo, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {mapTo} */
describe('mapTo operator', () => {
- asDiagram('mapTo(\'a\')')('should map multiple values', () => {
+ it('should map multiple values', () => {
const a = cold('--1--2--3--|');
const asubs = '^ !';
const expected = '--a--a--a--|';
diff --git a/spec/operators/materialize-spec.ts b/spec/operators/materialize-spec.ts
index babaf8db74..d41af948b1 100644
--- a/spec/operators/materialize-spec.ts
+++ b/spec/operators/materialize-spec.ts
@@ -2,11 +2,9 @@ import { materialize, map, mergeMap } from 'rxjs/operators';
import { Notification, of } from 'rxjs';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
-
/** @test {materialize} */
describe('materialize operator', () => {
- asDiagram('materialize')('should materialize an Observable', () => {
+ it('should materialize an Observable', () => {
const e1 = hot('--x--y--z--|');
const expected = '--a--b--c--(d|)';
const values = { a: '{x}', b: '{y}', c: '{z}', d: '|' };
diff --git a/spec/operators/max-spec.ts b/spec/operators/max-spec.ts
index cbc32f0968..984b048657 100644
--- a/spec/operators/max-spec.ts
+++ b/spec/operators/max-spec.ts
@@ -3,11 +3,9 @@ import { max, mergeMap, skip, take } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of, range } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {max} */
describe('max operator', () => {
- asDiagram('max')('should find the max of values of an observable', () => {
+ it('should find the max of values of an observable', () => {
const e1 = hot('--a--b--c--|', { a: 42, b: -1, c: 3 });
const subs = '^ !';
const expected = '-----------(x|)';
diff --git a/spec/operators/mergeAll-spec.ts b/spec/operators/mergeAll-spec.ts
index b618a26f35..17b8c61def 100644
--- a/spec/operators/mergeAll-spec.ts
+++ b/spec/operators/mergeAll-spec.ts
@@ -3,12 +3,11 @@ import { mergeAll, mergeMap, take } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { throwError, from, of, queueScheduler } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {mergeAll} */
describe('mergeAll oeprator', () => {
- asDiagram('mergeAll')('should merge a hot observable of cold observables', () => {
+ it('should merge a hot observable of cold observables', () => {
const x = cold( '--a---b--c---d--| ');
const y = cold( '----e---f--g---|');
const e1 = hot( '--x------y-------| ', { x: x, y: y });
diff --git a/spec/operators/mergeMap-spec.ts b/spec/operators/mergeMap-spec.ts
index 5fbf6d0c5b..4d36385921 100644
--- a/spec/operators/mergeMap-spec.ts
+++ b/spec/operators/mergeMap-spec.ts
@@ -17,8 +17,7 @@ describe('mergeMap', () => {
rxTest = new TestScheduler(observableMatcher);
});
- asDiagram('mergeMap(i => 10*i\u2014\u201410*i\u2014\u201410*i\u2014| )')
- ('should map-and-flatten each item to an Observable', () => {
+ it('should map-and-flatten each item to an Observable', () => {
const e1 = hot('--1-----3--5-------|');
const e1subs = '^ !';
const e2 = cold('x-x-x| ', {x: 10});
diff --git a/spec/operators/mergeMapTo-spec.ts b/spec/operators/mergeMapTo-spec.ts
index f0fdc37761..e5e34d9275 100644
--- a/spec/operators/mergeMapTo-spec.ts
+++ b/spec/operators/mergeMapTo-spec.ts
@@ -4,12 +4,10 @@ import { mergeMapTo, map } from 'rxjs/operators';
import { from, of, Observable } from 'rxjs';
declare const type: Function;
-declare const asDiagram: Function;
/** @test {mergeMapTo} */
describe('mergeMapTo', () => {
- asDiagram('mergeMapTo( 10\u2014\u201410\u2014\u201410\u2014| )')
- ('should map-and-flatten each item to an Observable', () => {
+ it('should map-and-flatten each item to an Observable', () => {
const e1 = hot('--1-----3--5-------|');
const e1subs = '^ !';
const e2 = cold('x-x-x| ', {x: 10});
diff --git a/spec/operators/min-spec.ts b/spec/operators/min-spec.ts
index 37d324150d..24a162fd93 100644
--- a/spec/operators/min-spec.ts
+++ b/spec/operators/min-spec.ts
@@ -3,11 +3,9 @@ import { min, skip, take, mergeMap } from 'rxjs/operators';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { range, of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {min} */
describe('min operator', () => {
- asDiagram('min')('should min the values of an observable', () => {
+ it('should min the values of an observable', () => {
const source = hot('--a--b--c--|', { a: 42, b: -1, c: 3 });
const subs = '^ !';
const expected = '-----------(x|)';
diff --git a/spec/operators/multicast-spec.ts b/spec/operators/multicast-spec.ts
index d94bfced61..5240e41586 100644
--- a/spec/operators/multicast-spec.ts
+++ b/spec/operators/multicast-spec.ts
@@ -5,13 +5,12 @@ import { TestScheduler } from 'rxjs/testing';
import { hot, cold, expectObservable, expectSubscriptions, time } from '../helpers/marble-testing';
declare const type: Function;
-declare const asDiagram: Function;
declare const rxTestScheduler: TestScheduler;
/** @test {multicast} */
describe('multicast operator', () => {
- asDiagram('multicast(() => new Subject())')('should mirror a simple source Observable', () => {
+ it('should mirror a simple source Observable', () => {
const source = cold('--1-2---3-4--5-|');
const sourceSubs = '^ !';
const multicasted = source.pipe(multicast(() => new Subject())) as ConnectableObservable;
diff --git a/spec/operators/observeOn-spec.ts b/spec/operators/observeOn-spec.ts
index a0771ef08f..34720e41b7 100644
--- a/spec/operators/observeOn-spec.ts
+++ b/spec/operators/observeOn-spec.ts
@@ -4,13 +4,11 @@ import { expect } from 'chai';
import { hot, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { of, Observable, asapScheduler } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {observeOn} */
describe('observeOn operator', () => {
- asDiagram('observeOn(scheduler)')('should observe on specified scheduler', () => {
+ it('should observe on specified scheduler', () => {
const e1 = hot('--a--b--|');
const expected = '--a--b--|';
const sub = '^ !';
diff --git a/spec/operators/onErrorResumeNext-spec.ts b/spec/operators/onErrorResumeNext-spec.ts
index e7dcd5c9a8..6de282717f 100644
--- a/spec/operators/onErrorResumeNext-spec.ts
+++ b/spec/operators/onErrorResumeNext-spec.ts
@@ -4,10 +4,8 @@ import { onErrorResumeNext, takeWhile } from 'rxjs/operators';
import { concat, defer, throwError, of } from 'rxjs';
import { asInteropObservable } from '../helpers/interop-helper';
-declare function asDiagram(arg: string): Function;
-
describe('onErrorResumeNext operator', () => {
- asDiagram('onErrorResumeNext')('should continue observable sequence with next observable', () => {
+ it('should continue observable sequence with next observable', () => {
const source = hot('--a--b--#');
const next = cold( '--c--d--|');
const subs = '^ !';
diff --git a/spec/operators/pairwise-spec.ts b/spec/operators/pairwise-spec.ts
index 2d9fb18a06..2989e38b91 100644
--- a/spec/operators/pairwise-spec.ts
+++ b/spec/operators/pairwise-spec.ts
@@ -3,11 +3,9 @@ import { pairwise, take } from 'rxjs/operators';
import { Subject } from 'rxjs';
import { expect } from 'chai';
-declare function asDiagram(arg: string): Function;
-
/** @test {pairwise} */
describe('pairwise operator', () => {
- asDiagram('pairwise')('should group consecutive emissions as arrays of two', () => {
+ it('should group consecutive emissions as arrays of two', () => {
const e1 = hot('--a--b-c----d--e---|');
const expected = '-----u-v----w--x---|';
diff --git a/spec/operators/pluck-spec.ts b/spec/operators/pluck-spec.ts
index 9ee8a017b6..616b2aae73 100644
--- a/spec/operators/pluck-spec.ts
+++ b/spec/operators/pluck-spec.ts
@@ -3,11 +3,9 @@ import { cold, expectObservable, expectSubscriptions } from '../helpers/marble-t
import { pluck, map, tap, mergeMap } from 'rxjs/operators';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {pluck} */
describe('pluck operator', () => {
- asDiagram('pluck(\'v\')')('should dematerialize an Observable', () => {
+ it('should dematerialize an Observable', () => {
const values = {
a: '{v:1}',
b: '{v:2}',
diff --git a/spec/operators/publish-spec.ts b/spec/operators/publish-spec.ts
index ba198e6221..ef2edb1eba 100644
--- a/spec/operators/publish-spec.ts
+++ b/spec/operators/publish-spec.ts
@@ -3,12 +3,11 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { publish, zip, mergeMapTo, mergeMap, tap, refCount, retry, repeat, map } from 'rxjs/operators';
import { ConnectableObservable, of, Subscription, Observable } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {publish} */
describe('publish operator', () => {
- asDiagram('publish')('should mirror a simple source Observable', () => {
+ it('should mirror a simple source Observable', () => {
const source = cold('--1-2---3-4--5-|');
const sourceSubs = '^ !';
const published = source.pipe(publish()) as ConnectableObservable;
diff --git a/spec/operators/publishBehavior-spec.ts b/spec/operators/publishBehavior-spec.ts
index 67ee0e37bc..516cded978 100644
--- a/spec/operators/publishBehavior-spec.ts
+++ b/spec/operators/publishBehavior-spec.ts
@@ -3,12 +3,11 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { publishBehavior, mergeMapTo, tap, mergeMap, refCount, retry, repeat } from 'rxjs/operators';
import { ConnectableObservable, of, Subscription, Observable } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {publishBehavior} */
describe('publishBehavior operator', () => {
- asDiagram('publishBehavior(0)')('should mirror a simple source Observable', () => {
+ it('should mirror a simple source Observable', () => {
const source = cold('--1-2---3-4--5-|');
const sourceSubs = '^ !';
const published = source.pipe(publishBehavior('0')) as ConnectableObservable;
diff --git a/spec/operators/publishLast-spec.ts b/spec/operators/publishLast-spec.ts
index 437a793f45..cdf82b9c06 100644
--- a/spec/operators/publishLast-spec.ts
+++ b/spec/operators/publishLast-spec.ts
@@ -3,12 +3,11 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { publishLast, mergeMapTo, tap, mergeMap, refCount, retry } from 'rxjs/operators';
import { ConnectableObservable, of, Subscription, Observable } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {publishLast} */
describe('publishLast operator', () => {
- asDiagram('publishLast')('should emit last notification of a simple source Observable', () => {
+ it('should emit last notification of a simple source Observable', () => {
const source = cold('--1-2---3-4--5-|');
const sourceSubs = '^ !';
const published = source.pipe(publishLast()) as ConnectableObservable;
diff --git a/spec/operators/publishReplay-spec.ts b/spec/operators/publishReplay-spec.ts
index 1236a65ab6..9331eb8864 100644
--- a/spec/operators/publishReplay-spec.ts
+++ b/spec/operators/publishReplay-spec.ts
@@ -3,12 +3,11 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { throwError, ConnectableObservable, EMPTY, NEVER, of, Observable, Subscription } from 'rxjs';
import { publishReplay, mergeMapTo, tap, mergeMap, refCount, retry, repeat, map } from 'rxjs/operators';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {publishReplay} */
describe('publishReplay operator', () => {
- asDiagram('publishReplay(1)')('should mirror a simple source Observable', () => {
+ it('should mirror a simple source Observable', () => {
const source = cold('--1-2---3-4--5-|');
const sourceSubs = '^ !';
const published = source.pipe(publishReplay(1)) as ConnectableObservable;
diff --git a/spec/operators/reduce-spec.ts b/spec/operators/reduce-spec.ts
index 2aebde5ff8..c6fa3a5e85 100644
--- a/spec/operators/reduce-spec.ts
+++ b/spec/operators/reduce-spec.ts
@@ -4,11 +4,10 @@ import { reduce, mergeMap } from 'rxjs/operators';
import { range, of } from 'rxjs';
declare const type: Function;
-declare const asDiagram: Function;
/** @test {reduce} */
describe('reduce operator', () => {
- asDiagram('reduce((acc, curr) => acc + curr, 0)')('should reduce', () => {
+ it('should reduce', () => {
const values = {
a: 1, b: 3, c: 5, x: 9
};
diff --git a/spec/operators/refCount-spec.ts b/spec/operators/refCount-spec.ts
index e35730ff26..1d70673c21 100644
--- a/spec/operators/refCount-spec.ts
+++ b/spec/operators/refCount-spec.ts
@@ -3,11 +3,9 @@ import { cold, expectObservable, expectSubscriptions } from '../helpers/marble-t
import { refCount, publish, publishReplay, first } from 'rxjs/operators';
import { NEVER, noop, Observable, Subject } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {refCount} */
describe('refCount', () => {
- asDiagram('refCount')('should turn a multicasted Observable an automatically ' +
+ it('should turn a multicasted Observable an automatically ' +
'(dis)connecting hot one', () => {
const source = cold('--1-2---3-4--5-|');
const sourceSubs = '^ !';
diff --git a/spec/operators/repeat-spec.ts b/spec/operators/repeat-spec.ts
index a298788e7f..7fcdaa159c 100644
--- a/spec/operators/repeat-spec.ts
+++ b/spec/operators/repeat-spec.ts
@@ -4,13 +4,11 @@ import { repeat, mergeMap, map, multicast, refCount } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of, Subject } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {repeat} */
describe('repeat operator', () => {
- asDiagram('repeat(3)')('should resubscribe count number of times', () => {
+ it('should resubscribe count number of times', () => {
const e1 = cold('--a--b--| ');
const subs = ['^ ! ',
' ^ ! ',
diff --git a/spec/operators/repeatWhen-spec.ts b/spec/operators/repeatWhen-spec.ts
index 37b0cd1cb9..51c1858081 100644
--- a/spec/operators/repeatWhen-spec.ts
+++ b/spec/operators/repeatWhen-spec.ts
@@ -3,11 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { repeatWhen, map, mergeMap, takeUntil } from 'rxjs/operators';
import { of, EMPTY, Observable, Subscriber } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {repeatWhen} */
describe('repeatWhen operator', () => {
- asDiagram('repeatWhen')('should handle a source with eventual complete using a hot notifier', () => {
+ it('should handle a source with eventual complete using a hot notifier', () => {
const source = cold('-1--2--|');
const subs = ['^ ! ',
' ^ ! ',
diff --git a/spec/operators/retry-spec.ts b/spec/operators/retry-spec.ts
index 353d6f3f7c..48c907aef8 100644
--- a/spec/operators/retry-spec.ts
+++ b/spec/operators/retry-spec.ts
@@ -3,11 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { retry, map, take, mergeMap, concat, multicast, refCount } from 'rxjs/operators';
import { Observable, Observer, defer, range, of, throwError, Subject } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {retry} */
describe('retry operator', () => {
- asDiagram('retry(2)')('should handle a basic source that emits next then errors, count=3', () => {
+ it('should handle a basic source that emits next then errors, count=3', () => {
const source = cold('--1-2-3-#');
const subs = ['^ ! ',
' ^ ! ',
diff --git a/spec/operators/retryWhen-spec.ts b/spec/operators/retryWhen-spec.ts
index 345f6379c5..d145d6e4c0 100644
--- a/spec/operators/retryWhen-spec.ts
+++ b/spec/operators/retryWhen-spec.ts
@@ -3,11 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { retryWhen, map, mergeMap, takeUntil } from 'rxjs/operators';
import { of, EMPTY } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {retryWhen} */
describe('retryWhen operator', () => {
- asDiagram('retryWhen')('should handle a source with eventual error using a hot notifier', () => {
+ it('should handle a source with eventual error using a hot notifier', () => {
const source = cold('-1--2--#');
const subs = ['^ ! ',
' ^ ! ',
diff --git a/spec/operators/sample-spec.ts b/spec/operators/sample-spec.ts
index 72db23f0ca..00bff3a107 100644
--- a/spec/operators/sample-spec.ts
+++ b/spec/operators/sample-spec.ts
@@ -3,11 +3,9 @@ import { hot, expectObservable, expectSubscriptions } from '../helpers/marble-te
import { sample, mergeMap } from 'rxjs/operators';
import { Subject, of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {sample} */
describe('sample operator', () => {
- asDiagram('sample')('should get samples when the notifier emits', () => {
+ it('should get samples when the notifier emits', () => {
const e1 = hot('---a----b---c----------d-----| ');
const e1subs = '^ ! ';
const e2 = hot('-----x----------x---x------x---|');
diff --git a/spec/operators/sampleTime-spec.ts b/spec/operators/sampleTime-spec.ts
index 3106d751fa..8220b083b3 100644
--- a/spec/operators/sampleTime-spec.ts
+++ b/spec/operators/sampleTime-spec.ts
@@ -3,13 +3,11 @@ import { sampleTime, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {sampleTime} */
describe('sampleTime operator', () => {
- asDiagram('sampleTime(70)')('should get samples on a delay', () => {
+ it('should get samples on a delay', () => {
const e1 = hot('a---b-c---------d--e---f-g-h--|');
const e1subs = '^ !';
const expected = '-------c-------------e------h-|';
diff --git a/spec/operators/scan-spec.ts b/spec/operators/scan-spec.ts
index aa02ea71b4..1a08b02816 100644
--- a/spec/operators/scan-spec.ts
+++ b/spec/operators/scan-spec.ts
@@ -3,12 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { scan, mergeMap, finalize } from 'rxjs/operators';
import { of } from 'rxjs';
-declare const type: Function;
-declare const asDiagram: Function;
-
/** @test {scan} */
describe('scan operator', () => {
- asDiagram('scan((acc, curr) => acc + curr, 0)')('should scan', () => {
+ it('should scan', () => {
const values = {
a: 1, b: 3, c: 5,
x: 1, y: 4, z: 9
diff --git a/spec/operators/sequenceEqual-spec.ts b/spec/operators/sequenceEqual-spec.ts
index e0029d9d17..6081e6552f 100644
--- a/spec/operators/sequenceEqual-spec.ts
+++ b/spec/operators/sequenceEqual-spec.ts
@@ -3,14 +3,12 @@ import { hot, cold, expectObservable, expectSubscriptions, time } from '../helpe
import { sequenceEqual } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
-declare const type: Function;
-declare const asDiagram: Function;
declare const rxTestScheduler: TestScheduler;
const booleans = { T: true, F: false };
/** @test {sequenceEqual} */
describe('sequenceEqual operator', () => {
- asDiagram('sequenceEqual(observable)')('should return true for two equal sequences', () => {
+ it('should return true for two equal sequences', () => {
const s1 = hot('--a--^--b--c--d--e--f--g--|');
const s1subs = '^ !';
const s2 = hot('-----^-----b--c--d-e-f------g-|');
diff --git a/spec/operators/share-spec.ts b/spec/operators/share-spec.ts
index a239634ed8..3140446461 100644
--- a/spec/operators/share-spec.ts
+++ b/spec/operators/share-spec.ts
@@ -3,11 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { share, retry, mergeMapTo, mergeMap, tap, repeat } from 'rxjs/operators';
import { Observable, EMPTY, NEVER, of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {share} */
describe('share operator', () => {
- asDiagram('share')('should mirror a simple source Observable', () => {
+ it('should mirror a simple source Observable', () => {
const source = cold('--1-2---3-4--5-|');
const sourceSubs = '^ !';
const expected = '--1-2---3-4--5-|';
diff --git a/spec/operators/shareReplay-spec.ts b/spec/operators/shareReplay-spec.ts
index ae2facc35c..1dedddb40c 100644
--- a/spec/operators/shareReplay-spec.ts
+++ b/spec/operators/shareReplay-spec.ts
@@ -5,7 +5,6 @@ import { shareReplay, mergeMapTo, retry } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { Observable, Operator, Observer, of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;
/** @test {shareReplay} */
diff --git a/spec/operators/skip-spec.ts b/spec/operators/skip-spec.ts
index a4c43f5df7..e6109abc7a 100644
--- a/spec/operators/skip-spec.ts
+++ b/spec/operators/skip-spec.ts
@@ -2,11 +2,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { skip, mergeMap } from 'rxjs/operators';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {skip} */
describe('skip operator', () => {
- asDiagram('skip(3)')('should skip values before a total', () => {
+ it('should skip values before a total', () => {
const source = hot('--a--b--c--d--e--|');
const subs = '^ !';
const expected = '-----------d--e--|';
diff --git a/spec/operators/skipLast-spec.ts b/spec/operators/skipLast-spec.ts
index b671dc713c..08d5d44242 100644
--- a/spec/operators/skipLast-spec.ts
+++ b/spec/operators/skipLast-spec.ts
@@ -3,11 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { skipLast, mergeMap } from 'rxjs/operators';
import { range, ArgumentOutOfRangeError, of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {takeLast} */
describe('skipLast operator', () => {
- asDiagram('skipLast(2)')('should skip two values of an observable with many values', () => {
+ it('should skip two values of an observable with many values', () => {
const e1 = cold('--a-----b----c---d--|');
const e1subs = '^ !';
const expected = '-------------a---b--|';
diff --git a/spec/operators/skipUntil-spec.ts b/spec/operators/skipUntil-spec.ts
index 3842f4e251..31cc85f751 100644
--- a/spec/operators/skipUntil-spec.ts
+++ b/spec/operators/skipUntil-spec.ts
@@ -4,11 +4,9 @@ import { concat, defer, of, Subject } from 'rxjs';
import { skipUntil, mergeMap } from 'rxjs/operators';
import { asInteropObservable } from '../helpers/interop-helper';
-declare function asDiagram(arg: string): Function;
-
/** @test {skipUntil} */
describe('skipUntil', () => {
- asDiagram('skipUntil')('should skip values until another observable notifies', () => {
+ it('should skip values until another observable notifies', () => {
const e1 = hot('--a--b--c--d--e----|');
const e1subs = '^ !';
const skip = hot('---------x------| ');
diff --git a/spec/operators/skipWhile-spec.ts b/spec/operators/skipWhile-spec.ts
index 22eee01320..75153ba7ae 100644
--- a/spec/operators/skipWhile-spec.ts
+++ b/spec/operators/skipWhile-spec.ts
@@ -3,11 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { skipWhile, mergeMap, tap } from 'rxjs/operators';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {skipWhile} */
describe('skipWhile operator', () => {
- asDiagram('skipWhile(x => x < 4)')('should skip all elements until predicate is false', () => {
+ it('should skip all elements until predicate is false', () => {
const source = hot('-1-^2--3--4--5--6--|');
const sourceSubs = '^ !';
const expected = '-------4--5--6--|';
diff --git a/spec/operators/startWith-spec.ts b/spec/operators/startWith-spec.ts
index 64a1b81559..c33be2e7f5 100644
--- a/spec/operators/startWith-spec.ts
+++ b/spec/operators/startWith-spec.ts
@@ -3,15 +3,13 @@ import { startWith, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {startWith} */
describe('startWith operator', () => {
const defaultStartValue = 'x';
- asDiagram('startWith(s)')('should prepend to a cold Observable', () => {
+ it('should prepend to a cold Observable', () => {
const e1 = cold('---a--b--c--|');
const e1subs = '^ !';
const expected = 's--a--b--c--|';
diff --git a/spec/operators/subscribeOn-spec.ts b/spec/operators/subscribeOn-spec.ts
index 4ecfe3df8a..f1cc7fba98 100644
--- a/spec/operators/subscribeOn-spec.ts
+++ b/spec/operators/subscribeOn-spec.ts
@@ -3,13 +3,11 @@ import { subscribeOn, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {subscribeOn} */
describe('subscribeOn operator', () => {
- asDiagram('subscribeOn(scheduler)')('should subscribe on specified scheduler', () => {
+ it('should subscribe on specified scheduler', () => {
const e1 = hot('--a--b--|');
const expected = '--a--b--|';
const sub = '^ !';
diff --git a/spec/operators/switch-spec.ts b/spec/operators/switch-spec.ts
index 0d6688d9d9..bfff1dbfa6 100644
--- a/spec/operators/switch-spec.ts
+++ b/spec/operators/switch-spec.ts
@@ -3,12 +3,11 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { Observable, of, NEVER, queueScheduler, Subject } from 'rxjs';
import { map, switchAll, mergeMap } from 'rxjs/operators';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {switch} */
describe('switchAll', () => {
- asDiagram('switchAll')('should switch a hot observable of cold observables', () => {
+ it('should switch a hot observable of cold observables', () => {
const x = cold( '--a---b--c---d--| ');
const y = cold( '----e---f--g---|');
const e1 = hot( '--x------y-------| ', { x: x, y: y });
diff --git a/spec/operators/switchMap-spec.ts b/spec/operators/switchMap-spec.ts
index 340a8c831a..b60c73df16 100644
--- a/spec/operators/switchMap-spec.ts
+++ b/spec/operators/switchMap-spec.ts
@@ -4,12 +4,9 @@ import { switchMap, mergeMap, map, takeWhile } from 'rxjs/operators';
import { concat, defer, of, Observable } from 'rxjs';
import { asInteropObservable } from '../helpers/interop-helper';
-declare function asDiagram(arg: string): Function;
-
/** @test {switchMap} */
describe('switchMap', () => {
- asDiagram('switchMap(i => 10*i\u2014\u201410*i\u2014\u201410*i\u2014| )')
- ('should map-and-flatten each item to an Observable', () => {
+ it('should map-and-flatten each item to an Observable', () => {
const e1 = hot('--1-----3--5-------|');
const e1subs = '^ !';
const e2 = cold('x-x-x| ', {x: 10});
diff --git a/spec/operators/switchMapTo-spec.ts b/spec/operators/switchMapTo-spec.ts
index bc8948a792..adace2fedb 100644
--- a/spec/operators/switchMapTo-spec.ts
+++ b/spec/operators/switchMapTo-spec.ts
@@ -3,12 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { Observable, of } from 'rxjs';
import { switchMapTo, mergeMap } from 'rxjs/operators';
-declare function asDiagram(arg: string): Function;
-
/** @test {switchMapTo} */
describe('switchMapTo', () => {
- asDiagram('switchMapTo( 10\u2014\u201410\u2014\u201410\u2014| )')
- ('should map-and-flatten each item to an Observable', () => {
+ it('should map-and-flatten each item to an Observable', () => {
const e1 = hot('--1-----3--5-------|');
const e1subs = '^ !';
const e2 = cold('x-x-x| ', {x: 10});
diff --git a/spec/operators/takeUntil-spec.ts b/spec/operators/takeUntil-spec.ts
index 29754b3166..c86c6f5982 100644
--- a/spec/operators/takeUntil-spec.ts
+++ b/spec/operators/takeUntil-spec.ts
@@ -2,11 +2,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { takeUntil, mergeMap } from 'rxjs/operators';
import { of, EMPTY } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {takeUntil} */
describe('takeUntil operator', () => {
- asDiagram('takeUntil')('should take values until notifier emits', () => {
+ it('should take values until notifier emits', () => {
const e1 = hot('--a--b--c--d--e--f--g--|');
const e1subs = '^ ! ';
const e2 = hot('-------------z--| ');
diff --git a/spec/operators/takeWhile-spec.ts b/spec/operators/takeWhile-spec.ts
index 452eb0b0a8..9053513ac1 100644
--- a/spec/operators/takeWhile-spec.ts
+++ b/spec/operators/takeWhile-spec.ts
@@ -3,11 +3,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { takeWhile, tap, mergeMap } from 'rxjs/operators';
import { of, Observable, from } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {takeWhile} */
describe('takeWhile operator', () => {
- asDiagram('takeWhile(x => x < 4)')('should take all elements until predicate is false', () => {
+ it('should take all elements until predicate is false', () => {
const source = hot('-1-^2--3--4--5--6--|');
const sourceSubs = '^ ! ';
const expected = '-2--3--| ';
diff --git a/spec/operators/tap-spec.ts b/spec/operators/tap-spec.ts
index b6d1d3f6d5..09345c89a8 100644
--- a/spec/operators/tap-spec.ts
+++ b/spec/operators/tap-spec.ts
@@ -3,12 +3,9 @@ import { tap, mergeMap } from 'rxjs/operators';
import { Subject, of, throwError, Observer, EMPTY } from 'rxjs';
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-declare function asDiagram(arg: string): Function;
-
/** @test {tap} */
describe('tap operator', () => {
- asDiagram('tap(x => console.log(x))')
- ('should mirror multiple values and complete', () => {
+ it('should mirror multiple values and complete', () => {
const e1 = cold('--1--2--3--|');
const e1subs = '^ !';
const expected = '--1--2--3--|';
diff --git a/spec/operators/throttle-spec.ts b/spec/operators/throttle-spec.ts
index 6f82ce205c..096e294a82 100644
--- a/spec/operators/throttle-spec.ts
+++ b/spec/operators/throttle-spec.ts
@@ -4,11 +4,10 @@ import { throttle, mergeMap, mapTo } from 'rxjs/operators';
import { of, concat, timer, Observable } from 'rxjs';
declare const type: Function;
-declare function asDiagram(arg: string): Function;
/** @test {throttle} */
describe('throttle operator', () => {
- asDiagram('throttle')('should immediately emit the first value in each time window', () => {
+ it('should immediately emit the first value in each time window', () => {
const e1 = hot('-a-xy-----b--x--cxxx-|');
const e1subs = '^ !';
const e2 = cold( '----| ');
@@ -348,7 +347,7 @@ describe('throttle operator', () => {
});
describe('throttle(fn, { leading: true, trailing: true })', () => {
- asDiagram('throttle(fn, { leading: true, trailing: true })')('should immediately emit the first value in each time window', () => {
+ it('should immediately emit the first value in each time window', () => {
const e1 = hot('-a-xy-----b--x--cxxx------|');
const e1subs = '^ !';
const e2 = cold( '----| ');
@@ -382,7 +381,7 @@ describe('throttle operator', () => {
});
describe('throttle(fn, { leading: false, trailing: true })', () => {
- asDiagram('throttle(fn, { leading: false, trailing: true })')('should immediately emit the first value in each time window', () => {
+ it('should immediately emit the first value in each time window', () => {
const e1 = hot('-a-xy-----b--x--cxxx------|');
const e1subs = '^ !';
const e2 = cold( '----| ');
diff --git a/spec/operators/throttleTime-spec.ts b/spec/operators/throttleTime-spec.ts
index 4e65054ae8..fc48a92654 100644
--- a/spec/operators/throttleTime-spec.ts
+++ b/spec/operators/throttleTime-spec.ts
@@ -4,13 +4,11 @@ import { throttleTime, take, map, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of, concat, timer } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {throttleTime} */
describe('throttleTime operator', () => {
- asDiagram('throttleTime(50)')('should immediately emit the first value in each time window', () => {
+ it('should immediately emit the first value in each time window', () => {
const e1 = hot('-a-x-y----b---x-cx---|');
const subs = '^ !';
const expected = '-a--------b-----c----|';
@@ -141,7 +139,7 @@ describe('throttleTime operator', () => {
});
describe('throttleTime(fn, { leading: true, trailing: true })', () => {
- asDiagram('throttleTime(fn, { leading: true, trailing: true })')('should immediately emit the first and last values in each time window', () => {
+ it('should immediately emit the first and last values in each time window', () => {
const e1 = hot('-a-xy-----b--x--cxxx--|');
const e1subs = '^ !';
const t = time( '----| ');
@@ -165,7 +163,7 @@ describe('throttleTime operator', () => {
});
describe('throttleTime(fn, { leading: false, trailing: true })', () => {
- asDiagram('throttleTime(fn, { leading: false, trailing: true })')('should immediately emit the last value in each time window', () => {
+ it('should immediately emit the last value in each time window', () => {
const e1 = hot('-a-xy-----b--x--cxxx--|');
const e1subs = '^ !';
const t = time( '----| ');
diff --git a/spec/operators/throwIfEmpty-spec.ts b/spec/operators/throwIfEmpty-spec.ts
index f674fdb604..1a4b9caadc 100644
--- a/spec/operators/throwIfEmpty-spec.ts
+++ b/spec/operators/throwIfEmpty-spec.ts
@@ -3,12 +3,10 @@ import { cold, expectObservable, expectSubscriptions } from '../helpers/marble-t
import { EMPTY, of, EmptyError, defer, throwError } from 'rxjs';
import { throwIfEmpty, mergeMap, retry } from 'rxjs/operators';
-declare function asDiagram(arg: string): Function;
-
/** @test {timeout} */
describe('throwIfEmpty', () => {
describe('with errorFactory', () => {
- asDiagram('throwIfEmpty')('should error when empty', () => {
+ it('should error when empty', () => {
const source = cold('----|');
const expected = '----#';
expectObservable(
diff --git a/spec/operators/timeInterval-spec.ts b/spec/operators/timeInterval-spec.ts
index d221033b18..d835fd82e4 100644
--- a/spec/operators/timeInterval-spec.ts
+++ b/spec/operators/timeInterval-spec.ts
@@ -4,13 +4,11 @@ import { TestScheduler } from 'rxjs/testing';
import { of } from 'rxjs';
import { TimeInterval } from 'rxjs/internal/operators/timeInterval';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {timeInterval} */
describe('timeInterval operator', () => {
- asDiagram('timeInterval')('should record the time interval between source elements', () => {
+ it('should record the time interval between source elements', () => {
const e1 = hot('--a--^b-c-----d--e--|');
const e1subs = '^ !';
const expected = '-w-x-----y--z--|';
diff --git a/spec/operators/timeout-spec.ts b/spec/operators/timeout-spec.ts
index c49c71c31c..2e7937c3bb 100644
--- a/spec/operators/timeout-spec.ts
+++ b/spec/operators/timeout-spec.ts
@@ -4,14 +4,13 @@ import { timeout, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { TimeoutError, of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;
/** @test {timeout} */
describe('timeout operator', () => {
const defaultTimeoutError = new TimeoutError();
- asDiagram('timeout(50)')('should timeout after a specified timeout period', () => {
+ it('should timeout after a specified timeout period', () => {
const e1 = cold('-------a--b--|');
const e1subs = '^ ! ';
const expected = '-----# ';
diff --git a/spec/operators/timeoutWith-spec.ts b/spec/operators/timeoutWith-spec.ts
index 995b8eacfd..d0995260af 100644
--- a/spec/operators/timeoutWith-spec.ts
+++ b/spec/operators/timeoutWith-spec.ts
@@ -3,12 +3,11 @@ import { timeoutWith, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const rxTestScheduler: TestScheduler;
/** @test {timeoutWith} */
describe('timeoutWith operator', () => {
- asDiagram('timeoutWith(50)')('should timeout after a specified period then subscribe to the passed observable', () => {
+ it('should timeout after a specified period then subscribe to the passed observable', () => {
const e1 = cold('-------a--b--|');
const e1subs = '^ ! ';
const e2 = cold('x-y-z-| ');
diff --git a/spec/operators/timestamp-spec.ts b/spec/operators/timestamp-spec.ts
index eea18f809b..9398e5557f 100644
--- a/spec/operators/timestamp-spec.ts
+++ b/spec/operators/timestamp-spec.ts
@@ -3,13 +3,11 @@ import { timestamp, map, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
declare const rxTestScheduler: TestScheduler;
/** @test {timestamp} */
describe('timestamp operator', () => {
- asDiagram('timestamp')('should record the time stamp per each source elements', () => {
+ it('should record the time stamp per each source elements', () => {
const e1 = hot('-b-c-----d--e--|');
const e1subs = '^ !';
const expected = '-w-x-----y--z--|';
diff --git a/spec/operators/toArray-spec.ts b/spec/operators/toArray-spec.ts
index 437ae6116e..94e1446ee1 100644
--- a/spec/operators/toArray-spec.ts
+++ b/spec/operators/toArray-spec.ts
@@ -3,11 +3,10 @@ import { toArray, mergeMap } from 'rxjs/operators';
import { of } from 'rxjs';
declare const type: Function;
-declare const asDiagram: Function;
/** @test {toArray} */
describe('toArray operator', () => {
- asDiagram('toArray')('should reduce the values of an observable into an array', () => {
+ it('should reduce the values of an observable into an array', () => {
const e1 = hot('---a--b--|');
const e1subs = '^ !';
const expected = '---------(w|)';
diff --git a/spec/operators/window-spec.ts b/spec/operators/window-spec.ts
index b36b993a6c..7265c35077 100644
--- a/spec/operators/window-spec.ts
+++ b/spec/operators/window-spec.ts
@@ -4,13 +4,12 @@ import { TestScheduler } from 'rxjs/testing';
import { EMPTY, of, Observable } from 'rxjs';
declare const type: Function;
-declare const asDiagram: Function;
declare const rxTestScheduler: TestScheduler;
/** @test {window} */
describe('window operator', () => {
- asDiagram('window')('should emit windows that close and reopen', () => {
+ it('should emit windows that close and reopen', () => {
const source = hot('---a---b---c---d---e---f---g---h---i---| ');
const sourceSubs = '^ ! ';
const closings = hot('-------------w------------w----------------|');
diff --git a/spec/operators/windowCount-spec.ts b/spec/operators/windowCount-spec.ts
index 9bc107bea7..5c50113b8f 100644
--- a/spec/operators/windowCount-spec.ts
+++ b/spec/operators/windowCount-spec.ts
@@ -1,16 +1,10 @@
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
import { windowCount, mergeMap } from 'rxjs/operators';
-import { TestScheduler } from 'rxjs/testing';
import { of, Observable } from 'rxjs';
-declare const type: Function;
-declare const asDiagram: Function;
-
-declare const rxTestScheduler: TestScheduler;
-
/** @test {windowCount} */
describe('windowCount operator', () => {
- asDiagram('windowCount(3)')('should emit windows with count 3, no skip specified', () => {
+ it('should emit windows with count 3, no skip specified', () => {
const source = hot('---a---b---c---d---e---f---g---h---i---|');
const sourceSubs = '^ !';
const expected = 'x----------y-----------z-----------w---|';
diff --git a/spec/operators/windowToggle-spec.ts b/spec/operators/windowToggle-spec.ts
index 4a79752397..4e0e3128ba 100644
--- a/spec/operators/windowToggle-spec.ts
+++ b/spec/operators/windowToggle-spec.ts
@@ -5,12 +5,10 @@ import { windowToggle, tap, mergeMap } from 'rxjs/operators';
import { TestScheduler } from 'rxjs/testing';
declare const rxTestScheduler: TestScheduler;
-declare const type: Function;
-declare const asDiagram: Function;
/** @test {windowToggle} */
describe('windowToggle', () => {
- asDiagram('windowToggle')('should emit windows governed by openings and closings', () => {
+ it('should emit windows governed by openings and closings', () => {
const source = hot('--1--2--^-a--b--c--d--e--f--g--h-|');
const subs = '^ !';
const e2 = cold( '----w--------w--------w--|');
diff --git a/spec/operators/windowWhen-spec.ts b/spec/operators/windowWhen-spec.ts
index a74be6eb0a..874d3e572a 100644
--- a/spec/operators/windowWhen-spec.ts
+++ b/spec/operators/windowWhen-spec.ts
@@ -1,16 +1,10 @@
import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/marble-testing';
-import { TestScheduler } from 'rxjs/testing';
import { windowWhen, mergeMap } from 'rxjs/operators';
import { Observable, of } from 'rxjs';
-declare const type: Function;
-declare const asDiagram: Function;
-
-declare const rxTestScheduler: TestScheduler;
-
/** @test {windowWhen} */
describe('windowWhen operator', () => {
- asDiagram('windowWhen')('should emit windows that close and reopen', () => {
+ it('should emit windows that close and reopen', () => {
const e1 = hot('--a--^--b--c--d--e--f--g--h--i--|');
const e1subs = '^ !';
const e2 = cold( '-----------| ');
diff --git a/spec/operators/withLatestFrom-spec.ts b/spec/operators/withLatestFrom-spec.ts
index e2f8a4c91b..208e40e768 100644
--- a/spec/operators/withLatestFrom-spec.ts
+++ b/spec/operators/withLatestFrom-spec.ts
@@ -4,11 +4,9 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { withLatestFrom, mergeMap, delay } from 'rxjs/operators';
import { of } from 'rxjs';
-declare function asDiagram(arg: string): Function;
-
/** @test {withLatestFrom} */
describe('withLatestFrom operator', () => {
- asDiagram('withLatestFrom')('should combine events from cold observables', () => {
+ it('should combine events from cold observables', () => {
const e1 = cold('-a--b-----c-d-e-|');
const e2 = cold('--1--2-3-4---| ');
const expected = '----B-----C-D-E-|';
diff --git a/spec/operators/zipAll-spec.ts b/spec/operators/zipAll-spec.ts
index 3121c182ae..5ac3a65911 100644
--- a/spec/operators/zipAll-spec.ts
+++ b/spec/operators/zipAll-spec.ts
@@ -3,12 +3,11 @@ import { hot, cold, expectObservable, expectSubscriptions } from '../helpers/mar
import { zipAll, mergeMap } from 'rxjs/operators';
import { queueScheduler, of, zip, Observable } from 'rxjs';
-declare function asDiagram(arg: string): Function;
declare const type: Function;
/** @test {zipAll} */
describe('zipAll operator', () => {
- asDiagram('zipAll')('should combine paired events from two observables', () => {
+ it('should combine paired events from two observables', () => {
const x = cold( '-a-----b-|');
const y = cold( '--1-2-----');
const outer = hot('-x----y--------| ', { x: x, y: y });
diff --git a/spec/support/tests2png.opts b/spec/support/tests2png.opts
deleted file mode 100644
index 28880d5ec5..0000000000
--- a/spec/support/tests2png.opts
+++ /dev/null
@@ -1,12 +0,0 @@
---require ts-node/register
---require tsconfig-paths/register
---require spec/helpers/polyfills.ts
---require source-map-support/register
---require spec/helpers/tests2png/diagram-test-runner.ts
---require spec/helpers/testScheduler-ui.ts
---ui spec/helpers/testScheduler-ui.ts
-
---reporter dot
-
---recursive
---timeout 5000
diff --git a/src/internal/operators/concatAll.ts b/src/internal/operators/concatAll.ts
index c3fc1960e1..959e35d4e9 100644
--- a/src/internal/operators/concatAll.ts
+++ b/src/internal/operators/concatAll.ts
@@ -12,7 +12,7 @@ export function concatAll(): OperatorFunction;
* Flattens an Observable-of-Observables by putting one
* inner Observable after the other.
*
- * ![](concatAll.png)
+ * ![](../../assets/images/svgs/concatAll.svg)
*
* Joins every Observable emitted by the source (a higher-order Observable), in
* a serial fashion. It subscribes to each inner Observable only after the