aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Daniel Smith <rdnlsmith@gmail.com> 2019-05-15 21:59:46 -0400
committerGravatar Daniel Smith <rdnlsmith@gmail.com> 2019-05-15 21:59:46 -0400
commit595d70975585f32e917c7a1a56a0201e28f14beb (patch)
tree406862553f16d23d1e67f3302fa9ea236ce71b2f
parenta568ca8eebb3071b474da99737a767914eec5278 (diff)
Implement basic clock face
-rw-r--r--.gitignore91
-rw-r--r--app/index.js37
-rw-r--r--package-lock.json5804
-rw-r--r--package.json21
-rw-r--r--resources/0.pngbin842 -> 0 bytes
-rw-r--r--resources/1.pngbin430 -> 0 bytes
-rw-r--r--resources/2.pngbin777 -> 0 bytes
-rw-r--r--resources/3.pngbin749 -> 0 bytes
-rw-r--r--resources/4.pngbin676 -> 0 bytes
-rw-r--r--resources/5.pngbin762 -> 0 bytes
-rw-r--r--resources/6.pngbin854 -> 0 bytes
-rw-r--r--resources/7.pngbin611 -> 0 bytes
-rw-r--r--resources/8.pngbin940 -> 0 bytes
-rw-r--r--resources/9.pngbin853 -> 0 bytes
-rw-r--r--resources/background.pngbin881 -> 0 bytes
-rw-r--r--resources/dates/0.pngbin0 -> 506 bytes
-rw-r--r--resources/dates/1.pngbin0 -> 2008 bytes
-rw-r--r--resources/dates/2.pngbin0 -> 456 bytes
-rw-r--r--resources/dates/3.pngbin0 -> 418 bytes
-rw-r--r--resources/dates/4.pngbin0 -> 291 bytes
-rw-r--r--resources/dates/5.pngbin0 -> 391 bytes
-rw-r--r--resources/dates/6.pngbin0 -> 531 bytes
-rw-r--r--resources/dates/7.pngbin0 -> 215 bytes
-rw-r--r--resources/dates/8.pngbin0 -> 523 bytes
-rw-r--r--resources/dates/9.pngbin0 -> 537 bytes
-rw-r--r--resources/dates/fri.pngbin0 -> 3547 bytes
-rw-r--r--resources/dates/mon.pngbin0 -> 755 bytes
-rw-r--r--resources/dates/sat.pngbin0 -> 4152 bytes
-rw-r--r--resources/dates/sun.pngbin0 -> 4386 bytes
-rw-r--r--resources/dates/thu.pngbin0 -> 2905 bytes
-rw-r--r--resources/dates/tue.pngbin0 -> 3665 bytes
-rw-r--r--resources/dates/wed.pngbin0 -> 815 bytes
-rw-r--r--resources/day_fri.pngbin693 -> 0 bytes
-rw-r--r--resources/day_mon.pngbin866 -> 0 bytes
-rw-r--r--resources/day_sat.pngbin795 -> 0 bytes
-rw-r--r--resources/day_sun.pngbin777 -> 0 bytes
-rw-r--r--resources/day_thu.pngbin749 -> 0 bytes
-rw-r--r--resources/day_tue.pngbin761 -> 0 bytes
-rw-r--r--resources/day_wed.pngbin818 -> 0 bytes
-rw-r--r--resources/index.gui33
-rw-r--r--resources/index~300x300.gui27
-rw-r--r--resources/numerals/0.pngbin0 -> 951 bytes
-rw-r--r--resources/numerals/1-old.pngbin0 -> 2605 bytes
-rw-r--r--resources/numerals/1.pngbin0 -> 7998 bytes
-rw-r--r--resources/numerals/2.pngbin0 -> 1042 bytes
-rw-r--r--resources/numerals/3.pngbin0 -> 1016 bytes
-rw-r--r--resources/numerals/4.pngbin0 -> 952 bytes
-rw-r--r--resources/numerals/5.pngbin0 -> 1050 bytes
-rw-r--r--resources/numerals/6.pngbin0 -> 1048 bytes
-rw-r--r--resources/numerals/7.pngbin0 -> 839 bytes
-rw-r--r--resources/numerals/8.pngbin0 -> 1215 bytes
-rw-r--r--resources/numerals/9.pngbin0 -> 1005 bytes
-rw-r--r--resources/numerals/separator.pngbin0 -> 1073 bytes
-rw-r--r--resources/separator.pngbin139 -> 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