diff options
author | Daniel Smith <rdnlsmith@gmail.com> | 2019-05-15 21:59:46 -0400 |
---|---|---|
committer | Daniel Smith <rdnlsmith@gmail.com> | 2019-05-15 21:59:46 -0400 |
commit | 595d70975585f32e917c7a1a56a0201e28f14beb (patch) | |
tree | 406862553f16d23d1e67f3302fa9ea236ce71b2f | |
parent | a568ca8eebb3071b474da99737a767914eec5278 (diff) |
Implement basic clock face
-rw-r--r-- | .gitignore | 91 | ||||
-rw-r--r-- | app/index.js | 37 | ||||
-rw-r--r-- | package-lock.json | 5804 | ||||
-rw-r--r-- | package.json | 21 | ||||
-rw-r--r-- | resources/0.png | bin | 842 -> 0 bytes | |||
-rw-r--r-- | resources/1.png | bin | 430 -> 0 bytes | |||
-rw-r--r-- | resources/2.png | bin | 777 -> 0 bytes | |||
-rw-r--r-- | resources/3.png | bin | 749 -> 0 bytes | |||
-rw-r--r-- | resources/4.png | bin | 676 -> 0 bytes | |||
-rw-r--r-- | resources/5.png | bin | 762 -> 0 bytes | |||
-rw-r--r-- | resources/6.png | bin | 854 -> 0 bytes | |||
-rw-r--r-- | resources/7.png | bin | 611 -> 0 bytes | |||
-rw-r--r-- | resources/8.png | bin | 940 -> 0 bytes | |||
-rw-r--r-- | resources/9.png | bin | 853 -> 0 bytes | |||
-rw-r--r-- | resources/background.png | bin | 881 -> 0 bytes | |||
-rw-r--r-- | resources/dates/0.png | bin | 0 -> 506 bytes | |||
-rw-r--r-- | resources/dates/1.png | bin | 0 -> 2008 bytes | |||
-rw-r--r-- | resources/dates/2.png | bin | 0 -> 456 bytes | |||
-rw-r--r-- | resources/dates/3.png | bin | 0 -> 418 bytes | |||
-rw-r--r-- | resources/dates/4.png | bin | 0 -> 291 bytes | |||
-rw-r--r-- | resources/dates/5.png | bin | 0 -> 391 bytes | |||
-rw-r--r-- | resources/dates/6.png | bin | 0 -> 531 bytes | |||
-rw-r--r-- | resources/dates/7.png | bin | 0 -> 215 bytes | |||
-rw-r--r-- | resources/dates/8.png | bin | 0 -> 523 bytes | |||
-rw-r--r-- | resources/dates/9.png | bin | 0 -> 537 bytes | |||
-rw-r--r-- | resources/dates/fri.png | bin | 0 -> 3547 bytes | |||
-rw-r--r-- | resources/dates/mon.png | bin | 0 -> 755 bytes | |||
-rw-r--r-- | resources/dates/sat.png | bin | 0 -> 4152 bytes | |||
-rw-r--r-- | resources/dates/sun.png | bin | 0 -> 4386 bytes | |||
-rw-r--r-- | resources/dates/thu.png | bin | 0 -> 2905 bytes | |||
-rw-r--r-- | resources/dates/tue.png | bin | 0 -> 3665 bytes | |||
-rw-r--r-- | resources/dates/wed.png | bin | 0 -> 815 bytes | |||
-rw-r--r-- | resources/day_fri.png | bin | 693 -> 0 bytes | |||
-rw-r--r-- | resources/day_mon.png | bin | 866 -> 0 bytes | |||
-rw-r--r-- | resources/day_sat.png | bin | 795 -> 0 bytes | |||
-rw-r--r-- | resources/day_sun.png | bin | 777 -> 0 bytes | |||
-rw-r--r-- | resources/day_thu.png | bin | 749 -> 0 bytes | |||
-rw-r--r-- | resources/day_tue.png | bin | 761 -> 0 bytes | |||
-rw-r--r-- | resources/day_wed.png | bin | 818 -> 0 bytes | |||
-rw-r--r-- | resources/index.gui | 33 | ||||
-rw-r--r-- | resources/index~300x300.gui | 27 | ||||
-rw-r--r-- | resources/numerals/0.png | bin | 0 -> 951 bytes | |||
-rw-r--r-- | resources/numerals/1-old.png | bin | 0 -> 2605 bytes | |||
-rw-r--r-- | resources/numerals/1.png | bin | 0 -> 7998 bytes | |||
-rw-r--r-- | resources/numerals/2.png | bin | 0 -> 1042 bytes | |||
-rw-r--r-- | resources/numerals/3.png | bin | 0 -> 1016 bytes | |||
-rw-r--r-- | resources/numerals/4.png | bin | 0 -> 952 bytes | |||
-rw-r--r-- | resources/numerals/5.png | bin | 0 -> 1050 bytes | |||
-rw-r--r-- | resources/numerals/6.png | bin | 0 -> 1048 bytes | |||
-rw-r--r-- | resources/numerals/7.png | bin | 0 -> 839 bytes | |||
-rw-r--r-- | resources/numerals/8.png | bin | 0 -> 1215 bytes | |||
-rw-r--r-- | resources/numerals/9.png | bin | 0 -> 1005 bytes | |||
-rw-r--r-- | resources/numerals/separator.png | bin | 0 -> 1073 bytes | |||
-rw-r--r-- | resources/separator.png | bin | 139 -> 0 bytes |
54 files changed, 5937 insertions, 76 deletions
diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bda3fbe --- /dev/null +++ b/.gitignore @@ -0,0 +1,91 @@ +.vscode +build + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# TypeScript v1 declaration files +typings/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ diff --git a/app/index.js b/app/index.js index c466b90..6c8d4cc 100644 --- a/app/index.js +++ b/app/index.js @@ -6,14 +6,13 @@ import * as messaging from "messaging"; import { preferences } from "user-settings"; import * as util from "./utils"; -const SETTINGS_TYPE = "cbor"; -const SETTINGS_FILE = "settings.cbor"; +// const SETTINGS_TYPE = "cbor"; +// const SETTINGS_FILE = "settings.cbor"; -let settings = loadSettings(); -applyTheme(settings.background, settings.foreground); +// let settings = loadSettings(); +// applyTheme(settings.background, settings.foreground); // TIME -let separator = document.getElementById("separator"); let hours1 = document.getElementById("hours1"); let hours2 = document.getElementById("hours2"); let mins1 = document.getElementById("mins1"); @@ -49,9 +48,6 @@ clock.ontick = evt => { // MINUTES let minute = ("0" + d.getMinutes()).slice(-2); setMins(minute); - - // BLINK SEPARATOR - setSeparator(d.getSeconds()); } // Apply theme colors to elements @@ -68,11 +64,6 @@ function applyTheme(background, foreground) { settings.foreground = foreground; } -// Blink time separator -function setSeparator(val) { - separator.style.display = (val % 2 === 0 ? "inline" : "none"); -} - function setHours(val) { if (val > 9) { drawDigit(Math.floor(val / 10), hours1); @@ -88,8 +79,8 @@ function setMins(val) { } function setDate(val) { - drawDigit(Math.floor(val / 10), date1); - drawDigit(Math.floor(val % 10), date2); + drawDateDigit(Math.floor(val / 10), date1); + drawDateDigit(Math.floor(val % 10), date2); } function setDay(val) { @@ -97,21 +88,25 @@ function setDay(val) { } function drawDigit(val, place) { - place.image = `${val}.png`; + place.image = `numerals/${val}.png`; +} + +function drawDateDigit(val, place) { + place.image = `dates/${val}.png` } function getDayImg(index) { let days = ["sun", "mon", "tue", "wed", "thu", "fri", "sat"]; - return `day_${days[index]}.png`; + return `dates/${days[index]}.png`; } // Listen for the onmessage event -messaging.peerSocket.onmessage = evt => { - applyTheme(evt.data.background, evt.data.foreground); -} +// messaging.peerSocket.onmessage = evt => { +// applyTheme(evt.data.background, evt.data.foreground); +// } // Register for the unload event -me.onunload = saveSettings; +// me.onunload = saveSettings; function loadSettings() { try { diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7dc4616 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,5804 @@ +{ + "name": "fitbit-cpu-clock", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.0.0.tgz", + "integrity": "sha512-OfC2uemaknXr87bdLUkWog7nYuliM9Ij5HUcajsVcMCpQrcLmtxRbVFTIqmcSkSeYRBFBRxs2FiUqFJDLdiebA==", + "dev": true, + "requires": { + "@babel/highlight": "^7.0.0" + } + }, + "@babel/core": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.4.4.tgz", + "integrity": "sha512-lQgGX3FPRgbz2SKmhMtYgJvVzGZrmjaF4apZ2bLwofAKiSjxU0drPh4S/VasyYXwaTs+A1gvQ45BN8SQJzHsQQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helpers": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4", + "convert-source-map": "^1.1.0", + "debug": "^4.1.0", + "json5": "^2.1.0", + "lodash": "^4.17.11", + "resolve": "^1.3.2", + "semver": "^5.4.1", + "source-map": "^0.5.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.4.4.tgz", + "integrity": "sha512-53UOLK6TVNqKxf7RUh8NE851EHRxOOeVXKbK2bivdb+iziMyk03Sr4eaE9OELCbyZAAafAKPDwF2TPUES5QbxQ==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4", + "jsesc": "^2.5.1", + "lodash": "^4.17.11", + "source-map": "^0.5.0", + "trim-right": "^1.0.1" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + } + } + }, + "@babel/helper-function-name": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz", + "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.0.0", + "@babel/template": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz", + "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz", + "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz", + "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==", + "dev": true + }, + "@babel/helper-split-export-declaration": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz", + "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==", + "dev": true, + "requires": { + "@babel/types": "^7.4.4" + } + }, + "@babel/helpers": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.4.4.tgz", + "integrity": "sha512-igczbR/0SeuPR8RFfC7tGrbdTbFL3QTvH6D+Z6zNxnTe//GyqmtHmDkzrqDmyZ3eSwPqB/LhyKoU5DXsp+Vp2A==", + "dev": true, + "requires": { + "@babel/template": "^7.4.4", + "@babel/traverse": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/highlight": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.0.0.tgz", + "integrity": "sha512-UFMC4ZeFC48Tpvj7C8UgLvtkaUuovQX+5xNWrsIoMG8o2z+XFKjKaN9iVmS84dPwVN00W4wPmqvYoZF3EGAsfw==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "esutils": "^2.0.2", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.4.4.tgz", + "integrity": "sha512-5pCS4mOsL+ANsFZGdvNLybx4wtqAZJ0MJjMHxvzI3bvIsz6sQvzW8XX92EYIkiPtIvcfG3Aj+Ir5VNyjnZhP7w==", + "dev": true + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz", + "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz", + "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.4.4.tgz", + "integrity": "sha512-jkTUyWZcTrwxu5DD4rWz6rDB5Cjdmgz6z7M7RLXOJyCUkFBawssDGcGh8M/0FTSB87avyJI1HsTwUXp9nKA1PA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "lodash": "^4.17.11" + } + }, + "@babel/template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz", + "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4" + } + }, + "@babel/traverse": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.4.4.tgz", + "integrity": "sha512-Gw6qqkw/e6AGzlyj9KnkabJX7VcubqPtkUQVAwkc0wUMldr3A/hezNB3Rc5eIvId95iSGkGIOe5hh1kMKf951A==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@babel/generator": "^7.4.4", + "@babel/helper-function-name": "^7.1.0", + "@babel/helper-split-export-declaration": "^7.4.4", + "@babel/parser": "^7.4.4", + "@babel/types": "^7.4.4", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.11" + } + }, + "@babel/types": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.4.4.tgz", + "integrity": "sha512-dOllgYdnEFOebhkKCjzSVFqw/PmmB8pH6RGOWkY4GsboQNd47b1fBThBSwlHAq9alF9vc1M3+6oqR47R50L0tQ==", + "dev": true, + "requires": { + "esutils": "^2.0.2", + "lodash": "^4.17.11", + "to-fast-properties": "^2.0.0" + } + }, + "@fitbit-sdk/companion-gettext": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@fitbit-sdk/companion-gettext/-/companion-gettext-3.0.0.tgz", + "integrity": "sha512-ZimJXZDZBZ2IBj31asS5Oqb0TrPadoILfmdyGcTk/mh/eeKlKDfRxvXjycz7ygu2mh3V3mA0zRefLhYY5s727Q==", + "dev": true + }, + "@fitbit/app-package": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@fitbit/app-package/-/app-package-1.6.0.tgz", + "integrity": "sha512-6SzQxlS6LqhL0JCpcrB/Z0n7QjCi2UP2YZcfbvthUuh99X9WTkdfGJynhDOS1PhlzBGv/l82UpRjDFQTvGORzQ==", + "dev": true, + "requires": { + "apr-map": "^3.0.3", + "lodash": "^4.17.11", + "tslib": "^1.9.3" + } + }, + "@fitbit/bison-i18n": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@fitbit/bison-i18n/-/bison-i18n-1.0.1.tgz", + "integrity": "sha512-3h5UUy63S/PtcnwqLv14Q7Vdc+i4XBFsnVBvB4jmPCk5cyWBdLrJBt3YoO5p6xakCuxr7J1lp4A7DxsnesZy6w==", + "dev": true, + "requires": { + "pofile": "^1.0.10", + "text-encoding-utf-8": "^1.0.2", + "tslib": "^1.9.0" + } + }, + "@fitbit/fdb-debugger": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@fitbit/fdb-debugger/-/fdb-debugger-1.6.0.tgz", + "integrity": "sha512-k2QHTTSWfwwqXbfNvwocrPI+Bc2XF6v4R5VUxPd2eJ+vP6/ydxFdiYyc3D1CD3zbj5kZZiVeLIByrC/5fDXzEQ==", + "dev": true, + "requires": { + "@fitbit/fdb-protocol": "^1.6.0", + "@fitbit/jsonrpc-ts": "^2.1.0", + "cbor": "^4.1.5", + "io-ts": "^1.8.2", + "jszip": "^3.2.0", + "lodash": "^4.17.4", + "simple-sha256": "^1.0.0", + "tslib": "^1.9.0" + } + }, + "@fitbit/fdb-host": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@fitbit/fdb-host/-/fdb-host-1.6.0.tgz", + "integrity": "sha512-eHu8kyuaRgLn3Dc3E+595GZdb3kEjiocrxVWoH8ruvqeL3qvfW3w4cbuQX+3Ynq9QzXPrmCC7kmtPIMC2r/uKg==", + "dev": true, + "requires": { + "@fitbit/fdb-protocol": "^1.6.0", + "@fitbit/jsonrpc-ts": "^2.1.0", + "io-ts": "^1.8.2", + "tslib": "^1.9.0" + } + }, + "@fitbit/fdb-protocol": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@fitbit/fdb-protocol/-/fdb-protocol-1.6.0.tgz", + "integrity": "sha512-+zJ8iRNkgWNcnmvVTHzlxZQ/lLqbj+MBB0G6ipRhHeMwj0trOvDCKp8YkbLFYIiPT0CU8c0tB59QknqeokXRYA==", + "dev": true, + "requires": { + "invariant": "^2.2.2", + "semver": "^5.6.0", + "tslib": "^1.9.0", + "validator": "^10.11.0" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "@fitbit/image-codec-txi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@fitbit/image-codec-txi/-/image-codec-txi-1.1.2.tgz", + "integrity": "sha512-ZzgSgbuSWnTCg7k/iuhSbWGetw19N3axFzNVZuxRnOlhQsQnP8J9wZQkjCOiaMWoQp8lEiy9+QKfrs4no/N1Jw==", + "dev": true + }, + "@fitbit/jsonrpc-ts": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@fitbit/jsonrpc-ts/-/jsonrpc-ts-2.1.0.tgz", + "integrity": "sha512-Izjmv/5syWnx6u85GUHVq6yCX0knFgwuwzacrqGGXdxG5NH7qVniirCoSn/pwsfcs31f9C3Bu2BtlNUFNMv5iQ==", + "dev": true, + "requires": { + "@types/error-subclass": "^2.2.0", + "error-subclass": "^2.2.0" + } + }, + "@fitbit/pngjs": { + "version": "3.3.3-fitbit.4", + "resolved": "https://registry.npmjs.org/@fitbit/pngjs/-/pngjs-3.3.3-fitbit.4.tgz", + "integrity": "sha512-y/EU1HufyydlR8kRhVH5ttb7CloGaO9inmnyebpLZGHaS9+zGL1CDAG2ua4Vgp6yjpNSjg7prwjLCIpoZ501wQ==", + "dev": true + }, + "@fitbit/portable-pixmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@fitbit/portable-pixmap/-/portable-pixmap-1.0.2.tgz", + "integrity": "sha512-QAVmnMypPUcmFS0ZKZM++eOuix6frw2tzGJHr+BtghW2/CB3RJS6ZaE5cb7g3KBZn7XaJbY59ACSIOjYkYzvHQ==", + "dev": true, + "requires": { + "error-subclass": "^2.2.0", + "tslib": "^1.9.3" + } + }, + "@fitbit/sdk": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@fitbit/sdk/-/sdk-3.1.1.tgz", + "integrity": "sha512-E39g0pQ1Zl9Q1mRl8oa1XQ7gOPjeCN8VaHH7cHr9PnqTy4LA9R5o3v4vjSF2TA2ITYv37QCD8xocyJiM02vaNQ==", + "dev": true, + "requires": { + "@babel/core": "^7.2.2", + "@babel/plugin-syntax-dynamic-import": "^7.2.0", + "@babel/plugin-transform-block-scoped-functions": "^7.2.0", + "@babel/plugin-transform-block-scoping": "^7.2.0", + "@fitbit-sdk/companion-gettext": "^3.0.0", + "@fitbit/bison-i18n": "^1.0.0", + "@fitbit/image-codec-txi": "^1.1.2", + "@fitbit/pngjs": "^3.3.3-fitbit.4", + "chalk": "^2.4.2", + "dateformat": "^3.0.3", + "elfy": "^0.1.0", + "events-intercept": "^2.0.0", + "fs-extra": "^7.0.1", + "glob": "^7.1.3", + "gulp-file": "^0.4.0", + "gulp-zip": "^4.2.0", + "humanize-list": "^1.0.1", + "indent-string": "^3.2.0", + "inquirer": "^6.2.2", + "io-ts": "1.8.5", + "lazystream": "^1.0.0", + "lodash": "^4.17.10", + "merge-stream": "^1.0.1", + "multistream": "^2.1.1", + "plugin-error": "^1.0.1", + "pofile": "^1.0.11", + "pumpify": "^1.5.1", + "rollup": "^1.9.3", + "rollup-plugin-babel": "^4.3.2", + "rollup-plugin-commonjs": "^9.2.0", + "rollup-plugin-node-resolve": "^4.0.0", + "rollup-pluginutils": "^2.3.3", + "semver": "^6.0.0", + "simple-random": "^1.0.3", + "source-map": "^0.7.3", + "source-map-compactor": "^1.0.1", + "terser": "^3.16.1", + "tslib": "^1.9.3", + "typescript": "^3.3.3", + "update-notifier": "^2.5.0", + "uuid": "^3.3.2", + "validator": "^10.11.0", + "vinyl": "^2.2.0", + "vinyl-buffer": "^1.0.1", + "vinyl-fs": "^3.0.3", + "yargs": "^13.2.1" + } + }, + "@fitbit/sdk-cli": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@fitbit/sdk-cli/-/sdk-cli-1.6.0.tgz", + "integrity": "sha512-5FAYXBHV3RKnJo7wUXxY3NvSlhfRDJ/SGgYzMP55PjpL8poYPwdAI9CMDpgsDwPa9VT/2vL+gxr/C6X4+dPqTg==", + "dev": true, + "requires": { + "@fitbit/app-package": "^1.6.0", + "@fitbit/fdb-debugger": "^1.6.0", + "@fitbit/fdb-host": "^1.6.0", + "@fitbit/fdb-protocol": "^1.6.0", + "@fitbit/jsonrpc-ts": "^2.1.0", + "@fitbit/portable-pixmap": "^1.0.2", + "@openid/appauth": "^1.2.1", + "chalk": "^2.4.2", + "dateformat": "^3.0.3", + "error-subclass": "^2.2.0", + "fetch-ponyfill": "^6.0.2", + "fs-extra": "^7.0.1", + "humanize-list": "^1.0.1", + "io-ts": "^1.8.2", + "jszip": "^3.2.0", + "keytar": "^4.4.1", + "lodash": "^4.17.10", + "pngjs": "^3.3.3", + "semver": "^5.6.0", + "source-map": "^0.7.3", + "stream.finished": "^1.1.1", + "ts-events": "^3.2.1", + "tslib": "^1.9.3", + "untildify": "^3.0.3", + "update-notifier": "^2.5.0", + "vorpal": "^1.12.0", + "websocket-stream": "^5.1.2" + }, + "dependencies": { + "semver": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", + "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", + "dev": true + } + } + }, + "@openid/appauth": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@openid/appauth/-/appauth-1.2.3.tgz", + "integrity": "sha512-vzGvIfpuU8zlFj7OF968NMMOxRp20uTa1V/ueqzpoe2d7MJdS1mRDL/sr1hH8l8ZF2HlL+Znz5oy0VuhT//Gfw==", + "dev": true, + "requires": { + "@types/base64-js": "^1.2.5", + "@types/jquery": "^3.3.29", + "base64-js": "^1.3.0", + "follow-redirects": "^1.7.0", + "form-data": "^2.3.3", + "opener": "^1.5.1" + } + }, + "@types/base64-js": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/base64-js/-/base64-js-1.2.5.tgz", + "integrity": "sha1-WCskdhaabLpGCiFNR2x0REHYc9U=", + "dev": true + }, + "@types/error-subclass": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@types/error-subclass/-/error-subclass-2.2.0.tgz", + "integrity": "sha512-D7ErcheKsZ6z8uz/3DKSZHnx8JfJt2jQVNpZkyJw3xT9Lq9ECt5zmVMiyWQQe9U+0lVjtkrZ1VHVPN1aBRBHbg==", + "dev": true + }, + "@types/estree": { + "version": "0.0.39", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.39.tgz", + "integrity": "sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw==", + "dev": true + }, + "@types/jquery": { + "version": "3.3.29", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.3.29.tgz", + "integrity": "sha512-FhJvBninYD36v3k6c+bVk1DSZwh7B5Dpb/Pyk3HKVsiohn0nhbefZZ+3JXbWQhFyt0MxSl2jRDdGQPHeOHFXrQ==", + "dev": true, + "requires": { + "@types/sizzle": "*" + } + }, + "@types/node": { + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.2.tgz", + "integrity": "sha512-5tabW/i+9mhrfEOUcLDu2xBPsHJ+X5Orqy9FKpale3SjDA17j5AEpYq5vfy3oAeAHGcvANRCO3NV3d2D6q3NiA==", + "dev": true + }, + "@types/resolve": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-0.0.8.tgz", + "integrity": "sha512-auApPaJf3NPfe18hSoJkp8EbZzer2ISk7o8mCC3M9he/a04+gbMF97NkpD2S8riMGvm4BMRI59/SZQSaLTKpsQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==", + "dev": true + }, + "acorn": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.1.1.tgz", + "integrity": "sha512-jPTiwtOxaHNaAPg/dmrJ/beuzLRnXtB0kQPQ8JpotKJgTB6rX6c8mlf315941pyjBSaPg8NHXS9fhP4u17DpGA==", + "dev": true + }, + "ansi-align": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-2.0.0.tgz", + "integrity": "sha1-w2rsy6VjuJzrVW82kPCx2eNUf38=", + "dev": true, + "requires": { + "string-width": "^2.0.0" + } + }, + "ansi-colors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-1.1.0.tgz", + "integrity": "sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA==", + "dev": true, + "requires": { + "ansi-wrap": "^0.1.0" + } + }, + "ansi-cyan": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-cyan/-/ansi-cyan-0.1.1.tgz", + "integrity": "sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-red": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/ansi-red/-/ansi-red-0.1.1.tgz", + "integrity": "sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw=", + "dev": true, + "requires": { + "ansi-wrap": "0.1.0" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "ansi-wrap": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/ansi-wrap/-/ansi-wrap-0.1.0.tgz", + "integrity": "sha1-qCJQ3bABXponyoLoLqYDu/pF768=", + "dev": true + }, + "append-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/append-buffer/-/append-buffer-1.0.2.tgz", + "integrity": "sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE=", + "dev": true, + "requires": { + "buffer-equal": "^1.0.0" + } + }, + "apr-engine-each": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/apr-engine-each/-/apr-engine-each-3.0.3.tgz", + "integrity": "sha1-HWeFN8iTgLaYfFwfCqx6fco+Y8g=", + "dev": true, + "requires": { + "apr-engine-run": "^3.0.3", + "lodash.defaults": "^4.2.0" + } + }, + "apr-engine-iterator": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/apr-engine-iterator/-/apr-engine-iterator-3.0.3.tgz", + "integrity": "sha1-ATQV6uCs67Vp2qbPt+JWmBAdT10=", + "dev": true, + "requires": { + "apr-engine-until": "^3.0.3", + "build-array": "^1.0.0", + "lodash.isarraylike": "^4.2.0", + "lodash.isfinite": "^3.3.2", + "lodash.keys": "^4.2.0" + } + }, + "apr-engine-run": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/apr-engine-run/-/apr-engine-run-3.0.3.tgz", + "integrity": "sha1-x/Pm4x8S3mNtAOhL4iFg/oJWmZA=", + "dev": true, + "requires": { + "apr-engine-iterator": "^3.0.3" + } + }, + "apr-engine-sum": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/apr-engine-sum/-/apr-engine-sum-3.0.3.tgz", + "integrity": "sha1-SK8aidOn+2B0XTIRilG9Ilomcys=", + "dev": true, + "requires": { + "lodash.isarraylike": "^4.2.0" + } + }, + "apr-engine-until": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/apr-engine-until/-/apr-engine-until-3.0.3.tgz", + "integrity": "sha1-AWikKeH2rQVMyPvi7f9lZj+S6cs=", + "dev": true + }, + "apr-map": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/apr-map/-/apr-map-3.0.3.tgz", + "integrity": "sha1-K/kemusYeUvJVjExHW6UdB7xbcI=", + "dev": true, + "requires": { + "apr-engine-each": "^3.0.3", + "apr-engine-sum": "^3.0.3", + "lodash.defaults": "^4.2.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integ |