diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 95cef390..542c3bdf 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -8,6 +8,7 @@ on:
jobs:
test:
+ name: Test Code
env:
CI: true
@@ -22,7 +23,7 @@ jobs:
experimental: true
runs-on: ${{ matrix.os }}
continue-on-error: ${{ matrix.experimental }}
-
+
steps:
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }} on ${{ matrix.os }}
@@ -38,3 +39,17 @@ jobs:
uses: codecov/codecov-action@v3.1.1
with:
verbose: true
+
+ lint:
+ name: Lint Code
+ env:
+ CI: true
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-node@v3
+ with:
+ node-version: "lts/*"
+ - run: |
+ npm ci
+ npm run lint
diff --git a/.gitignore b/.gitignore
index 798ed239..5df09413 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,3 +8,5 @@ p.txt
npm-debug.log
/test/validators/XmlCryptoJava/target/
.eslintcache
+.nyc_output/
+coverage/
diff --git a/.mocharc.json b/.mocharc.json
new file mode 100644
index 00000000..eba044cf
--- /dev/null
+++ b/.mocharc.json
@@ -0,0 +1,10 @@
+{
+ "diff": true,
+ "extension": "spec.js",
+ "package": "./package.json",
+ "recursive": true,
+ "reporter": "spec",
+ "require": ["choma"],
+ "spec": "test/*.js",
+ "watch-files": "test/*.js"
+}
diff --git a/.nycrc.json b/.nycrc.json
new file mode 100644
index 00000000..7db3067c
--- /dev/null
+++ b/.nycrc.json
@@ -0,0 +1,6 @@
+{
+ "all": true,
+ "check-coverage": false,
+ "reporter": ["lcov", "text"],
+ "include": ["src/**"]
+}
diff --git a/package-lock.json b/package-lock.json
index 71956da0..285d45d5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,6 +4,16 @@
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+ "@ampproject/remapping": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz",
+ "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==",
+ "dev": true,
+ "requires": {
+ "@jridgewell/gen-mapping": "^0.3.0",
+ "@jridgewell/trace-mapping": "^0.3.9"
+ }
+ },
"@babel/code-frame": {
"version": "7.21.4",
"resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.21.4.tgz",
@@ -13,6 +23,58 @@
"@babel/highlight": "^7.18.6"
}
},
+ "@babel/compat-data": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.22.3.tgz",
+ "integrity": "sha512-aNtko9OPOwVESUFp3MZfD8Uzxl7JzSeJpd7npIoxCasU37PFbAQRpKglkaKwlHOyeJdrREpo8TW8ldrkYWwvIQ==",
+ "dev": true
+ },
+ "@babel/core": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.22.1.tgz",
+ "integrity": "sha512-Hkqu7J4ynysSXxmAahpN1jjRwVJ+NdpraFLIWflgjpVob3KNyK3/tIUc7Q7szed8WMp0JNa7Qtd1E9Oo22F9gA==",
+ "dev": true,
+ "requires": {
+ "@ampproject/remapping": "^2.2.0",
+ "@babel/code-frame": "^7.21.4",
+ "@babel/generator": "^7.22.0",
+ "@babel/helper-compilation-targets": "^7.22.1",
+ "@babel/helper-module-transforms": "^7.22.1",
+ "@babel/helpers": "^7.22.0",
+ "@babel/parser": "^7.22.0",
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.0",
+ "convert-source-map": "^1.7.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.2",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ }
+ },
+ "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
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
+ }
+ },
"@babel/generator": {
"version": "7.22.3",
"resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.22.3.tgz",
@@ -25,6 +87,42 @@
"jsesc": "^2.5.1"
}
},
+ "@babel/helper-compilation-targets": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.1.tgz",
+ "integrity": "sha512-Rqx13UM3yVB5q0D/KwQ8+SPfX/+Rnsy1Lw1k/UwOC4KC6qrzIQoY3lYnBu5EHKBlEHHcj0M0W8ltPSkD8rqfsQ==",
+ "dev": true,
+ "requires": {
+ "@babel/compat-data": "^7.22.0",
+ "@babel/helper-validator-option": "^7.21.0",
+ "browserslist": "^4.21.3",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.0"
+ },
+ "dependencies": {
+ "lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "requires": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ },
+ "yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true
+ }
+ }
+ },
"@babel/helper-environment-visitor": {
"version": "7.22.1",
"resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.1.tgz",
@@ -50,6 +148,40 @@
"@babel/types": "^7.18.6"
}
},
+ "@babel/helper-module-imports": {
+ "version": "7.21.4",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.21.4.tgz",
+ "integrity": "sha512-orajc5T2PsRYUN3ZryCEFeMDYwyw09c/pZeaQEZPH0MpKzSvn3e0uXsDBu3k03VI+9DBiRo+l22BfKTpKwa/Wg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.21.4"
+ }
+ },
+ "@babel/helper-module-transforms": {
+ "version": "7.22.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.22.1.tgz",
+ "integrity": "sha512-dxAe9E7ySDGbQdCVOY/4+UcD8M9ZFqZcZhSPsPacvCG4M+9lwtDDQfI2EoaSvmf7W/8yCBkGU0m7Pvt1ru3UZw==",
+ "dev": true,
+ "requires": {
+ "@babel/helper-environment-visitor": "^7.22.1",
+ "@babel/helper-module-imports": "^7.21.4",
+ "@babel/helper-simple-access": "^7.21.5",
+ "@babel/helper-split-export-declaration": "^7.18.6",
+ "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.0"
+ }
+ },
+ "@babel/helper-simple-access": {
+ "version": "7.21.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.21.5.tgz",
+ "integrity": "sha512-ENPDAMC1wAjR0uaCUwliBdiSl1KBJAVnMTzXqi64c2MG8MPR6ii4qf7bSXDqSFbr4W6W028/rf5ivoHop5/mkg==",
+ "dev": true,
+ "requires": {
+ "@babel/types": "^7.21.5"
+ }
+ },
"@babel/helper-split-export-declaration": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz",
@@ -71,6 +203,23 @@
"integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
"dev": true
},
+ "@babel/helper-validator-option": {
+ "version": "7.21.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.21.0.tgz",
+ "integrity": "sha512-rmL/B8/f0mKS2baE9ZpyTcTavvEuWhTTW8amjzXNvYG4AwBsqTLikfXsEofsJEfKHf+HQVQbFOHy6o+4cnC/fQ==",
+ "dev": true
+ },
+ "@babel/helpers": {
+ "version": "7.22.3",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.22.3.tgz",
+ "integrity": "sha512-jBJ7jWblbgr7r6wYZHMdIqKc73ycaTcCaWRq4/2LpuPHcx7xMlZvpGQkOYc9HeSjn6rcx15CPlgVcBtZ4WZJ2w==",
+ "dev": true,
+ "requires": {
+ "@babel/template": "^7.21.9",
+ "@babel/traverse": "^7.22.1",
+ "@babel/types": "^7.22.3"
+ }
+ },
"@babel/highlight": {
"version": "7.18.6",
"resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
@@ -379,6 +528,95 @@
"integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==",
"dev": true
},
+ "@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
+ },
+ "dependencies": {
+ "argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "requires": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "requires": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ }
+ },
+ "js-yaml": {
+ "version": "3.14.1",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+ "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+ "dev": true,
+ "requires": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ }
+ },
+ "locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "requires": {
+ "p-locate": "^4.1.0"
+ }
+ },
+ "p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "requires": {
+ "p-try": "^2.0.0"
+ }
+ },
+ "p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "requires": {
+ "p-limit": "^2.2.0"
+ }
+ },
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true
+ }
+ }
+ },
+ "@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true
+ },
"@jridgewell/gen-mapping": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz",
@@ -736,6 +974,16 @@
}
}
},
+ "aggregate-error": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz",
+ "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==",
+ "dev": true,
+ "requires": {
+ "clean-stack": "^2.0.0",
+ "indent-string": "^4.0.0"
+ }
+ },
"ajv": {
"version": "6.12.6",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
@@ -757,6 +1005,12 @@
"string-width": "^4.1.0"
}
},
+ "ansi-colors": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz",
+ "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==",
+ "dev": true
+ },
"ansi-escapes": {
"version": "4.3.2",
"resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
@@ -781,13 +1035,23 @@
"color-convert": "^2.0.1"
}
},
+ "anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "requires": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ }
+ },
"append-transform": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-1.0.0.tgz",
- "integrity": "sha512-P009oYkeHyU742iSZJzZZywj4QRJdnTWffaKuJQLablCZ1uz6/cW4yaRgcDaoQ+uwOxxnt0gRUcwfsNP2ri0gw==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz",
+ "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==",
"dev": true,
"requires": {
- "default-require-extensions": "^2.0.0"
+ "default-require-extensions": "^3.0.0"
}
},
"archy": {
@@ -796,12 +1060,6 @@
"integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==",
"dev": true
},
- "arg": {
- "version": "4.1.3",
- "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
- "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
- "dev": true
- },
"argparse": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
@@ -831,19 +1089,10 @@
"is-string": "^1.0.7"
}
},
- "asn1": {
- "version": "0.2.6",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz",
- "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==",
- "dev": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==",
+ "assertion-error": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz",
+ "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==",
"dev": true
},
"ast-types": {
@@ -870,30 +1119,12 @@
"retry": "0.13.1"
}
},
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
- "dev": true
- },
"available-typed-arrays": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz",
"integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==",
"dev": true
},
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==",
- "dev": true
- },
- "aws4": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
- "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==",
- "dev": true
- },
"axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
@@ -927,15 +1158,6 @@
"integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==",
"dev": true
},
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==",
- "dev": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
"before-after-hook": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz",
@@ -948,10 +1170,10 @@
"integrity": "sha512-GPEid2Y9QU1Exl1rpO9B2IPJGHPSupF5GnVIP0blYvNOMer2bTvSWs1jGOUg04hTmu67nmLsQ9TBo1puaotBHg==",
"dev": true
},
- "bind-obj-methods": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-2.0.2.tgz",
- "integrity": "sha512-bUkRdEOppT1Xg/jG0+bp0JSjUD9U0r7skxb/42WeBUjfBpW6COQTIgQmKX5J2Z3aMXcORKgN2N+d7IQwTK3pag==",
+ "binary-extensions": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+ "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
"dev": true
},
"bl": {
@@ -1077,12 +1299,24 @@
"fill-range": "^7.0.1"
}
},
- "browser-process-hrtime": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz",
- "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==",
+ "browser-stdout": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz",
+ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==",
"dev": true
},
+ "browserslist": {
+ "version": "4.21.7",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.7.tgz",
+ "integrity": "sha512-BauCXrQ7I2ftSqd2mvKHGo85XR0u7Ru3C/Hxsy/0TkfCtjrmAbPdzLGasmoiBxplpDXlPvdjX9u7srIMfgasNA==",
+ "dev": true,
+ "requires": {
+ "caniuse-lite": "^1.0.30001489",
+ "electron-to-chromium": "^1.4.411",
+ "node-releases": "^2.0.12",
+ "update-browserslist-db": "^1.0.11"
+ }
+ },
"buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
@@ -1093,12 +1327,6 @@
"ieee754": "^1.1.13"
}
},
- "buffer-from": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
- "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
- "dev": true
- },
"bundle-name": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-3.0.0.tgz",
@@ -1130,15 +1358,15 @@
}
},
"caching-transform": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-3.0.2.tgz",
- "integrity": "sha512-Mtgcv3lh3U0zRii/6qVgQODdPA4G3zhG+jtbCWj39RXuUFTMzH0vcdMtaJS1jPowd+It2Pqr6y3NJMQqOqCE2w==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz",
+ "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==",
"dev": true,
"requires": {
- "hasha": "^3.0.0",
- "make-dir": "^2.0.0",
- "package-hash": "^3.0.0",
- "write-file-atomic": "^2.4.2"
+ "hasha": "^5.0.0",
+ "make-dir": "^3.0.0",
+ "package-hash": "^4.0.0",
+ "write-file-atomic": "^3.0.0"
}
},
"call-bind": {
@@ -1158,22 +1386,31 @@
"dev": true
},
"camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
"dev": true
},
- "capture-stack-trace": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/capture-stack-trace/-/capture-stack-trace-1.0.2.tgz",
- "integrity": "sha512-X/WM2UQs6VMHUtjUDnZTRI+i1crWteJySFzr9UpGoQa4WQffXVTTXuekjl7TjZRlcF2XfjgITT0HxZ9RnxeT0w==",
+ "caniuse-lite": {
+ "version": "1.0.30001495",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001495.tgz",
+ "integrity": "sha512-F6x5IEuigtUfU5ZMQK2jsy5JqUUlEFRVZq8bO2a+ysq5K7jD6PPc9YXZj78xDNS3uNchesp1Jw47YXEqr+Viyg==",
"dev": true
},
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==",
- "dev": true
+ "chai": {
+ "version": "4.3.7",
+ "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.7.tgz",
+ "integrity": "sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==",
+ "dev": true,
+ "requires": {
+ "assertion-error": "^1.1.0",
+ "check-error": "^1.0.2",
+ "deep-eql": "^4.1.2",
+ "get-func-name": "^2.0.0",
+ "loupe": "^2.3.1",
+ "pathval": "^1.1.1",
+ "type-detect": "^4.0.5"
+ }
},
"chalk": {
"version": "4.1.2",
@@ -1191,6 +1428,12 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
+ "check-error": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz",
+ "integrity": "sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==",
+ "dev": true
+ },
"chevrotain": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-7.1.1.tgz",
@@ -1200,62 +1443,43 @@
"regexp-to-ast": "0.5.0"
}
},
- "ci-info": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
- "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
- "dev": true
- },
- "clean-yaml-object": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/clean-yaml-object/-/clean-yaml-object-0.1.0.tgz",
- "integrity": "sha512-3yONmlN9CSAkzNwnRCiJQ7Q2xK5mWuEfL3PuTZcAUzhObbXsfsnMptJzXwz93nc5zn9V9TwCVMmV7w4xsm43dw==",
- "dev": true
- },
- "cli-boxes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
- "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
- "dev": true
- },
- "cli-cursor": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
- "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "chokidar": {
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
+ "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==",
"dev": true,
"requires": {
- "restore-cursor": "^3.1.0"
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "fsevents": "~2.3.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "dependencies": {
+ "glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "requires": {
+ "is-glob": "^4.0.1"
+ }
+ }
}
},
- "cli-spinners": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz",
- "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==",
- "dev": true
- },
- "cli-width": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
- "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
- "dev": true
- },
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "choma": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/choma/-/choma-1.2.1.tgz",
+ "integrity": "sha512-4KwEouEHt6SfG8vYnN2gSJfq/cGmnY2gubnUgsgkRXzHoSRAgluX2YXQgDg6bTDWuOmUrTb/cfwMpNlvnnPZCg==",
"dev": true,
"requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "chalk": "^2.3.2",
+ "seedrandom": "^2.4.3"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- },
"ansi-styles": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
@@ -1265,6 +1489,17 @@
"color-convert": "^1.9.0"
}
},
+ "chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "requires": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ }
+ },
"color-convert": {
"version": "1.9.3",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
@@ -1280,51 +1515,73 @@
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
"dev": true
},
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true
},
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dev": true,
"requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
+ "has-flag": "^3.0.0"
}
}
}
},
+ "ci-info": {
+ "version": "3.8.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.8.0.tgz",
+ "integrity": "sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==",
+ "dev": true
+ },
+ "clean-stack": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz",
+ "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==",
+ "dev": true
+ },
+ "cli-boxes": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz",
+ "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==",
+ "dev": true
+ },
+ "cli-cursor": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
+ "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==",
+ "dev": true,
+ "requires": {
+ "restore-cursor": "^3.1.0"
+ }
+ },
+ "cli-spinners": {
+ "version": "2.9.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.0.tgz",
+ "integrity": "sha512-4/aL9X3Wh0yiMQlE+eeRhWP6vclO3QRtw1JHKIT0FFUs5FjpFmESqtMvYZ0+lbzBw900b95mS0hohy+qn2VK/g==",
+ "dev": true
+ },
+ "cli-width": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz",
+ "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==",
+ "dev": true
+ },
+ "cliui": {
+ "version": "7.0.4",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz",
+ "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^7.0.0"
+ }
+ },
"clone": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
@@ -1346,21 +1603,6 @@
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
- "color-support": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz",
- "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==",
- "dev": true
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "dev": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
"commander": {
"version": "9.5.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
@@ -1400,20 +1642,6 @@
"unique-string": "^3.0.0",
"write-file-atomic": "^3.0.3",
"xdg-basedir": "^5.0.1"
- },
- "dependencies": {
- "write-file-atomic": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
- "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
- "dev": true,
- "requires": {
- "imurmurhash": "^0.1.4",
- "is-typedarray": "^1.0.0",
- "signal-exit": "^3.0.2",
- "typedarray-to-buffer": "^3.1.5"
- }
- }
}
},
"connectivity": {
@@ -1431,12 +1659,6 @@
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
"dev": true
},
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==",
- "dev": true
- },
"cosmiconfig": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.1.3.tgz",
@@ -1447,73 +1669,6 @@
"js-yaml": "^4.1.0",
"parse-json": "^5.0.0",
"path-type": "^4.0.0"
- },
- "dependencies": {
- "parse-json": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
- "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
- "dev": true,
- "requires": {
- "@babel/code-frame": "^7.0.0",
- "error-ex": "^1.3.1",
- "json-parse-even-better-errors": "^2.3.0",
- "lines-and-columns": "^1.1.6"
- }
- },
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- }
- }
- },
- "coveralls": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz",
- "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==",
- "dev": true,
- "requires": {
- "js-yaml": "^3.13.1",
- "lcov-parse": "^1.0.0",
- "log-driver": "^1.2.7",
- "minimist": "^1.2.5",
- "request": "^2.88.2"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- }
- }
- },
- "cp-file": {
- "version": "6.2.0",
- "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-6.2.0.tgz",
- "integrity": "sha512-fmvV4caBnofhPe8kOcitBwSn2f39QLjnAnGq3gO9dfd75mUytzKNZB1hde6QHunW2Rt+OwuBOMc3i1tNElbszA==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "make-dir": "^2.0.0",
- "nested-error-stacks": "^2.0.0",
- "pify": "^4.0.1",
- "safe-buffer": "^5.0.1"
}
},
"cross-spawn": {
@@ -1544,15 +1699,6 @@
}
}
},
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
"data-uri-to-buffer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz",
@@ -1569,9 +1715,9 @@
}
},
"decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz",
+ "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==",
"dev": true
},
"decompress-response": {
@@ -1591,6 +1737,15 @@
}
}
},
+ "deep-eql": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.3.tgz",
+ "integrity": "sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==",
+ "dev": true,
+ "requires": {
+ "type-detect": "^4.0.0"
+ }
+ },
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
@@ -1626,12 +1781,12 @@
}
},
"default-require-extensions": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-2.0.0.tgz",
- "integrity": "sha512-B0n2zDIXpzLzKeoEozorDSa1cHc1t0NjmxP0zuAxbizNU2MBqYJJKYXrrFdKuQliojXynrxgd7l4ahfg/+aA5g==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz",
+ "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==",
"dev": true,
"requires": {
- "strip-bom": "^3.0.0"
+ "strip-bom": "^4.0.0"
}
},
"defaults": {
@@ -1677,12 +1832,6 @@
"vm2": "^3.9.17"
}
},
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
- "dev": true
- },
"deprecation": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz",
@@ -1702,9 +1851,9 @@
"dev": true
},
"diff": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/diff/-/diff-1.4.0.tgz",
- "integrity": "sha512-VzVc42hMZbYU9Sx/ltb7KYuQ6pqAw+cbFWVy4XKdkuEL2CFaRLGEnISPs7YdzaUGpi+CpIqvRmu7hPQ4T7EQ5w==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz",
+ "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==",
"dev": true
},
"dir-glob": {
@@ -1714,14 +1863,6 @@
"dev": true,
"requires": {
"path-type": "^4.0.0"
- },
- "dependencies": {
- "path-type": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
- "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
- "dev": true
- }
}
},
"doctrine": {
@@ -1733,12 +1874,6 @@
"esutils": "^2.0.2"
}
},
- "domain-browser": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
- "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
- "dev": true
- },
"dot-prop": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz",
@@ -1754,16 +1889,6 @@
"integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
"dev": true
},
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==",
- "dev": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
"editorconfig": {
"version": "0.15.3",
"resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz",
@@ -1793,6 +1918,12 @@
"jake": "^10.8.5"
}
},
+ "electron-to-chromium": {
+ "version": "1.4.421",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.421.tgz",
+ "integrity": "sha512-wZOyn3s/aQOtLGAwXMZfteQPN68kgls2wDAnYOA8kCjBvKVrW5RwmWVspxJYTqrcN7Y263XJVsC66VCIGzDO3g==",
+ "dev": true
+ },
"emoji-regex": {
"version": "8.0.0",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
@@ -1871,14 +2002,6 @@
"is-string": "^1.0.7",
"isarray": "^2.0.5",
"stop-iteration-iterator": "^1.0.0"
- },
- "dependencies": {
- "isarray": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
- "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
- "dev": true
- }
}
},
"es-set-tostringtag": {
@@ -1909,6 +2032,12 @@
"integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==",
"dev": true
},
+ "escalade": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
+ "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "dev": true
+ },
"escape-goat": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz",
@@ -2092,12 +2221,6 @@
"integrity": "sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==",
"dev": true
},
- "esm": {
- "version": "3.2.25",
- "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz",
- "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==",
- "dev": true
- },
"espree": {
"version": "9.5.2",
"resolved": "https://registry.npmjs.org/espree/-/espree-9.5.2.tgz",
@@ -2145,12 +2268,6 @@
"integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
"dev": true
},
- "events-to-array": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz",
- "integrity": "sha512-inRWzRY7nG+aXZxBzEqYKB3HPgwflZRopAjDCHv0whhRx+MTUr1ei0ICZUypdyE0HRm4L2d5VEcIqLD6yl+BFA==",
- "dev": true
- },
"execa": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/execa/-/execa-7.1.1.tgz",
@@ -2218,12 +2335,6 @@
}
}
},
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "dev": true
- },
"external-editor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz",
@@ -2235,12 +2346,6 @@
"tmp": "^0.0.33"
}
},
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==",
- "dev": true
- },
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -2339,14 +2444,14 @@
}
},
"find-cache-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
- "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+ "version": "3.3.2",
+ "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz",
+ "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==",
"dev": true,
"requires": {
"commondir": "^1.0.1",
- "make-dir": "^2.0.0",
- "pkg-dir": "^3.0.0"
+ "make-dir": "^3.0.2",
+ "pkg-dir": "^4.1.0"
}
},
"find-up": {
@@ -2359,6 +2464,12 @@
"path-exists": "^4.0.0"
}
},
+ "flat": {
+ "version": "5.0.2",
+ "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz",
+ "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==",
+ "dev": true
+ },
"flat-cache": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
@@ -2391,51 +2502,13 @@
}
},
"foreground-child": {
- "version": "1.5.6",
- "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-1.5.6.tgz",
- "integrity": "sha512-3TOY+4TKV0Ml83PXJQY+JFQaHNV38lzQDIzzXYg1kWdBLenGgoZhAs0CKgzI31vi2pWEpQMq/Yi4bpKwCPkw7g==",
- "dev": true,
- "requires": {
- "cross-spawn": "^4",
- "signal-exit": "^3.0.0"
- },
- "dependencies": {
- "cross-spawn": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-4.0.2.tgz",
- "integrity": "sha512-yAXz/pA1tD8Gtg2S98Ekf/sewp3Lcp3YoFKJ4Hkp5h5yLWnKVTDU0kwjKJ8NDCYcfTLfyGkzTikst+jWypT1iA==",
- "dev": true,
- "requires": {
- "lru-cache": "^4.0.1",
- "which": "^1.2.9"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "dev": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==",
- "dev": true
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz",
+ "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==",
"dev": true,
"requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
+ "cross-spawn": "^7.0.0",
+ "signal-exit": "^3.0.2"
}
},
"form-data-encoder": {
@@ -2453,10 +2526,10 @@
"fetch-blob": "^3.1.2"
}
},
- "fs-exists-cached": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz",
- "integrity": "sha512-kSxoARUDn4F2RPXX48UXnaFKwVU7Ivd/6qpzZL29MCDmr9sTvybv4gFCp+qaI4fM9m0z9fgz/yJvi56GAz+BZg==",
+ "fromentries": {
+ "version": "1.3.2",
+ "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz",
+ "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==",
"dev": true
},
"fs-extra": {
@@ -2476,18 +2549,19 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
+ "fsevents": {
+ "version": "2.3.2",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
+ "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "dev": true,
+ "optional": true
+ },
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
"dev": true
},
- "function-loop": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/function-loop/-/function-loop-1.0.2.tgz",
- "integrity": "sha512-Iw4MzMfS3udk/rqxTiDDCllhGwlOrsr50zViTOO/W6lS/9y6B1J0BD2VZzrnWUYBJsl3aeqjgR5v7bWWhZSYbA==",
- "dev": true
- },
"function.prototype.name": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz",
@@ -2506,12 +2580,24 @@
"integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
"dev": true
},
+ "gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true
+ },
"get-caller-file": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
+ "get-func-name": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz",
+ "integrity": "sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==",
+ "dev": true
+ },
"get-intrinsic": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz",
@@ -2524,6 +2610,12 @@
"has-symbols": "^1.0.3"
}
},
+ "get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true
+ },
"get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
@@ -2575,15 +2667,6 @@
}
}
},
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
"git-hooks-list": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.1.0.tgz",
@@ -2739,22 +2822,6 @@
"integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==",
"dev": true
},
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==",
- "dev": true
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "dev": true,
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
"has": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
@@ -2813,18 +2880,27 @@
"dev": true
},
"hasha": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/hasha/-/hasha-3.0.0.tgz",
- "integrity": "sha512-w0Kz8lJFBoyaurBiNrIvxPqr/gJ6fOfSkpAPOepN3oECqGJag37xPbOv57izi/KP8auHgNYxn5fXtAb+1LsJ6w==",
+ "version": "5.2.2",
+ "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz",
+ "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==",
"dev": true,
"requires": {
- "is-stream": "^1.0.1"
+ "is-stream": "^2.0.0",
+ "type-fest": "^0.8.0"
+ },
+ "dependencies": {
+ "type-fest": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz",
+ "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==",
+ "dev": true
+ }
}
},
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "he": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+ "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
"dev": true
},
"html-escaper": {
@@ -2866,17 +2942,6 @@
}
}
},
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
"http2-wrapper": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz",
@@ -2963,6 +3028,12 @@
"integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
"dev": true
},
+ "indent-string": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz",
+ "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==",
+ "dev": true
+ },
"inflight": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
@@ -3073,6 +3144,15 @@
"has-bigints": "^1.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,
+ "requires": {
+ "binary-extensions": "^2.0.0"
+ }
+ },
"is-boolean-object": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz",
@@ -3214,9 +3294,9 @@
"dev": true
},
"is-plain-obj": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
- "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "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
},
"is-plain-object": {
@@ -3260,9 +3340,9 @@
}
},
"is-stream": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
- "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
"dev": true
},
"is-string": {
@@ -3317,6 +3397,12 @@
"call-bind": "^1.0.2"
}
},
+ "is-windows": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+ "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+ "dev": true
+ },
"is-wsl": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
@@ -3341,11 +3427,10 @@
"dev": true
},
"isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==",
- "dev": true,
- "optional": true
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true
},
"isexe": {
"version": "2.0.0",
@@ -3353,12 +3438,6 @@
"integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
"dev": true
},
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==",
- "dev": true
- },
"issue-parser": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz",
@@ -3373,33 +3452,30 @@
}
},
"istanbul-lib-coverage": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz",
- "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz",
+ "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==",
"dev": true
},
"istanbul-lib-hook": {
- "version": "2.0.7",
- "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-2.0.7.tgz",
- "integrity": "sha512-vrRztU9VRRFDyC+aklfLoeXyNdTfga2EI3udDGn4cZ6fpSXpHLV9X6CHvfoMCPtggg8zvDDmC4b9xfu0z6/llA==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz",
+ "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==",
"dev": true,
"requires": {
- "append-transform": "^1.0.0"
+ "append-transform": "^2.0.0"
}
},
"istanbul-lib-instrument": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz",
- "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz",
+ "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==",
"dev": true,
"requires": {
- "@babel/generator": "^7.4.0",
- "@babel/parser": "^7.4.3",
- "@babel/template": "^7.4.0",
- "@babel/traverse": "^7.4.3",
- "@babel/types": "^7.4.0",
- "istanbul-lib-coverage": "^2.0.5",
- "semver": "^6.0.0"
+ "@babel/core": "^7.7.5",
+ "@istanbuljs/schema": "^0.1.2",
+ "istanbul-lib-coverage": "^3.0.0",
+ "semver": "^6.3.0"
},
"dependencies": {
"semver": {
@@ -3410,57 +3486,42 @@
}
}
},
+ "istanbul-lib-processinfo": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz",
+ "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==",
+ "dev": true,
+ "requires": {
+ "archy": "^1.0.0",
+ "cross-spawn": "^7.0.3",
+ "istanbul-lib-coverage": "^3.2.0",
+ "p-map": "^3.0.0",
+ "rimraf": "^3.0.0",
+ "uuid": "^8.3.2"
+ }
+ },
"istanbul-lib-report": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-2.0.8.tgz",
- "integrity": "sha512-fHBeG573EIihhAblwgxrSenp0Dby6tJMFR/HvlerBsrCTD5bkUuoNtn3gVh29ZCS824cGGBPn7Sg7cNk+2xUsQ==",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz",
+ "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==",
"dev": true,
"requires": {
- "istanbul-lib-coverage": "^2.0.5",
- "make-dir": "^2.1.0",
- "supports-color": "^6.1.0"
- },
- "dependencies": {
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
- "dev": true
- },
- "supports-color": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
- "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
- "dev": true,
- "requires": {
- "has-flag": "^3.0.0"
- }
- }
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^3.0.0",
+ "supports-color": "^7.1.0"
}
},
"istanbul-lib-source-maps": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz",
- "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==",
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz",
+ "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==",
"dev": true,
"requires": {
"debug": "^4.1.1",
- "istanbul-lib-coverage": "^2.0.5",
- "make-dir": "^2.1.0",
- "rimraf": "^2.6.3",
+ "istanbul-lib-coverage": "^3.0.0",
"source-map": "^0.6.1"
},
"dependencies": {
- "brace-expansion": {
- "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"
- }
- },
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
@@ -3470,53 +3531,22 @@
"ms": "2.1.2"
}
},
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
"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
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
}
}
},
"istanbul-reports": {
- "version": "2.2.7",
- "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-2.2.7.tgz",
- "integrity": "sha512-uu1F/L1o5Y6LzPVSVZXNOoD/KXpJue9aeLRd0sM9uMXfZvzomB0WxVamWb5ue8kA2vVWEmW7EG+A5n3f1kqHKg==",
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz",
+ "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==",
"dev": true,
"requires": {
- "html-escaper": "^2.0.0"
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
}
},
"iterate-iterator": {
@@ -3601,12 +3631,6 @@
"argparse": "^2.0.1"
}
},
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==",
- "dev": true
- },
"jsesc": {
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
@@ -3619,24 +3643,12 @@
"integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
"dev": true
},
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
"json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true
},
- "json-schema": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz",
- "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==",
- "dev": true
- },
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -3649,12 +3661,6 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==",
- "dev": true
- },
"json2yaml": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/json2yaml/-/json2yaml-1.1.0.tgz",
@@ -3664,6 +3670,12 @@
"remedial": "1.x"
}
},
+ "json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true
+ },
"jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
@@ -3673,18 +3685,6 @@
"graceful-fs": "^4.1.6"
}
},
- "jsprim": {
- "version": "1.4.2",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
- "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==",
- "dev": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.4.0",
- "verror": "1.10.0"
- }
- },
"keyv": {
"version": "4.5.2",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz",
@@ -3703,10 +3703,10 @@
"package-json": "^8.1.0"
}
},
- "lcov-parse": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz",
- "integrity": "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==",
+ "lcov": {
+ "version": "1.16.0",
+ "resolved": "https://registry.npmjs.org/lcov/-/lcov-1.16.0.tgz",
+ "integrity": "sha512-pEUuvik5O5xPeB3z1z8cFWCGtugnPHwR5YhGd1Er6dJqHRb1X/Gvn2ZBbmWn9lVEAf1ivFsR/JGCsVrPBgPy+A==",
"dev": true
},
"levn": {
@@ -3725,26 +3725,6 @@
"integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
"dev": true
},
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
- "dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true
- }
- }
- },
"locate-path": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
@@ -3802,12 +3782,6 @@
"integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==",
"dev": true
},
- "log-driver": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz",
- "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==",
- "dev": true
- },
"log-symbols": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz",
@@ -3818,6 +3792,15 @@
"is-unicode-supported": "^0.1.0"
}
},
+ "loupe": {
+ "version": "2.3.6",
+ "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.6.tgz",
+ "integrity": "sha512-RaPMZKiMy8/JruncMU5Bt6na1eftNoo++R4Y+N2FrxkDVTrGvcyzFTsaGif4QTeKESheMGegbhw6iUAq+5A8zA==",
+ "dev": true,
+ "requires": {
+ "get-func-name": "^2.0.0"
+ }
+ },
"lowercase-keys": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz",
@@ -3841,28 +3824,20 @@
"dev": true
},
"make-dir": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
- "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
- "dev": true,
- "requires": {
- "pify": "^4.0.1",
- "semver": "^5.6.0"
- }
- },
- "make-error": {
- "version": "1.3.6",
- "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
- "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
- "dev": true
- },
- "merge-source-map": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
- "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
+ "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==",
"dev": true,
"requires": {
- "source-map": "^0.6.1"
+ "semver": "^6.0.0"
+ },
+ "dependencies": {
+ "semver": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+ "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "dev": true
+ }
}
},
"merge-stream": {
@@ -3929,33 +3904,130 @@
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
"dev": true
},
- "minipass": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
- "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
+ "mocha": {
+ "version": "10.2.0",
+ "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz",
+ "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==",
+ "dev": true,
+ "requires": {
+ "ansi-colors": "4.1.1",
+ "browser-stdout": "1.3.1",
+ "chokidar": "3.5.3",
+ "debug": "4.3.4",
+ "diff": "5.0.0",
+ "escape-string-regexp": "4.0.0",
+ "find-up": "5.0.0",
+ "glob": "7.2.0",
+ "he": "1.2.0",
+ "js-yaml": "4.1.0",
+ "log-symbols": "4.1.0",
+ "minimatch": "5.0.1",
+ "ms": "2.1.3",
+ "nanoid": "3.3.3",
+ "serialize-javascript": "6.0.0",
+ "strip-json-comments": "3.1.1",
+ "supports-color": "8.1.1",
+ "workerpool": "6.2.1",
+ "yargs": "16.2.0",
+ "yargs-parser": "20.2.4",
+ "yargs-unparser": "2.0.0"
},
"dependencies": {
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "brace-expansion": {
+ "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"
+ }
+ },
+ "debug": {
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+ "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+ "dev": true,
+ "requires": {
+ "ms": "2.1.2"
+ },
+ "dependencies": {
+ "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
+ }
+ }
+ },
+ "escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true
+ },
+ "glob": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz",
+ "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==",
+ "dev": true,
+ "requires": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.4",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "dependencies": {
+ "minimatch": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^1.1.7"
+ }
+ }
+ }
+ },
+ "minimatch": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz",
+ "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==",
+ "dev": true,
+ "requires": {
+ "brace-expansion": "^2.0.1"
+ },
+ "dependencies": {
+ "brace-expansion": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+ "dev": true,
+ "requires": {
+ "balanced-match": "^1.0.0"
+ }
+ }
+ }
+ },
+ "ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
"dev": true
+ },
+ "supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "requires": {
+ "has-flag": "^4.0.0"
+ }
}
}
},
- "mkdirp": {
- "version": "0.5.6",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
- "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.6"
- }
- },
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
@@ -3968,18 +4040,18 @@
"integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==",
"dev": true
},
+ "nanoid": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz",
+ "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==",
+ "dev": true
+ },
"natural-compare": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
"integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
"dev": true
},
- "nested-error-stacks": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz",
- "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==",
- "dev": true
- },
"netmask": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz",
@@ -4020,24 +4092,21 @@
"formdata-polyfill": "^4.0.10"
}
},
- "nodeunit": {
- "version": "0.11.3",
- "resolved": "https://registry.npmjs.org/nodeunit/-/nodeunit-0.11.3.tgz",
- "integrity": "sha512-gDNxrDWpx07BxYNO/jn1UrGI1vNhDQZrIFphbHMcTCDc5mrrqQBWfQMXPHJ5WSgbFwD1D6bv4HOsqtTrPG03AA==",
+ "node-preload": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz",
+ "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==",
"dev": true,
"requires": {
- "ejs": "^2.5.2",
- "tap": "^12.0.1"
- },
- "dependencies": {
- "ejs": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.4.tgz",
- "integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA==",
- "dev": true
- }
+ "process-on-spawn": "^1.0.0"
}
},
+ "node-releases": {
+ "version": "2.0.12",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.12.tgz",
+ "integrity": "sha512-QzsYKWhXTWx8h1kIvqfnC++o0pEmpRQA/aenALsL2F4pqNVr7YzcdMlDij5WBnwftRbJCNJL/O7zdKaxKPHqgQ==",
+ "dev": true
+ },
"nopt": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz",
@@ -4047,17 +4116,11 @@
"abbrev": "^1.0.0"
}
},
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
- "dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
- }
+ "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
},
"normalize-url": {
"version": "8.0.0",
@@ -5864,47 +5927,40 @@
}
},
"nyc": {
- "version": "14.1.1",
- "resolved": "https://registry.npmjs.org/nyc/-/nyc-14.1.1.tgz",
- "integrity": "sha512-OI0vm6ZGUnoGZv/tLdZ2esSVzDwUC88SNs+6JoSOMVxA+gKMB8Tk7jBwgemLx4O40lhhvZCVw1C+OYLOBOPXWw==",
- "dev": true,
- "requires": {
- "archy": "^1.0.0",
- "caching-transform": "^3.0.2",
- "convert-source-map": "^1.6.0",
- "cp-file": "^6.2.0",
- "find-cache-dir": "^2.1.0",
- "find-up": "^3.0.0",
- "foreground-child": "^1.5.6",
- "glob": "^7.1.3",
- "istanbul-lib-coverage": "^2.0.5",
- "istanbul-lib-hook": "^2.0.7",
- "istanbul-lib-instrument": "^3.3.0",
- "istanbul-lib-report": "^2.0.8",
- "istanbul-lib-source-maps": "^3.0.6",
- "istanbul-reports": "^2.2.4",
- "js-yaml": "^3.13.1",
- "make-dir": "^2.1.0",
- "merge-source-map": "^1.1.0",
- "resolve-from": "^4.0.0",
- "rimraf": "^2.6.3",
+ "version": "15.1.0",
+ "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz",
+ "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==",
+ "dev": true,
+ "requires": {
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.2",
+ "caching-transform": "^4.0.0",
+ "convert-source-map": "^1.7.0",
+ "decamelize": "^1.2.0",
+ "find-cache-dir": "^3.2.0",
+ "find-up": "^4.1.0",
+ "foreground-child": "^2.0.0",
+ "get-package-type": "^0.1.0",
+ "glob": "^7.1.6",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-hook": "^3.0.0",
+ "istanbul-lib-instrument": "^4.0.0",
+ "istanbul-lib-processinfo": "^2.0.2",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^4.0.0",
+ "istanbul-reports": "^3.0.2",
+ "make-dir": "^3.0.0",
+ "node-preload": "^0.2.1",
+ "p-map": "^3.0.0",
+ "process-on-spawn": "^1.0.0",
+ "resolve-from": "^5.0.0",
+ "rimraf": "^3.0.0",
"signal-exit": "^3.0.2",
- "spawn-wrap": "^1.4.2",
- "test-exclude": "^5.2.3",
- "uuid": "^3.3.2",
- "yargs": "^13.2.2",
- "yargs-parser": "^13.0.0"
+ "spawn-wrap": "^2.0.0",
+ "test-exclude": "^6.0.0",
+ "yargs": "^15.0.2"
},
"dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
"brace-expansion": {
"version": "1.1.11",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
@@ -5915,13 +5971,37 @@
"concat-map": "0.0.1"
}
},
+ "camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true
+ },
+ "cliui": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz",
+ "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==",
+ "dev": true,
+ "requires": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.0",
+ "wrap-ansi": "^6.2.0"
+ }
+ },
+ "decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true
+ },
"find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
}
},
"glob": {
@@ -5938,24 +6018,13 @@
"path-is-absolute": "^1.0.0"
}
},
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
"locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "^4.1.0"
}
},
"minimatch": {
@@ -5977,37 +6046,68 @@
}
},
"p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "^2.2.0"
}
},
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
"dev": true
},
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "wrap-ansi": {
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz",
+ "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==",
"dev": true,
"requires": {
- "glob": "^7.1.3"
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ }
+ },
+ "y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "dev": true
+ },
+ "yargs": {
+ "version": "15.4.1",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz",
+ "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==",
+ "dev": true,
+ "requires": {
+ "cliui": "^6.0.0",
+ "decamelize": "^1.2.0",
+ "find-up": "^4.1.0",
+ "get-caller-file": "^2.0.1",
+ "require-directory": "^2.1.1",
+ "require-main-filename": "^2.0.0",
+ "set-blocking": "^2.0.0",
+ "string-width": "^4.2.0",
+ "which-module": "^2.0.0",
+ "y18n": "^4.0.0",
+ "yargs-parser": "^18.1.2"
+ }
+ },
+ "yargs-parser": {
+ "version": "18.1.3",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz",
+ "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==",
+ "dev": true,
+ "requires": {
+ "camelcase": "^5.0.0",
+ "decamelize": "^1.2.0"
}
}
}
},
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "dev": true
- },
"object-assign-deep": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/object-assign-deep/-/object-assign-deep-0.4.0.tgz",
@@ -6068,12 +6168,6 @@
"is-wsl": "^2.2.0"
}
},
- "opener": {
- "version": "1.5.2",
- "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
- "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==",
- "dev": true
- },
"optionator": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz",
@@ -6105,12 +6199,6 @@
"wcwidth": "^1.0.1"
}
},
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==",
- "dev": true
- },
"os-name": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/os-name/-/os-name-5.1.0.tgz",
@@ -6127,21 +6215,6 @@
"integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==",
"dev": true
},
- "own-or": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz",
- "integrity": "sha512-NfZr5+Tdf6MB8UI9GLvKRs4cXY8/yB0w3xtt84xFdWy8hkGjn+JFc60VhzS/hFRfbyxFcGYMTjnF4Me+RbbqrA==",
- "dev": true
- },
- "own-or-env": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz",
- "integrity": "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==",
- "dev": true,
- "requires": {
- "own-or": "^1.0.0"
- }
- },
"p-cancelable": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz",
@@ -6166,6 +6239,15 @@
"p-limit": "^3.0.2"
}
},
+ "p-map": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz",
+ "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==",
+ "dev": true,
+ "requires": {
+ "aggregate-error": "^3.0.0"
+ }
+ },
"p-try": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
@@ -6216,13 +6298,13 @@
}
},
"package-hash": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-3.0.0.tgz",
- "integrity": "sha512-lOtmukMDVvtkL84rJHI7dpTYq+0rli8N2wlnqUcBuDWCfVhRUfOmnR9SsoHFMLpACvEV60dX7rd0rFaYDZI+FA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz",
+ "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==",
"dev": true,
"requires": {
"graceful-fs": "^4.1.15",
- "hasha": "^3.0.0",
+ "hasha": "^5.0.0",
"lodash.flattendeep": "^4.4.0",
"release-zalgo": "^1.0.0"
}
@@ -6275,13 +6357,15 @@
}
},
"parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
"dev": true,
"requires": {
+ "@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
}
},
"parse-path": {
@@ -6327,26 +6411,15 @@
"dev": true
},
"path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
- "dev": true,
- "requires": {
- "pify": "^3.0.0"
- },
- "dependencies": {
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
- "dev": true
- }
- }
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
+ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
+ "dev": true
},
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
+ "pathval": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz",
+ "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==",
"dev": true
},
"picocolors": {
@@ -6361,38 +6434,32 @@
"integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
"dev": true
},
- "pify": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
- "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
- "dev": true
- },
"pkg-dir": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
- "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
"requires": {
- "find-up": "^3.0.0"
+ "find-up": "^4.0.0"
},
"dependencies": {
"find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
"requires": {
- "locate-path": "^3.0.0"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
}
},
"locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
"requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "p-locate": "^4.1.0"
}
},
"p-limit": {
@@ -6405,19 +6472,13 @@
}
},
"p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
"requires": {
- "p-limit": "^2.0.0"
+ "p-limit": "^2.2.0"
}
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
}
}
},
@@ -6443,12 +6504,14 @@
"synckit": "0.8.5"
}
},
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+ "process-on-spawn": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz",
+ "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==",
"dev": true,
- "optional": true
+ "requires": {
+ "fromentries": "^1.2.0"
+ }
},
"promise.allsettled": {
"version": "1.0.6",
@@ -6527,12 +6590,6 @@
"integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==",
"dev": true
},
- "psl": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz",
- "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==",
- "dev": true
- },
"punycode": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
@@ -6548,12 +6605,6 @@
"escape-goat": "^4.0.0"
}
},
- "qs": {
- "version": "6.5.3",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz",
- "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==",
- "dev": true
- },
"queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -6566,6 +6617,15 @@
"integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==",
"dev": true
},
+ "randombytes": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+ "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+ "dev": true,
+ "requires": {
+ "safe-buffer": "^5.1.0"
+ }
+ },
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
@@ -6586,72 +6646,6 @@
}
}
},
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
- "dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- }
- },
- "read-pkg-up": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-4.0.0.tgz",
- "integrity": "sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA==",
- "dev": true,
- "requires": {
- "find-up": "^3.0.0",
- "read-pkg": "^3.0.0"
- },
- "dependencies": {
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
- }
- }
- },
"readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
@@ -6663,6 +6657,15 @@
"util-deprecate": "^1.0.1"
}
},
+ "readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "requires": {
+ "picomatch": "^2.2.1"
+ }
+ },
"rechoir": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz",
@@ -6987,34 +6990,6 @@
"integrity": "sha512-/62tYiOe6DzS5BqVsNpH/nkGlX45C/Sp6V+NtiN6JQNS1Viay7cWkazmRkrQrdFj2eshDe96SIQNIoMxqhzBOg==",
"dev": true
},
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "dev": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@@ -7165,12 +7140,6 @@
"signal-exit": "^3.0.3",
"strip-final-newline": "^2.0.0"
}
- },
- "is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true
}
}
},
@@ -7221,6 +7190,12 @@
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
"dev": true
},
+ "seedrandom": {
+ "version": "2.4.4",
+ "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.4.tgz",
+ "integrity": "sha512-9A+PDmgm+2du77B5i0Ip2cxOqqHjgNxnBgglxLcX78A2D6c2rTo61z4jnVABpF4cKeDMDG+cmXXvdnqse2VqMA==",
+ "dev": true
+ },
"semver": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
@@ -7268,6 +7243,15 @@
}
}
},
+ "serialize-javascript": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz",
+ "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==",
+ "dev": true,
+ "requires": {
+ "randombytes": "^2.1.0"
+ }
+ },
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -7434,6 +7418,14 @@
"globby": "^13.1.2",
"is-plain-obj": "^4.1.0",
"sort-object-keys": "^1.1.3"
+ },
+ "dependencies": {
+ "is-plain-obj": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz",
+ "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==",
+ "dev": true
+ }
}
},
"source-map": {
@@ -7442,183 +7434,54 @@
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
- "source-map-support": {
- "version": "0.5.21",
- "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz",
- "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==",
+ "spawn-wrap": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz",
+ "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==",
"dev": true,
"requires": {
- "buffer-from": "^1.0.0",
- "source-map": "^0.6.0"
+ "foreground-child": "^2.0.0",
+ "is-windows": "^1.0.2",
+ "make-dir": "^3.0.0",
+ "rimraf": "^3.0.0",
+ "signal-exit": "^3.0.2",
+ "which": "^2.0.1"
}
},
- "spawn-wrap": {
- "version": "1.4.3",
- "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-1.4.3.tgz",
- "integrity": "sha512-IgB8md0QW/+tWqcavuFgKYR/qIRvJkRLPJDFaoXtLLUaVcCDK0+HeFTkmQHj3eprcYhc+gOl0aEA1w7qZlYezw==",
+ "sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true
+ },
+ "stdin-discarder": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
+ "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
"dev": true,
"requires": {
- "foreground-child": "^1.5.6",
- "mkdirp": "^0.5.0",
- "os-homedir": "^1.0.1",
- "rimraf": "^2.6.2",
- "signal-exit": "^3.0.2",
- "which": "^1.3.0"
+ "bl": "^5.0.0"
},
"dependencies": {
- "brace-expansion": {
- "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"
- }
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+ "bl": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
+ "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
"dev": true,
"requires": {
- "glob": "^7.1.3"
+ "buffer": "^6.0.3",
+ "inherits": "^2.0.4",
+ "readable-stream": "^3.4.0"
}
},
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "buffer": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
+ "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
"dev": true,
"requires": {
- "isexe": "^2.0.0"
- }
- }
- }
- },
- "spdx-correct": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
- "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
- "dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
- "dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-license-ids": {
- "version": "3.0.13",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.13.tgz",
- "integrity": "sha512-XkD+zwiqXHikFZm4AX/7JSCXA98U5Db4AFd5XUg/+9UNtnH75+Z9KxtpYiJZx36mUDVOwH83pl7yvCer6ewM3w==",
- "dev": true
- },
- "sprintf-js": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
- "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
- "dev": true
- },
- "sshpk": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
- "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
- "dev": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "stack-utils": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz",
- "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==",
- "dev": true,
- "requires": {
- "escape-string-regexp": "^2.0.0"
- },
- "dependencies": {
- "escape-string-regexp": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
- "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
- "dev": true
- }
- }
- },
- "stdin-discarder": {
- "version": "0.1.0",
- "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz",
- "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==",
- "dev": true,
- "requires": {
- "bl": "^5.0.0"
- },
- "dependencies": {
- "bl": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz",
- "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==",
- "dev": true,
- "requires": {
- "buffer": "^6.0.3",
- "inherits": "^2.0.4",
- "readable-stream": "^3.4.0"
- }
- },
- "buffer": {
- "version": "6.0.3",
- "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz",
- "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==",
- "dev": true,
- "requires": {
- "base64-js": "^1.3.1",
- "ieee754": "^1.2.1"
+ "base64-js": "^1.3.1",
+ "ieee754": "^1.2.1"
}
}
}
@@ -7695,9 +7558,9 @@
}
},
"strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
"dev": true
},
"strip-final-newline": {
@@ -7737,268 +7600,15 @@
"tslib": "^2.5.0"
}
},
- "tap": {
- "version": "12.7.0",
- "resolved": "https://registry.npmjs.org/tap/-/tap-12.7.0.tgz",
- "integrity": "sha512-SjglJmRv0pqrQQ7d5ZBEY8ZOqv3nYDBXEX51oyycOH7piuhn82JKT/yDNewwmOsodTD/RZL9MccA96EjDgK+Eg==",
- "dev": true,
- "requires": {
- "bind-obj-methods": "^2.0.0",
- "browser-process-hrtime": "^1.0.0",
- "capture-stack-trace": "^1.0.0",
- "clean-yaml-object": "^0.1.0",
- "color-support": "^1.1.0",
- "coveralls": "^3.0.2",
- "domain-browser": "^1.2.0",
- "esm": "^3.2.5",
- "foreground-child": "^1.3.3",
- "fs-exists-cached": "^1.0.0",
- "function-loop": "^1.0.1",
- "glob": "^7.1.3",
- "isexe": "^2.0.0",
- "js-yaml": "^3.13.1",
- "minipass": "^2.3.5",
- "mkdirp": "^0.5.1",
- "nyc": "^14.0.0",
- "opener": "^1.5.1",
- "os-homedir": "^1.0.2",
- "own-or": "^1.0.0",
- "own-or-env": "^1.0.1",
- "rimraf": "^2.6.3",
- "signal-exit": "^3.0.0",
- "source-map-support": "^0.5.10",
- "stack-utils": "^1.0.2",
- "tap-mocha-reporter": "^3.0.9",
- "tap-parser": "^7.0.0",
- "tmatch": "^4.0.0",
- "trivial-deferred": "^1.0.1",
- "ts-node": "^8.0.2",
- "tsame": "^2.0.1",
- "typescript": "^3.3.3",
- "write-file-atomic": "^2.4.2",
- "yapool": "^1.0.0"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "brace-expansion": {
- "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"
- }
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "dev": true,
- "requires": {
- "glob": "^7.1.3"
- }
- }
- }
- },
- "tap-mocha-reporter": {
- "version": "3.0.9",
- "resolved": "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-3.0.9.tgz",
- "integrity": "sha512-VO07vhC9EG27EZdOe7bWBj1ldbK+DL9TnRadOgdQmiQOVZjFpUEQuuqO7+rNSO2kfmkq5hWeluYXDWNG/ytXTQ==",
- "dev": true,
- "requires": {
- "color-support": "^1.1.0",
- "debug": "^2.1.3",
- "diff": "^1.3.2",
- "escape-string-regexp": "^1.0.3",
- "glob": "^7.0.5",
- "js-yaml": "^3.3.1",
- "readable-stream": "^2.1.5",
- "tap-parser": "^5.1.0",
- "unicode-length": "^1.0.0"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "brace-expansion": {
- "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"
- }
- },
- "glob": {
- "version": "7.2.3",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
- "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
- "dev": true,
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.1.1",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- },
- "minimatch": {
- "version": "3.1.2",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
- "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
- "dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "readable-stream": {
- "version": "2.3.8",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz",
- "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==",
- "dev": true,
- "optional": true,
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
- "dev": true,
- "optional": true
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "dev": true,
- "optional": true,
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "tap-parser": {
- "version": "5.4.0",
- "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-5.4.0.tgz",
- "integrity": "sha512-BIsIaGqv7uTQgTW1KLTMNPSEQf4zDDPgYOBRdgOfuB+JFOLRBfEu6cLa/KvMvmqggu1FKXDfitjLwsq4827RvA==",
- "dev": true,
- "requires": {
- "events-to-array": "^1.0.1",
- "js-yaml": "^3.2.7",
- "readable-stream": "^2"
- }
- }
- }
- },
- "tap-parser": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/tap-parser/-/tap-parser-7.0.0.tgz",
- "integrity": "sha512-05G8/LrzqOOFvZhhAk32wsGiPZ1lfUrl+iV7+OkKgfofZxiceZWMHkKmow71YsyVQ8IvGBP2EjcIjE5gL4l5lA==",
- "dev": true,
- "requires": {
- "events-to-array": "^1.0.1",
- "js-yaml": "^3.2.7",
- "minipass": "^2.2.0"
- },
- "dependencies": {
- "argparse": {
- "version": "1.0.10",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
- "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
- "dev": true,
- "requires": {
- "sprintf-js": "~1.0.2"
- }
- },
- "js-yaml": {
- "version": "3.14.1",
- "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
- "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
- "dev": true,
- "requires": {
- "argparse": "^1.0.7",
- "esprima": "^4.0.0"
- }
- }
- }
- },
"test-exclude": {
- "version": "5.2.3",
- "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-5.2.3.tgz",
- "integrity": "sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
"dev": true,
"requires": {
- "glob": "^7.1.3",
- "minimatch": "^3.0.4",
- "read-pkg-up": "^4.0.0",
- "require-main-filename": "^2.0.0"
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
},
"dependencies": {
"brace-expansion": {
@@ -8054,12 +7664,6 @@
"integrity": "sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==",
"dev": true
},
- "tmatch": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/tmatch/-/tmatch-4.0.0.tgz",
- "integrity": "sha512-Ynn2Gsp+oCvYScQXeV+cCs7citRDilq0qDXA6tuvFwDgiYyyaq7D5vKUlAPezzZR5NDobc/QMeN6e5guOYmvxg==",
- "dev": true
- },
"tmp": {
"version": "0.0.33",
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
@@ -8084,76 +7688,18 @@
"is-number": "^7.0.0"
}
},
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "dev": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
"tr46": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==",
"dev": true
},
- "trivial-deferred": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.1.2.tgz",
- "integrity": "sha512-vDPiDBC3hyP6O4JrJYMImW3nl3c03Tsj9fEXc7Qc/XKa1O7gf5ZtFfIR/E0dun9SnDHdwjna1Z2rSzYgqpxh/g==",
- "dev": true
- },
- "ts-node": {
- "version": "8.10.2",
- "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz",
- "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==",
- "dev": true,
- "requires": {
- "arg": "^4.1.0",
- "diff": "^4.0.1",
- "make-error": "^1.1.1",
- "source-map-support": "^0.5.17",
- "yn": "3.1.1"
- },
- "dependencies": {
- "diff": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz",
- "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==",
- "dev": true
- }
- }
- },
- "tsame": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/tsame/-/tsame-2.0.1.tgz",
- "integrity": "sha512-jxyxgKVKa4Bh5dPcO42TJL22lIvfd9LOVJwdovKOnJa4TLLrHxquK+DlGm4rkGmrcur+GRx+x4oW00O2pY/fFw==",
- "dev": true
- },
"tslib": {
"version": "2.5.3",
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.3.tgz",
"integrity": "sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==",
"dev": true
},
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
- "dev": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==",
- "dev": true
- },
"type-check": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
@@ -8163,6 +7709,12 @@
"prelude-ls": "^1.2.1"
}
},
+ "type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true
+ },
"type-fest": {
"version": "0.21.3",
"resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
@@ -8189,12 +7741,6 @@
"is-typedarray": "^1.0.0"
}
},
- "typescript": {
- "version": "3.9.10",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz",
- "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==",
- "dev": true
- },
"unbox-primitive": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz",
@@ -8207,39 +7753,6 @@
"which-boxed-primitive": "^1.0.2"
}
},
- "unicode-length": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/unicode-length/-/unicode-length-1.0.3.tgz",
- "integrity": "sha512-rZKNhIqioUp7H49afr26tivLDCvUSqOXwmwEEnsCwnPX67S1CYbOL45Y5IP3K/XHN73/lg21HlrB8SNlYXKQTg==",
- "dev": true,
- "requires": {
- "punycode": "^1.3.2",
- "strip-ansi": "^3.0.1"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==",
- "dev": true
- },
- "punycode": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
- "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==",
- "dev": true
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==",
- "dev": true,
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- }
- }
- },
"unique-string": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz",
@@ -8267,6 +7780,16 @@
"integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==",
"dev": true
},
+ "update-browserslist-db": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.11.tgz",
+ "integrity": "sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==",
+ "dev": true,
+ "requires": {
+ "escalade": "^3.1.1",
+ "picocolors": "^1.0.0"
+ }
+ },
"update-notifier": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz",
@@ -8349,9 +7872,9 @@
"dev": true
},
"uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+ "version": "8.3.2",
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
+ "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"dev": true
},
"valid-url": {
@@ -8360,27 +7883,6 @@
"integrity": "sha512-QQDsV8OnSf5Uc30CKSwG9lnhMPe6exHtTXLRYX8uMwKENy640pU+2BgBL0LRbDh/eYRahNCS7aewCx0wf3NYVA==",
"dev": true
},
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
- "dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
- }
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==",
- "dev": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
"vm2": {
"version": "3.9.19",
"resolved": "https://registry.npmjs.org/vm2/-/vm2-3.9.19.tgz",
@@ -8538,12 +8040,6 @@
"signal-exit": "^3.0.3",
"strip-final-newline": "^2.0.0"
}
- },
- "is-stream": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
- "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
- "dev": true
}
}
},
@@ -8553,6 +8049,12 @@
"integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==",
"dev": true
},
+ "workerpool": {
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz",
+ "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==",
+ "dev": true
+ },
"wrap-ansi": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
@@ -8571,14 +8073,15 @@
"dev": true
},
"write-file-atomic": {
- "version": "2.4.3",
- "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz",
- "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz",
+ "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==",
"dev": true,
"requires": {
- "graceful-fs": "^4.1.11",
"imurmurhash": "^0.1.4",
- "signal-exit": "^3.0.2"
+ "is-typedarray": "^1.0.0",
+ "signal-exit": "^3.0.2",
+ "typedarray-to-buffer": "^3.1.5"
}
},
"xdg-basedir": {
@@ -8593,9 +8096,9 @@
"integrity": "sha512-rxMJhSIoiO8vXcWvSifKqhvV96GjiD5wYb8/QHdoRyQvraTpp4IEv944nhGausZZ3u7dhQXteZuZbaqfpB7uYw=="
},
"y18n": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
- "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
"dev": true
},
"yallist": {
@@ -8604,129 +8107,39 @@
"integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
"dev": true
},
- "yapool": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/yapool/-/yapool-1.0.0.tgz",
- "integrity": "sha512-RONBZndo8Lo8pKPfORRxr2DIk2NZKIml654o4kaIu7RXVxQCKsAN6AqrcoZsI3h+2H5YO2mD/04Wy4LbAgd+Pg==",
- "dev": true
- },
"yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "version": "16.2.0",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz",
+ "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==",
"dev": true,
"requires": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
+ "cliui": "^7.0.2",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
"require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
- "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
- "dev": true
- },
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
- "dev": true,
- "requires": {
- "locate-path": "^3.0.0"
- }
- },
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
- "dev": true
- },
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
- "dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- }
- },
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
- "dev": true,
- "requires": {
- "p-try": "^2.0.0"
- }
- },
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
- "dev": true,
- "requires": {
- "p-limit": "^2.0.0"
- }
- },
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
- "dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
- }
- },
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
- "dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
- }
- }
+ "string-width": "^4.2.0",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^20.2.2"
}
},
"yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "version": "20.2.4",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz",
+ "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==",
+ "dev": true
+ },
+ "yargs-unparser": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz",
+ "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==",
"dev": true,
"requires": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
+ "camelcase": "^6.0.0",
+ "decamelize": "^4.0.0",
+ "flat": "^5.0.2",
+ "is-plain-obj": "^2.1.0"
}
},
- "yn": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
- "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
- "dev": true
- },
"yocto-queue": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
diff --git a/package.json b/package.json
index 1ecabac9..dfdffd54 100644
--- a/package.json
+++ b/package.json
@@ -32,7 +32,7 @@
"prettier-format": "prettier --config .prettierrc.json --write .",
"prerelease": "git clean -xfd && npm ci && npm test",
"release": "release-it",
- "test": "nodeunit ./test/canonicalization-unit-tests.js ./test/c14nWithComments-unit-tests.js ./test/signature-unit-tests.js ./test/saml-response-test.js ./test/signature-integration-tests.js ./test/document-test.js ./test/wsfed-metadata-test.js ./test/hmac-tests.js ./test/c14n-non-exclusive-unit-test.js"
+ "test": "nyc mocha"
},
"dependencies": {
"@xmldom/xmldom": "^0.8.8",
@@ -41,10 +41,14 @@
"devDependencies": {
"@cjbarth/github-release-notes": "^4.0.0",
"@prettier/plugin-xml": "^2.2.0",
- "ejs": "3.1.9",
- "eslint": "^8.42.0",
+ "chai": "^4.3.7",
+ "choma": "^1.2.1",
+ "ejs": "^3.1.9",
+ "eslint": "^8.41.0",
"eslint-config-prettier": "^8.8.0",
- "nodeunit": "^0.11.3",
+ "lcov": "^1.16.0",
+ "mocha": "^10.2.0",
+ "nyc": "^15.1.0",
"prettier": "^2.8.8",
"prettier-plugin-packagejson": "^2.4.3",
"release-it": "^15.11.0"
diff --git a/test/c14n-non-exclusive-unit-test.js b/test/c14n-non-exclusive-unit-test.js
index cdf47e9b..a66aad6f 100644
--- a/test/c14n-non-exclusive-unit-test.js
+++ b/test/c14n-non-exclusive-unit-test.js
@@ -1,9 +1,11 @@
+var expect = require("chai").expect;
+
var C14nCanonicalization = require("../lib/c14n-canonicalization").C14nCanonicalization,
Dom = require("@xmldom/xmldom").DOMParser,
select = require("xpath").select,
findAncestorNs = require("../lib/signed-xml").SignedXml.findAncestorNs;
-var test_C14nCanonicalization = function (test, xml, xpath, expected) {
+var test_C14nCanonicalization = function (xml, xpath, expected) {
var doc = new Dom().parseFromString(xml);
var elem = select(xpath, doc)[0];
var can = new C14nCanonicalization();
@@ -13,50 +15,45 @@ var test_C14nCanonicalization = function (test, xml, xpath, expected) {
})
.toString();
- test.equal(result, expected);
- test.done();
+ expect(result).to.equal(expected);
};
-var test_findAncestorNs = function (test, xml, xpath, expected) {
+var test_findAncestorNs = function (xml, xpath, expected) {
var doc = new Dom().parseFromString(xml);
var result = findAncestorNs(doc, xpath);
- test.deepEqual(result, expected);
- test.done();
+ expect(result).to.deep.equal(expected);
};
-// Tests for findAncestorNs
-exports["findAncestorNs: Correctly picks up root ancestor namespace"] = function (test) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = [{ prefix: "aaa", namespaceURI: "bbb" }];
+describe("C14N non-exclusive canonicalization tests", function () {
+ it("findAncestorNs: Correctly picks up root ancestor namespace", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = [{ prefix: "aaa", namespaceURI: "bbb" }];
- test_findAncestorNs(test, xml, xpath, expected);
-};
+ test_findAncestorNs(xml, xpath, expected);
+ });
-exports["findAncestorNs: Correctly picks up intermediate ancestor namespace"] = function (test) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = [{ prefix: "aaa", namespaceURI: "bbb" }];
+ it("findAncestorNs: Correctly picks up intermediate ancestor namespace", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = [{ prefix: "aaa", namespaceURI: "bbb" }];
- test_findAncestorNs(test, xml, xpath, expected);
-};
+ test_findAncestorNs(xml, xpath, expected);
+ });
-exports[
- "findAncestorNs: Correctly picks up multiple ancestor namespaces declared in the one same element"
-] = function (test) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = [
- { prefix: "aaa", namespaceURI: "bbb" },
- { prefix: "ccc", namespaceURI: "ddd" },
- ];
-
- test_findAncestorNs(test, xml, xpath, expected);
-};
+ it("findAncestorNs: Correctly picks up multiple ancestor namespaces declared in the one same element", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = [
+ { prefix: "aaa", namespaceURI: "bbb" },
+ { prefix: "ccc", namespaceURI: "ddd" },
+ ];
+
+ test_findAncestorNs(xml, xpath, expected);
+ });
-exports["findAncestorNs: Correctly picks up multiple ancestor namespaces scattered among depth"] =
- function (test) {
+ it("findAncestorNs: Correctly picks up multiple ancestor namespaces scattered among depth", function () {
var xml = "";
var xpath = "/root/child1/child2";
var expected = [
@@ -64,136 +61,124 @@ exports["findAncestorNs: Correctly picks up multiple ancestor namespaces scatter
{ prefix: "aaa", namespaceURI: "bbb" },
];
- test_findAncestorNs(test, xml, xpath, expected);
- };
+ test_findAncestorNs(xml, xpath, expected);
+ });
-exports["findAncestorNs: Correctly picks up multiple ancestor namespaces without duplicate"] =
- function (test) {
+ it("findAncestorNs: Correctly picks up multiple ancestor namespaces without duplicate", function () {
var xml = "";
var xpath = "/root/child1/child2";
var expected = [{ prefix: "ccc", namespaceURI: "bbb" }];
- test_findAncestorNs(test, xml, xpath, expected);
- };
+ test_findAncestorNs(xml, xpath, expected);
+ });
-exports["findAncestorNs: Correctly eliminates duplicate prefix"] = function (test) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = [{ prefix: "ccc", namespaceURI: "AAA" }];
+ it("findAncestorNs: Correctly eliminates duplicate prefix", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = [{ prefix: "ccc", namespaceURI: "AAA" }];
- test_findAncestorNs(test, xml, xpath, expected);
-};
+ test_findAncestorNs(xml, xpath, expected);
+ });
-exports[
- "findAncestorNs: Exclude namespace which is already declared with same prefix on target node"
-] = function (test) {
- var xml =
- "";
- var xpath = "/root/child1/child2";
- var expected = [];
+ it("findAncestorNs: Exclude namespace which is already declared with same prefix on target node", function () {
+ var xml =
+ "";
+ var xpath = "/root/child1/child2";
+ var expected = [];
- test_findAncestorNs(test, xml, xpath, expected);
-};
+ test_findAncestorNs(xml, xpath, expected);
+ });
-exports["findAncestorNs: Ignores namespace declared in the target xpath node"] = function (test) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = [{ prefix: "aaa", namespaceURI: "bbb" }];
+ it("findAncestorNs: Ignores namespace declared in the target xpath node", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = [{ prefix: "aaa", namespaceURI: "bbb" }];
- test_findAncestorNs(test, xml, xpath, expected);
-};
+ test_findAncestorNs(xml, xpath, expected);
+ });
-// Tests for c14nCanonicalization
-exports["C14n: Correctly picks up root ancestor namespace"] = function (test) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = '';
+ // Tests for c14nCanonicalization
+ it("C14n: Correctly picks up root ancestor namespace", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = '';
- test_C14nCanonicalization(test, xml, xpath, expected);
-};
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
-exports["C14n: Correctly picks up intermediate ancestor namespace"] = function (test) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = '';
+ it("C14n: Correctly picks up intermediate ancestor namespace", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = '';
- test_C14nCanonicalization(test, xml, xpath, expected);
-};
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
-exports["C14n: Correctly picks up multiple ancestor namespaces declared in the one same element"] =
- function (test) {
+ it("C14n: Correctly picks up multiple ancestor namespaces declared in the one same element", function () {
var xml = "";
var xpath = "/root/child1/child2";
var expected = '';
- test_C14nCanonicalization(test, xml, xpath, expected);
- };
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
-exports["C14n: Correctly picks up multiple ancestor namespaces scattered among depth"] = function (
- test
-) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = '';
+ it("C14n: Correctly picks up multiple ancestor namespaces scattered among depth", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = '';
- test_C14nCanonicalization(test, xml, xpath, expected);
-};
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
-exports["C14n: Correctly picks up multiple ancestor namespaces without duplicate"] = function (
- test
-) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = '';
+ it("C14n: Correctly picks up multiple ancestor namespaces without duplicate", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = '';
- test_C14nCanonicalization(test, xml, xpath, expected);
-};
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
-exports["C14n: Correctly eliminates duplicate prefix"] = function (test) {
- var xml = "";
- var xpath = "/root/child1/child2";
- var expected = '';
+ it("C14n: Correctly eliminates duplicate prefix", function () {
+ var xml = "";
+ var xpath = "/root/child1/child2";
+ var expected = '';
- test_C14nCanonicalization(test, xml, xpath, expected);
-};
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
-exports["C14n: Exclude namespace which is already declared with same prefix on target node"] =
- function (test) {
+ it("C14n: Exclude namespace which is already declared with same prefix on target node", function () {
var xml =
"";
var xpath = "/root/child1/child2";
var expected = '';
- test_C14nCanonicalization(test, xml, xpath, expected);
- };
-
-exports["C14n: Preserve namespace declared in the target xpath node"] = function (test) {
- var xml = '';
- var xpath = "/root/child1/child2";
- var expected = '';
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
- test_C14nCanonicalization(test, xml, xpath, expected);
-};
+ it("C14n: Preserve namespace declared in the target xpath node", function () {
+ var xml = '';
+ var xpath = "/root/child1/child2";
+ var expected = '';
-exports["C14n: Don't redeclare an attribute's namespace prefix if already in scope"] = function (
- test
-) {
- var xml =
- "";
- var xpath = "/root/child1/child2";
- var expected = '';
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
- test_C14nCanonicalization(test, xml, xpath, expected);
-};
+ it("C14n: Don't redeclare an attribute's namespace prefix if already in scope", function () {
+ var xml =
+ "";
+ var xpath = "/root/child1/child2";
+ var expected = '';
-exports["C14n: Don't declare an attribute's namespace prefix if in scope from parent"] = function (
- test
-) {
- var xml =
- "";
- var xpath = "/root/child1";
- var expected =
- '';
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
- test_C14nCanonicalization(test, xml, xpath, expected);
-};
+ it("C14n: Don't declare an attribute's namespace prefix if in scope from parent", function () {
+ var xml =
+ "";
+ var xpath = "/root/child1";
+ var expected =
+ '';
+
+ test_C14nCanonicalization(xml, xpath, expected);
+ });
+});
diff --git a/test/c14nWithComments-unit-tests.js b/test/c14nWithComments-unit-tests.js
index 223afd97..ba86f6b6 100644
--- a/test/c14nWithComments-unit-tests.js
+++ b/test/c14nWithComments-unit-tests.js
@@ -1,11 +1,12 @@
+var expect = require("chai").expect;
+
var c14nWithComments =
require("../lib/exclusive-canonicalization").ExclusiveCanonicalizationWithComments,
Dom = require("@xmldom/xmldom").DOMParser,
select = require("xpath").select,
SignedXml = require("../lib/signed-xml.js").SignedXml;
-var compare = function (test, xml, xpath, expected, inclusiveNamespacesPrefixList) {
- test.expect(1);
+var compare = function (xml, xpath, expected, inclusiveNamespacesPrefixList) {
var doc = new Dom().parseFromString(xml);
var elem = select(xpath, doc)[0];
var can = new c14nWithComments();
@@ -13,324 +14,272 @@ var compare = function (test, xml, xpath, expected, inclusiveNamespacesPrefixLis
.process(elem, { inclusiveNamespacesPrefixList: inclusiveNamespacesPrefixList })
.toString();
- test.equal(expected, result);
- test.done();
+ expect(result).to.equal(expected);
};
-module.exports = {
- "Exclusive canonicalization works on xml with no namespaces": function (test) {
- compare(test, "123", "//*", "123");
- },
+describe("Exclusive canonicalization with comments", function () {
+ it("Exclusive canonicalization works on xml with no namespaces", function () {
+ compare("123", "//*", "123");
+ });
+
+ it("Exclusive canonicalization works on inner xpath", function () {
+ compare("123", "//*[local-name(.)='child']", "123");
+ });
- "Exclusive canonicalization works on inner xpath": function (test) {
+ it("Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes", function () {
compare(
- test,
- "123",
+ '123',
"//*[local-name(.)='child']",
- "123"
+ '123'
);
- },
-
- "Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
+ });
- "element used prefixed ns which is also the default": function (test) {
+ it("element used prefixed ns which is also the default", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes. ns definition is not duplicated on each usage":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes. ns definition is not duplicated on each usage", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123'
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes but before used":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes but before used", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123'
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespaces defined outside output nodes":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespaces defined outside output nodes", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123'
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123',
- "inclusive"
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123',
+ "inclusive"
+ );
+ });
- "Exclusive canonicalization works on xml with multiple prefixed namespaces defined in inclusive list":
- function (test) {
- compare(
- test,
- '123456',
- "//*[local-name(.)='child']",
- '123456',
- "inclusive inclusive2"
- );
- },
+ it("Exclusive canonicalization works on xml with multiple prefixed namespaces defined in inclusive list", function () {
+ compare(
+ '123456',
+ "//*[local-name(.)='child']",
+ '123456',
+ "inclusive inclusive2"
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list defined outside output nodes":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123',
- "inclusive"
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list defined outside output nodes", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123',
+ "inclusive"
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list used on attribute":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123',
- "inclusive"
- );
- },
-
- "Exclusive canonicalization works on xml with default namespace inside output nodes": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list used on attribute", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123',
+ "inclusive"
+ );
+ });
+
+ it("Exclusive canonicalization works on xml with default namespace inside output nodes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works on xml with multiple different default namespaces": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with multiple different default namespaces", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works on xml with multiple similar default namespaces": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with multiple similar default namespaces", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works on xml with default namespace outside output nodes": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with default namespace outside output nodes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works when prefixed namespace is defined in output nodes not in the parent chain of who needs it":
- function (test) {
- compare(
- test,
- '',
- "//*[local-name(.)='child']",
- ''
- );
- },
+ it("Exclusive canonicalization works when prefixed namespace is defined in output nodes not in the parent chain of who needs it", function () {
+ compare(
+ '',
+ "//*[local-name(.)='child']",
+ ''
+ );
+ });
- "Exclusive canonicalization works on xml with unordered attributes": function (test) {
+ it("Exclusive canonicalization works on xml with unordered attributes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization sorts upper case attributes before lower case": function (test) {
- compare(test, '', "//*[local-name(.)='x']", '');
- },
+ it("Exclusive canonicalization sorts upper case attributes before lower case", function () {
+ compare('', "//*[local-name(.)='x']", '');
+ });
- "C14N#WithComments retains Comments": function (test) {
+ it("C14N#WithComments retains Comments", function () {
compare(
- test,
'',
"//*[local-name(.)='x']",
''
);
- },
+ });
- "Exclusive canonicalization works on xml with attributes with different namespace than element":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
+ it("Exclusive canonicalization works on xml with attributes with different namespace than element", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123'
+ );
+ });
- "Exclusive canonicalization works on xml with attribute and element values with special characters":
- function (test) {
- compare(
- test,
- '&11',
- "//*[local-name(.)='child']",
- '&11'
- );
- },
+ it("Exclusive canonicalization works on xml with attribute and element values with special characters", function () {
+ compare(
+ '&11',
+ "//*[local-name(.)='child']",
+ '&11'
+ );
+ });
- "Exclusive canonicalization preserves white space in values": function (test) {
+ it("Exclusive canonicalization preserves white space in values", function () {
compare(
- test,
"12\n3\t",
"//*[local-name(.)='child']",
"12\n3\t"
);
- },
+ });
- "Exclusive canonicalization preserves white space between elements": function (test) {
+ it("Exclusive canonicalization preserves white space between elements", function () {
compare(
- test,
"123\n",
"//*[local-name(.)='child']",
"123\n"
);
- },
+ });
- "Exclusive canonicalization turns empty element to start-end tag pairs": function (test) {
+ it("Exclusive canonicalization turns empty element to start-end tag pairs", function () {
compare(
- test,
"",
"//*[local-name(.)='child']",
""
);
- },
+ });
- "Exclusive canonicalization preserves empty start-end tag pairs": function (test) {
+ it("Exclusive canonicalization preserves empty start-end tag pairs", function () {
compare(
- test,
"",
"//*[local-name(.)='child']",
""
);
- },
+ });
- "Exclusive canonicalization with empty default namespace outside output nodes": function (test) {
+ it("Exclusive canonicalization with empty default namespace outside output nodes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
"123"
);
- },
+ });
- /* Uncomment this when this issue is fixed
- "Exclusive canonicalization removal of whitespace between PITarget and its data": function (test) {
- compare(test,
- "123",
- "//*[local-name(.)='child']",
- "123")
- },
- */
+ /*
+ TODO: Uncomment this when this issue is fixed
+ it("Exclusive canonicalization removal of whitespace between PITarget and its data", function () {
+ compare(
+ "123",
+ "//*[local-name(.)='child']",
+ "123");
+ });
+ */
- "Exclusive canonicalization with empty default namespace inside output nodes": function (test) {
+ it("Exclusive canonicalization with empty default namespace inside output nodes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "The XML declaration and document type declaration (DTD) are removed": function (test) {
+ it("The XML declaration and document type declaration (DTD) are removed", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
"123"
);
- },
+ });
- /* Uncomment this when this issue is fixed
- "The XML declaration and document type declaration (DTD) are removed, stylesheet retained": function (test) {
- compare(test,
- "123",
- "//*[local-name(.)='child']",
- "123")
- },
- */
+ /*
+ TODO: Uncomment this when this issue is fixed
+ it("The XML declaration and document type declaration (DTD) are removed, stylesheet retained", function () {
+ compare(
+ "123",
+ "//*[local-name(.)='child']",
+ "123");
+ });
+ */
- "Attribute value delimiters are set to quotation marks (double quotes)": function (test) {
+ it("Attribute value delimiters are set to quotation marks (double quotes)", function () {
compare(
- test,
"123 ",
"//*[local-name(.)='child']",
'123 '
);
- },
+ });
- "CDATA sections are replaced with their character content": function (test) {
+ it("CDATA sections are replaced with their character content", function () {
compare(
- test,
"123]]>",
"//*[local-name(.)='child']",
"foo & bar in the <x>123</x>"
);
- },
+ });
- "SignedInfo canonization": function (test) {
+ it("SignedInfo canonization", function () {
compare(
- test,
'http://stockservice.contoso.com/wse/samples/2003/06/StockQuoteRequestuuid:6250c037-bcde-40ab-82b3-3a08efc86cdchttp://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymoushttp://localhost:8889/2008-09-01T17:44:21Z2008-09-01T17:49:21ZMIIBxDCCAW6gAwIBAgIQxUSXFzWJYYtOZnmmuOMKkjANBgkqhkiG9w0BAQQFADAWMRQwEgYDVQQDEwtSb290IEFnZW5jeTAeFw0wMzA3MDgxODQ3NTlaFw0zOTEyMzEyMzU5NTlaMB8xHTAbBgNVBAMTFFdTRTJRdWlja1N0YXJ0Q2xpZW50MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+L6aB9x928noY4+0QBsXnxkQE4quJl7c3PUPdVu7k9A02hRG481XIfWhrDY5i7OEB7KGW7qFJotLLeMec/UkKUwCgv3VvJrs2nE9xO3SSWIdNzADukYh+Cxt+FUU6tUkDeqg7dqwivOXhuOTRyOI3HqbWTbumaLdc8jufz2LhaQIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwDQYJKoZIhvcNAQEEBQADQQAfIbnMPVYkNNfX1tG1F+qfLhHwJdfDUZuPyRPucWF5qkh6sSdWVBY5sT/txBnVJGziyO8DPYdu2fPMER8ajJfl+465BlJx5xOfHsIFezQt0MS1vZQ=jEe8rnaaqBWZQe+xHBQXriVG99o=W45ginYdBVqOqEaqPI2piZMPReA=m2VlWz/ZDTWL7FREHK+wpKhvjJM=Qws229qmAzSTZ4OKmAUWgl0PWWo=iEazGnkPY5caCWVZOHyR87CZ1h0=Fkm7AbwiJCiOzY8ldfuA9pTW1G+EtE+UX4Cv7SoMIqeUdfWRDVHZpJAQyf7aoQnlpJNV/3k9L1PT6rJbfV478CkULJENPLm1m0fmDeLzhIHDEANuzp/AirC60tMD5jCARb4B4Nr/6bTmoyDQsTY8VLRiiINng7Mpweg1FZvd8a0=FABRIKAM',
"//*[local-name(.)='SignedInfo']",
'+465BlJx5xOfHsIFezQt0MS1vZQ=jEe8rnaaqBWZQe+xHBQXriVG99o=W45ginYdBVqOqEaqPI2piZMPReA=m2VlWz/ZDTWL7FREHK+wpKhvjJM=Qws229qmAzSTZ4OKmAUWgl0PWWo=iEazGnkPY5caCWVZOHyR87CZ1h0='
);
- },
+ });
- "Exclusive canonicalization works on complex xml": function (test) {
+ it("Exclusive canonicalization works on complex xml", function () {
compare(
- test,
'\n' +
'\n' +
" \n" +
@@ -398,9 +347,9 @@ module.exports = {
"//*[local-name(.)='Body']",
'\n \n \n \n \n \n \n \n \n \n \n \n \n ererer\n dfdf\n \n \n \n \n \n \n \n \n \n erer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n '
);
- },
+ });
- "Multiple Canonicalization with namespace definition outside of signed element": function (test) {
+ it("Multiple Canonicalization with namespace definition outside of signed element", function () {
//var doc = new Dom().parseFromString("")
var doc = new Dom().parseFromString('');
var node = select("//*[local-name(.)='y']", doc)[0];
@@ -412,11 +361,10 @@ module.exports = {
],
node
);
- test.equal('', res);
- test.done();
- },
+ expect(res).to.equal('');
+ });
- "Enveloped-signature canonicalization respects currentnode": function (test) {
+ it("Enveloped-signature canonicalization respects currentnode", function () {
// older versions of enveloped-signature removed the first signature in the whole doc, but should
// be the signature inside the current node if we want to be able to verify multiple signatures
// in a document.
@@ -427,31 +375,27 @@ module.exports = {
var sig = new SignedXml();
var transforms = ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"];
var res = sig.getCanonXml(transforms, node);
- test.equal("", res);
- test.done();
- },
+ expect(res).to.equal("");
+ });
- "The XML canonicalization method processes a node-set by imposing the following additional document order rules on the namespace and attribute nodes of each element: \
+ it("The XML canonicalization method processes a node-set by imposing the following additional document order rules on the namespace and attribute nodes of each element: \
- An element's namespace and attribute nodes have a document order position greater than the element but less than any child node of the element. \
Namespace nodes have a lesser document order position than attribute nodes. \
- An element's namespace nodes are sorted lexicographically by local name (the default namespace node, if one exists, has no local name and is therefore lexicographically least). \
- An element's attribute nodes are sorted lexicographically with namespace URI as the primary key and local name as the secondary key (an empty namespace URI is lexicographically least). \
- Lexicographic comparison, which orders strings from least to greatest alphabetically, is based on the UCS codepoint values, which is equivalent to lexicographic ordering based on UTF-8.":
- function (test) {
- compare(
- test,
- '',
- "//*[local-name(.)='root']",
- ''
- );
- },
-
- "saml attributed order (bug #25)": function (test) {
+ Lexicographic comparison, which orders strings from least to greatest alphabetically, is based on the UCS codepoint values, which is equivalent to lexicographic ordering based on UTF-8.", function () {
+ compare(
+ '',
+ "//*[local-name(.)='root']",
+ ''
+ );
+ });
+
+ it("saml attributed order (bug #25)", function () {
compare(
- test,
'',
"//*[local-name(.)='root']",
''
);
- },
-};
+ });
+});
diff --git a/test/canonicalization-unit-tests.js b/test/canonicalization-unit-tests.js
index 03bf8500..e28f1cea 100644
--- a/test/canonicalization-unit-tests.js
+++ b/test/canonicalization-unit-tests.js
@@ -1,18 +1,12 @@
+var expect = require("chai").expect;
+
var ExclusiveCanonicalization =
require("../lib/exclusive-canonicalization").ExclusiveCanonicalization,
Dom = require("@xmldom/xmldom").DOMParser,
select = require("xpath").select,
SignedXml = require("../lib/signed-xml.js").SignedXml;
-var compare = function (
- test,
- xml,
- xpath,
- expected,
- inclusiveNamespacesPrefixList,
- defaultNsForPrefix
-) {
- test.expect(1);
+var compare = function (xml, xpath, expected, inclusiveNamespacesPrefixList, defaultNsForPrefix) {
var doc = new Dom().parseFromString(xml);
var elem = select(xpath, doc)[0];
var can = new ExclusiveCanonicalization();
@@ -23,447 +17,380 @@ var compare = function (
})
.toString();
- test.equal(expected, result);
- test.done();
+ expect(expected).to.equal(result);
};
-module.exports = {
- "Exclusive canonicalization works on xml with no namespaces": function (test) {
- compare(test, "123", "//*", "123");
- },
+describe("Canonicalization unit tests", function () {
+ it("Exclusive canonicalization works on xml with no namespaces", function () {
+ compare("123", "//*", "123");
+ });
+
+ it("Exclusive canonicalization works on inner xpath", function () {
+ compare("123", "//*[local-name(.)='child']", "123");
+ });
- "Exclusive canonicalization works on inner xpath": function (test) {
+ it("Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes", function () {
compare(
- test,
- "123",
+ '123',
"//*[local-name(.)='child']",
- "123"
+ '123'
);
- },
-
- "Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
+ });
- "element used prefixed ns which is also the default": function (test) {
+ it("element used prefixed ns which is also the default", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works with default namespace for prefix": function (test) {
+ it("Exclusive canonicalization works with default namespace for prefix", function () {
compare(
- test,
'',
"//*[local-name(.)='SignedInfo']",
'',
undefined,
{ ds: "http://www.w3.org/2000/09/xmldsig#" }
);
- },
+ });
- "Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes. ns definition is not duplicated on each usage":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
-
- "Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes but before used":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes. ns definition is not duplicated on each usage", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123'
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespaces defined outside output nodes":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespaces defined in output nodes but before used", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123'
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123',
- "inclusive"
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespaces defined outside output nodes", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123'
+ );
+ });
- "Exclusive canonicalization works on xml with multiple prefixed namespaces defined in inclusive list":
- function (test) {
- compare(
- test,
- '123456',
- "//*[local-name(.)='child']",
- '123456',
- "inclusive inclusive2"
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123',
+ "inclusive"
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list defined outside output nodes":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123',
- "inclusive"
- );
- },
+ it("Exclusive canonicalization works on xml with multiple prefixed namespaces defined in inclusive list", function () {
+ compare(
+ '123456',
+ "//*[local-name(.)='child']",
+ '123456',
+ "inclusive inclusive2"
+ );
+ });
- "Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list used on attribute":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123',
- "inclusive"
- );
- },
+ it("Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list defined outside output nodes", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123',
+ "inclusive"
+ );
+ });
+ it("Exclusive canonicalization works on xml with prefixed namespace defined in inclusive list used on attribute", function () {
+ compare(
+ '123',
+ "//*[local-name(.)='child']",
+ '123',
+ "inclusive"
+ );
+ });
- "Exclusive canonicalization works on xml with default namespace inside output nodes": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with default namespace inside output nodes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works on xml with multiple different default namespaces": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with multiple different default namespaces", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works on xml with multiple similar default namespaces": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with multiple similar default namespaces", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works on xml with default namespace outside output nodes": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with default namespace outside output nodes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization works when prefixed namespace is defined in output nodes not in the parent chain of who needs it":
- function (test) {
- compare(
- test,
- '',
- "//*[local-name(.)='child']",
- ''
- );
- },
+ it("Exclusive canonicalization works when prefixed namespace is defined in output nodes not in the parent chain of who needs it", function () {
+ compare(
+ '',
+ "//*[local-name(.)='child']",
+ ''
+ );
+ });
- "Exclusive canonicalization works on xml with unordered attributes": function (test) {
+ it("Exclusive canonicalization works on xml with unordered attributes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "Exclusive canonicalization sorts upper case attributes before lower case": function (test) {
- compare(test, '', "//*[local-name(.)='x']", '');
- },
+ it("Exclusive canonicalization sorts upper case attributes before lower case", function () {
+ compare('', "//*[local-name(.)='x']", '');
+ });
- "Exclusive canonicalization removes Comments": function (test) {
+ it("Exclusive canonicalization removes Comments", function () {
+ compare('', "//*[local-name(.)='x']", '');
+ });
+
+ it("Exclusive canonicalization works on xml with attributes with different namespace than element", function () {
compare(
- test,
- '',
- "//*[local-name(.)='x']",
- ''
+ '123',
+ "//*[local-name(.)='child']",
+ '123'
);
- },
+ });
- "Exclusive canonicalization works on xml with attributes with different namespace than element":
- function (test) {
- compare(
- test,
- '123',
- "//*[local-name(.)='child']",
- '123'
- );
- },
-
- "Exclusive canonicalization works on xml with attribute values with special characters":
- function (test) {
- compare(
- test,
- '"11\r\n\'>11',
- "//*[local-name(.)='child']",
- '11'
- );
- },
+ it("Exclusive canonicalization works on xml with attribute values with special characters", function () {
+ compare(
+ '"11\r\n\'>11',
+ "//*[local-name(.)='child']",
+ '11'
+ );
+ });
- "Exclusive canonicalization does not normalize whitespace characters into single spaces":
- function (test) {
- compare(
- test,
- '11',
- "//*[local-name(.)='child']",
- '11'
- );
- },
+ it("Exclusive canonicalization does not normalize whitespace characters into single spaces", function () {
+ compare(
+ '11',
+ "//*[local-name(.)='child']",
+ '11'
+ );
+ });
- "Exclusive canonicalization works on xml with element values with special characters": function (
- test
- ) {
+ it("Exclusive canonicalization works on xml with element values with special characters", function () {
compare(
- test,
// eslint-disable-next-line no-useless-escape
'&<>"11
&>"11\r',
"//*[local-name(.)='child']",
'&<>"11
&>"11\n'
);
- },
+ });
- "Exclusive canonicalization preserves white space in values": function (test) {
+ it("Exclusive canonicalization preserves white space in values", function () {
compare(
- test,
"12\n3\t",
"//*[local-name(.)='child']",
"12\n3\t"
);
- },
+ });
- "Exclusive canonicalization does not alter CR-NL (windows line separator) sequences": function (
- test
- ) {
+ it("Exclusive canonicalization does not alter CR-NL (windows line separator) sequences", function () {
compare(
- test,
"123\r\n",
"//*[local-name(.)='child']",
"123\n"
);
- },
-
- "Exclusive canonicalization preserves and encodes CR white space": function (test) {
+ });
+ it("Exclusive canonicalization preserves and encodes CR white space", function () {
compare(
- test,
"\r12\r3\r",
"//*[local-name(.)='child']",
"\n12\n3\n"
);
- },
+ });
- "Exclusive canonicalization preserves white space between elements": function (test) {
+ it("Exclusive canonicalization preserves white space between elements", function () {
compare(
- test,
"123\n",
"//*[local-name(.)='child']",
"123\n"
);
- },
+ });
- "Exclusive canonicalization turns empty element to start-end tag pairs": function (test) {
+ it("Exclusive canonicalization turns empty element to start-end tag pairs", function () {
compare(
- test,
"",
"//*[local-name(.)='child']",
""
);
- },
+ });
- "Exclusive canonicalization preserves empty start-end tag pairs": function (test) {
+ it("Exclusive canonicalization preserves empty start-end tag pairs", function () {
compare(
- test,
"",
"//*[local-name(.)='child']",
""
);
- },
+ });
- "Exclusive canonicalization with empty default namespace outside output nodes": function (test) {
+ it("Exclusive canonicalization with empty default namespace outside output nodes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
"123"
);
- },
+ });
- /* Uncomment this when this issue is fixed
- "Exclusive canonicalization removal of whitespace between PITarget and its data": function (test) {
- compare(test,
- "123",
- "//*[local-name(.)='child']",
- "123")
- },
- */
+ /*
+ TODO: Uncomment this when this issue is fixed
+ it("Exclusive canonicalization removal of whitespace between PITarget and its data", function() {
+ compare(
+ "123",
+ "//*[local-name(.)='child']",
+ "123"
+ );
+ });
+ */
- "Exclusive canonicalization with empty default namespace inside output nodes": function (test) {
+ it("Exclusive canonicalization with empty default namespace inside output nodes", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
'123'
);
- },
+ });
- "The XML declaration and document type declaration (DTD) are removed": function (test) {
+ it("The XML declaration and document type declaration (DTD) are removed", function () {
compare(
- test,
'123',
"//*[local-name(.)='child']",
"123"
);
- },
+ });
- /* Uncomment this when this issue is fixed
- "The XML declaration and document type declaration (DTD) are removed, stylesheet retained": function (test) {
- compare(test,
- "123",
- "//*[local-name(.)='child']",
- "123")
- },
- */
+ /*
+ TODO: Uncomment this when this issue is fixed
+ it("The XML declaration and document type declaration (DTD) are removed, stylesheet retained", function() {
+ compare(
+ "123",
+ "//*[local-name(.)='child']",
+ "123"
+ );
+ });
+ */
- "Attribute value delimiters are set to quotation marks (double quotes)": function (test) {
+ it("Attribute value delimiters are set to quotation marks (double quotes)", function () {
compare(
- test,
"123 ",
"//*[local-name(.)='child']",
'123 '
);
- },
+ });
- "CDATA sections are replaced with their character content": function (test) {
+ it("CDATA sections are replaced with their character content", function () {
compare(
- test,
"123]]>",
"//*[local-name(.)='child']",
"foo & bar in the <x>123</x>"
);
- },
+ });
- "SignedInfo canonization": function (test) {
+ it("SignedInfo canonization", function () {
compare(
- test,
'http://stockservice.contoso.com/wse/samples/2003/06/StockQuoteRequestuuid:6250c037-bcde-40ab-82b3-3a08efc86cdchttp://schemas.xmlsoap.org/ws/2004/03/addressing/role/anonymoushttp://localhost:8889/2008-09-01T17:44:21Z2008-09-01T17:49:21ZMIIBxDCCAW6gAwIBAgIQxUSXFzWJYYtOZnmmuOMKkjANBgkqhkiG9w0BAQQFADAWMRQwEgYDVQQDEwtSb290IEFnZW5jeTAeFw0wMzA3MDgxODQ3NTlaFw0zOTEyMzEyMzU5NTlaMB8xHTAbBgNVBAMTFFdTRTJRdWlja1N0YXJ0Q2xpZW50MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC+L6aB9x928noY4+0QBsXnxkQE4quJl7c3PUPdVu7k9A02hRG481XIfWhrDY5i7OEB7KGW7qFJotLLeMec/UkKUwCgv3VvJrs2nE9xO3SSWIdNzADukYh+Cxt+FUU6tUkDeqg7dqwivOXhuOTRyOI3HqbWTbumaLdc8jufz2LhaQIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwDQYJKoZIhvcNAQEEBQADQQAfIbnMPVYkNNfX1tG1F+qfLhHwJdfDUZuPyRPucWF5qkh6sSdWVBY5sT/txBnVJGziyO8DPYdu2fPMER8ajJfl+465BlJx5xOfHsIFezQt0MS1vZQ=jEe8rnaaqBWZQe+xHBQXriVG99o=W45ginYdBVqOqEaqPI2piZMPReA=m2VlWz/ZDTWL7FREHK+wpKhvjJM=Qws229qmAzSTZ4OKmAUWgl0PWWo=iEazGnkPY5caCWVZOHyR87CZ1h0=Fkm7AbwiJCiOzY8ldfuA9pTW1G+EtE+UX4Cv7SoMIqeUdfWRDVHZpJAQyf7aoQnlpJNV/3k9L1PT6rJbfV478CkULJENPLm1m0fmDeLzhIHDEANuzp/AirC60tMD5jCARb4B4Nr/6bTmoyDQsTY8VLRiiINng7Mpweg1FZvd8a0=FABRIKAM',
"//*[local-name(.)='SignedInfo']",
'+465BlJx5xOfHsIFezQt0MS1vZQ=jEe8rnaaqBWZQe+xHBQXriVG99o=W45ginYdBVqOqEaqPI2piZMPReA=m2VlWz/ZDTWL7FREHK+wpKhvjJM=Qws229qmAzSTZ4OKmAUWgl0PWWo=iEazGnkPY5caCWVZOHyR87CZ1h0='
);
- },
-
- "Exclusive canonicalization works on complex xml": function (test) {
- compare(
- test,
- '\n' +
- '\n' +
- " \n" +
- ' \n' +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- ' \n' +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- ' \n' +
- " ererer\n" +
- " dfdf\n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- ' \n' +
- ' \n' +
- ' \n' +
- " \n" +
- " \n" +
- " erer\n" +
- ' \n' +
- " \n" +
- ' \n' +
- " \n" +
- " \n" +
- ' \n' +
- " \n" +
- ' \n' +
- " \n" +
- ' \n' +
- ' \n' +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- ' \n' +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \r" +
- " \n" +
- " \n" +
- " \n" +
- ' \n' +
- " \n" +
- ' \n' +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- " \n" +
- "",
- "//*[local-name(.)='Body']",
- '\n \n \n \n \n \n \n \n \n \n \n \n \n ererer\n dfdf\n \n \n \n \n \n \n \n \n \n erer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n '
- );
- },
-
- "Multiple Canonicalization with namespace definition outside of signed element": function (test) {
+ }),
+ it("Exclusive canonicalization works on complex xml", function () {
+ compare(
+ '\n' +
+ '\n' +
+ " \n" +
+ ' \n' +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ ' \n' +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ ' \n' +
+ " ererer\n" +
+ " dfdf\n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ " \n" +
+ " \n" +
+ " erer\n" +
+ ' \n' +
+ " \n" +
+ ' \n' +
+ " \n" +
+ " \n" +
+ ' \n' +
+ " \n" +
+ ' \n' +
+ " \n" +
+ ' \n' +
+ ' \n' +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ ' \n' +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \r" +
+ " \n" +
+ " \n" +
+ " \n" +
+ ' \n' +
+ " \n" +
+ ' \n' +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ " \n" +
+ "",
+ "//*[local-name(.)='Body']",
+ '\n \n \n \n \n \n \n \n \n \n \n \n \n ererer\n dfdf\n \n \n \n \n \n \n \n \n \n erer\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n '
+ );
+ });
+
+ it("Multiple Canonicalization with namespace definition outside of signed element", function () {
//var doc = new Dom().parseFromString("")
var doc = new Dom().parseFromString('');
var node = select("//*[local-name(.)='y']", doc)[0];
@@ -475,11 +402,10 @@ module.exports = {
],
node
);
- test.equal('', res);
- test.done();
- },
+ expect(res).to.equal('');
+ });
- "Enveloped-signature canonicalization respects currentnode": function (test) {
+ it("Enveloped-signature canonicalization respects currentnode", function () {
// older versions of enveloped-signature removed the first signature in the whole doc, but should
// be the signature inside the current node if we want to be able to verify multiple signatures
// in a document.
@@ -490,37 +416,32 @@ module.exports = {
var sig = new SignedXml();
var transforms = ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"];
var res = sig.getCanonXml(transforms, node);
- test.equal("", res);
- test.done();
- },
-
- "The XML canonicalization method processes a node-set by imposing the following additional document order rules on the namespace and attribute nodes of each element: \
- - An element's namespace and attribute nodes have a document order position greater than the element but less than any child node of the element. \
- Namespace nodes have a lesser document order position than attribute nodes. \
- - An element's namespace nodes are sorted lexicographically by local name (the default namespace node, if one exists, has no local name and is therefore lexicographically least). \
- - An element's attribute nodes are sorted lexicographically with namespace URI as the primary key and local name as the secondary key (an empty namespace URI is lexicographically least). \
- Lexicographic comparison, which orders strings from least to greatest alphabetically, is based on the UCS codepoint values, which is equivalent to lexicographic ordering based on UTF-8.":
- function (test) {
- compare(
- test,
- '',
- "//*[local-name(.)='root']",
- ''
- );
- },
+ expect(res).to.equal("");
+ });
+
+ it("The XML canonicalization method processes a node-set by imposing the following additional document order rules on the namespace and attribute nodes of each element: \
+ - An element's namespace and attribute nodes have a document order position greater than the element but less than any child node of the element. \
+ Namespace nodes have a lesser document order position than attribute nodes. \
+ - An element's namespace nodes are sorted lexicographically by local name (the default namespace node, if one exists, has no local name and is therefore lexicographically least). \
+ - An element's attribute nodes are sorted lexicographically with namespace URI as the primary key and local name as the secondary key (an empty namespace URI is lexicographically least). \
+ Lexicographic comparison, which orders strings from least to greatest alphabetically, is based on the UCS codepoint values, which is equivalent to lexicographic ordering based on UTF-8.", function () {
+ compare(
+ '',
+ "//*[local-name(.)='root']",
+ ''
+ );
+ });
- "saml attributed order (bug #25)": function (test) {
+ it("saml attributed order (bug #25)", function () {
compare(
- test,
'',
"//*[local-name(.)='root']",
''
);
- },
+ });
- "Body Xml Element Canonicalization": function (test) {
+ it("Body Xml Element Canonicalization", function () {
compare(
- test,
'' +
'' +
@@ -534,15 +455,14 @@ module.exports = {
"" +
""
);
- },
+ });
- "Overriding namespace in canonicalization": function (test) {
+ it("Overriding namespace in canonicalization", function () {
compare(
- test,
'',
"//*",
'',
"ds"
);
- },
-};
+ });
+});
diff --git a/test/document-test.js b/test/document-test.js
index cf53931c..30faf049 100644
--- a/test/document-test.js
+++ b/test/document-test.js
@@ -2,42 +2,45 @@ var crypto = require("../index");
var xpath = require("xpath");
var xmldom = require("@xmldom/xmldom");
var fs = require("fs");
+var expect = require("chai").expect;
-exports["test with a document (using FileKeyInfo)"] = function (test) {
- var xml = fs.readFileSync("./test/static/valid_saml.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var signature = new xmldom.DOMParser().parseFromString(
- xpath
- .select(
- "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0]
- .toString()
- );
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
- sig.loadSignature(signature);
- var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
-};
+describe("Document tests", function () {
+ it("test with a document (using FileKeyInfo)", function () {
+ var xml = fs.readFileSync("./test/static/valid_saml.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var signature = new xmldom.DOMParser().parseFromString(
+ xpath
+ .select(
+ "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0]
+ .toString()
+ );
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
+ sig.loadSignature(signature);
+ var result = sig.checkSignature(xml);
-exports["test with a document (using StringKeyInfo)"] = function (test) {
- var xml = fs.readFileSync("./test/static/valid_saml.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var signature = new xmldom.DOMParser().parseFromString(
- xpath
- .select(
- "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0]
- .toString()
- );
- var sig = new crypto.SignedXml();
- var feidePublicCert = fs.readFileSync("./test/static/feide_public.pem");
- sig.keyInfoProvider = new crypto.StringKeyInfo(feidePublicCert);
- sig.loadSignature(signature);
- var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
-};
+ expect(result).to.be.true;
+ });
+
+ it("test with a document (using StringKeyInfo)", function () {
+ var xml = fs.readFileSync("./test/static/valid_saml.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var signature = new xmldom.DOMParser().parseFromString(
+ xpath
+ .select(
+ "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0]
+ .toString()
+ );
+ var sig = new crypto.SignedXml();
+ var feidePublicCert = fs.readFileSync("./test/static/feide_public.pem");
+ sig.keyInfoProvider = new crypto.StringKeyInfo(feidePublicCert);
+ sig.loadSignature(signature);
+ var result = sig.checkSignature(xml);
+
+ expect(result).to.be.true;
+ });
+});
diff --git a/test/hmac-tests.js b/test/hmac-tests.js
index 95d49388..c0c70055 100644
--- a/test/hmac-tests.js
+++ b/test/hmac-tests.js
@@ -2,57 +2,68 @@ var crypto = require("../index");
var xpath = require("xpath");
var xmldom = require("@xmldom/xmldom");
var fs = require("fs");
+var expect = require("chai").expect;
-crypto.SignedXml.enableHMAC();
-
-exports["test validating HMAC signature"] = function (test) {
- var xml = fs.readFileSync("./test/static/hmac_signature.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var signature = xpath.select(
- "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0];
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/hmac.key");
- sig.loadSignature(signature);
- var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
-};
-
-exports["test HMAC signature with incorrect key"] = function (test) {
- var xml = fs.readFileSync("./test/static/hmac_signature.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var signature = xpath.select(
- "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0];
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/hmac-foobar.key");
- sig.loadSignature(signature);
- var result = sig.checkSignature(xml);
- test.equal(result, false);
- test.done();
-};
-
-exports["test create and validate HMAC signature"] = function (test) {
- var xml = "" + "" + "Harry Potter" + "" + "";
- var sig = new crypto.SignedXml();
- sig.signingKey = fs.readFileSync("./test/static/hmac.key");
- sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#hmac-sha1";
- sig.addReference("//*[local-name(.)='book']");
- sig.computeSignature(xml);
-
- var doc = new xmldom.DOMParser().parseFromString(sig.getSignedXml());
- var signature = xpath.select(
- "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0];
- var verify = new crypto.SignedXml();
- verify.keyInfoProvider = new crypto.FileKeyInfo("./test/static/hmac.key");
- verify.loadSignature(signature);
- var result = verify.checkSignature(sig.getSignedXml());
- test.equal(result, true);
-
- test.done();
-};
+var sigAlgs;
+
+describe("HMAC tests", function () {
+ beforeEach(function () {
+ sigAlgs = crypto.SignedXml.SignatureAlgorithms;
+ crypto.SignedXml.enableHMAC();
+ });
+
+ afterEach(function () {
+ crypto.SignedXml.SignatureAlgorithms = sigAlgs;
+ });
+
+ it("test validating HMAC signature", function () {
+ var xml = fs.readFileSync("./test/static/hmac_signature.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var signature = xpath.select(
+ "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0];
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/hmac.key");
+ sig.loadSignature(signature);
+ var result = sig.checkSignature(xml);
+
+ expect(result).to.be.true;
+ });
+
+ it("test HMAC signature with incorrect key", function () {
+ var xml = fs.readFileSync("./test/static/hmac_signature.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var signature = xpath.select(
+ "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0];
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/hmac-foobar.key");
+ sig.loadSignature(signature);
+ var result = sig.checkSignature(xml);
+
+ expect(result).to.be.false;
+ });
+
+ it("test create and validate HMAC signature", function () {
+ var xml = "" + "" + "Harry Potter" + "" + "";
+ var sig = new crypto.SignedXml();
+ sig.signingKey = fs.readFileSync("./test/static/hmac.key");
+ sig.signatureAlgorithm = "http://www.w3.org/2000/09/xmldsig#hmac-sha1";
+ sig.addReference("//*[local-name(.)='book']");
+ sig.computeSignature(xml);
+
+ var doc = new xmldom.DOMParser().parseFromString(sig.getSignedXml());
+ var signature = xpath.select(
+ "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0];
+ var verify = new crypto.SignedXml();
+ verify.keyInfoProvider = new crypto.FileKeyInfo("./test/static/hmac.key");
+ verify.loadSignature(signature);
+ var result = verify.checkSignature(sig.getSignedXml());
+
+ expect(result).to.be.true;
+ });
+});
diff --git a/test/saml-response-test.js b/test/saml-response-test.js
index f97990e1..f7b2c98a 100644
--- a/test/saml-response-test.js
+++ b/test/saml-response-test.js
@@ -2,47 +2,43 @@ var crypto = require("../index");
var xpath = require("xpath");
var xmldom = require("@xmldom/xmldom");
var fs = require("fs");
+var expect = require("chai").expect;
-exports["test validating SAML response"] = function (test) {
- var xml = fs.readFileSync("./test/static/valid_saml.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var signature = xpath.select(
- "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0];
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
- sig.loadSignature(signature);
- var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
-};
+describe("SAML response tests", function () {
+ it("test validating SAML response", function () {
+ var xml = fs.readFileSync("./test/static/valid_saml.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var signature = xpath.select(
+ "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0];
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
+ sig.loadSignature(signature);
+ var result = sig.checkSignature(xml);
-exports["test validating wrapped assertion signature"] = function (test) {
- var xml = fs.readFileSync("./test/static/valid_saml_signature_wrapping.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var assertion = xpath.select("//*[local-name(.)='Assertion']", doc)[0];
- var signature = xpath.select(
- "//*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- assertion
- )[0];
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
- sig.loadSignature(signature);
- test.throws(
- function () {
+ expect(result).to.be.true;
+ });
+
+ it("test validating wrapped assertion signature", function () {
+ var xml = fs.readFileSync("./test/static/valid_saml_signature_wrapping.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var assertion = xpath.select("//*[local-name(.)='Assertion']", doc)[0];
+ var signature = xpath.select(
+ "//*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ assertion
+ )[0];
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
+ sig.loadSignature(signature);
+ expect(function () {
sig.checkSignature(xml);
- },
- Error,
- "Should not validate a document which contains multiple elements with the " +
+ }, "Should not validate a document which contains multiple elements with the " +
"same value for the ID / Id / Id attributes, in order to prevent " +
- "signature wrapping attack."
- );
- test.done();
-};
+ "signature wrapping attack.").to.throw();
+ });
-exports["test validating SAML response where a namespace is defined outside the signed element"] =
- function (test) {
+ it("test validating SAML response where a namespace is defined outside the signed element", function () {
var xml = fs.readFileSync("./test/static/saml_external_ns.xml", "utf-8");
var doc = new xmldom.DOMParser().parseFromString(xml);
var signature = xpath.select(
@@ -53,43 +49,37 @@ exports["test validating SAML response where a namespace is defined outside the
sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/saml_external_ns.pem");
sig.loadSignature(signature);
var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
- };
+ expect(result).to.be.true;
+ });
-exports["test reference id does not contain quotes"] = function (test) {
- var xml = fs.readFileSync("./test/static/id_with_quotes.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var assertion = xpath.select("//*[local-name(.)='Assertion']", doc)[0];
- var signature = xpath.select(
- "//*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- assertion
- )[0];
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
- sig.loadSignature(signature);
- test.throws(
- function () {
+ it("test reference id does not contain quotes", function () {
+ var xml = fs.readFileSync("./test/static/id_with_quotes.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var assertion = xpath.select("//*[local-name(.)='Assertion']", doc)[0];
+ var signature = xpath.select(
+ "//*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ assertion
+ )[0];
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
+ sig.loadSignature(signature);
+ expect(function () {
sig.checkSignature(xml);
- },
- Error,
- "id should not contain quotes"
- );
- test.done();
-};
+ }, "id should not contain quotes").to.throw();
+ });
-exports["test validating SAML response WithComments"] = function (test) {
- var xml = fs.readFileSync("./test/static/valid_saml_withcomments.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var signature = xpath.select(
- "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0];
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
- sig.loadSignature(signature);
- var result = sig.checkSignature(xml);
- // This doesn't matter, just want to make sure that we don't fail due to unknown algorithm
- test.equal(result, false);
- test.done();
-};
+ it("test validating SAML response WithComments", function () {
+ var xml = fs.readFileSync("./test/static/valid_saml_withcomments.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var signature = xpath.select(
+ "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0];
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/feide_public.pem");
+ sig.loadSignature(signature);
+ var result = sig.checkSignature(xml);
+ // This doesn't matter, just want to make sure that we don't fail due to unknown algorithm
+ expect(result).to.be.false;
+ });
+});
diff --git a/test/signature-integration-tests.js b/test/signature-integration-tests.js
index 0ae4ee87..4d69143c 100644
--- a/test/signature-integration-tests.js
+++ b/test/signature-integration-tests.js
@@ -3,19 +3,20 @@ var xpath = require("xpath"),
SignedXml = require("../lib/signed-xml.js").SignedXml,
fs = require("fs"),
crypto = require("../index");
+var expect = require("chai").expect;
-module.exports = {
- "verify signature": function (test) {
+describe("Signature integration tests", function () {
+ it("verify signature", function () {
var xml =
'';
- verifySignature(test, xml, "./test/static/integration/expectedVerify.xml", [
+ verifySignature(xml, "./test/static/integration/expectedVerify.xml", [
"//*[local-name(.)='x']",
"//*[local-name(.)='y']",
"//*[local-name(.)='w']",
]);
- },
+ });
- "verify signature of complex element": function (test) {
+ it("verify signature of complex element", function () {
var xml =
"" +
"" +
@@ -27,12 +28,12 @@ module.exports = {
"" +
"";
- verifySignature(test, xml, "./test/static/integration/expectedVerifyComplex.xml", [
+ verifySignature(xml, "./test/static/integration/expectedVerifyComplex.xml", [
"//*[local-name(.)='book']",
]);
- },
+ });
- "empty URI reference should consider the whole document": function (test) {
+ it("empty URI reference should consider the whole document", function () {
var xml = "" + "" + "Harry Potter" + "" + "";
var signature =
@@ -55,36 +56,35 @@ module.exports = {
sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/client_public.pem");
sig.loadSignature(signature);
var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
- },
-
- "add canonicalization if output of transforms will be a node-set rather than an octet stream":
- function (test) {
- var xml = fs.readFileSync("./test/static/windows_store_signature.xml", "utf-8");
-
- // Make sure that whitespace in the source document is removed -- see xml-crypto issue #23 and post at
- // http://webservices20.blogspot.co.il/2013/06/validating-windows-mobile-app-store.html
- // This regex is naive but works for this test case; for a more general solution consider
- // the xmldom-fork-fixed library which can pass {ignoreWhiteSpace: true} into the Dom constructor.
- xml = xml.replace(/>\s*<");
-
- var doc = new Dom().parseFromString(xml);
- xml = doc.firstChild.toString();
-
- var signature = xpath.select(
- "//*//*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0];
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/windows_store_certificate.pem");
- sig.loadSignature(signature);
- var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
- },
-
- "signature with inclusive namespaces": function (test) {
+
+ expect(result).to.be.true;
+ });
+
+ it("add canonicalization if output of transforms will be a node-set rather than an octet stream", function () {
+ var xml = fs.readFileSync("./test/static/windows_store_signature.xml", "utf-8");
+
+ // Make sure that whitespace in the source document is removed -- see xml-crypto issue #23 and post at
+ // http://webservices20.blogspot.co.il/2013/06/validating-windows-mobile-app-store.html
+ // This regex is naive but works for this test case; for a more general solution consider
+ // the xmldom-fork-fixed library which can pass {ignoreWhiteSpace: true} into the Dom constructor.
+ xml = xml.replace(/>\s*<");
+
+ var doc = new Dom().parseFromString(xml);
+ xml = doc.firstChild.toString();
+
+ var signature = xpath.select(
+ "//*//*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0];
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/windows_store_certificate.pem");
+ sig.loadSignature(signature);
+ var result = sig.checkSignature(xml);
+
+ expect(result).to.be.true;
+ });
+
+ it("signature with inclusive namespaces", function () {
var xml = fs.readFileSync("./test/static/signature_with_inclusivenamespaces.xml", "utf-8");
var doc = new Dom().parseFromString(xml);
xml = doc.firstChild.toString();
@@ -99,11 +99,11 @@ module.exports = {
);
sig.loadSignature(signature);
var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
- },
- "signature with inclusive namespaces with unix line separators": function (test) {
+ expect(result).to.be.true;
+ });
+
+ it("signature with inclusive namespaces with unix line separators", function () {
var xml = fs.readFileSync(
"./test/static/signature_with_inclusivenamespaces_lines.xml",
"utf-8"
@@ -121,11 +121,11 @@ module.exports = {
);
sig.loadSignature(signature);
var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
- },
- "signature with inclusive namespaces with windows line separators": function (test) {
+ expect(result).to.be.true;
+ });
+
+ it("signature with inclusive namespaces with windows line separators", function () {
var xml = fs.readFileSync(
"./test/static/signature_with_inclusivenamespaces_lines_windows.xml",
"utf-8"
@@ -143,11 +143,11 @@ module.exports = {
);
sig.loadSignature(signature);
var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
- },
- "should create single root xml document when signing inner node": function (test) {
+ expect(result).to.be.true;
+ });
+
+ it("should create single root xml document when signing inner node", function () {
var xml = "" + "" + "Harry Potter" + "" + "";
var sig = new SignedXml();
@@ -164,7 +164,7 @@ module.exports = {
Harry Potter
-
+
@@ -177,21 +177,19 @@ module.exports = {
J79hiSUrKdLOuX....Mthy1M=
-
+
*/
- test.ok(doc.documentElement.nodeName == "library", "root node = .");
- test.ok(doc.childNodes.length == 1, "only one root node is expected.");
- test.ok(
- doc.documentElement.childNodes.length == 2,
+ expect(doc.documentElement.nodeName, "root node = .").to.equal("library");
+ expect(doc.childNodes.length, "only one root node is expected.").to.equal(1);
+ expect(
+ doc.documentElement.childNodes.length,
" should have two child nodes : and "
- );
-
- test.done();
- },
-};
+ ).to.equal(2);
+ });
+});
-function verifySignature(test, xml, expected, xpath) {
+function verifySignature(xml, expected, xpath) {
var sig = new SignedXml();
sig.signingKey = fs.readFileSync("./test/static/client.pem");
sig.keyInfo = null;
@@ -205,8 +203,7 @@ function verifySignature(test, xml, expected, xpath) {
//fs.writeFileSync("./test/validators/XmlCryptoUtilities/XmlCryptoUtilities/bin/Debug/signedExample.xml", signed)
var expectedContent = fs.readFileSync(expected).toString();
- test.equal(signed, expectedContent, "signature xml different than expected");
- test.done();
+ expect(signed, "signature xml different than expected").to.equal(expectedContent);
/*
var spawn = require('child_process').spawn
var proc = spawn('./test/validators/XmlCryptoUtilities/XmlCryptoUtilities/bin/Debug/XmlCryptoUtilities.exe', ['verify'])
@@ -219,7 +216,7 @@ function verifySignature(test, xml, expected, xpath) {
console.log('stderr: ' + data);
});
- proc.on('exit', function (code) {
+ proc.on('exit', function (code) {
test.equal(0, code, "signature validation failed")
test.done()
});
diff --git a/test/signature-unit-tests.js b/test/signature-unit-tests.js
index 493a5e89..e911abb0 100644
--- a/test/signature-unit-tests.js
+++ b/test/signature-unit-tests.js
@@ -4,32 +4,28 @@ var select = require("xpath").select,
FileKeyInfo = require("../lib/signed-xml.js").FileKeyInfo,
fs = require("fs"),
crypto = require("crypto");
+var expect = require("chai").expect;
-module.exports = {
- "signer adds increasing id attributes to elements": function (test) {
- verifyAddsId(test, "wssecurity", "equal");
- verifyAddsId(test, null, "different");
- test.done();
- },
-
- "signer adds references with namespaces": function (test) {
- verifyReferenceNS(test);
- test.done();
- },
+describe("Signature unit tests", function () {
+ it("signer adds increasing id attributes to elements", function () {
+ verifyAddsId("wssecurity", "equal");
+ verifyAddsId(null, "different");
+ });
- "signer does not duplicate existing id attributes": function (test) {
- verifyDoesNotDuplicateIdAttributes(test, null, "");
- verifyDoesNotDuplicateIdAttributes(test, "wssecurity", "wsu:");
+ it("signer adds references with namespaces", function () {
+ verifyReferenceNS();
+ });
- test.done();
- },
+ it("signer does not duplicate existing id attributes", function () {
+ verifyDoesNotDuplicateIdAttributes(null, "");
+ verifyDoesNotDuplicateIdAttributes("wssecurity", "wsu:");
+ });
- "signer adds custom attributes to the signature root node": function (test) {
- verifyAddsAttrs(test);
- test.done();
- },
+ it("signer adds custom attributes to the signature root node", function () {
+ verifyAddsAttrs();
+ });
- "signer appends signature to the root node by default": function (test) {
+ it("signer appends signature to the root node by default", function () {
var xml = "xml-cryptogithub";
var sig = new SignedXml();
@@ -39,15 +35,13 @@ module.exports = {
var doc = new dom().parseFromString(sig.getSignedXml());
- test.strictEqual(
+ expect(
doc.documentElement.lastChild.localName,
- "Signature",
"the signature must be appended to the root node by default"
- );
- test.done();
- },
+ ).to.equal("Signature");
+ });
- "signer appends signature to a reference node": function (test) {
+ it("signer appends signature to a reference node", function () {
var xml = "xml-cryptogithub";
var sig = new SignedXml();
@@ -64,15 +58,13 @@ module.exports = {
var doc = new dom().parseFromString(sig.getSignedXml());
var referenceNode = select("/root/name", doc)[0];
- test.strictEqual(
+ expect(
referenceNode.lastChild.localName,
- "Signature",
"the signature should be appended to root/name"
- );
- test.done();
- },
+ ).to.equal("Signature");
+ });
- "signer prepends signature to a reference node": function (test) {
+ it("signer prepends signature to a reference node", function () {
var xml = "xml-cryptogithub";
var sig = new SignedXml();
@@ -89,15 +81,13 @@ module.exports = {
var doc = new dom().parseFromString(sig.getSignedXml());
var referenceNode = select("/root/name", doc)[0];
- test.strictEqual(
+ expect(
referenceNode.firstChild.localName,
- "Signature",
"the signature should be prepended to root/name"
- );
- test.done();
- },
+ ).to.equal("Signature");
+ });
- "signer inserts signature before a reference node": function (test) {
+ it("signer inserts signature before a reference node", function () {
var xml = "xml-cryptogithub";
var sig = new SignedXml();
@@ -114,15 +104,13 @@ module.exports = {
var doc = new dom().parseFromString(sig.getSignedXml());
var referenceNode = select("/root/name", doc)[0];
- test.strictEqual(
+ expect(
referenceNode.previousSibling.localName,
- "Signature",
"the signature should be inserted before to root/name"
- );
- test.done();
- },
+ ).to.equal("Signature");
+ });
- "signer inserts signature after a reference node": function (test) {
+ it("signer inserts signature after a reference node", function () {
var xml = "xml-cryptogithub";
var sig = new SignedXml();
@@ -139,15 +127,13 @@ module.exports = {
var doc = new dom().parseFromString(sig.getSignedXml());
var referenceNode = select("/root/name", doc)[0];
- test.strictEqual(
+ expect(
referenceNode.nextSibling.localName,
- "Signature",
"the signature should be inserted after to root/name"
- );
- test.done();
- },
+ ).to.equal("Signature");
+ });
- "signer creates signature with correct structure": function (test) {
+ it("signer creates signature with correct structure", function () {
function DummyKeyInfo() {
this.getKeyInfo = function () {
return "dummy key info";
@@ -257,7 +243,7 @@ module.exports = {
"" +
"";
- test.equal(expected, signature, "wrong signature format");
+ expect(expected, "wrong signature format").to.equal(signature);
var signedXml = sig.getSignedXml();
var expectedSignedXml =
@@ -295,17 +281,15 @@ module.exports = {
"" +
"";
- test.equal(expectedSignedXml, signedXml, "wrong signedXml format");
+ expect(expectedSignedXml, "wrong signedXml format").to.equal(signedXml);
var originalXmlWithIds = sig.getOriginalXmlWithIds();
var expectedOriginalXmlWithIds =
'';
- test.equal(expectedOriginalXmlWithIds, originalXmlWithIds, "wrong OriginalXmlWithIds");
-
- test.done();
- },
+ expect(expectedOriginalXmlWithIds, "wrong OriginalXmlWithIds").to.equal(originalXmlWithIds);
+ });
- "signer creates signature with correct structure (with prefix)": function (test) {
+ it("signer creates signature with correct structure (with prefix)", function () {
var prefix = "ds";
function DummyKeyInfo() {
@@ -418,7 +402,7 @@ module.exports = {
"" +
"";
- test.equal(expected, signature, "wrong signature format");
+ expect(expected, "wrong signature format").to.equal(signature);
var signedXml = sig.getSignedXml();
var expectedSignedXml =
@@ -456,17 +440,15 @@ module.exports = {
"" +
"";
- test.equal(expectedSignedXml, signedXml, "wrong signedXml format");
+ expect(expectedSignedXml, "wrong signedXml format").to.equal(signedXml);
var originalXmlWithIds = sig.getOriginalXmlWithIds();
var expectedOriginalXmlWithIds =
'';
- test.equal(expectedOriginalXmlWithIds, originalXmlWithIds, "wrong OriginalXmlWithIds");
-
- test.done();
- },
+ expect(expectedOriginalXmlWithIds, "wrong OriginalXmlWithIds").to.equal(originalXmlWithIds);
+ });
- "signer creates correct signature values": function (test) {
+ it("signer creates correct signature values", function () {
var xml =
'';
var sig = new SignedXml();
@@ -510,12 +492,10 @@ module.exports = {
"" +
"";
- test.equal(expected, signedXml, "wrong signature format");
-
- test.done();
- },
+ expect(expected, "wrong signature format").to.equal(signedXml);
+ });
- "signer creates correct signature values using async callback": function (test) {
+ it("signer creates correct signature values using async callback", function () {
function DummySignatureAlgorithm() {
this.getSignature = function (signedInfo, signingKey, callback) {
var signer = crypto.createSign("RSA-SHA1");
@@ -574,55 +554,47 @@ module.exports = {
"" +
"";
- test.equal(expected, signedXml, "wrong signature format");
- test.done();
+ expect(expected, "wrong signature format").to.equal(signedXml);
});
- },
-
- "correctly loads signature": function (test) {
- passLoadSignature(test, "./test/static/valid_signature.xml");
- passLoadSignature(test, "./test/static/valid_signature.xml", true);
- passLoadSignature(test, "./test/static/valid_signature_with_root_level_sig_namespace.xml");
- test.done();
- },
-
- "verify valid signature": function (test) {
- passValidSignature(test, "./test/static/valid_signature.xml");
- passValidSignature(test, "./test/static/valid_signature_with_lowercase_id_attribute.xml");
- passValidSignature(test, "./test/static/valid_signature wsu.xml", "wssecurity");
- passValidSignature(test, "./test/static/valid_signature_with_reference_keyInfo.xml");
- passValidSignature(test, "./test/static/valid_signature_with_whitespace_in_digestvalue.xml");
- passValidSignature(test, "./test/static/valid_signature_utf8.xml");
- passValidSignature(test, "./test/static/valid_signature_with_unused_prefixes.xml");
- test.done();
- },
-
- "fail invalid signature": function (test) {
- failInvalidSignature(test, "./test/static/invalid_signature - signature value.xml");
- failInvalidSignature(test, "./test/static/invalid_signature - hash.xml");
- failInvalidSignature(test, "./test/static/invalid_signature - non existing reference.xml");
- failInvalidSignature(test, "./test/static/invalid_signature - changed content.xml");
+ });
+
+ it("correctly loads signature", function () {
+ passLoadSignature("./test/static/valid_signature.xml");
+ passLoadSignature("./test/static/valid_signature.xml", true);
+ passLoadSignature("./test/static/valid_signature_with_root_level_sig_namespace.xml");
+ });
+
+ it("verify valid signature", function () {
+ passValidSignature("./test/static/valid_signature.xml");
+ passValidSignature("./test/static/valid_signature_with_lowercase_id_attribute.xml");
+ passValidSignature("./test/static/valid_signature wsu.xml", "wssecurity");
+ passValidSignature("./test/static/valid_signature_with_reference_keyInfo.xml");
+ passValidSignature("./test/static/valid_signature_with_whitespace_in_digestvalue.xml");
+ passValidSignature("./test/static/valid_signature_utf8.xml");
+ passValidSignature("./test/static/valid_signature_with_unused_prefixes.xml");
+ });
+
+ it("fail invalid signature", function () {
+ failInvalidSignature("./test/static/invalid_signature - signature value.xml");
+ failInvalidSignature("./test/static/invalid_signature - hash.xml");
+ failInvalidSignature("./test/static/invalid_signature - non existing reference.xml");
+ failInvalidSignature("./test/static/invalid_signature - changed content.xml");
failInvalidSignature(
- test,
"./test/static/invalid_signature - wsu - invalid signature value.xml",
"wssecurity"
);
- failInvalidSignature(test, "./test/static/invalid_signature - wsu - hash.xml", "wssecurity");
+ failInvalidSignature("./test/static/invalid_signature - wsu - hash.xml", "wssecurity");
failInvalidSignature(
- test,
"./test/static/invalid_signature - wsu - non existing reference.xml",
"wssecurity"
);
failInvalidSignature(
- test,
"./test/static/invalid_signature - wsu - changed content.xml",
"wssecurity"
);
+ });
- test.done();
- },
-
- "allow empty reference uri when signing": function (test) {
+ it("allow empty reference uri when signing", function () {
var xml = "";
var sig = new SignedXml();
sig.signingKey = fs.readFileSync("./test/static/client.pem");
@@ -642,11 +614,10 @@ module.exports = {
var signedXml = sig.getSignedXml();
var doc = new dom().parseFromString(signedXml);
var URI = select("//*[local-name(.)='Reference']/@URI", doc)[0];
- test.equal(URI.value, "", "uri should be empty but instead was " + URI.value);
- test.done();
- },
+ expect(URI.value, "uri should be empty but instead was " + URI.value).to.equal("");
+ });
- "signer appends signature to a non-existing reference node": function (test) {
+ it("signer appends signature to a non-existing reference node", function () {
var xml = "xml-cryptogithub";
var sig = new SignedXml();
@@ -660,14 +631,13 @@ module.exports = {
action: "append",
},
});
- test.ok(false);
+ expect.fail("Expected an error to be thrown");
} catch (err) {
- test.ok(!(err instanceof TypeError));
+ expect(err).not.to.be.an.instanceof(TypeError);
}
- test.done();
- },
+ });
- "signer adds existing prefixes": function (test) {
+ it("signer adds existing prefixes", function () {
function AssertionKeyInfo(assertionId) {
this.getKeyInfo = function () {
return (
@@ -707,146 +677,130 @@ module.exports = {
},
});
var result = sig.getSignedXml();
- test.equal((result.match(/xmlns:wsu=/g) || []).length, 1);
- test.equal((result.match(/xmlns:wsse=/g) || []).length, 1);
- test.done();
- },
-
- "creates InclusiveNamespaces element when inclusiveNamespacesPrefixList is set on Reference":
- function (test) {
- var xml = "";
- var sig = new SignedXml();
- sig.signingKey = fs.readFileSync("./test/static/client.pem");
- sig.keyInfoProvider = null;
-
- sig.addReference(
- "//*[local-name(.)='root']",
- ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"],
- "http://www.w3.org/2000/09/xmldsig#sha1",
- "",
- "",
- "prefix1 prefix2"
- );
-
- sig.computeSignature(xml);
- var signedXml = sig.getSignedXml();
+ expect((result.match(/xmlns:wsu=/g) || []).length).to.equal(1);
+ expect((result.match(/xmlns:wsse=/g) || []).length).to.equal(1);
+ });
- var doc = new dom().parseFromString(signedXml);
- var inclusiveNamespaces = select(
- "//*[local-name(.)='Reference']/*[local-name(.)='Transforms']/*[local-name(.)='Transform']/*[local-name(.)='InclusiveNamespaces']",
- doc.documentElement
- );
- test.equal(inclusiveNamespaces.length, 1, "InclusiveNamespaces element should exist");
-
- var prefixListAttribute = inclusiveNamespaces[0].getAttribute("PrefixList");
- test.equal(
- prefixListAttribute,
- "prefix1 prefix2",
- "InclusiveNamespaces element should have the correct PrefixList attribute value"
- );
-
- test.done();
- },
+ it("creates InclusiveNamespaces element when inclusiveNamespacesPrefixList is set on Reference", function () {
+ var xml = "";
+ var sig = new SignedXml();
+ sig.signingKey = fs.readFileSync("./test/static/client.pem");
+ sig.keyInfoProvider = null;
- "does not create InclusiveNamespaces element when inclusiveNamespacesPrefixList is not set on Reference":
- function (test) {
- var xml = "";
- var sig = new SignedXml();
- sig.signingKey = fs.readFileSync("./test/static/client.pem");
- sig.keyInfoProvider = null;
-
- sig.addReference(
- "//*[local-name(.)='root']",
- ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"],
- "http://www.w3.org/2000/09/xmldsig#sha1",
- "",
- "",
- ""
- );
-
- sig.computeSignature(xml);
- var signedXml = sig.getSignedXml();
+ sig.addReference(
+ "//*[local-name(.)='root']",
+ ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"],
+ "http://www.w3.org/2000/09/xmldsig#sha1",
+ "",
+ "",
+ "prefix1 prefix2"
+ );
- var doc = new dom().parseFromString(signedXml);
- var inclusiveNamespaces = select(
- "//*[local-name(.)='Reference']/*[local-name(.)='Transforms']/*[local-name(.)='Transform']/*[local-name(.)='InclusiveNamespaces']",
- doc.documentElement
- );
- test.equal(inclusiveNamespaces.length, 0, "InclusiveNamespaces element should not exist");
+ sig.computeSignature(xml);
+ var signedXml = sig.getSignedXml();
- test.done();
- },
+ var doc = new dom().parseFromString(signedXml);
+ var inclusiveNamespaces = select(
+ "//*[local-name(.)='Reference']/*[local-name(.)='Transforms']/*[local-name(.)='Transform']/*[local-name(.)='InclusiveNamespaces']",
+ doc.documentElement
+ );
+ expect(inclusiveNamespaces.length, "InclusiveNamespaces element should exist").to.equal(1);
- "creates InclusiveNamespaces element inside CanonicalizationMethod when inclusiveNamespacesPrefixList is set on SignedXml options":
- function (test) {
- var xml = "";
- var sig = new SignedXml(null, { inclusiveNamespacesPrefixList: "prefix1 prefix2" });
- sig.signingKey = fs.readFileSync("./test/static/client.pem");
- sig.keyInfoProvider = null;
+ var prefixListAttribute = inclusiveNamespaces[0].getAttribute("PrefixList");
+ expect(
+ prefixListAttribute,
+ "InclusiveNamespaces element should have the correct PrefixList attribute value"
+ ).to.equal("prefix1 prefix2");
+ });
- sig.addReference(
- "//*[local-name(.)='root']",
- ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"],
- "http://www.w3.org/2000/09/xmldsig#sha1"
- );
+ it("does not create InclusiveNamespaces element when inclusiveNamespacesPrefixList is not set on Reference", function () {
+ var xml = "";
+ var sig = new SignedXml();
+ sig.signingKey = fs.readFileSync("./test/static/client.pem");
+ sig.keyInfoProvider = null;
- sig.computeSignature(xml);
- var signedXml = sig.getSignedXml();
+ sig.addReference(
+ "//*[local-name(.)='root']",
+ ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"],
+ "http://www.w3.org/2000/09/xmldsig#sha1",
+ "",
+ "",
+ ""
+ );
- var doc = new dom().parseFromString(signedXml);
- var inclusiveNamespaces = select(
- "//*[local-name(.)='CanonicalizationMethod']/*[local-name(.)='InclusiveNamespaces']",
- doc.documentElement
- );
-
- test.equal(
- inclusiveNamespaces.length,
- 1,
- "InclusiveNamespaces element should exist inside CanonicalizationMethod"
- );
-
- var prefixListAttribute = inclusiveNamespaces[0].getAttribute("PrefixList");
- test.equal(
- prefixListAttribute,
- "prefix1 prefix2",
- "InclusiveNamespaces element inside CanonicalizationMethod should have the correct PrefixList attribute value"
- );
-
- test.done();
- },
+ sig.computeSignature(xml);
+ var signedXml = sig.getSignedXml();
+
+ var doc = new dom().parseFromString(signedXml);
+ var inclusiveNamespaces = select(
+ "//*[local-name(.)='Reference']/*[local-name(.)='Transforms']/*[local-name(.)='Transform']/*[local-name(.)='InclusiveNamespaces']",
+ doc.documentElement
+ );
- "does not create InclusiveNamespaces element inside CanonicalizationMethod when inclusiveNamespacesPrefixList is not set on SignedXml options":
- function (test) {
- var xml = "";
- var sig = new SignedXml(null); // Omit inclusiveNamespacesPrefixList property
- sig.signingKey = fs.readFileSync("./test/static/client.pem");
- sig.keyInfoProvider = null;
+ expect(inclusiveNamespaces.length, "InclusiveNamespaces element should not exist").to.equal(0);
+ });
- sig.addReference(
- "//*[local-name(.)='root']",
- ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"],
- "http://www.w3.org/2000/09/xmldsig#sha1"
- );
+ it("creates InclusiveNamespaces element inside CanonicalizationMethod when inclusiveNamespacesPrefixList is set on SignedXml options", function () {
+ var xml = "";
+ var sig = new SignedXml(null, { inclusiveNamespacesPrefixList: "prefix1 prefix2" });
+ sig.signingKey = fs.readFileSync("./test/static/client.pem");
+ sig.keyInfoProvider = null;
- sig.computeSignature(xml);
- var signedXml = sig.getSignedXml();
+ sig.addReference(
+ "//*[local-name(.)='root']",
+ ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"],
+ "http://www.w3.org/2000/09/xmldsig#sha1"
+ );
- var doc = new dom().parseFromString(signedXml);
- var inclusiveNamespaces = select(
- "//*[local-name(.)='CanonicalizationMethod']/*[local-name(.)='InclusiveNamespaces']",
- doc.documentElement
- );
+ sig.computeSignature(xml);
+ var signedXml = sig.getSignedXml();
- test.equal(
- inclusiveNamespaces.length,
- 0,
- "InclusiveNamespaces element should not exist inside CanonicalizationMethod"
- );
+ var doc = new dom().parseFromString(signedXml);
+ var inclusiveNamespaces = select(
+ "//*[local-name(.)='CanonicalizationMethod']/*[local-name(.)='InclusiveNamespaces']",
+ doc.documentElement
+ );
- test.done();
- },
+ expect(
+ inclusiveNamespaces.length,
+ "InclusiveNamespaces element should exist inside CanonicalizationMethod"
+ ).to.equal(1);
- "adds attributes to KeyInfo element when attrs are present in keyInfoProvider": function (test) {
+ var prefixListAttribute = inclusiveNamespaces[0].getAttribute("PrefixList");
+ expect(
+ prefixListAttribute,
+ "InclusiveNamespaces element inside CanonicalizationMethod should have the correct PrefixList attribute value"
+ ).to.equal("prefix1 prefix2");
+ });
+
+ it("does not create InclusiveNamespaces element inside CanonicalizationMethod when inclusiveNamespacesPrefixList is not set on SignedXml options", function () {
+ var xml = "";
+ var sig = new SignedXml(null); // Omit inclusiveNamespacesPrefixList property
+ sig.signingKey = fs.readFileSync("./test/static/client.pem");
+ sig.keyInfoProvider = null;
+
+ sig.addReference(
+ "//*[local-name(.)='root']",
+ ["http://www.w3.org/2000/09/xmldsig#enveloped-signature"],
+ "http://www.w3.org/2000/09/xmldsig#sha1"
+ );
+
+ sig.computeSignature(xml);
+ var signedXml = sig.getSignedXml();
+
+ var doc = new dom().parseFromString(signedXml);
+ var inclusiveNamespaces = select(
+ "//*[local-name(.)='CanonicalizationMethod']/*[local-name(.)='InclusiveNamespaces']",
+ doc.documentElement
+ );
+
+ expect(
+ inclusiveNamespaces.length,
+ "InclusiveNamespaces element should not exist inside CanonicalizationMethod"
+ ).to.equal(0);
+ });
+
+ it("adds attributes to KeyInfo element when attrs are present in keyInfoProvider", function () {
var xml = "";
var sig = new SignedXml();
sig.signingKey = fs.readFileSync("./test/static/client.pem");
@@ -865,33 +819,29 @@ module.exports = {
var doc = new dom().parseFromString(signedXml);
var keyInfoElement = select("//*[local-name(.)='KeyInfo']", doc.documentElement);
- test.equal(keyInfoElement.length, 1, "KeyInfo element should exist");
+ expect(keyInfoElement.length, "KeyInfo element should exist").to.equal(1);
var algorithmAttribute = keyInfoElement[0].getAttribute("CustomUri");
- test.equal(
+ expect(
algorithmAttribute,
- "http://www.example.com/keyinfo",
"KeyInfo element should have the correct CustomUri attribute value"
- );
+ ).to.equal("http://www.example.com/keyinfo");
var customAttribute = keyInfoElement[0].getAttribute("CustomAttribute");
- test.equal(
+ expect(
customAttribute,
- "custom-value",
"KeyInfo element should have the correct CustomAttribute attribute value"
- );
-
- test.done();
- },
-};
+ ).to.equal("custom-value");
+ });
+});
-function passValidSignature(test, file, mode) {
+function passValidSignature(file, mode) {
var xml = fs.readFileSync(file).toString();
var res = verifySignature(xml, mode);
- test.equal(true, res, "expected signature to be valid, but it was reported invalid");
+ expect(res, "expected signature to be valid, but it was reported invalid").to.equal(true);
}
-function passLoadSignature(test, file, toString) {
+function passLoadSignature(file, toString) {
var xml = fs.readFileSync(file).toString();
var doc = new dom().parseFromString(xml);
var node = select(
@@ -901,31 +851,25 @@ function passLoadSignature(test, file, toString) {
var sig = new SignedXml();
sig.loadSignature(toString ? node.toString() : node);
- test.equal(
- "http://www.w3.org/2001/10/xml-exc-c14n#",
- sig.canonicalizationAlgorithm,
- "wrong canonicalization method"
+ expect(sig.canonicalizationAlgorithm, "wrong canonicalization method").to.equal(
+ "http://www.w3.org/2001/10/xml-exc-c14n#"
);
- test.equal(
- "http://www.w3.org/2000/09/xmldsig#rsa-sha1",
- sig.signatureAlgorithm,
- "wrong signature method"
+ expect(sig.signatureAlgorithm, "wrong signature method").to.equal(
+ "http://www.w3.org/2000/09/xmldsig#rsa-sha1"
);
- test.equal(
- "PI2xGt3XrVcxYZ34Kw7nFdq75c7Mmo7J0q7yeDhBprHuJal/KV9KyKG+Zy3bmQIxNwkPh0KMP5r1YMTKlyifwbWK0JitRCSa0Fa6z6+TgJi193yiR5S1MQ+esoQT0RzyIOBl9/GuJmXx/1rXnqrTxmL7UxtqKuM29/eHwF0QDUI=",
- sig.signatureValue,
- "wrong signature value"
+ expect(sig.signatureValue, "wrong signature value").to.equal(
+ "PI2xGt3XrVcxYZ34Kw7nFdq75c7Mmo7J0q7yeDhBprHuJal/KV9KyKG+Zy3bmQIxNwkPh0KMP5r1YMTKlyifwbWK0JitRCSa0Fa6z6+TgJi193yiR5S1MQ+esoQT0RzyIOBl9/GuJmXx/1rXnqrTxmL7UxtqKuM29/eHwF0QDUI="
);
var keyInfo = select(
"//*[local-name(.)='KeyInfo']/*[local-name(.)='dummyKey']",
sig.keyInfo[0]
)[0];
- test.equal(keyInfo.firstChild.data, "1234", "keyInfo clause not correctly loaded");
+ expect(keyInfo.firstChild.data, "keyInfo clause not correctly loaded").to.equal("1234");
- test.equal(3, sig.references.length);
+ expect(sig.references.length).to.equal(3);
var digests = [
"b5GCZ2xpP5T7tbLWBTkOl4CYupQ=",
@@ -936,22 +880,21 @@ function passLoadSignature(test, file, toString) {
for (var i = 0; i < sig.references.length; i++) {
var ref = sig.references[i];
var expectedUri = "#_" + i;
- test.equal(
- expectedUri,
+ expect(
ref.uri,
"wrong uri for index " + i + ". expected: " + expectedUri + " actual: " + ref.uri
- );
- test.equal(1, ref.transforms.length);
- test.equal("http://www.w3.org/2001/10/xml-exc-c14n#", ref.transforms[0]);
- test.equal(digests[i], ref.digestValue);
- test.equal("http://www.w3.org/2000/09/xmldsig#sha1", ref.digestAlgorithm);
+ ).to.equal(expectedUri);
+ expect(ref.transforms.length).to.equal(1);
+ expect(ref.transforms[0]).to.equal("http://www.w3.org/2001/10/xml-exc-c14n#");
+ expect(ref.digestValue).to.equal(digests[i]);
+ expect(ref.digestAlgorithm).to.equal("http://www.w3.org/2000/09/xmldsig#sha1");
}
}
-function failInvalidSignature(test, file, mode) {
+function failInvalidSignature(file, mode) {
var xml = fs.readFileSync(file).toString();
var res = verifySignature(xml, mode);
- test.equal(false, res, "expected signature to be invalid, but it was reported valid");
+ expect(res, "expected signature to be invalid, but it was reported valid").to.equal(false);
}
function verifySignature(xml, mode) {
@@ -969,7 +912,7 @@ function verifySignature(xml, mode) {
return res;
}
-function verifyDoesNotDuplicateIdAttributes(test, mode, prefix) {
+function verifyDoesNotDuplicateIdAttributes(mode, prefix) {
var xml =
"https://openidp.feide.no
-https://openidp.feide.no
-
-
- RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
-MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==
-some text
-
-
+https://openidp.feide.no
+https://openidp.feide.no
+
+
+ RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
+MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==
+some text
+
+
diff --git a/test/static/signature_with_inclusivenamespaces.xml b/test/static/signature_with_inclusivenamespaces.xml
index a8272355..83e9b4a8 100644
--- a/test/static/signature_with_inclusivenamespaces.xml
+++ b/test/static/signature_with_inclusivenamespaces.xml
@@ -1,12 +1,12 @@
-http://www.okta.com/k7xkhq0jUHUPQAXVMUAN4G+uveKmtiB1EkY5BAt+8lmQwjI=Q80N6FUr5/YPtEzRlRdMoPu+bL0MssDxNUY+yxykzbmxsI0joEo/SmmSgZrDYQKTllZk/KfzBMPFV9yBH4+mEzCU5E3xuCs99jZzafcw3K8mIMTJy1YHxjc359d27R5s50i9w5PHsusRov0MjQIoJ2w48Gy4EnYaViqBR3UVEqE=MIICnTCCAgagAwIBAgIGAUBGHxqUMA0GCSqGSIb3DQEBBQUAMIGRMQswCQYDVQQGEwJVUzETMBEG
-A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU
-MBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWtsdWdsYWJzMjEcMBoGCSqGSIb3DQEJARYN
-aW5mb0Bva3RhLmNvbTAeFw0xMzA4MDMyMTM4MzhaFw00MzA4MDMyMTM5MzhaMIGRMQswCQYDVQQG
-EwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UE
-CgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWtsdWdsYWJzMjEcMBoGCSqG
-SIb3DQEJARYNaW5mb0Bva3RhLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsCB9lJTH
-qB7vdM5jeOH84cW8u7IHYv4/OAPYF0fBYe9wJy19CgyM2OgiASuAcItnH4WhB+io2ZPwb/Xwl7Uu
-4XmUE0l+mkCNuDYp5fXTZxwv5G6HvkAxXZio0Rk9T0VETCroxgpS5LxQ/o/owjR39S7xzRnj6ddX
-3Mq2yGjKyBcCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAB1qGNqSNLLWq+RPcP+wOaWtYpJOJ8/MbZ
-EWWm9/KKHKXM6J/zgUUIXZi3czMeO+Y+X14PR8lGXoAHf5b/JavG9FmFvRn4fGa45VTVo2GfMN6K
+http://www.okta.com/k7xkhq0jUHUPQAXVMUAN4G+uveKmtiB1EkY5BAt+8lmQwjI=Q80N6FUr5/YPtEzRlRdMoPu+bL0MssDxNUY+yxykzbmxsI0joEo/SmmSgZrDYQKTllZk/KfzBMPFV9yBH4+mEzCU5E3xuCs99jZzafcw3K8mIMTJy1YHxjc359d27R5s50i9w5PHsusRov0MjQIoJ2w48Gy4EnYaViqBR3UVEqE=MIICnTCCAgagAwIBAgIGAUBGHxqUMA0GCSqGSIb3DQEBBQUAMIGRMQswCQYDVQQGEwJVUzETMBEG
+A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU
+MBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWtsdWdsYWJzMjEcMBoGCSqGSIb3DQEJARYN
+aW5mb0Bva3RhLmNvbTAeFw0xMzA4MDMyMTM4MzhaFw00MzA4MDMyMTM5MzhaMIGRMQswCQYDVQQG
+EwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UE
+CgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWtsdWdsYWJzMjEcMBoGCSqG
+SIb3DQEJARYNaW5mb0Bva3RhLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsCB9lJTH
+qB7vdM5jeOH84cW8u7IHYv4/OAPYF0fBYe9wJy19CgyM2OgiASuAcItnH4WhB+io2ZPwb/Xwl7Uu
+4XmUE0l+mkCNuDYp5fXTZxwv5G6HvkAxXZio0Rk9T0VETCroxgpS5LxQ/o/owjR39S7xzRnj6ddX
+3Mq2yGjKyBcCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAB1qGNqSNLLWq+RPcP+wOaWtYpJOJ8/MbZ
+EWWm9/KKHKXM6J/zgUUIXZi3czMeO+Y+X14PR8lGXoAHf5b/JavG9FmFvRn4fGa45VTVo2GfMN6K
aIKF0obeCbYi/QUf8B+Xi1tSIJm1VCKRE7nnliQ/TzGaNulgWeyTbVkG0/X8LQ==admin@kluglabs.comhttps://auth0145.auth0.comurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportAdmin
\ No newline at end of file
diff --git a/test/static/signature_with_inclusivenamespaces_lines.xml b/test/static/signature_with_inclusivenamespaces_lines.xml
index 30640b42..d178d289 100644
--- a/test/static/signature_with_inclusivenamespaces_lines.xml
+++ b/test/static/signature_with_inclusivenamespaces_lines.xml
@@ -1,20 +1,20 @@
-http://www.okta.com/k7xkhq0jUHUPQAXVMUAN4G+uveKmtiB1EkY5BAt+8lmQwjI=
-
-Q80N6FUr5/YPtEzRlRdMoPu+bL0MssDxNUY+yxykzbmxsI0joEo/SmmSgZrDYQKTllZk/KfzBMPF
-V9yBH4+mEzCU5E3xuCs99jZzafcw3K8mIMTJy1YHxjc359d27R5s50i9w5PHsusRov0MjQIoJ2w4
-8Gy4EnYaViqBR3UVEqE=
-
-
-MIICnTCCAgagAwIBAgIGAUBGHxqUMA0GCSqGSIb3DQEBBQUAMIGRMQswCQYDVQQGEwJVUzETMBEG
-A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU
-MBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWtsdWdsYWJzMjEcMBoGCSqGSIb3DQEJARYN
-aW5mb0Bva3RhLmNvbTAeFw0xMzA4MDMyMTM4MzhaFw00MzA4MDMyMTM5MzhaMIGRMQswCQYDVQQG
-EwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UE
-CgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWtsdWdsYWJzMjEcMBoGCSqG
-SIb3DQEJARYNaW5mb0Bva3RhLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsCB9lJTH
-qB7vdM5jeOH84cW8u7IHYv4/OAPYF0fBYe9wJy19CgyM2OgiASuAcItnH4WhB+io2ZPwb/Xwl7Uu
-4XmUE0l+mkCNuDYp5fXTZxwv5G6HvkAxXZio0Rk9T0VETCroxgpS5LxQ/o/owjR39S7xzRnj6ddX
-3Mq2yGjKyBcCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAB1qGNqSNLLWq+RPcP+wOaWtYpJOJ8/MbZ
-EWWm9/KKHKXM6J/zgUUIXZi3czMeO+Y+X14PR8lGXoAHf5b/JavG9FmFvRn4fGa45VTVo2GfMN6K
-aIKF0obeCbYi/QUf8B+Xi1tSIJm1VCKRE7nnliQ/TzGaNulgWeyTbVkG0/X8LQ==
+http://www.okta.com/k7xkhq0jUHUPQAXVMUAN4G+uveKmtiB1EkY5BAt+8lmQwjI=
+
+Q80N6FUr5/YPtEzRlRdMoPu+bL0MssDxNUY+yxykzbmxsI0joEo/SmmSgZrDYQKTllZk/KfzBMPF
+V9yBH4+mEzCU5E3xuCs99jZzafcw3K8mIMTJy1YHxjc359d27R5s50i9w5PHsusRov0MjQIoJ2w4
+8Gy4EnYaViqBR3UVEqE=
+
+
+MIICnTCCAgagAwIBAgIGAUBGHxqUMA0GCSqGSIb3DQEBBQUAMIGRMQswCQYDVQQGEwJVUzETMBEG
+A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU
+MBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWtsdWdsYWJzMjEcMBoGCSqGSIb3DQEJARYN
+aW5mb0Bva3RhLmNvbTAeFw0xMzA4MDMyMTM4MzhaFw00MzA4MDMyMTM5MzhaMIGRMQswCQYDVQQG
+EwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UE
+CgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxEjAQBgNVBAMMCWtsdWdsYWJzMjEcMBoGCSqG
+SIb3DQEJARYNaW5mb0Bva3RhLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAsCB9lJTH
+qB7vdM5jeOH84cW8u7IHYv4/OAPYF0fBYe9wJy19CgyM2OgiASuAcItnH4WhB+io2ZPwb/Xwl7Uu
+4XmUE0l+mkCNuDYp5fXTZxwv5G6HvkAxXZio0Rk9T0VETCroxgpS5LxQ/o/owjR39S7xzRnj6ddX
+3Mq2yGjKyBcCAwEAATANBgkqhkiG9w0BAQUFAAOBgQAB1qGNqSNLLWq+RPcP+wOaWtYpJOJ8/MbZ
+EWWm9/KKHKXM6J/zgUUIXZi3czMeO+Y+X14PR8lGXoAHf5b/JavG9FmFvRn4fGa45VTVo2GfMN6K
+aIKF0obeCbYi/QUf8B+Xi1tSIJm1VCKRE7nnliQ/TzGaNulgWeyTbVkG0/X8LQ==
admin@kluglabs.comhttps://auth0145.auth0.comurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransportAdmin
\ No newline at end of file
diff --git a/test/static/valid_saml.xml b/test/static/valid_saml.xml
index afbfa14f..11d08f6f 100644
--- a/test/static/valid_saml.xml
+++ b/test/static/valid_saml.xml
@@ -1,9 +1,9 @@
-https://openidp.feide.no
-
-
- fc21hh1bKZpaMNjx9HfOfVelfWw=dkONrkxW+LSuDvnNMG/mWYFa47d2WGyapLhXSTYqrlT9Td+tT7ciojNJ55WTaPaCMt7IrGtIxxskPAZIjdIn5pRyDxHr0joWxzZ7oZHCOI1CnQV5HjOq+rzzmEN2LctCZ6S4hbL7SQ1qJ3vp2BCXAygy4tmJOURQdnk0KLwwRS8=
-MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==https://openidp.feide.no
-
-
- RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
-MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==_6c5dcaa3053321ff4d63785fbc3f67c59a129cde82passport-samlurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordbergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3ebergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3e
+https://openidp.feide.no
+
+
+ fc21hh1bKZpaMNjx9HfOfVelfWw=dkONrkxW+LSuDvnNMG/mWYFa47d2WGyapLhXSTYqrlT9Td+tT7ciojNJ55WTaPaCMt7IrGtIxxskPAZIjdIn5pRyDxHr0joWxzZ7oZHCOI1CnQV5HjOq+rzzmEN2LctCZ6S4hbL7SQ1qJ3vp2BCXAygy4tmJOURQdnk0KLwwRS8=
+MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==https://openidp.feide.no
+
+
+ RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
+MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==_6c5dcaa3053321ff4d63785fbc3f67c59a129cde82passport-samlurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordbergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3ebergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3e
diff --git a/test/static/valid_saml_signature_wrapping.xml b/test/static/valid_saml_signature_wrapping.xml
index d8668526..68ed35e2 100644
--- a/test/static/valid_saml_signature_wrapping.xml
+++ b/test/static/valid_saml_signature_wrapping.xml
@@ -1,18 +1,18 @@
-https://openidp.feide.no
-
-https://openidp.feide.no
-
-
- RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
-MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==_6c5dcaa3053321ff4d63785fbc3f67c59a129cde82passport-samlurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordbergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3ebergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3e
-
-https://openidp.feide.no
-
-
- RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
-MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==
-================
-This Assertion contains malicious data.
-================
-
-
+https://openidp.feide.no
+
+https://openidp.feide.no
+
+
+ RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
+MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==_6c5dcaa3053321ff4d63785fbc3f67c59a129cde82passport-samlurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordbergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3ebergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3e
+
+https://openidp.feide.no
+
+
+ RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
+MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==
+================
+This Assertion contains malicious data.
+================
+
+
diff --git a/test/static/valid_saml_withcomments.xml b/test/static/valid_saml_withcomments.xml
index 5f578acc..b91fbe14 100644
--- a/test/static/valid_saml_withcomments.xml
+++ b/test/static/valid_saml_withcomments.xml
@@ -1,9 +1,9 @@
-https://openidp.feide.no
-
-
- fc21hh1bKZpaMNjx9HfOfVelfWw=dkONrkxW+LSuDvnNMG/mWYFa47d2WGyapLhXSTYqrlT9Td+tT7ciojNJ55WTaPaCMt7IrGtIxxskPAZIjdIn5pRyDxHr0joWxzZ7oZHCOI1CnQV5HjOq+rzzmEN2LctCZ6S4hbL7SQ1qJ3vp2BCXAygy4tmJOURQdnk0KLwwRS8=
-MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==https://openidp.feide.no
-
-
- RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
-MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==_6c5dcaa3053321ff4d63785fbc3f67c59a129cde82passport-samlurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordbergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3ebergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3e
+https://openidp.feide.no
+
+
+ fc21hh1bKZpaMNjx9HfOfVelfWw=dkONrkxW+LSuDvnNMG/mWYFa47d2WGyapLhXSTYqrlT9Td+tT7ciojNJ55WTaPaCMt7IrGtIxxskPAZIjdIn5pRyDxHr0joWxzZ7oZHCOI1CnQV5HjOq+rzzmEN2LctCZ6S4hbL7SQ1qJ3vp2BCXAygy4tmJOURQdnk0KLwwRS8=
+MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==https://openidp.feide.no
+
+
+ RnNjoyUguwze5w2R+cboyTHlkQk=aw5711jKP7xragunjRRCAD4mT4xKHc37iohBpQDbdSomD3ksOSB96UZQp0MtaC3xlVSkMtYw85Om96T2q2xrxLLYVA50eFJEMMF7SCVPStWTVjBlaCuOPEQxIaHyJs9Sy3MCEfbBh4Pqn9IJBd1kzwdlCrWWjAmksbFFg5wHQJA=
+MIICizCCAfQCCQCY8tKaMc0BMjANBgkqhkiG9w0BAQUFADCBiTELMAkGA1UEBhMCTk8xEjAQBgNVBAgTCVRyb25kaGVpbTEQMA4GA1UEChMHVU5JTkVUVDEOMAwGA1UECxMFRmVpZGUxGTAXBgNVBAMTEG9wZW5pZHAuZmVpZGUubm8xKTAnBgkqhkiG9w0BCQEWGmFuZHJlYXMuc29sYmVyZ0B1bmluZXR0Lm5vMB4XDTA4MDUwODA5MjI0OFoXDTM1MDkyMzA5MjI0OFowgYkxCzAJBgNVBAYTAk5PMRIwEAYDVQQIEwlUcm9uZGhlaW0xEDAOBgNVBAoTB1VOSU5FVFQxDjAMBgNVBAsTBUZlaWRlMRkwFwYDVQQDExBvcGVuaWRwLmZlaWRlLm5vMSkwJwYJKoZIhvcNAQkBFhphbmRyZWFzLnNvbGJlcmdAdW5pbmV0dC5ubzCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAt8jLoqI1VTlxAZ2axiDIThWcAOXdu8KkVUWaN/SooO9O0QQ7KRUjSGKN9JK65AFRDXQkWPAu4HlnO4noYlFSLnYyDxI66LCr71x4lgFJjqLeAvB/GqBqFfIZ3YK/NrhnUqFwZu63nLrZjcUZxNaPjOOSRSDaXpv1kb5k3jOiSGECAwEAATANBgkqhkiG9w0BAQUFAAOBgQBQYj4cAafWaYfjBU2zi1ElwStIaJ5nyp/s/8B8SAPK2T79McMyccP3wSW13LHkmM1jwKe3ACFXBvqGQN0IbcH49hu0FKhYFM/GPDJcIHFBsiyMBXChpye9vBaTNEBCtU3KjjyG0hRT2mAQ9h+bkPmOvlEo/aH0xR68Z9hw4PF13w==_6c5dcaa3053321ff4d63785fbc3f67c59a129cde82passport-samlurn:oasis:names:tc:SAML:2.0:ac:classes:PasswordbergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3ebergieHenriBergiusHenri Bergiushenri.bergius@nemein.combergie@rnd.feide.no8216c78fe244502efa13f62e6615c94acb7bdf3e
diff --git a/test/static/valid_signature_with_root_level_sig_namespace.xml b/test/static/valid_signature_with_root_level_sig_namespace.xml
index fe48177a..58c698ce 100644
--- a/test/static/valid_signature_with_root_level_sig_namespace.xml
+++ b/test/static/valid_signature_with_root_level_sig_namespace.xml
@@ -1 +1 @@
-b5GCZ2xpP5T7tbLWBTkOl4CYupQ=K4dI497ZCxzweDIrbndUSmtoezY=sH1gxKve8wlU8LlFVa2l6w3HMJ0=PI2xGt3XrVcxYZ34Kw7nFdq75c7Mmo7J0q7yeDhBprHuJal/KV9KyKG+Zy3bmQIxNwkPh0KMP5r1YMTKlyifwbWK0JitRCSa0Fa6z6+TgJi193yiR5S1MQ+esoQT0RzyIOBl9/GuJmXx/1rXnqrTxmL7UxtqKuM29/eHwF0QDUI=1234
+b5GCZ2xpP5T7tbLWBTkOl4CYupQ=K4dI497ZCxzweDIrbndUSmtoezY=sH1gxKve8wlU8LlFVa2l6w3HMJ0=PI2xGt3XrVcxYZ34Kw7nFdq75c7Mmo7J0q7yeDhBprHuJal/KV9KyKG+Zy3bmQIxNwkPh0KMP5r1YMTKlyifwbWK0JitRCSa0Fa6z6+TgJi193yiR5S1MQ+esoQT0RzyIOBl9/GuJmXx/1rXnqrTxmL7UxtqKuM29/eHwF0QDUI=1234
diff --git a/test/static/valid_signature_with_whitespace_in_digestvalue.xml b/test/static/valid_signature_with_whitespace_in_digestvalue.xml
index 5d19458e..90cb289c 100644
--- a/test/static/valid_signature_with_whitespace_in_digestvalue.xml
+++ b/test/static/valid_signature_with_whitespace_in_digestvalue.xml
@@ -1,4 +1,4 @@
-b5GCZ2xpP5T7tbLWBTkOl4CYupQ=
-K4dI497ZCxzweDIrbndUSmtoezY=
-sH1gxKve8wlU8LlFVa2l6w3HMJ0=
-gGp+jskU2HohMdhaeGTdJBbN/rngzWrQs0+N4bqJDzHQEqUm6rVk0mDoFybJaW0AEXf/dSVhM0faYTwQK0p9aipsAORTaPq677GcdKwyEHHRnly064D8GlikyQ49451SEViy89kYZO1yf+x5MNHNyCi7VVRIixbsSLOUgu0A9Yo=
+b5GCZ2xpP5T7tbLWBTkOl4CYupQ=
+K4dI497ZCxzweDIrbndUSmtoezY=
+sH1gxKve8wlU8LlFVa2l6w3HMJ0=
+gGp+jskU2HohMdhaeGTdJBbN/rngzWrQs0+N4bqJDzHQEqUm6rVk0mDoFybJaW0AEXf/dSVhM0faYTwQK0p9aipsAORTaPq677GcdKwyEHHRnly064D8GlikyQ49451SEViy89kYZO1yf+x5MNHNyCi7VVRIixbsSLOUgu0A9Yo=
diff --git a/test/static/windows_store_signature.xml b/test/static/windows_store_signature.xml
index 1f16a0e5..b13e51af 100644
--- a/test/static/windows_store_signature.xml
+++ b/test/static/windows_store_signature.xml
@@ -1,18 +1,18 @@
-
-
-
-
-
-
-
-
-
-
-
-
- cdiU06eD8X/w1aGCHeaGCG9w/kWZ8I099rw4mmPpvdU=
-
-
- SjRIxS/2r2P6ZdgaR9bwUSa6ZItYYFpKLJZrnAa3zkMylbiWjh9oZGGng2p6/gtBHC2dSTZlLbqnysJjl7mQp/A3wKaIkzjyRXv3kxoVaSV0pkqiPt04cIfFTP0JZkE5QD/vYxiWjeyGp1dThEM2RV811sRWvmEs/hHhVxb32e8xCLtpALYx3a9lW51zRJJN0eNdPAvNoiCJlnogAoTToUQLHs72I1dECnSbeNPXiG7klpy5boKKMCZfnVXXkneWvVFtAA1h2sB7ll40LEHO4oYN6VzD+uKd76QOgGmsu9iGVyRvvmMtahvtL1/pxoxsTRedhKq6zrzCfT8qfh3C1w==
-
+
+
+
+
+
+
+
+
+
+
+
+
+ cdiU06eD8X/w1aGCHeaGCG9w/kWZ8I099rw4mmPpvdU=
+
+
+ SjRIxS/2r2P6ZdgaR9bwUSa6ZItYYFpKLJZrnAa3zkMylbiWjh9oZGGng2p6/gtBHC2dSTZlLbqnysJjl7mQp/A3wKaIkzjyRXv3kxoVaSV0pkqiPt04cIfFTP0JZkE5QD/vYxiWjeyGp1dThEM2RV811sRWvmEs/hHhVxb32e8xCLtpALYx3a9lW51zRJJN0eNdPAvNoiCJlnogAoTToUQLHs72I1dECnSbeNPXiG7klpy5boKKMCZfnVXXkneWvVFtAA1h2sB7ll40LEHO4oYN6VzD+uKd76QOgGmsu9iGVyRvvmMtahvtL1/pxoxsTRedhKq6zrzCfT8qfh3C1w==
+
\ No newline at end of file
diff --git a/test/wsfed-metadata-test.js b/test/wsfed-metadata-test.js
index de10a252..e4cb7c6d 100644
--- a/test/wsfed-metadata-test.js
+++ b/test/wsfed-metadata-test.js
@@ -2,18 +2,21 @@ var crypto = require("../index");
var xpath = require("xpath");
var xmldom = require("@xmldom/xmldom");
var fs = require("fs");
+var expect = require("chai").expect;
-exports["test validating WS-Fed Metadata"] = function (test) {
- var xml = fs.readFileSync("./test/static/wsfederation_metadata.xml", "utf-8");
- var doc = new xmldom.DOMParser().parseFromString(xml);
- var signature = xpath.select(
- "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
- doc
- )[0];
- var sig = new crypto.SignedXml();
- sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/wsfederation_metadata.pem");
- sig.loadSignature(signature);
- var result = sig.checkSignature(xml);
- test.equal(result, true);
- test.done();
-};
+describe("WS-Fed Metadata tests", function () {
+ it("test validating WS-Fed Metadata", function () {
+ var xml = fs.readFileSync("./test/static/wsfederation_metadata.xml", "utf-8");
+ var doc = new xmldom.DOMParser().parseFromString(xml);
+ var signature = xpath.select(
+ "/*/*[local-name(.)='Signature' and namespace-uri(.)='http://www.w3.org/2000/09/xmldsig#']",
+ doc
+ )[0];
+ var sig = new crypto.SignedXml();
+ sig.keyInfoProvider = new crypto.FileKeyInfo("./test/static/wsfederation_metadata.pem");
+ sig.loadSignature(signature);
+ var result = sig.checkSignature(xml);
+
+ expect(result).to.be.true;
+ });
+});
diff --git a/test/xml-assert.js b/test/xml-assert.js
deleted file mode 100644
index ccaafb22..00000000
--- a/test/xml-assert.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var select = require("xpath").select;
-
-function nodeExists(test, doc, xpath) {
- if (!doc && !xpath) return;
- var node = select(xpath, doc);
- test.ok(node.length == 1, "xpath " + xpath + " not found");
-}
-
-exports.nodeExists = nodeExists;