1
0
mirror of https://github.com/covidpass-org/covidpass.git synced 2025-02-23 23:17:37 +01:00

working version 0.1

This commit is contained in:
Billy Lo 2021-08-26 00:15:12 -04:00
parent 0d5bfd9203
commit 3f3ed17d50
12 changed files with 872 additions and 596 deletions

View File

@ -9,7 +9,7 @@ import Card from "./Card";
import Alert from "./Alert"; import Alert from "./Alert";
import Check from './Check'; import Check from './Check';
import {PayloadBody} from "../src/payload"; import {PayloadBody} from "../src/payload";
import {getPayloadBodyFromFile, getPayloadBodyFromQR} from "../src/process"; import {getPayloadBodyFromFile} from "../src/process";
import {PassData} from "../src/pass"; import {PassData} from "../src/pass";
import {COLORS} from "../src/colors"; import {COLORS} from "../src/colors";
import Colors from './Colors'; import Colors from './Colors';
@ -221,11 +221,11 @@ function Form(): JSX.Element {
<div className="space-y-5"> <div className="space-y-5">
<p> <p>
{t('index:dataPrivacyDescription')} {t('index:dataPrivacyDescription')}
<Link href="/privacy"> {/* <Link href="/privacy">
<a> <a>
{t('index:privacyPolicy')} {t('index:privacyPolicy')}
</a> </a>
</Link>. </Link>. */}
</p> </p>
<div> <div>
<ul className="list-none"> <ul className="list-none">

668
package-lock.json generated
View File

@ -21,9 +21,9 @@
"next-i18next": "^8.5.1", "next-i18next": "^8.5.1",
"next-seo": "^4.26.0", "next-seo": "^4.26.0",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"pdf2json": "^1.2.1",
"pdfjs-dist": "^2.5.207", "pdfjs-dist": "^2.5.207",
"pngjs": "^6.0.0", "pngjs": "^6.0.0",
"qrcode": "^1.4.4",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"tls": "^0.0.1", "tls": "^0.0.1",
@ -902,6 +902,25 @@
"ieee754": "^1.1.4" "ieee754": "^1.1.4"
} }
}, },
"node_modules/buffer-alloc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"dependencies": {
"buffer-alloc-unsafe": "^1.1.0",
"buffer-fill": "^1.0.0"
}
},
"node_modules/buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
},
"node_modules/buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
},
"node_modules/buffer-from": { "node_modules/buffer-from": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@ -946,6 +965,14 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
"engines": {
"node": ">=6"
}
},
"node_modules/camelcase-css": { "node_modules/camelcase-css": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
@ -1024,6 +1051,35 @@
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
}, },
"node_modules/cliui": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"dependencies": {
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
"wrap-ansi": "^5.1.0"
}
},
"node_modules/cliui/node_modules/ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"engines": {
"node": ">=6"
}
},
"node_modules/cliui/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/color": { "node_modules/color": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz",
@ -1262,6 +1318,14 @@
"ms": "2.0.0" "ms": "2.0.0"
} }
}, },
"node_modules/decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/define-properties": { "node_modules/define-properties": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
@ -1334,6 +1398,11 @@
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
"integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}, },
"node_modules/dijkstrajs": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
},
"node_modules/dlv": { "node_modules/dlv": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
@ -1380,6 +1449,11 @@
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
"integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==" "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA=="
}, },
"node_modules/emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
},
"node_modules/emojis-list": { "node_modules/emojis-list": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
@ -1695,6 +1769,14 @@
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
}, },
"node_modules/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==",
"engines": {
"node": "6.* || 8.* || >= 10.*"
}
},
"node_modules/get-intrinsic": { "node_modules/get-intrinsic": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
@ -2101,6 +2183,14 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
"engines": {
"node": ">=4"
}
},
"node_modules/is-generator-function": { "node_modules/is-generator-function": {
"version": "1.0.9", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz",
@ -3130,83 +3220,6 @@
"node": ">=0.12" "node": ">=0.12"
} }
}, },
"node_modules/pdf2json": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/pdf2json/-/pdf2json-1.2.1.tgz",
"integrity": "sha512-Ihda4iOiiINYRwvdpHFHBFrRc/vT+w10Kc3o2meOB0HSPDEVMrb+X+V5oUOawipqNT/aI3dazSicwNyJzDLPaQ==",
"bundleDependencies": [
"xmldom",
"lodash",
"optimist",
"async",
"minimist",
"wordwrap"
],
"dependencies": {
"async": "^3.2.0",
"lodash": "^4.17.20",
"optimist": "^0.6.1",
"xmldom": "^0.5.0"
},
"bin": {
"pdf2json": "bin/pdf2json"
},
"engines": {
"node": ">=10.15.1"
}
},
"node_modules/pdf2json/node_modules/async": {
"version": "3.2.0",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
"inBundle": true,
"license": "MIT"
},
"node_modules/pdf2json/node_modules/lodash": {
"version": "4.17.15",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
"inBundle": true,
"license": "MIT"
},
"node_modules/pdf2json/node_modules/minimist": {
"version": "0.0.10",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"inBundle": true,
"license": "MIT"
},
"node_modules/pdf2json/node_modules/optimist": {
"version": "0.6.1",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"inBundle": true,
"license": "MIT/X11",
"dependencies": {
"minimist": "~0.0.1",
"wordwrap": "~0.0.2"
}
},
"node_modules/pdf2json/node_modules/wordwrap": {
"version": "0.0.3",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/wordwrap/-/wordwrap-0.0.3.tgz",
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
"inBundle": true,
"license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/pdf2json/node_modules/xmldom": {
"version": "0.3.0",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/xmldom/-/xmldom-0.3.0.tgz",
"integrity": "sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==",
"inBundle": true,
"license": "(LGPL-2.0 OR MIT)",
"engines": {
"node": ">=10.0.0"
}
},
"node_modules/pdfjs-dist": { "node_modules/pdfjs-dist": {
"version": "2.9.359", "version": "2.9.359",
"resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz",
@ -3434,6 +3447,39 @@
"purgecss": "bin/purgecss.js" "purgecss": "bin/purgecss.js"
} }
}, },
"node_modules/qrcode": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz",
"integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==",
"dependencies": {
"buffer": "^5.4.3",
"buffer-alloc": "^1.2.0",
"buffer-from": "^1.1.1",
"dijkstrajs": "^1.0.1",
"isarray": "^2.0.1",
"pngjs": "^3.3.0",
"yargs": "^13.2.4"
},
"bin": {
"qrcode": "bin/qrcode"
},
"engines": {
"node": ">=4"
}
},
"node_modules/qrcode/node_modules/isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
},
"node_modules/qrcode/node_modules/pngjs": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
"integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w==",
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/querystring": { "node_modules/querystring": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
@ -3640,6 +3686,19 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
}, },
"node_modules/require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"node_modules/resolve": { "node_modules/resolve": {
"version": "1.20.0", "version": "1.20.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@ -3785,6 +3844,11 @@
"randombytes": "^2.1.0" "randombytes": "^2.1.0"
} }
}, },
"node_modules/set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"node_modules/setimmediate": { "node_modules/setimmediate": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
@ -3928,6 +3992,38 @@
"resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
"integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs="
}, },
"node_modules/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==",
"dependencies": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/string-width/node_modules/ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"engines": {
"node": ">=6"
}
},
"node_modules/string-width/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/string.prototype.trimend": { "node_modules/string.prototype.trimend": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
@ -4666,6 +4762,11 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"node_modules/which-typed-array": { "node_modules/which-typed-array": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz",
@ -4740,6 +4841,38 @@
"node": ">=8.9.0" "node": ">=8.9.0"
} }
}, },
"node_modules/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==",
"dependencies": {
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
"strip-ansi": "^5.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/wrap-ansi/node_modules/ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"engines": {
"node": ">=6"
}
},
"node_modules/wrap-ansi/node_modules/strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"dependencies": {
"ansi-regex": "^4.1.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/wrappy": { "node_modules/wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@ -4754,6 +4887,11 @@
"node": ">=0.4" "node": ">=0.4"
} }
}, },
"node_modules/y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
},
"node_modules/yaml": { "node_modules/yaml": {
"version": "1.10.2", "version": "1.10.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
@ -4763,6 +4901,88 @@
"node": ">= 6" "node": ">= 6"
} }
}, },
"node_modules/yargs": {
"version": "13.3.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dependencies": {
"cliui": "^5.0.0",
"find-up": "^3.0.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": "^3.0.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^13.1.2"
}
},
"node_modules/yargs-parser": {
"version": "13.1.2",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
},
"node_modules/yargs/node_modules/find-up": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
"integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
"dependencies": {
"locate-path": "^3.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/yargs/node_modules/locate-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
"integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
"dependencies": {
"p-locate": "^3.0.0",
"path-exists": "^3.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/yargs/node_modules/p-limit": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
"integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dependencies": {
"p-try": "^2.0.0"
},
"engines": {
"node": ">=6"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/yargs/node_modules/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==",
"dependencies": {
"p-limit": "^2.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/yargs/node_modules/path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
"integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
"engines": {
"node": ">=4"
}
},
"node_modules/yocto-queue": { "node_modules/yocto-queue": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
@ -5496,6 +5716,25 @@
"ieee754": "^1.1.4" "ieee754": "^1.1.4"
} }
}, },
"buffer-alloc": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
"integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
"requires": {
"buffer-alloc-unsafe": "^1.1.0",
"buffer-fill": "^1.0.0"
}
},
"buffer-alloc-unsafe": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
"integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
},
"buffer-fill": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
"integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
},
"buffer-from": { "buffer-from": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
@ -5531,6 +5770,11 @@
"integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
"dev": true "dev": true
}, },
"camelcase": {
"version": "5.3.1",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
"integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
},
"camelcase-css": { "camelcase-css": {
"version": "2.0.1", "version": "2.0.1",
"resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",
@ -5591,6 +5835,31 @@
"resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz",
"integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==" "integrity": "sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q=="
}, },
"cliui": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
"integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
"requires": {
"string-width": "^3.1.0",
"strip-ansi": "^5.2.0",
"wrap-ansi": "^5.1.0"
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"color": { "color": {
"version": "3.1.3", "version": "3.1.3",
"resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz", "resolved": "https://registry.npmjs.org/color/-/color-3.1.3.tgz",
@ -5804,6 +6073,11 @@
"ms": "2.0.0" "ms": "2.0.0"
} }
}, },
"decamelize": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
"integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
},
"define-properties": { "define-properties": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
@ -5866,6 +6140,11 @@
} }
} }
}, },
"dijkstrajs": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz",
"integrity": "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
},
"dlv": { "dlv": {
"version": "1.1.3", "version": "1.1.3",
"resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",
@ -5908,6 +6187,11 @@
} }
} }
}, },
"emoji-regex": {
"version": "7.0.3",
"resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
"integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
},
"emojis-list": { "emojis-list": {
"version": "2.1.0", "version": "2.1.0",
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
@ -6148,6 +6432,11 @@
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
}, },
"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=="
},
"get-intrinsic": { "get-intrinsic": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
@ -6445,6 +6734,11 @@
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
}, },
"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": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
},
"is-generator-function": { "is-generator-function": {
"version": "1.0.9", "version": "1.0.9",
"resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz", "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz",
@ -7235,57 +7529,6 @@
"sha.js": "^2.4.8" "sha.js": "^2.4.8"
} }
}, },
"pdf2json": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/pdf2json/-/pdf2json-1.2.1.tgz",
"integrity": "sha512-Ihda4iOiiINYRwvdpHFHBFrRc/vT+w10Kc3o2meOB0HSPDEVMrb+X+V5oUOawipqNT/aI3dazSicwNyJzDLPaQ==",
"requires": {
"async": "^3.2.0",
"lodash": "^4.17.20",
"optimist": "^0.6.1",
"xmldom": "^0.5.0"
},
"dependencies": {
"async": {
"version": "3.2.0",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/async/-/async-3.2.0.tgz",
"integrity": "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw==",
"bundled": true
},
"lodash": {
"version": "https://artifact.devsnc.com/content/groups/npm-all/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
"bundled": true
},
"minimist": {
"version": "0.0.10",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/minimist/-/minimist-0.0.10.tgz",
"integrity": "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8=",
"bundled": true
},
"optimist": {
"version": "0.6.1",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/optimist/-/optimist-0.6.1.tgz",
"integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=",
"bundled": true,
"requires": {
"minimist": "~0.0.1",
"wordwrap": "~0.0.2"
}
},
"wordwrap": {
"version": "0.0.3",
"resolved": "https://artifact.devsnc.com/content/groups/npm-all/wordwrap/-/wordwrap-0.0.3.tgz",
"integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=",
"bundled": true
},
"xmldom": {
"version": "https://artifact.devsnc.com/content/groups/npm-all/xmldom/-/xmldom-0.3.0.tgz",
"integrity": "sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g==",
"bundled": true
}
}
},
"pdfjs-dist": { "pdfjs-dist": {
"version": "2.9.359", "version": "2.9.359",
"resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz", "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz",
@ -7449,6 +7692,32 @@
"postcss-selector-parser": "^6.0.2" "postcss-selector-parser": "^6.0.2"
} }
}, },
"qrcode": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz",
"integrity": "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q==",
"requires": {
"buffer": "^5.4.3",
"buffer-alloc": "^1.2.0",
"buffer-from": "^1.1.1",
"dijkstrajs": "^1.0.1",
"isarray": "^2.0.1",
"pngjs": "^3.3.0",
"yargs": "^13.2.4"
},
"dependencies": {
"isarray": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
"integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
},
"pngjs": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
"integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
}
}
},
"querystring": { "querystring": {
"version": "0.2.1", "version": "0.2.1",
"resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz", "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.1.tgz",
@ -7606,6 +7875,16 @@
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz",
"integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==" "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew=="
}, },
"require-directory": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
"integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
},
"require-main-filename": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
"integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
},
"resolve": { "resolve": {
"version": "1.20.0", "version": "1.20.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz",
@ -7697,6 +7976,11 @@
"randombytes": "^2.1.0" "randombytes": "^2.1.0"
} }
}, },
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
"integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
},
"setimmediate": { "setimmediate": {
"version": "1.0.5", "version": "1.0.5",
"resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
@ -7826,6 +8110,31 @@
"resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz",
"integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs=" "integrity": "sha1-6Kr8CsGFW0Zmkp7X3RJ1311sgRs="
}, },
"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==",
"requires": {
"emoji-regex": "^7.0.1",
"is-fullwidth-code-point": "^2.0.0",
"strip-ansi": "^5.1.0"
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"string.prototype.trimend": { "string.prototype.trimend": {
"version": "1.0.4", "version": "1.0.4",
"resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz",
@ -8381,6 +8690,11 @@
"is-symbol": "^1.0.3" "is-symbol": "^1.0.3"
} }
}, },
"which-module": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
},
"which-typed-array": { "which-typed-array": {
"version": "1.1.4", "version": "1.1.4",
"resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz", "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz",
@ -8429,6 +8743,31 @@
} }
} }
}, },
"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==",
"requires": {
"ansi-styles": "^3.2.0",
"string-width": "^3.0.0",
"strip-ansi": "^5.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
},
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
"integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
"requires": {
"ansi-regex": "^4.1.0"
}
}
}
},
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
@ -8440,12 +8779,83 @@
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
"integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
}, },
"y18n": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
"integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
},
"yaml": { "yaml": {
"version": "1.10.2", "version": "1.10.2",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
"integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
"dev": true "dev": true
}, },
"yargs": {
"version": "13.3.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"requires": {
"cliui": "^5.0.0",
"find-up": "^3.0.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": "^3.0.0",
"which-module": "^2.0.0",
"y18n": "^4.0.0",
"yargs-parser": "^13.1.2"
},
"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==",
"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==",
"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==",
"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==",
"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": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
}
}
},
"yargs-parser": {
"version": "13.1.2",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"requires": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
},
"yocto-queue": { "yocto-queue": {
"version": "0.1.0", "version": "0.1.0",
"resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",

View File

@ -30,6 +30,7 @@
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",
"pdfjs-dist": "^2.5.207", "pdfjs-dist": "^2.5.207",
"pngjs": "^6.0.0", "pngjs": "^6.0.0",
"qrcode": "^1.4.4",
"react": "^17.0.2", "react": "^17.0.2",
"react-dom": "^17.0.2", "react-dom": "^17.0.2",
"tls": "^0.0.1", "tls": "^0.0.1",

View File

@ -40,7 +40,7 @@ function Index(): JSX.Element {
<Page content={ <Page content={
<div className="space-y-5"> <div className="space-y-5">
<Card content={ <Card content={
<p>{t('common:subtitle')}&nbsp;{t('index:iosHint')}</p> <p>{t('common:subtitle')}</p>
}/> }/>
<Form/> <Form/>

View File

@ -1,5 +1,5 @@
title: Ontario vaccination receipt to mobile wallet title: Vaccination Receipt to Wallet
subtitle: This tool validates the digital signature of your receipt and saves the information onto your mobile wallet for easy validation. subtitle: This tool verifies your electronic receipt (PDF) and save the record onto your Apple Wallet securely.
privacyPolicy: Privacy Policy privacyPolicy: Privacy Policy
donate: Sponsor donate: Sponsor
gitHub: GitHub gitHub: GitHub

View File

@ -1,4 +1,4 @@
noFileOrQrCode: Please scan a QR Code, or select a file noFileOrQrCode: Please select your vaccination receipt PDF file
signatureFailed: Error while signing pass on server signatureFailed: Error while signing pass on server
decodingFailed: Failed to decode QR code payload decodingFailed: Failed to decode QR code payload
invalidColor: Invalid color invalidColor: Invalid color

View File

@ -1,8 +1,8 @@
iosHint: On iOS, please use the Safari Browser. iosHint: On iOS, please use Safari.
errorClose: Close errorClose: Close
selectCertificate: Select vaccination receipt (PDF) selectCertificate: Select vaccination receipt (PDF)
selectCertificateDescription: | selectCertificateDescription: |
If you have more than one receipts, just select the most recent one downloaded from covid19.ontariohealth.ca If you have more than one receipts, download the most recent one from covid19.ontariohealth.ca
#stopCamera: Stop Camera #stopCamera: Stop Camera
#startCamera: Start Camera #startCamera: Start Camera
openFile: Select File openFile: Select File
@ -19,9 +19,9 @@ colorPurple: purple
colorTeal: teal colorTeal: teal
addToWallet: Add to Wallet addToWallet: Add to Wallet
dataPrivacyDescription: | dataPrivacyDescription: |
Your vaccination receipt is processed on your mobile phone only. No data is sent to the internet. Your vaccination receipt is processed on your mobile phone only.
iAcceptThe: I accept the iAcceptThe: I accept the
privacyPolicy: Privacy Policy privacyPolicy: Privacy Policy
createdOnDevice: Created on your device createdOnDevice: No personal data is sent to the Internet.
openSourceTransparent: 100% open source - You can validate all lines of code used. openSourceTransparent: 100% open source for full transparency.
#hostedInEU: Hosted in the EU #hostedInEU: Hosted in the EU

View File

@ -1,7 +1,7 @@
export class Constants { export class Constants {
public static NAME = 'CovidPass' public static NAME = 'Vaccination Receipt'
public static PASS_IDENTIFIER = 'pass.de.marvinsextro.covidpass' public static PASS_IDENTIFIER = 'pass.ca.vaccineontario.receipt'
public static TEAM_IDENTIFIER = 'X8Q7Q2RLTD' public static TEAM_IDENTIFIER = 'F6X27PB5BH'
public static img1xBlack: Buffer = Buffer.from('iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABU0lEQVR4AWIYaWAUiAExoB06gGggDOMwripJthAgGwBoCGYDBIDIgAFBwDAABoJjhBgEAEChBBBaAA0JyeKAqR0hmnWx3p5o8MHdvfd9Z7SHH8Dr723iCpdoYBOZtoJ9XOALYghxjj0sw1k7OEEAiekVxyjBShto4h6SUg8N5KGqhCHEshdsI3FdiCM3SNwnxA1uKxKXZm3QfJCPQ3RmYVAfW5j2YH+QfkweQ1uDviEmdNHBR8SYddxCDOC2ojeI4RlL+K2Kd8UYcFvRE8TQxyKmVdFLOAbcVnQNMeEUCzCKPQbcVnQEiRilGQNuK9qFRI1SjAG3Fa0iiDh8hgPcQWIKwG1dHsQyD+qKCCGWhCgiVZ7T7yhagw9JyQe37FTGCKI0QhlWq2GiGDNBDU6qYwyJaYw6nFbBABJhgAoyKYc2QoghRBs5ZF4BLTz+aaGAef+nHwt5/579e2c2AAAAAElFTkSuQmCC', 'base64'); public static img1xBlack: Buffer = Buffer.from('iVBORw0KGgoAAAANSUhEUgAAACQAAAAkCAYAAADhAJiYAAABU0lEQVR4AWIYaWAUiAExoB06gGggDOMwripJthAgGwBoCGYDBIDIgAFBwDAABoJjhBgEAEChBBBaAA0JyeKAqR0hmnWx3p5o8MHdvfd9Z7SHH8Dr723iCpdoYBOZtoJ9XOALYghxjj0sw1k7OEEAiekVxyjBShto4h6SUg8N5KGqhCHEshdsI3FdiCM3SNwnxA1uKxKXZm3QfJCPQ3RmYVAfW5j2YH+QfkweQ1uDviEmdNHBR8SYddxCDOC2ojeI4RlL+K2Kd8UYcFvRE8TQxyKmVdFLOAbcVnQNMeEUCzCKPQbcVnQEiRilGQNuK9qFRI1SjAG3Fa0iiDh8hgPcQWIKwG1dHsQyD+qKCCGWhCgiVZ7T7yhagw9JyQe37FTGCKI0QhlWq2GiGDNBDU6qYwyJaYw6nFbBABJhgAoyKYc2QoghRBs5ZF4BLTz+aaGAef+nHwt5/579e2c2AAAAAElFTkSuQmCC', 'base64');
public static img2xBlack: Buffer = Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAACZ0lEQVR4Ae3TA8xcURRF4dq2ozqqbRtxUjeq7Zi127C2bXvSsLZtu/PP6ardjs577765K/li7mQnizGbzWaz2Wx50BXjMRYdkR0JXRq0xVq8g/ziDZaiGVIiYSqLybgPCdMtjEZpP1+oP45CYnQYPZDd7xeKnPMX1L+QAoULmnUhX12wVrwupHjBKnC8tFgEMcRcpIFjrYQYZhkcqQXEUM2h3haIoTZDvRsQQ92AeiGIoUJQTwxnB7ID2YHsQHYgO5B7zmMlztiBfhbCCKQAJUuOYbADIYRe+FP7TB1IfxyiUaYOpD8O0TJzB9IfpyqCZg6kP05ZPIBESL0gJAIBVENONMRJF8cJQr1nkDBdRWb8WBYEHB8HeAb1bkPCNB5E/xlJfRzgNtQ7CQnTWNB/R9IfBzgJ9TZCwnQJGcMYSX8cYCPUmw6JwCqkwt9K5cg4wHSo1x0SoZX/GUJ/HKA71KsAURhJdxygAtRLg1cKI2mP8wpp4EibIQoj6YwDbIZj9YIojKQzDtALjlUESZAYrEN2fK2u4jhJKAJH2wmJ0UOsRQBJECU74XjtIYZoD8dLi1sQj7uFtHClIRCPGwLXyox7EI+6h8xwtR4Qj+oB10uFExCPOYFU8ERVEIR4RBBV4KlGQTxiFDxXWgQgLgsgLTxZQdyBuOQOCsLTVcELiMNeoAqMqBHeQhzyFo1gVC3wCqLsFVrAyGrgMUTJY9SA0RXDMYVxjqEYfFEGzITEyUxkgO9qhEuQKF1CI/i69BiCB5AwPcAQpEfClBUDcR7yF+cxEFmR0NXDVFz5YirqwWaz2Ww2W9R9AE/cBAw+cEeMAAAAAElFTkSuQmCC', 'base64') public static img2xBlack: Buffer = Buffer.from('iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAACZ0lEQVR4Ae3TA8xcURRF4dq2ozqqbRtxUjeq7Zi127C2bXvSsLZtu/PP6ardjs577765K/li7mQnizGbzWaz2Wx50BXjMRYdkR0JXRq0xVq8g/ziDZaiGVIiYSqLybgPCdMtjEZpP1+oP45CYnQYPZDd7xeKnPMX1L+QAoULmnUhX12wVrwupHjBKnC8tFgEMcRcpIFjrYQYZhkcqQXEUM2h3haIoTZDvRsQQ92AeiGIoUJQTwxnB7ID2YHsQHYgO5B7zmMlztiBfhbCCKQAJUuOYbADIYRe+FP7TB1IfxyiUaYOpD8O0TJzB9IfpyqCZg6kP05ZPIBESL0gJAIBVENONMRJF8cJQr1nkDBdRWb8WBYEHB8HeAb1bkPCNB5E/xlJfRzgNtQ7CQnTWNB/R9IfBzgJ9TZCwnQJGcMYSX8cYCPUmw6JwCqkwt9K5cg4wHSo1x0SoZX/GUJ/HKA71KsAURhJdxygAtRLg1cKI2mP8wpp4EibIQoj6YwDbIZj9YIojKQzDtALjlUESZAYrEN2fK2u4jhJKAJH2wmJ0UOsRQBJECU74XjtIYZoD8dLi1sQj7uFtHClIRCPGwLXyox7EI+6h8xwtR4Qj+oB10uFExCPOYFU8ERVEIR4RBBV4KlGQTxiFDxXWgQgLgsgLTxZQdyBuOQOCsLTVcELiMNeoAqMqBHeQhzyFo1gVC3wCqLsFVrAyGrgMUTJY9SA0RXDMYVxjqEYfFEGzITEyUxkgO9qhEuQKF1CI/i69BiCB5AwPcAQpEfClBUDcR7yF+cxEFmR0NXDVFz5YirqwWaz2Ww2W9R9AE/cBAw+cEeMAAAAAElFTkSuQmCC', 'base64')

View File

@ -9,16 +9,19 @@ const crypto = require('crypto')
enum QrFormat { enum QrFormat {
PKBarcodeFormatQR = 'PKBarcodeFormatQR', PKBarcodeFormatQR = 'PKBarcodeFormatQR',
PKBarcodeFormatPDF417 = 'PKBarcodeFormatPDF417'
} }
enum Encoding { enum Encoding {
utf8 = "utf-8", utf8 = "utf-8",
iso88591 = "iso-8859-1"
} }
interface QrCode { interface QrCode {
message: string; message: string;
format: QrFormat; format: QrFormat;
messageEncoding: Encoding; messageEncoding: Encoding;
// altText: string;
} }
interface SignData { interface SignData {
@ -52,8 +55,12 @@ export class PassData {
private static async signWithRemote(signData: SignData): Promise<ArrayBuffer> { private static async signWithRemote(signData: SignData): Promise<ArrayBuffer> {
// Load API_BASE_URL form nextjs backend // Load API_BASE_URL form nextjs backend
const configResponse = await fetch('/api/config') const configResponse = await fetch('/api/config')
const apiBaseUrl = (await configResponse.json()).apiBaseUrl const apiBaseUrl = (await configResponse.json()).apiBaseUrl
console.log(`${apiBaseUrl}/sign`);
console.log(JSON.stringify(signData));
const response = await fetch(`${apiBaseUrl}/sign`, { const response = await fetch(`${apiBaseUrl}/sign`, {
method: 'POST', method: 'POST',
@ -72,17 +79,20 @@ export class PassData {
} }
static async generatePass(payloadBody: PayloadBody): Promise<Buffer> { static async generatePass(payloadBody: PayloadBody): Promise<Buffer> {
// Get the Value Sets from GitHub
const valueSets: ValueSets = await ValueSets.loadValueSets();
// Create Payload // Create Payload
const payload: Payload = new Payload(payloadBody, valueSets);
const payload: Payload = new Payload(payloadBody);
payload.serialNumber = uuid4();
// Create QR Code Object // Create QR Code Object
const qrCode: QrCode = { const qrCode: QrCode = {
message: payload.rawData, message: `https://verifier.vaccine-ontario.ca/?serialNumber=${payload.serialNumber}`,
format: QrFormat.PKBarcodeFormatQR, format: QrFormat.PKBarcodeFormatQR,
messageEncoding: Encoding.utf8, messageEncoding: Encoding.iso88591,
// altText : payload.rawData
} }
// Create pass data // Create pass data
@ -93,6 +103,8 @@ export class PassData {
// Adding required fields // Adding required fields
console.log(pass);
// Create pass.json // Create pass.json
const passJson = JSON.stringify(pass); const passJson = JSON.stringify(pass);
@ -117,6 +129,8 @@ export class PassData {
), ),
); );
console.log(manifestJson);
// Add Manifest JSON to zip // Add Manifest JSON to zip
zip.push({path: 'manifest.json', data: Buffer.from(manifestJson)}); zip.push({path: 'manifest.json', data: Buffer.from(manifestJson)});
@ -126,7 +140,7 @@ export class PassData {
// Sign hash with server // Sign hash with server
const manifestSignature = await PassData.signWithRemote({ const manifestSignature = await PassData.signWithRemote({
PassJsonHash: passHash, PassJsonHash: passHash,
useBlackVersion: !payload.dark, useBlackVersion: true,
}); });
// Add signature to zip // Add signature to zip
@ -139,7 +153,7 @@ export class PassData {
this.labelColor = payload.labelColor; this.labelColor = payload.labelColor;
this.foregroundColor = payload.foregroundColor; this.foregroundColor = payload.foregroundColor;
this.backgroundColor = payload.backgroundColor; this.backgroundColor = payload.backgroundColor;
this.serialNumber = uuid4(); // Generate random UUID v4 this.serialNumber = payload.serialNumber; // Generate random UUID v4
this.barcodes = [qrCode]; this.barcodes = [qrCode];
this.barcode = qrCode; this.barcode = qrCode;
this.generic = payload.generic; this.generic = payload.generic;

View File

@ -1,15 +1,13 @@
import {ValueSets} from "./value_sets";
import {Constants} from "./constants"; import {Constants} from "./constants";
import {COLORS} from "./colors"; import {COLORS} from "./colors";
enum CertificateType { export class Receipt {
Vaccination = 'Vaccination Card', constructor(public name: string, public vaccinationDate: string, public vaccineName: string, public dateOfBirth: string, public numDoses: number, public organization: string) {};
Test = 'Test Certificate',
Recovery = 'Recovery Certificate',
} }
enum TextAlignment { enum TextAlignment {
right = 'PKTextAlignmentRight', right = 'PKTextAlignmentRight',
center = 'PKTextAlignmentCenter'
} }
interface Field { interface Field {
@ -28,317 +26,102 @@ export interface PassDictionary {
} }
export interface PayloadBody { export interface PayloadBody {
color: COLORS; // color: COLORS;
rawData: string; rawData: string;
decodedData: Uint8Array; receipt: Receipt;
} }
export class Payload { export class Payload {
certificateType: CertificateType;
receipt: Receipt;
rawData: string; rawData: string;
backgroundColor: string; backgroundColor: string;
labelColor: string; labelColor: string;
foregroundColor: string; foregroundColor: string;
img1x: Buffer; img1x: Buffer;
img2x: Buffer; img2x: Buffer;
dark: boolean; serialNumber: string;
generic: PassDictionary; generic: PassDictionary;
constructor(body: PayloadBody, valueSets: ValueSets) { constructor(body: PayloadBody) {
const dark = body.color != COLORS.WHITE;
const healthCertificate = body.decodedData['-260'];
const covidCertificate = healthCertificate['1']; // Version number subject to change
if (covidCertificate == undefined) {
throw new Error('certificateData');
}
// Get name and date of birth information // Get name and date of birth information
const nameInformation = covidCertificate['nam']; const name = body.receipt.name;
const dateOfBirth = covidCertificate['dob']; const dateOfBirth = body.receipt.dateOfBirth;
const vaccineName = body.receipt.vaccineName;
if (nameInformation == undefined) { const vaccineNameProper = vaccineName.charAt(0) + vaccineName.substr(1).toLowerCase();
const doseVaccine = "Dose " + String(body.receipt.numDoses) + ": " + vaccineNameProper;
if (name == undefined) {
throw new Error('nameMissing'); throw new Error('nameMissing');
} }
if (dateOfBirth == undefined) { if (dateOfBirth == undefined) {
throw new Error('dobMissing'); throw new Error('dobMissing');
} }
const firstName = nameInformation['gn'];
const lastName = nameInformation['fn'];
const transliteratedFirstName = nameInformation['gnt'].replaceAll('<', ' ');
const transliteratedLastName = nameInformation['fnt'].replaceAll('<', ' ');
// Check if name contains non-latin characters
const nameRegex = new RegExp('^[\\p{Script=Latin}\\p{P}\\p{M}\\p{Z}]+$', 'u');
let name: string;
if (nameRegex.test(firstName) && nameRegex.test(lastName)) {
name = `${firstName} ${lastName}`;
} else {
name = `${transliteratedFirstName} ${transliteratedLastName}`;
}
let properties: object;
// Set certificate type and properties
if (covidCertificate['v'] !== undefined) {
this.certificateType = CertificateType.Vaccination;
properties = covidCertificate['v'][0];
}
if (covidCertificate['t'] !== undefined) {
this.certificateType = CertificateType.Test;
properties = covidCertificate['t'][0];
}
if (covidCertificate['r'] !== undefined) {
this.certificateType = CertificateType.Recovery;
properties = covidCertificate['r'][0];
}
if (this.certificateType == undefined) {
throw new Error('certificateType')
}
// Get country, identifier and issuer
const countryCode = properties['co'];
const uvci = properties['ci'];
const certificateIssuer = properties['is'];
if (!(countryCode in valueSets.countryCodes)) {
throw new Error('invalidCountryCode');
}
const country = valueSets.countryCodes[countryCode].display;
const generic: PassDictionary = { const generic: PassDictionary = {
headerFields: [ headerFields: [
{
key: "type",
label: "EU Digital COVID",
value: this.certificateType
}
], ],
primaryFields: [ primaryFields: [
{
key: "vaccine",
label: "Vaccine",
value: doseVaccine,
}
],
secondaryFields: [
{
key: "issuer",
label: "Authorized Organization",
value: body.receipt.organization
},
{
key: "dov",
label: "Date",
value: body.receipt.vaccinationDate,
// textAlignment: TextAlignment.right
}
],
auxiliaryFields: [
],
backFields: [
{ {
key: "name", key: "name",
label: "Name", label: "Name",
value: name value: name
}
],
secondaryFields: [],
auxiliaryFields: [],
backFields: [
{
key: "uvci",
label: "Unique Certificate Identifier (UVCI)",
value: uvci
}, },
{ {
key: "issuer", key: "dob",
label: "Certificate Issuer", label: "Date of Birth",
value: certificateIssuer value: body.receipt.dateOfBirth,
textAlignment: TextAlignment.right
} }
] ]
} }
// Set Values // Set Values
this.receipt = body.receipt;
this.rawData = body.rawData; this.rawData = body.rawData;
this.backgroundColor = dark ? body.color : COLORS.WHITE if (body.receipt.numDoses > 1) {
this.labelColor = dark ? COLORS.WHITE : COLORS.GREY this.backgroundColor = COLORS.GREEN;
this.foregroundColor = dark ? COLORS.WHITE : COLORS.BLACK } else {
this.img1x = dark ? Constants.img1xWhite : Constants.img1xBlack this.backgroundColor = COLORS.YELLOW;
this.img2x = dark ? Constants.img2xWhite : Constants.img2xBlack
this.dark = dark;
this.generic = Payload.fillPassData(this.certificateType, generic, properties, valueSets, country, dateOfBirth);
} }
static fillPassData(type: CertificateType, data: PassDictionary, properties: Object, valueSets: ValueSets, country: string, dateOfBirth: string): PassDictionary { this.labelColor = COLORS.WHITE
switch (type) { this.foregroundColor = COLORS.BLACK
case CertificateType.Vaccination: this.img1x = Constants.img1xBlack
const dose = `${properties['dn']}/${properties['sd']}`; this.img2x = Constants.img2xBlack
const dateOfVaccination = properties['dt']; this.generic = generic;
const medialProductKey = properties['mp'];
const manufacturerKey = properties['ma'];
if (!(medialProductKey in valueSets.medicalProducts)) {
throw new Error('invalidMedicalProduct');
}
if (!(manufacturerKey in valueSets.manufacturers)) {
throw new Error('invalidManufacturer')
} }
const vaccineName = valueSets.medicalProducts[medialProductKey].display.replace(/\s*\([^)]*\)\s*/g, "");
const manufacturer = valueSets.manufacturers[manufacturerKey].display;
data.secondaryFields.push(...[
{
key: "dose",
label: "Dose",
value: dose
},
{
key: "dov",
label: "Date of Vaccination",
value: dateOfVaccination,
textAlignment: TextAlignment.right
}
]);
data.auxiliaryFields.push(...[
{
key: "vaccine",
label: "Vaccine",
value: vaccineName
},
{
key: "dob",
label: "Date of Birth",
value: dateOfBirth,
textAlignment: TextAlignment.right
}
]);
data.backFields.push(...[
{
key: "cov",
label: "Country of Vaccination",
value: country
},
{
key: "manufacturer",
label: "Manufacturer",
value: manufacturer
},
{
key: "disclaimer",
label: "Disclaimer",
value: "This certificate is not a travel document. It is only valid in combination with the ID card of the certificate holder and may expire one year + 14 days after the last dose. The validity of this certificate was not checked by CovidPass."
}
]);
break;
case CertificateType.Test:
const testTypeKey = properties['tt'];
const testDateTimeString = properties['sc'];
const testResultKey = properties['tr'];
const testingCentre = properties['tc'];
if (!(testResultKey in valueSets.testResults)) {
throw new Error('invalidTestResult');
}
if (!(testTypeKey in valueSets.testTypes)) {
throw new Error('invalidTestType')
}
const testResult = valueSets.testResults[testResultKey].display;
const testType = valueSets.testTypes[testTypeKey].display;
const testTime = testDateTimeString.replace(/.*T/, '').replace('Z', ' ') + 'UTC';
const testDate = testDateTimeString.replace(/T.*/, '');
data.secondaryFields.push(...[
{
key: "result",
label: "Test Result",
value: testResult
},
{
key: "dot",
label: "Date of Test",
value: testDate,
textAlignment: TextAlignment.right
}
]);
data.auxiliaryFields.push(...[
{
key: "time",
label: "Time of Test",
value: testTime
},
{
key: "dob",
label: "Date of Birth",
value: dateOfBirth,
textAlignment: TextAlignment.right
},
]);
data.backFields.push({
key: "cot",
label: "Country of Test",
value: country
});
if (testingCentre !== undefined)
data.backFields.push({
key: "centre",
label: "Testing Centre",
value: testingCentre
});
data.backFields.push(...[
{
key: "test",
label: "Test Type",
value: testType
},
{
key: "disclaimer",
label: "Disclaimer",
value: "This certificate is not a travel document. It is only valid in combination with the ID card of the certificate holder and may expire 24h after the test. The validity of this certificate was not checked by CovidPass."
}
]);
break;
case CertificateType.Recovery:
const firstPositiveTestDate = properties['fr'];
const validFrom = properties['df'];
const validUntil = properties['du'];
data.secondaryFields.push(...[
{
key: "until",
label: "Valid Until",
value: validUntil,
},
{
key: "dot",
label: "Date of positive Test",
value: firstPositiveTestDate,
textAlignment: TextAlignment.right
}
]);
data.auxiliaryFields.push(...[
{
key: "from",
label: "Valid From",
value: validFrom,
},
{
key: "dob",
label: "Date of Birth",
value: dateOfBirth,
textAlignment: TextAlignment.right
}
]);
data.backFields.push(...[
{
key: "cot",
label: "Country of Test",
value: country
},
{
key: "disclaimer",
label: "Disclaimer",
value: "This certificate is not a travel document. It is only valid in combination with the ID card of the certificate holder. The validity of this certificate was not checked by CovidPass."
}
]);
break;
default:
throw new Error('certificateType');
}
return data;
}
} }

View File

@ -1,139 +1,36 @@
import {PayloadBody} from "./payload"; import {PayloadBody, Receipt} from "./payload";
import {PNG} from 'pngjs'
import * as PdfJS from 'pdfjs-dist' import * as PdfJS from 'pdfjs-dist'
import jsQR, {QRCode} from "jsqr";
import {decodeData} from "./decode";
import {Result} from "@zxing/library";
import {COLORS} from "./colors"; import {COLORS} from "./colors";
import { getCertificatesInfoFromPDF } from "@ninja-labs/verify-pdf"; // ES6 import { getCertificatesInfoFromPDF } from "@ninja-labs/verify-pdf"; // ES6
import verifyPDF from "@ninja-labs/verify-pdf"; // import verifyPDF from "@ninja-labs/verify-pdf";
// import {PNG} from 'pngjs'
// import {decodeData} from "./decode";
// import {Result} from "@zxing/library";
PdfJS.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${PdfJS.version}/pdf.worker.js` PdfJS.GlobalWorkerOptions.workerSrc = `https://cdnjs.cloudflare.com/ajax/libs/pdf.js/${PdfJS.version}/pdf.worker.js`
class Receipt {
constructor(public name: string, public vaccinationDate: string, public vaccineName: string, public dateOfBirth: string, public numDoses: number) {};
}
export async function getPayloadBodyFromFile(file: File, color: COLORS): Promise<PayloadBody> { export async function getPayloadBodyFromFile(file: File, color: COLORS): Promise<PayloadBody> {
// Read file // Read file
const fileBuffer = await file.arrayBuffer(); const fileBuffer = await file.arrayBuffer();
let imageData: ImageData; let receipt: Receipt;
switch (file.type) { switch (file.type) {
case 'application/pdf': case 'application/pdf':
console.log('pdf') receipt = await loadPDF(fileBuffer)
await loadPDF(fileBuffer)
break break
// case 'image/png':
// console.log('png')
// imageData = await getImageDataFromPng(fileBuffer)
// break
default: default:
throw Error('invalidFileType') throw Error('invalidFileType')
} }
let code: QRCode; const rawData = ''; // unused at the moment, the original use was to store the QR code from issuer
try {
code = jsQR(imageData.data, imageData.width, imageData.height, {
inversionAttempts: "dontInvert",
});
} catch (e) {
throw Error('couldNotDecode');
}
if (code == undefined) {
throw Error('couldNotFindQrCode')
}
// Get raw data
let rawData = code.data;
// Decode Data
let decodedData;
try {
decodedData = decodeData(rawData);
} catch (e) {
throw Error('invalidQrCode')
}
return { return {
rawData: rawData, receipt: receipt,
decodedData: decodedData, rawData: rawData
color: color,
} }
} }
export async function getPayloadBodyFromQR(qrCodeResult: Result, color: COLORS): Promise<PayloadBody> {
// Get raw data
let rawData = qrCodeResult.getText();
// Decode Data
let decodedData;
try {
decodedData = decodeData(rawData);
} catch (e) {
throw Error("invalidQrCode")
}
return {
rawData: rawData,
decodedData: decodedData,
color: color,
}
}
async function getImageDataFromPng(fileBuffer: ArrayBuffer): Promise<ImageData> {
return new Promise(async (resolve, reject) => {
let png = new PNG({filterType: 4})
png.parse(fileBuffer, (error, data) => {
if (error) {
reject();
}
resolve(data);
})
})
}
async function getImageDataFromPdf(fileBuffer: ArrayBuffer): Promise<ImageData> {
const typedArray = new Uint8Array(fileBuffer);
const pdfScale = 2;
const canvas = <HTMLCanvasElement>document.getElementById('canvas');
const canvasContext = canvas.getContext('2d');
let loadingTask = PdfJS.getDocument(typedArray);
await loadingTask.promise.then(async function (pdfDocument) {
// Load last PDF page
const pageNumber = pdfDocument.numPages;
const pdfPage = await pdfDocument.getPage(pageNumber)
const viewport = pdfPage.getViewport({scale: pdfScale})
// Set correct canvas width / height
canvas.width = viewport.width
canvas.height = viewport.height
// render PDF
const renderTask = pdfPage.render({
canvasContext: canvasContext,
viewport,
})
return await renderTask.promise
});
// Return PDF Image Data
return canvasContext.getImageData(0, 0, canvas.width, canvas.height)
}
async function loadPDF(signedPdfBuffer): Promise<any> { async function loadPDF(signedPdfBuffer): Promise<any> {
try { try {
@ -152,9 +49,10 @@ async function loadPDF(signedPdfBuffer): Promise<any> {
const issuedByEntrust = (result.issuedBy.organizationName == 'Entrust, Inc.'); const issuedByEntrust = (result.issuedBy.organizationName == 'Entrust, Inc.');
const issuedToOntarioHealth = (result.issuedTo.commonName == 'covid19signer.ontariohealth.ca'); const issuedToOntarioHealth = (result.issuedTo.commonName == 'covid19signer.ontariohealth.ca');
if (isClientCertificate && issuedByEntrust && issuedToOntarioHealth) { if (isClientCertificate && issuedByEntrust && issuedToOntarioHealth) {
console.log('valid, getting payload'); console.log('PDF looks good, getting payload');
const receipt = await getPdfDetails(signedPdfBuffer); const receipt = await getPdfDetails(signedPdfBuffer);
console.log(JSON.stringify(receipt, null, 2)); console.log(JSON.stringify(receipt, null, 2));
return Promise.resolve(receipt);
} else { } else {
console.error('invalid certificate'); console.error('invalid certificate');
@ -182,23 +80,29 @@ async function getPdfDetails(fileBuffer: ArrayBuffer): Promise<Receipt> {
const pdfPage = await pdfDocument.getPage(pageNumber); const pdfPage = await pdfDocument.getPage(pageNumber);
const content = await pdfPage.getTextContent(); const content = await pdfPage.getTextContent();
const numItems = content.items.length; const numItems = content.items.length;
let name, vaccinationDate, vaccineName, dateOfBirth, numDoses; let name, vaccinationDate, vaccineName, dateOfBirth, numDoses, organization;
for (let i = 0; i < numItems; i++) { for (let i = 0; i < numItems; i++) {
const item = content.items[i]; const item = content.items[i];
const value = item.str; const value = item.str;
if (value.includes('Name / Nom')) if (value.includes('Name / Nom'))
name = content.items[i+1].str; name = content.items[i+1].str;
if (value.includes('Date:')) if (value.includes('Date:')) {
vaccinationDate = content.items[i+1].str; vaccinationDate = content.items[i+1].str;
if (value.includes('Product name')) vaccinationDate = vaccinationDate.split(',')[0];
}
if (value.includes('Product name')) {
vaccineName = content.items[i+1].str; vaccineName = content.items[i+1].str;
vaccineName = vaccineName.split(' ')[0];
}
if (value.includes('Date of birth')) if (value.includes('Date of birth'))
dateOfBirth = content.items[i+1].str; dateOfBirth = content.items[i+1].str;
if (value.includes('Authorized organization'))
organization = content.items[i+1].str;
if (value.includes('You have received')) if (value.includes('You have received'))
numDoses = Number(value.split(' ')[3]); numDoses = Number(value.split(' ')[3]);
} }
const receipt = new Receipt(name, vaccinationDate, vaccineName, dateOfBirth, numDoses); const receipt = new Receipt(name, vaccinationDate, vaccineName, dateOfBirth, numDoses, organization);
return Promise.resolve(receipt); return Promise.resolve(receipt);

256
yarn.lock
View File

@ -416,12 +416,17 @@
"resolved" "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz" "resolved" "https://registry.npmjs.org/anser/-/anser-1.4.9.tgz"
"version" "1.4.9" "version" "1.4.9"
"ansi-regex@^4.1.0":
"integrity" "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
"resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz"
"version" "4.1.0"
"ansi-regex@^5.0.0": "ansi-regex@^5.0.0":
"integrity" "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==" "integrity" "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg=="
"resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz" "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz"
"version" "5.0.0" "version" "5.0.0"
"ansi-styles@^3.2.1": "ansi-styles@^3.2.0", "ansi-styles@^3.2.1":
"integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA=="
"resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
"version" "3.2.1" "version" "3.2.1"
@ -481,11 +486,6 @@
"resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz" "resolved" "https://registry.npmjs.org/ast-types/-/ast-types-0.13.2.tgz"
"version" "0.13.2" "version" "0.13.2"
"async@^3.2.0":
"integrity" "sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw=="
"resolved" "https://artifact.devsnc.com/content/groups/npm-all/async/-/async-3.2.0.tgz"
"version" "3.2.0"
"autoprefixer@^10.0.2", "autoprefixer@^10.0.4": "autoprefixer@^10.0.2", "autoprefixer@^10.0.4":
"integrity" "sha512-8lChSmdU6dCNMCQopIf4Pe5kipkAGj/fvTMslCsih0uHpOrXOPUEVOmYMMqmw3cekQkSD7EhIeuYl5y0BLdKqg==" "integrity" "sha512-8lChSmdU6dCNMCQopIf4Pe5kipkAGj/fvTMslCsih0uHpOrXOPUEVOmYMMqmw3cekQkSD7EhIeuYl5y0BLdKqg=="
"resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.6.tgz" "resolved" "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.2.6.tgz"
@ -645,7 +645,25 @@
"escalade" "^3.1.1" "escalade" "^3.1.1"
"node-releases" "^1.1.71" "node-releases" "^1.1.71"
"buffer-from@^1.0.0": "buffer-alloc-unsafe@^1.1.0":
"integrity" "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
"resolved" "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz"
"version" "1.1.0"
"buffer-alloc@^1.2.0":
"integrity" "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow=="
"resolved" "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz"
"version" "1.2.0"
dependencies:
"buffer-alloc-unsafe" "^1.1.0"
"buffer-fill" "^1.0.0"
"buffer-fill@^1.0.0":
"integrity" "sha1-+PeLdniYiO858gXNY39o5wISKyw="
"resolved" "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz"
"version" "1.0.0"
"buffer-from@^1.0.0", "buffer-from@^1.1.1":
"integrity" "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" "integrity" "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
"resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz" "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz"
"version" "1.1.1" "version" "1.1.1"
@ -664,7 +682,7 @@
"ieee754" "^1.1.4" "ieee754" "^1.1.4"
"isarray" "^1.0.0" "isarray" "^1.0.0"
"buffer@5.6.0": "buffer@^5.4.3", "buffer@5.6.0":
"integrity" "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==" "integrity" "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw=="
"resolved" "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz" "resolved" "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz"
"version" "5.6.0" "version" "5.6.0"
@ -700,6 +718,11 @@
"resolved" "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz" "resolved" "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz"
"version" "2.0.1" "version" "2.0.1"
"camelcase@^5.0.0":
"integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
"resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
"version" "5.3.1"
"caniuse-lite@^1.0.30001202", "caniuse-lite@^1.0.30001219", "caniuse-lite@^1.0.30001228", "caniuse-lite@^1.0.30001230": "caniuse-lite@^1.0.30001202", "caniuse-lite@^1.0.30001219", "caniuse-lite@^1.0.30001228", "caniuse-lite@^1.0.30001230":
"integrity" "sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ==" "integrity" "sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ=="
"resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz" "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz"
@ -783,6 +806,15 @@
"resolved" "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz" "resolved" "https://registry.npmjs.org/classnames/-/classnames-2.2.6.tgz"
"version" "2.2.6" "version" "2.2.6"
"cliui@^5.0.0":
"integrity" "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA=="
"resolved" "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz"
"version" "5.0.0"
dependencies:
"string-width" "^3.1.0"
"strip-ansi" "^5.2.0"
"wrap-ansi" "^5.1.0"
"color-convert@^1.9.0", "color-convert@^1.9.1": "color-convert@^1.9.0", "color-convert@^1.9.1":
"integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg=="
"resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
@ -980,6 +1012,11 @@
dependencies: dependencies:
"ms" "2.0.0" "ms" "2.0.0"
"decamelize@^1.2.0":
"integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
"resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
"version" "1.2.0"
"define-properties@^1.1.3": "define-properties@^1.1.3":
"integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==" "integrity" "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ=="
"resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz" "resolved" "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz"
@ -1028,6 +1065,11 @@
"miller-rabin" "^4.0.0" "miller-rabin" "^4.0.0"
"randombytes" "^2.0.0" "randombytes" "^2.0.0"
"dijkstrajs@^1.0.1":
"integrity" "sha512-QV6PMaHTCNmKSeP6QoXhVTw9snc9VD8MulTT0Bd99Pacp4SS1cjcrYPgBPmibqKVtMJJfqC6XvOXgPMEEPH/fg=="
"resolved" "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.2.tgz"
"version" "1.0.2"
"dlv@^1.1.3": "dlv@^1.1.3":
"integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" "integrity" "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA=="
"resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz" "resolved" "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz"
@ -1066,6 +1108,11 @@
"minimalistic-assert" "^1.0.1" "minimalistic-assert" "^1.0.1"
"minimalistic-crypto-utils" "^1.0.1" "minimalistic-crypto-utils" "^1.0.1"
"emoji-regex@^7.0.1":
"integrity" "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
"resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz"
"version" "7.0.3"
"emojis-list@^2.0.0": "emojis-list@^2.0.0":
"integrity" "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=" "integrity" "sha1-TapNnbAPmBmIDHn6RXrlsJof04k="
"resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz" "resolved" "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz"
@ -1246,6 +1293,13 @@
"make-dir" "^3.0.2" "make-dir" "^3.0.2"
"pkg-dir" "^4.1.0" "pkg-dir" "^4.1.0"
"find-up@^3.0.0":
"integrity" "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg=="
"resolved" "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz"
"version" "3.0.0"
dependencies:
"locate-path" "^3.0.0"
"find-up@^4.0.0": "find-up@^4.0.0":
"integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw=="
"resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
@ -1288,6 +1342,11 @@
"resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
"version" "1.1.1" "version" "1.1.1"
"get-caller-file@^2.0.1":
"integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
"resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
"version" "2.0.5"
"get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1": "get-intrinsic@^1.0.2", "get-intrinsic@^1.1.1":
"integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==" "integrity" "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q=="
"resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz" "resolved" "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz"
@ -1588,6 +1647,11 @@
"resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
"version" "2.1.1" "version" "2.1.1"
"is-fullwidth-code-point@^2.0.0":
"integrity" "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
"resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz"
"version" "2.0.0"
"is-generator-function@^1.0.7": "is-generator-function@^1.0.7":
"integrity" "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A==" "integrity" "sha512-ZJ34p1uvIfptHCN7sFTjGibB9/oBg17sHqzDLfuwhvmN/qLVvIQXRQ8licZQ35WJ8KuEQt/etnnzQFI9C9Ue/A=="
"resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz" "resolved" "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.9.tgz"
@ -1659,6 +1723,11 @@
"resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
"version" "1.0.0" "version" "1.0.0"
"isarray@^2.0.1":
"integrity" "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
"resolved" "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz"
"version" "2.0.5"
"jest-worker@^27.0.2": "jest-worker@^27.0.2":
"integrity" "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA==" "integrity" "sha512-qupxcj/dRuA3xHPMUd40gr2EaAurFbkwzOh7wfPaeE9id7hyjURRQoqNfHifHK3XjJU6YJJUQKILGUnwGPEOCA=="
"resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz" "resolved" "https://registry.npmjs.org/jest-worker/-/jest-worker-27.0.6.tgz"
@ -1763,6 +1832,14 @@
"emojis-list" "^2.0.0" "emojis-list" "^2.0.0"
"json5" "^1.0.1" "json5" "^1.0.1"
"locate-path@^3.0.0":
"integrity" "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A=="
"resolved" "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz"
"version" "3.0.0"
dependencies:
"p-locate" "^3.0.0"
"path-exists" "^3.0.0"
"locate-path@^5.0.0": "locate-path@^5.0.0":
"integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g=="
"resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
@ -1790,11 +1867,6 @@
"resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
"version" "4.17.21" "version" "4.17.21"
"lodash@^4.17.20":
"integrity" "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
"resolved" "https://artifact.devsnc.com/content/groups/npm-all/lodash/-/lodash-4.17.15.tgz"
"version" "4.17.15"
"loose-envify@^1.1.0", "loose-envify@^1.4.0": "loose-envify@^1.1.0", "loose-envify@^1.4.0":
"integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q=="
"resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@ -1878,11 +1950,6 @@
"resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz" "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
"version" "1.2.5" "version" "1.2.5"
"minimist@~0.0.1":
"integrity" "sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8="
"resolved" "https://artifact.devsnc.com/content/groups/npm-all/minimist/-/minimist-0.0.10.tgz"
"version" "0.0.10"
"modern-normalize@^1.1.0": "modern-normalize@^1.1.0":
"integrity" "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA==" "integrity" "sha512-2lMlY1Yc1+CUy0gw4H95uNN7vjbpoED7NNRSBHE25nWfLBdmMzFCsPshlzbxHz+gYMcBEUN8V4pU16prcdPSgA=="
"resolved" "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz" "resolved" "https://registry.npmjs.org/modern-normalize/-/modern-normalize-1.1.0.tgz"
@ -2098,19 +2165,18 @@
dependencies: dependencies:
"wrappy" "1" "wrappy" "1"
"optimist@^0.6.1":
"integrity" "sha1-2j6nRob6IaGaERwybpDrFaAZZoY="
"resolved" "https://artifact.devsnc.com/content/groups/npm-all/optimist/-/optimist-0.6.1.tgz"
"version" "0.6.1"
dependencies:
"minimist" "~0.0.1"
"wordwrap" "~0.0.2"
"os-browserify@^0.3.0", "os-browserify@0.3.0": "os-browserify@^0.3.0", "os-browserify@0.3.0":
"integrity" "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=" "integrity" "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc="
"resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz" "resolved" "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz"
"version" "0.3.0" "version" "0.3.0"
"p-limit@^2.0.0":
"integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="
"resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
"version" "2.3.0"
dependencies:
"p-try" "^2.0.0"
"p-limit@^2.2.0": "p-limit@^2.2.0":
"integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w=="
"resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
@ -2125,6 +2191,13 @@
dependencies: dependencies:
"yocto-queue" "^0.1.0" "yocto-queue" "^0.1.0"
"p-locate@^3.0.0":
"integrity" "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ=="
"resolved" "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz"
"version" "3.0.0"
dependencies:
"p-limit" "^2.0.0"
"p-locate@^4.1.0": "p-locate@^4.1.0":
"integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="
"resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
@ -2180,6 +2253,11 @@
"resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz" "resolved" "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz"
"version" "1.0.1" "version" "1.0.1"
"path-exists@^3.0.0":
"integrity" "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
"resolved" "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
"version" "3.0.0"
"path-exists@^4.0.0": "path-exists@^4.0.0":
"integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w=="
"resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
@ -2211,16 +2289,6 @@
"safe-buffer" "^5.0.1" "safe-buffer" "^5.0.1"
"sha.js" "^2.4.8" "sha.js" "^2.4.8"
"pdf2json@^1.2.1":
"integrity" "sha512-Ihda4iOiiINYRwvdpHFHBFrRc/vT+w10Kc3o2meOB0HSPDEVMrb+X+V5oUOawipqNT/aI3dazSicwNyJzDLPaQ=="
"resolved" "https://registry.npmjs.org/pdf2json/-/pdf2json-1.2.1.tgz"
"version" "1.2.1"
dependencies:
"async" "^3.2.0"
"lodash" "^4.17.20"
"optimist" "^0.6.1"
"xmldom" "^0.5.0"
"pdfjs-dist@^2.5.207": "pdfjs-dist@^2.5.207":
"integrity" "sha512-P2nYtkacdlZaNNwrBLw1ZyMm0oE2yY/5S/GDCAmMJ7U4+ciL/D0mrlEC/o4HZZc/LNE3w8lEVzBEyVgEQlPVKQ==" "integrity" "sha512-P2nYtkacdlZaNNwrBLw1ZyMm0oE2yY/5S/GDCAmMJ7U4+ciL/D0mrlEC/o4HZZc/LNE3w8lEVzBEyVgEQlPVKQ=="
"resolved" "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz" "resolved" "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.9.359.tgz"
@ -2243,6 +2311,11 @@
"resolved" "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz" "resolved" "https://registry.npmjs.org/platform/-/platform-1.3.6.tgz"
"version" "1.3.6" "version" "1.3.6"
"pngjs@^3.3.0":
"integrity" "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
"resolved" "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz"
"version" "3.4.0"
"pngjs@^6.0.0": "pngjs@^6.0.0":
"integrity" "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg==" "integrity" "sha512-TRzzuFRRmEoSW/p1KVAmiOgPco2Irlah+bGFCeNfJXxxYGwSw7YwAOAcd7X28K/m5bjBWKsC29KyoMfHbypayg=="
"resolved" "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz" "resolved" "https://registry.npmjs.org/pngjs/-/pngjs-6.0.0.tgz"
@ -2376,6 +2449,19 @@
"postcss" "^8.2.1" "postcss" "^8.2.1"
"postcss-selector-parser" "^6.0.2" "postcss-selector-parser" "^6.0.2"
"qrcode@^1.4.4":
"integrity" "sha512-oLzEC5+NKFou9P0bMj5+v6Z40evexeE29Z9cummZXZ9QXyMr3lphkURzxjXgPJC5azpxcshoDWV1xE46z+/c3Q=="
"resolved" "https://registry.npmjs.org/qrcode/-/qrcode-1.4.4.tgz"
"version" "1.4.4"
dependencies:
"buffer" "^5.4.3"
"buffer-alloc" "^1.2.0"
"buffer-from" "^1.1.1"
"dijkstrajs" "^1.0.1"
"isarray" "^2.0.1"
"pngjs" "^3.3.0"
"yargs" "^13.2.4"
"querystring-es3@^0.2.0", "querystring-es3@0.2.1": "querystring-es3@^0.2.0", "querystring-es3@0.2.1":
"integrity" "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" "integrity" "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM="
"resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz" "resolved" "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz"
@ -2527,6 +2613,16 @@
"resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz" "resolved" "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz"
"version" "0.13.7" "version" "0.13.7"
"require-directory@^2.1.1":
"integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
"resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
"version" "2.1.1"
"require-main-filename@^2.0.0":
"integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
"resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz"
"version" "2.0.0"
"resolve-from@^4.0.0": "resolve-from@^4.0.0":
"integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
"resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
@ -2616,6 +2712,11 @@
dependencies: dependencies:
"randombytes" "^2.1.0" "randombytes" "^2.1.0"
"set-blocking@^2.0.0":
"integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
"resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
"version" "2.0.0"
"setimmediate@^1.0.4": "setimmediate@^1.0.4":
"integrity" "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=" "integrity" "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
"resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz" "resolved" "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
@ -2766,6 +2867,15 @@
"resolved" "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz" "resolved" "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz"
"version" "1.1.3" "version" "1.1.3"
"string-width@^3.0.0", "string-width@^3.1.0":
"integrity" "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w=="
"resolved" "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz"
"version" "3.1.0"
dependencies:
"emoji-regex" "^7.0.1"
"is-fullwidth-code-point" "^2.0.0"
"strip-ansi" "^5.1.0"
"string.prototype.trimend@^1.0.4": "string.prototype.trimend@^1.0.4":
"integrity" "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==" "integrity" "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A=="
"resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz" "resolved" "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz"
@ -2782,6 +2892,27 @@
"call-bind" "^1.0.2" "call-bind" "^1.0.2"
"define-properties" "^1.1.3" "define-properties" "^1.1.3"
"strip-ansi@^5.0.0":
"integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="
"resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
"version" "5.2.0"
dependencies:
"ansi-regex" "^4.1.0"
"strip-ansi@^5.1.0":
"integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="
"resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
"version" "5.2.0"
dependencies:
"ansi-regex" "^4.1.0"
"strip-ansi@^5.2.0":
"integrity" "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA=="
"resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz"
"version" "5.2.0"
dependencies:
"ansi-regex" "^4.1.0"
"strip-ansi@6.0.0": "strip-ansi@6.0.0":
"integrity" "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==" "integrity" "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w=="
"resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz" "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz"
@ -3141,6 +3272,11 @@
"is-string" "^1.0.5" "is-string" "^1.0.5"
"is-symbol" "^1.0.3" "is-symbol" "^1.0.3"
"which-module@^2.0.0":
"integrity" "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
"resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz"
"version" "2.0.0"
"which-typed-array@^1.1.2": "which-typed-array@^1.1.2":
"integrity" "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA==" "integrity" "sha512-49E0SpUe90cjpoc7BOJwyPHRqSAd12c10Qm2amdEZrJPCY2NDxaW01zHITrem+rnETY3dwrbH3UUrUwagfCYDA=="
"resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz" "resolved" "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.4.tgz"
@ -3154,11 +3290,6 @@
"has-symbols" "^1.0.1" "has-symbols" "^1.0.1"
"is-typed-array" "^1.1.3" "is-typed-array" "^1.1.3"
"wordwrap@~0.0.2":
"integrity" "sha1-o9XabNXAvAAI03I0u68b7WMFkQc="
"resolved" "https://artifact.devsnc.com/content/groups/npm-all/wordwrap/-/wordwrap-0.0.3.tgz"
"version" "0.0.3"
"worker-loader@^3.0.7": "worker-loader@^3.0.7":
"integrity" "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g==" "integrity" "sha512-XQyQkIFeRVC7f7uRhFdNMe/iJOdO6zxAaR3EWbDp45v3mDhrTi+++oswKNxShUNjPC/1xUp5DB29YKLhFo129g=="
"resolved" "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz" "resolved" "https://registry.npmjs.org/worker-loader/-/worker-loader-3.0.8.tgz"
@ -3167,26 +3298,59 @@
"loader-utils" "^2.0.0" "loader-utils" "^2.0.0"
"schema-utils" "^3.0.0" "schema-utils" "^3.0.0"
"wrap-ansi@^5.1.0":
"integrity" "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q=="
"resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz"
"version" "5.1.0"
dependencies:
"ansi-styles" "^3.2.0"
"string-width" "^3.0.0"
"strip-ansi" "^5.0.0"
"wrappy@1": "wrappy@1":
"integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
"resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
"version" "1.0.2" "version" "1.0.2"
"xmldom@^0.5.0":
"integrity" "sha512-z9s6k3wxE+aZHgXYxSTpGDo7BYOUfJsIRyoZiX6HTjwpwfS2wpQBQKa2fD+ShLyPkqDYo5ud7KitmLZ2Cd6r0g=="
"resolved" "https://artifact.devsnc.com/content/groups/npm-all/xmldom/-/xmldom-0.3.0.tgz"
"version" "0.3.0"
"xtend@^4.0.0", "xtend@^4.0.2": "xtend@^4.0.0", "xtend@^4.0.2":
"integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" "integrity" "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
"resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" "resolved" "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz"
"version" "4.0.2" "version" "4.0.2"
"y18n@^4.0.0":
"integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ=="
"resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz"
"version" "4.0.3"
"yaml@^1.10.0", "yaml@^1.10.2": "yaml@^1.10.0", "yaml@^1.10.2":
"integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
"resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz"
"version" "1.10.2" "version" "1.10.2"
"yargs-parser@^13.1.2":
"integrity" "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg=="
"resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz"
"version" "13.1.2"
dependencies:
"camelcase" "^5.0.0"
"decamelize" "^1.2.0"
"yargs@^13.2.4":
"integrity" "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw=="
"resolved" "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz"
"version" "13.3.2"
dependencies:
"cliui" "^5.0.0"
"find-up" "^3.0.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" "^3.0.0"
"which-module" "^2.0.0"
"y18n" "^4.0.0"
"yargs-parser" "^13.1.2"
"yocto-queue@^0.1.0": "yocto-queue@^0.1.0":
"integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q=="
"resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"