Autolock UI

This commit is contained in:
Mo Bitar
2018-11-14 14:06:23 -06:00
parent 091f4cff7f
commit bb8140d89c
7 changed files with 911 additions and 28 deletions

View File

@@ -380,7 +380,6 @@ class AccountMenu {
passcodeManager.getAutoLockInterval().then((interval) => { passcodeManager.getAutoLockInterval().then((interval) => {
$timeout(() => { $timeout(() => {
$scope.selectedAutoLockInterval = interval; $scope.selectedAutoLockInterval = interval;
console.log("selectedAutoLockInterval", $scope.selectedAutoLockInterval);
}) })
}) })
} }
@@ -407,10 +406,10 @@ class AccountMenu {
return; return;
} }
let fn = $scope.formData.changingPasscode ? passcodeManager.changePasscode : passcodeManager.setPasscode; let fn = $scope.formData.changingPasscode ? passcodeManager.changePasscode.bind(passcodeManager) : passcodeManager.setPasscode.bind(passcodeManager);
fn(passcode, () => { fn(passcode, () => {
$timeout(function(){ $timeout(() => {
$scope.formData.showPasscodeForm = false; $scope.formData.showPasscodeForm = false;
var offline = authManager.offline(); var offline = authManager.offline();

View File

@@ -1,7 +1,8 @@
class PasscodeManager { class PasscodeManager {
constructor(authManager, storageManager) { constructor(authManager, storageManager) {
document.addEventListener('visibilitychange', () => { document.addEventListener('visibilitychange', (e) => {
console.log("visibilitychange", e, document.visibilityState);
this.documentVisibilityChanged(document.visibilityState); this.documentVisibilityChanged(document.visibilityState);
}); });
@@ -13,6 +14,7 @@ class PasscodeManager {
const MillisecondsPerSecond = 1000; const MillisecondsPerSecond = 1000;
PasscodeManager.AutoLockIntervalNone = 0; PasscodeManager.AutoLockIntervalNone = 0;
PasscodeManager.AutoLockIntervalFiveSecs = 5 * MillisecondsPerSecond;
PasscodeManager.AutoLockIntervalOneMinute = 60 * MillisecondsPerSecond; PasscodeManager.AutoLockIntervalOneMinute = 60 * MillisecondsPerSecond;
PasscodeManager.AutoLockIntervalFiveMinutes = 300 * MillisecondsPerSecond; PasscodeManager.AutoLockIntervalFiveMinutes = 300 * MillisecondsPerSecond;
PasscodeManager.AutoLockIntervalOneHour = 3600 * MillisecondsPerSecond; PasscodeManager.AutoLockIntervalOneHour = 3600 * MillisecondsPerSecond;
@@ -26,6 +28,10 @@ class PasscodeManager {
value: PasscodeManager.AutoLockIntervalNone, value: PasscodeManager.AutoLockIntervalNone,
label: "None" label: "None"
}, },
{
value: PasscodeManager.AutoLockIntervalFiveSecs,
label: "5 Secs"
},
{ {
value: PasscodeManager.AutoLockIntervalOneMinute, value: PasscodeManager.AutoLockIntervalOneMinute,
label: "1 Min" label: "1 Min"
@@ -51,20 +57,21 @@ class PasscodeManager {
} }
async beginAutoLockTimer() { async beginAutoLockTimer() {
console.log("beginAutoLockTimer");
var interval = await this.getAutoLockInterval(); var interval = await this.getAutoLockInterval();
if(interval == PasscodeManager.AutoLockIntervalNone) {
return;
}
this.lockTimeout = setTimeout(() => { this.lockTimeout = setTimeout(() => {
this.lockApplication(); this.lockApplication();
}, interval); }, interval);
} }
cancelAutoLockTimer() { cancelAutoLockTimer() {
console.log("cancelAutoLockTimer");
clearTimeout(this.lockTimeout); clearTimeout(this.lockTimeout);
} }
lockApplication() { lockApplication() {
console.log("lockApplication");
window.location.reload(); window.location.reload();
this.cancelAutoLockTimer(); this.cancelAutoLockTimer();
} }
@@ -82,14 +89,16 @@ class PasscodeManager {
} }
async setAutoLockInterval(interval) { async setAutoLockInterval(interval) {
console.log("Set autolock interval", interval);
return this.storageManager.setItem(PasscodeManager.AutoLockIntervalKey, JSON.stringify(interval), StorageManager.Fixed); return this.storageManager.setItem(PasscodeManager.AutoLockIntervalKey, JSON.stringify(interval), StorageManager.Fixed);
} }
async getAutoLockInterval() { async getAutoLockInterval() {
let interval = await this.storageManager.getItem(PasscodeManager.AutoLockIntervalKey, StorageManager.Fixed); let interval = await this.storageManager.getItem(PasscodeManager.AutoLockIntervalKey, StorageManager.Fixed);
console.log("Got interval", interval); if(interval) {
return interval && JSON.parse(interval); return JSON.parse(interval);
} else {
return PasscodeManager.AutoLockIntervalNone;
}
} }
passcodeAuthParams() { passcodeAuthParams() {

View File

@@ -83,7 +83,7 @@ class PrivilegesManager {
resolve(resolvedSingleton); resolve(resolvedSingleton);
}, (valueCallback) => { }, (valueCallback) => {
// Safe to create. Create and return object. // Safe to create. Create and return object.
var privs = new Privilege({content_type: prefsContentType}); var privs = new SNPrivileges({content_type: prefsContentType});
this.modelManager.addItem(privs); this.modelManager.addItem(privs);
privs.setDirty(true); privs.setDirty(true);
this.$rootScope.sync(); this.$rootScope.sync();

View File

@@ -132,10 +132,12 @@
%a.danger{"ng-click" => "removePasscodePressed()"} Remove Passcode %a.danger{"ng-click" => "removePasscodePressed()"} Remove Passcode
.panel-row .panel-row
.horizontal-group .horizontal-group
%p Autolock: %h4 Autolock
.vertical-rule
%a.info{"ng-repeat" => "option in passcodeAutoLockOptions", "ng-click" => "selectAutoLockInterval(option.value)", %a.info{"ng-repeat" => "option in passcodeAutoLockOptions", "ng-click" => "selectAutoLockInterval(option.value)",
"ng-class" => "{'info bold' : option.value == selectedAutoLockInterval}"} "ng-class" => "{'info boxed' : option.value == selectedAutoLockInterval}"}
{{option.label}} {{option.label}}
%p The autolock timer begins when the window or tab loses focus.
.panel-section{"ng-if" => "!importData.loading"} .panel-section{"ng-if" => "!importData.loading"}

View File

@@ -22,12 +22,13 @@
%input{"type" => "checkbox", "ng-checked" => "isCredentialRequiredForAction(action, credential)", "ng-click" => "checkboxValueChanged(action, credential)"} %input{"type" => "checkbox", "ng-checked" => "isCredentialRequiredForAction(action, credential)", "ng-click" => "checkboxValueChanged(action, credential)"}
.footer .footer
%h2 About Privileges %h2 About Privileges
%p .panel-section.no-bottom-pad
Privileges represent interface level authentication for accessing certain items and features. .text-content
Note that when your application is unlocked, your data exists in temporary memory in an unencrypted state. %p
Privileges are meant to protect against unwanted access in the event of an unlocked application, but do not affect data encryption state. Privileges represent interface level authentication for accessing certain items and features.
Note that when your application is unlocked, your data exists in temporary memory in an unencrypted state.
%p Privileges are meant to protect against unwanted access in the event of an unlocked application, but do not affect data encryption state.
Privileges sync across your other devices (not including mobile); however, note that if you require %p
a "Local Passcode" privilege, and another device does not have a local passcode set up, the local passcode Privileges sync across your other devices (not including mobile); however, note that if you require
requirement will be ignored on that device. a "Local Passcode" privilege, and another device does not have a local passcode set up, the local passcode
requirement will be ignored on that device.

882
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{ {
"name": "standard-notes-web", "name": "standard-notes-web",
"version": "2.3.16", "version": "2.3.17",
"lockfileVersion": 1, "lockfileVersion": 1,
"requires": true, "requires": true,
"dependencies": { "dependencies": {
@@ -7728,10 +7728,882 @@
"dev": true "dev": true
}, },
"sn-stylekit": { "sn-stylekit": {
"version": "1.0.15", "version": "file:../Stylekit",
"resolved": "https://registry.npmjs.org/sn-stylekit/-/sn-stylekit-1.0.15.tgz", "dev": true,
"integrity": "sha512-QeWlaCMHtF/VhFWWICzmx39ger92DEj1uLiCW4VVLX9LtU7nKQ5plqHgrpvnctO+wNh9LIYdPBLLWxTwgXm6Eg==", "dependencies": {
"dev": true "abbrev": {
"version": "1.1.1",
"bundled": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
},
"ansi-styles": {
"version": "2.2.1",
"bundled": true
},
"argparse": {
"version": "1.0.9",
"bundled": true,
"requires": {
"sprintf-js": "~1.0.2"
}
},
"array-find-index": {
"version": "1.0.2",
"bundled": true
},
"async": {
"version": "1.5.2",
"bundled": true
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
},
"body-parser": {
"version": "1.14.2",
"bundled": true,
"requires": {
"bytes": "2.2.0",
"content-type": "~1.0.1",
"debug": "~2.2.0",
"depd": "~1.1.0",
"http-errors": "~1.3.1",
"iconv-lite": "0.4.13",
"on-finished": "~2.3.0",
"qs": "5.2.0",
"raw-body": "~2.1.5",
"type-is": "~1.6.10"
},
"dependencies": {
"debug": {
"version": "2.2.0",
"bundled": true,
"requires": {
"ms": "0.7.1"
}
},
"iconv-lite": {
"version": "0.4.13",
"bundled": true
},
"ms": {
"version": "0.7.1",
"bundled": true
},
"qs": {
"version": "5.2.0",
"bundled": true
}
}
},
"brace-expansion": {
"version": "1.1.8",
"bundled": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"builtin-modules": {
"version": "1.1.1",
"bundled": true
},
"bytes": {
"version": "2.2.0",
"bundled": true
},
"camelcase": {
"version": "2.1.1",
"bundled": true
},
"camelcase-keys": {
"version": "2.1.0",
"bundled": true,
"requires": {
"camelcase": "^2.0.0",
"map-obj": "^1.0.0"
}
},
"chalk": {
"version": "1.1.3",
"bundled": true,
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"coffee-script": {
"version": "1.10.0",
"bundled": true
},
"colors": {
"version": "1.1.2",
"bundled": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true
},
"content-type": {
"version": "1.0.4",
"bundled": true
},
"cross-spawn": {
"version": "0.2.9",
"bundled": true,
"requires": {
"lru-cache": "^2.5.0"
}
},
"currently-unhandled": {
"version": "0.4.1",
"bundled": true,
"requires": {
"array-find-index": "^1.0.1"
}
},
"dargs": {
"version": "4.1.0",
"bundled": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"dateformat": {
"version": "1.0.12",
"bundled": true,
"requires": {
"get-stdin": "^4.0.1",
"meow": "^3.3.0"
}
},
"decamelize": {
"version": "1.2.0",
"bundled": true
},
"depd": {
"version": "1.1.1",
"bundled": true
},
"ee-first": {
"version": "1.1.1",
"bundled": true
},
"error-ex": {
"version": "1.3.1",
"bundled": true,
"requires": {
"is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"bundled": true
},
"esprima": {
"version": "2.7.3",
"bundled": true
},
"eventemitter2": {
"version": "0.4.14",
"bundled": true
},
"exit": {
"version": "0.1.2",
"bundled": true
},
"faye-websocket": {
"version": "0.10.0",
"bundled": true,
"requires": {
"websocket-driver": ">=0.5.1"
}
},
"find-up": {
"version": "1.1.2",
"bundled": true,
"requires": {
"path-exists": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"findup-sync": {
"version": "0.3.0",
"bundled": true,
"requires": {
"glob": "~5.0.0"
},
"dependencies": {
"glob": {
"version": "5.0.15",
"bundled": true,
"requires": {
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "2 || 3",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
}
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true
},
"gaze": {
"version": "1.1.2",
"bundled": true,
"requires": {
"globule": "^1.0.0"
}
},
"get-stdin": {
"version": "4.0.1",
"bundled": true
},
"getobject": {
"version": "0.1.0",
"bundled": true
},
"glob": {
"version": "7.1.2",
"bundled": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.4",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"globule": {
"version": "1.2.0",
"bundled": true,
"requires": {
"glob": "~7.1.1",
"lodash": "~4.17.4",
"minimatch": "~3.0.2"
}
},
"graceful-fs": {
"version": "4.1.11",
"bundled": true
},
"grunt": {
"version": "1.0.1",
"bundled": true,
"requires": {
"coffee-script": "~1.10.0",
"dateformat": "~1.0.12",
"eventemitter2": "~0.4.13",
"exit": "~0.1.1",
"findup-sync": "~0.3.0",
"glob": "~7.0.0",
"grunt-cli": "~1.2.0",
"grunt-known-options": "~1.1.0",
"grunt-legacy-log": "~1.0.0",
"grunt-legacy-util": "~1.0.0",
"iconv-lite": "~0.4.13",
"js-yaml": "~3.5.2",
"minimatch": "~3.0.0",
"nopt": "~3.0.6",
"path-is-absolute": "~1.0.0",
"rimraf": "~2.2.8"
},
"dependencies": {
"glob": {
"version": "7.0.6",
"bundled": true,
"requires": {
"fs.realpath": "^1.0.0",
"inflight": "^1.0.4",
"inherits": "2",
"minimatch": "^3.0.2",
"once": "^1.3.0",
"path-is-absolute": "^1.0.0"
}
},
"grunt-cli": {
"version": "1.2.0",
"bundled": true,
"requires": {
"findup-sync": "~0.3.0",
"grunt-known-options": "~1.1.0",
"nopt": "~3.0.6",
"resolve": "~1.1.0"
}
}
}
},
"grunt-contrib-sass": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "^0.9.0",
"chalk": "^1.0.0",
"cross-spawn": "^0.2.3",
"dargs": "^4.0.0",
"which": "^1.0.5"
},
"dependencies": {
"async": {
"version": "0.9.2",
"bundled": true
}
}
},
"grunt-contrib-watch": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "^1.5.0",
"gaze": "^1.0.0",
"lodash": "^3.10.1",
"tiny-lr": "^0.2.1"
},
"dependencies": {
"lodash": {
"version": "3.10.1",
"bundled": true
}
}
},
"grunt-haml2html": {
"version": "0.3.1",
"bundled": true,
"requires": {
"dargs": "~0.1.0"
},
"dependencies": {
"dargs": {
"version": "0.1.0",
"bundled": true
}
}
},
"grunt-known-options": {
"version": "1.1.0",
"bundled": true
},
"grunt-legacy-log": {
"version": "1.0.0",
"bundled": true,
"requires": {
"colors": "~1.1.2",
"grunt-legacy-log-utils": "~1.0.0",
"hooker": "~0.2.3",
"lodash": "~3.10.1",
"underscore.string": "~3.2.3"
},
"dependencies": {
"lodash": {
"version": "3.10.1",
"bundled": true
}
}
},
"grunt-legacy-log-utils": {
"version": "1.0.0",
"bundled": true,
"requires": {
"chalk": "~1.1.1",
"lodash": "~4.3.0"
},
"dependencies": {
"lodash": {
"version": "4.3.0",
"bundled": true
}
}
},
"grunt-legacy-util": {
"version": "1.0.0",
"bundled": true,
"requires": {
"async": "~1.5.2",
"exit": "~0.1.1",
"getobject": "~0.1.0",
"hooker": "~0.2.3",
"lodash": "~4.3.0",
"underscore.string": "~3.2.3",
"which": "~1.2.1"
},
"dependencies": {
"lodash": {
"version": "4.3.0",
"bundled": true
}
}
},
"grunt-newer": {
"version": "1.3.0",
"bundled": true,
"requires": {
"async": "^1.5.2",
"rimraf": "^2.5.2"
},
"dependencies": {
"rimraf": {
"version": "2.6.2",
"bundled": true,
"requires": {
"glob": "^7.0.5"
}
}
}
},
"has-ansi": {
"version": "2.0.0",
"bundled": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"hooker": {
"version": "0.2.3",
"bundled": true
},
"hosted-git-info": {
"version": "2.5.0",
"bundled": true
},
"http-errors": {
"version": "1.3.1",
"bundled": true,
"requires": {
"inherits": "~2.0.1",
"statuses": "1"
}
},
"http-parser-js": {
"version": "0.4.9",
"bundled": true
},
"iconv-lite": {
"version": "0.4.19",
"bundled": true
},
"indent-string": {
"version": "2.1.0",
"bundled": true,
"requires": {
"repeating": "^2.0.0"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.3",
"bundled": true
},
"is-arrayish": {
"version": "0.2.1",
"bundled": true
},
"is-builtin-module": {
"version": "1.0.0",
"bundled": true,
"requires": {
"builtin-modules": "^1.0.0"
}
},
"is-finite": {
"version": "1.0.2",
"bundled": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"is-utf8": {
"version": "0.2.1",
"bundled": true
},
"isexe": {
"version": "2.0.0",
"bundled": true
},
"js-yaml": {
"version": "3.5.5",
"bundled": true,
"requires": {
"argparse": "^1.0.2",
"esprima": "^2.6.0"
}
},
"livereload-js": {
"version": "2.2.2",
"bundled": true
},
"load-json-file": {
"version": "1.1.0",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2",
"parse-json": "^2.2.0",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0",
"strip-bom": "^2.0.0"
}
},
"lodash": {
"version": "4.17.4",
"bundled": true
},
"loud-rejection": {
"version": "1.6.0",
"bundled": true,
"requires": {
"currently-unhandled": "^0.4.1",
"signal-exit": "^3.0.0"
}
},
"lru-cache": {
"version": "2.7.3",
"bundled": true
},
"map-obj": {
"version": "1.0.1",
"bundled": true
},
"media-typer": {
"version": "0.3.0",
"bundled": true
},
"meow": {
"version": "3.7.0",
"bundled": true,
"requires": {
"camelcase-keys": "^2.0.0",
"decamelize": "^1.1.2",
"loud-rejection": "^1.0.0",
"map-obj": "^1.0.1",
"minimist": "^1.1.3",
"normalize-package-data": "^2.3.4",
"object-assign": "^4.0.1",
"read-pkg-up": "^1.0.1",
"redent": "^1.0.0",
"trim-newlines": "^1.0.0"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true
}
}
},
"mime-db": {
"version": "1.30.0",
"bundled": true
},
"mime-types": {
"version": "2.1.17",
"bundled": true,
"requires": {
"mime-db": "~1.30.0"
}
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"nopt": {
"version": "3.0.6",
"bundled": true,
"requires": {
"abbrev": "1"
}
},
"normalize-package-data": {
"version": "2.4.0",
"bundled": true,
"requires": {
"hosted-git-info": "^2.1.4",
"is-builtin-module": "^1.0.0",
"semver": "2 || 3 || 4 || 5",
"validate-npm-package-license": "^3.0.1"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true
},
"on-finished": {
"version": "2.3.0",
"bundled": true,
"requires": {
"ee-first": "1.1.1"
}
},
"once": {
"version": "1.4.0",
"bundled": true,
"requires": {
"wrappy": "1"
}
},
"parse-json": {
"version": "2.2.0",
"bundled": true,
"requires": {
"error-ex": "^1.2.0"
}
},
"parseurl": {
"version": "1.3.2",
"bundled": true
},
"path-exists": {
"version": "2.1.0",
"bundled": true,
"requires": {
"pinkie-promise": "^2.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true
},
"path-type": {
"version": "1.1.0",
"bundled": true,
"requires": {
"graceful-fs": "^4.1.2",
"pify": "^2.0.0",
"pinkie-promise": "^2.0.0"
}
},
"pify": {
"version": "2.3.0",
"bundled": true
},
"pinkie": {
"version": "2.0.4",
"bundled": true
},
"pinkie-promise": {
"version": "2.0.1",
"bundled": true,
"requires": {
"pinkie": "^2.0.0"
}
},
"qs": {
"version": "5.1.0",
"bundled": true
},
"raw-body": {
"version": "2.1.7",
"bundled": true,
"requires": {
"bytes": "2.4.0",
"iconv-lite": "0.4.13",
"unpipe": "1.0.0"
},
"dependencies": {
"bytes": {
"version": "2.4.0",
"bundled": true
},
"iconv-lite": {
"version": "0.4.13",
"bundled": true
}
}
},
"read-pkg": {
"version": "1.1.0",
"bundled": true,
"requires": {
"load-json-file": "^1.0.0",
"normalize-package-data": "^2.3.2",
"path-type": "^1.0.0"
}
},
"read-pkg-up": {
"version": "1.0.1",
"bundled": true,
"requires": {
"find-up": "^1.0.0",
"read-pkg": "^1.0.0"
}
},
"redent": {
"version": "1.0.0",
"bundled": true,
"requires": {
"indent-string": "^2.1.0",
"strip-indent": "^1.0.1"
}
},
"repeating": {
"version": "2.0.1",
"bundled": true,
"requires": {
"is-finite": "^1.0.0"
}
},
"resolve": {
"version": "1.1.7",
"bundled": true
},
"rimraf": {
"version": "2.2.8",
"bundled": true
},
"semver": {
"version": "5.4.1",
"bundled": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true
},
"spdx-correct": {
"version": "1.0.2",
"bundled": true,
"requires": {
"spdx-license-ids": "^1.0.2"
}
},
"spdx-expression-parse": {
"version": "1.0.4",
"bundled": true
},
"spdx-license-ids": {
"version": "1.2.2",
"bundled": true
},
"sprintf-js": {
"version": "1.0.3",
"bundled": true
},
"statuses": {
"version": "1.4.0",
"bundled": true
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-bom": {
"version": "2.0.0",
"bundled": true,
"requires": {
"is-utf8": "^0.2.0"
}
},
"strip-indent": {
"version": "1.0.1",
"bundled": true,
"requires": {
"get-stdin": "^4.0.1"
}
},
"supports-color": {
"version": "2.0.0",
"bundled": true
},
"tiny-lr": {
"version": "0.2.1",
"bundled": true,
"requires": {
"body-parser": "~1.14.0",
"debug": "~2.2.0",
"faye-websocket": "~0.10.0",
"livereload-js": "^2.2.0",
"parseurl": "~1.3.0",
"qs": "~5.1.0"
},
"dependencies": {
"debug": {
"version": "2.2.0",
"bundled": true,
"requires": {
"ms": "0.7.1"
}
},
"ms": {
"version": "0.7.1",
"bundled": true
}
}
},
"trim-newlines": {
"version": "1.0.0",
"bundled": true
},
"type-is": {
"version": "1.6.15",
"bundled": true,
"requires": {
"media-typer": "0.3.0",
"mime-types": "~2.1.15"
}
},
"underscore.string": {
"version": "3.2.3",
"bundled": true
},
"unpipe": {
"version": "1.0.0",
"bundled": true
},
"validate-npm-package-license": {
"version": "3.0.1",
"bundled": true,
"requires": {
"spdx-correct": "~1.0.0",
"spdx-expression-parse": "~1.0.0"
}
},
"websocket-driver": {
"version": "0.7.0",
"bundled": true,
"requires": {
"http-parser-js": ">=0.4.0",
"websocket-extensions": ">=0.1.1"
}
},
"websocket-extensions": {
"version": "0.1.2",
"bundled": true
},
"which": {
"version": "1.2.14",
"bundled": true,
"requires": {
"isexe": "^2.0.0"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true
}
}
}, },
"snake-case": { "snake-case": {
"version": "2.1.0", "version": "2.1.0",

View File

@@ -44,7 +44,7 @@
"mocha": "^5.2.0", "mocha": "^5.2.0",
"serve-static": "^1.13.2", "serve-static": "^1.13.2",
"sn-models": "0.1.9", "sn-models": "0.1.9",
"sn-stylekit": "1.0.15", "sn-stylekit": "file:~/Desktop/sn/dev/Stylekit",
"standard-file-js": "0.3.19" "standard-file-js": "0.3.19"
} }
} }