mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
chore(demos): making progress on the conf app
This commit is contained in:
283
packages/demos/conference-app/angular/package-lock.json
generated
283
packages/demos/conference-app/angular/package-lock.json
generated
@@ -43,7 +43,7 @@
|
||||
"@ngtools/json-schema": "1.1.0",
|
||||
"@schematics/schematics": "0.0.11",
|
||||
"minimist": "1.2.0",
|
||||
"rxjs": "5.5.5"
|
||||
"rxjs": "5.5.6"
|
||||
}
|
||||
},
|
||||
"@angular/animations": {
|
||||
@@ -100,7 +100,7 @@
|
||||
"postcss-url": "7.3.0",
|
||||
"raw-loader": "0.5.1",
|
||||
"resolve": "1.5.0",
|
||||
"rxjs": "5.5.5",
|
||||
"rxjs": "5.5.6",
|
||||
"sass-loader": "6.0.6",
|
||||
"semver": "5.4.1",
|
||||
"silent-error": "1.1.0",
|
||||
@@ -263,18 +263,35 @@
|
||||
"tslib": "1.8.1"
|
||||
}
|
||||
},
|
||||
"@ionic/angular": {
|
||||
"version": "0.0.2-11",
|
||||
"resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-0.0.2-11.tgz",
|
||||
"integrity": "sha512-emi1e4RaPujlBUK07zvZAZlmXVQwyOE/DpOqK6182RIhd/f1NcRG+FuWdcldK6IrzIH1iO6PgM4vibWJAguhZQ==",
|
||||
"requires": {
|
||||
"@stencil/core": "0.1.0"
|
||||
}
|
||||
"@ionic-native/core": {
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-4.5.2.tgz",
|
||||
"integrity": "sha512-/Y4gvrfNqO+wpa+i41tkud6WdVawju/+c+pD1E9b8lMeWimvFfqA0/q/6+S8VWjGLKz1GrZqW9cfwJU75SC4Ug=="
|
||||
},
|
||||
"@ionic/core": {
|
||||
"version": "0.0.2-31",
|
||||
"resolved": "https://registry.npmjs.org/@ionic/core/-/core-0.0.2-31.tgz",
|
||||
"integrity": "sha512-3Sn2GLIW9VyIWiK4HlWc9uSl3NZzYAca/h1rZdSncNkmGN+sF9QV2sVQUNH/C5FICS0wvzP3Qq62c7/dlInDVg=="
|
||||
"@ionic-native/in-app-browser": {
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ionic-native/in-app-browser/-/in-app-browser-4.5.2.tgz",
|
||||
"integrity": "sha512-GagPWh1rNYLb6gTt/OKI++tPNYqYaGTi5ljEem6v1KVcUpYae71Nl26UY5muAC7jDbMi1+hu/cXeIo6jc85eRA=="
|
||||
},
|
||||
"@ionic-native/splash-screen": {
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-4.5.2.tgz",
|
||||
"integrity": "sha512-8bWonxhxOold+2EhC9oSGB+z2naCLBfgTozBWt1Npi2AAe1D//nSA8KTjPTRdWF6SH0iUuhbhgo5HIZ7OZz2DQ=="
|
||||
},
|
||||
"@ionic-native/status-bar": {
|
||||
"version": "4.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@ionic-native/status-bar/-/status-bar-4.5.2.tgz",
|
||||
"integrity": "sha512-i2j2J9KIobCqyX6LlrlYhaHgd7qmP1pzHs4XAthHgth8m6c4gsHsh+Pl3fqknD7AX18ghpqo3tVtv0EFhSFU3w=="
|
||||
},
|
||||
"@ionic/storage": {
|
||||
"version": "2.1.3",
|
||||
"resolved": "https://registry.npmjs.org/@ionic/storage/-/storage-2.1.3.tgz",
|
||||
"integrity": "sha512-/i3Vn2jNBqteAm5FuGCNei5oJlFQB2JYFkH3nR5f5i7X4kRz17XAsAKXVQjyR9wiye8HmxglIz05JsC92nYUjQ==",
|
||||
"requires": {
|
||||
"@types/localforage": "0.0.30",
|
||||
"localforage": "1.4.3",
|
||||
"localforage-cordovasqlitedriver": "1.5.0"
|
||||
}
|
||||
},
|
||||
"@ngtools/json-schema": {
|
||||
"version": "1.1.0",
|
||||
@@ -344,9 +361,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"@stencil/core": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-0.1.0.tgz",
|
||||
"integrity": "sha512-1I/fMUk+iLDY+0kyRQvLz6KcnWDQjL4HlTSfAg1T8VA2T5EhGL5232lgK62000Xwg3MbSAH+vAe5lwoOJDc8TA==",
|
||||
"version": "0.1.1-0",
|
||||
"resolved": "https://registry.npmjs.org/@stencil/core/-/core-0.1.1-0.tgz",
|
||||
"integrity": "sha512-F4frvyNcIJoWO+ht2Hw8nT7TS7IN0/WKx4vGUbdKWnSvIN4/V+gO5pu/Um3MccSEDFnp+VYMKEZk99scF2wX2g==",
|
||||
"requires": {
|
||||
"chokidar": "1.7.0",
|
||||
"jsdom": "11.3.0",
|
||||
@@ -381,11 +398,15 @@
|
||||
"@types/jasmine": "2.5.54"
|
||||
}
|
||||
},
|
||||
"@types/localforage": {
|
||||
"version": "0.0.30",
|
||||
"resolved": "https://registry.npmjs.org/@types/localforage/-/localforage-0.0.30.tgz",
|
||||
"integrity": "sha1-PWCmv23aOOP4pGlhFZg3nx9klQk="
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "6.0.95",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-6.0.95.tgz",
|
||||
"integrity": "sha512-d1Twx1NM49dQ7jbNZfaHTQWuYL9cFVrGxYpbc3BvMf4626lOJOZnp2aJQNB9vP/WX3UOe1TrTUMABrGRu6FZhg==",
|
||||
"dev": true
|
||||
"integrity": "sha512-d1Twx1NM49dQ7jbNZfaHTQWuYL9cFVrGxYpbc3BvMf4626lOJOZnp2aJQNB9vP/WX3UOe1TrTUMABrGRu6FZhg=="
|
||||
},
|
||||
"@types/q": {
|
||||
"version": "0.0.32",
|
||||
@@ -695,6 +716,11 @@
|
||||
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
|
||||
"integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
|
||||
},
|
||||
"ast-types": {
|
||||
"version": "0.8.15",
|
||||
"resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.8.15.tgz",
|
||||
"integrity": "sha1-ju8IJ/BN/w7IhXupJavj/qYZTlI="
|
||||
},
|
||||
"async": {
|
||||
"version": "2.6.0",
|
||||
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
|
||||
@@ -856,6 +882,11 @@
|
||||
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
|
||||
"integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
|
||||
},
|
||||
"base62": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/base62/-/base62-0.1.1.tgz",
|
||||
"integrity": "sha1-e0F0wvlESXU7EcJlHAg9qEGnsIQ="
|
||||
},
|
||||
"base64-arraybuffer": {
|
||||
"version": "0.1.5",
|
||||
"resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.1.5.tgz",
|
||||
@@ -2580,6 +2611,23 @@
|
||||
"is-symbol": "1.0.1"
|
||||
}
|
||||
},
|
||||
"es3ify": {
|
||||
"version": "0.1.4",
|
||||
"resolved": "https://registry.npmjs.org/es3ify/-/es3ify-0.1.4.tgz",
|
||||
"integrity": "sha1-rZ+l3xrjTz8x4SEbWBiy1RB439E=",
|
||||
"requires": {
|
||||
"esprima-fb": "3001.1.0-dev-harmony-fb",
|
||||
"jstransform": "3.0.0",
|
||||
"through": "2.3.8"
|
||||
},
|
||||
"dependencies": {
|
||||
"esprima-fb": {
|
||||
"version": "3001.1.0-dev-harmony-fb",
|
||||
"resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz",
|
||||
"integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE="
|
||||
}
|
||||
}
|
||||
},
|
||||
"es5-ext": {
|
||||
"version": "0.10.37",
|
||||
"resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.37.tgz",
|
||||
@@ -2685,6 +2733,11 @@
|
||||
"estraverse": "4.2.0"
|
||||
}
|
||||
},
|
||||
"esmangle-evaluator": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/esmangle-evaluator/-/esmangle-evaluator-1.0.1.tgz",
|
||||
"integrity": "sha1-Yg2GbvSGGzMR91dm1SqFcrs8YzY="
|
||||
},
|
||||
"esprima": {
|
||||
"version": "3.1.3",
|
||||
"resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
|
||||
@@ -2942,6 +2995,29 @@
|
||||
"resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
|
||||
"integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
|
||||
},
|
||||
"falafel": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/falafel/-/falafel-1.2.0.tgz",
|
||||
"integrity": "sha1-wY0k71CRF0pJfzGM0ksCaiXN2rQ=",
|
||||
"requires": {
|
||||
"acorn": "1.2.2",
|
||||
"foreach": "2.0.5",
|
||||
"isarray": "0.0.1",
|
||||
"object-keys": "1.0.11"
|
||||
},
|
||||
"dependencies": {
|
||||
"acorn": {
|
||||
"version": "1.2.2",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-1.2.2.tgz",
|
||||
"integrity": "sha1-yM4n3grMdtiW0rH6099YjZ6C8BQ="
|
||||
},
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
}
|
||||
}
|
||||
},
|
||||
"fast-deep-equal": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-1.0.0.tgz",
|
||||
@@ -3076,8 +3152,7 @@
|
||||
"foreach": {
|
||||
"version": "2.0.5",
|
||||
"resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.5.tgz",
|
||||
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k=",
|
||||
"dev": true
|
||||
"integrity": "sha1-C+4AUBiusmDQo6865ljdATbsG5k="
|
||||
},
|
||||
"forever-agent": {
|
||||
"version": "0.6.1",
|
||||
@@ -4642,6 +4717,11 @@
|
||||
"dev": true,
|
||||
"optional": true
|
||||
},
|
||||
"immediate": {
|
||||
"version": "3.0.6",
|
||||
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
|
||||
"integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps="
|
||||
},
|
||||
"import-local": {
|
||||
"version": "0.1.1",
|
||||
"resolved": "https://registry.npmjs.org/import-local/-/import-local-0.1.1.tgz",
|
||||
@@ -4703,6 +4783,15 @@
|
||||
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==",
|
||||
"dev": true
|
||||
},
|
||||
"inline-process-browser": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/inline-process-browser/-/inline-process-browser-1.0.0.tgz",
|
||||
"integrity": "sha1-RqYbFT3TybFiSxoAYm7bT39BTyI=",
|
||||
"requires": {
|
||||
"falafel": "1.2.0",
|
||||
"through2": "0.6.5"
|
||||
}
|
||||
},
|
||||
"internal-ip": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-1.2.0.tgz",
|
||||
@@ -5302,6 +5391,31 @@
|
||||
"verror": "1.10.0"
|
||||
}
|
||||
},
|
||||
"jstransform": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/jstransform/-/jstransform-3.0.0.tgz",
|
||||
"integrity": "sha1-olkats7o2XvzvoMNv6IxO4fNZAs=",
|
||||
"requires": {
|
||||
"base62": "0.1.1",
|
||||
"esprima-fb": "3001.1.0-dev-harmony-fb",
|
||||
"source-map": "0.1.31"
|
||||
},
|
||||
"dependencies": {
|
||||
"esprima-fb": {
|
||||
"version": "3001.1.0-dev-harmony-fb",
|
||||
"resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-3001.0001.0000-dev-harmony-fb.tgz",
|
||||
"integrity": "sha1-t303q8046gt3Qmu4vCkizmtCZBE="
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.1.31",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.31.tgz",
|
||||
"integrity": "sha1-n3BNDWnZ4TioG63267T94z0VHGE=",
|
||||
"requires": {
|
||||
"amdefine": "1.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"karma": {
|
||||
"version": "1.7.1",
|
||||
"resolved": "https://registry.npmjs.org/karma/-/karma-1.7.1.tgz",
|
||||
@@ -5641,6 +5755,17 @@
|
||||
"ejs": "2.5.7"
|
||||
}
|
||||
},
|
||||
"lie": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/lie/-/lie-3.0.2.tgz",
|
||||
"integrity": "sha1-/9oh17uibzd8rYZdNkmy/Izjn+o=",
|
||||
"requires": {
|
||||
"es3ify": "0.1.4",
|
||||
"immediate": "3.0.6",
|
||||
"inline-process-browser": "1.0.0",
|
||||
"unreachable-branch-transform": "0.3.0"
|
||||
}
|
||||
},
|
||||
"load-json-file": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz",
|
||||
@@ -5670,6 +5795,23 @@
|
||||
"json5": "0.5.1"
|
||||
}
|
||||
},
|
||||
"localforage": {
|
||||
"version": "1.4.3",
|
||||
"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.4.3.tgz",
|
||||
"integrity": "sha1-ohJUPDnHx2Qk7dEr9HTEiarKSUw=",
|
||||
"requires": {
|
||||
"lie": "3.0.2"
|
||||
}
|
||||
},
|
||||
"localforage-cordovasqlitedriver": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/localforage-cordovasqlitedriver/-/localforage-cordovasqlitedriver-1.5.0.tgz",
|
||||
"integrity": "sha1-+TR4nmrZo5usBf3RFogS9DhTV2I=",
|
||||
"requires": {
|
||||
"@types/localforage": "0.0.30",
|
||||
"localforage": "1.4.3"
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
|
||||
@@ -6066,6 +6208,18 @@
|
||||
"pumpify": "1.3.5",
|
||||
"stream-each": "1.2.2",
|
||||
"through2": "2.0.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"through2": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
|
||||
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"readable-stream": "2.3.3",
|
||||
"xtend": "4.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"mixin-object": {
|
||||
@@ -6376,8 +6530,7 @@
|
||||
"object-keys": {
|
||||
"version": "1.0.11",
|
||||
"resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.0.11.tgz",
|
||||
"integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=",
|
||||
"dev": true
|
||||
"integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0="
|
||||
},
|
||||
"object.omit": {
|
||||
"version": "2.0.1",
|
||||
@@ -6619,14 +6772,7 @@
|
||||
"resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
|
||||
"integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
|
||||
"requires": {
|
||||
"@types/node": "8.5.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"@types/node": {
|
||||
"version": "8.5.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-8.5.2.tgz",
|
||||
"integrity": "sha512-KA4GKOpgXnrqEH2eCVhiv2CsxgXGQJgV1X0vsGlh+WCnxbeAE1GT44ZsTU1IN5dEeV/gDupKa7gWo08V5IxWVQ=="
|
||||
}
|
||||
"@types/node": "6.0.95"
|
||||
}
|
||||
},
|
||||
"parsejson": {
|
||||
@@ -7575,6 +7721,11 @@
|
||||
"utila": "0.4.0"
|
||||
}
|
||||
},
|
||||
"private": {
|
||||
"version": "0.1.8",
|
||||
"resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
|
||||
"integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg=="
|
||||
},
|
||||
"process": {
|
||||
"version": "0.11.10",
|
||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||
@@ -7910,6 +8061,24 @@
|
||||
"set-immediate-shim": "1.0.1"
|
||||
}
|
||||
},
|
||||
"recast": {
|
||||
"version": "0.10.43",
|
||||
"resolved": "https://registry.npmjs.org/recast/-/recast-0.10.43.tgz",
|
||||
"integrity": "sha1-uV1Q9tYHYaX2JS4V2AZ4FoSRzn8=",
|
||||
"requires": {
|
||||
"ast-types": "0.8.15",
|
||||
"esprima-fb": "15001.1001.0-dev-harmony-fb",
|
||||
"private": "0.1.8",
|
||||
"source-map": "0.5.7"
|
||||
},
|
||||
"dependencies": {
|
||||
"esprima-fb": {
|
||||
"version": "15001.1001.0-dev-harmony-fb",
|
||||
"resolved": "https://registry.npmjs.org/esprima-fb/-/esprima-fb-15001.1001.0-dev-harmony-fb.tgz",
|
||||
"integrity": "sha1-Q761fsJujPI3092LM+QlM1d/Jlk="
|
||||
}
|
||||
}
|
||||
},
|
||||
"redent": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
|
||||
@@ -8230,9 +8399,9 @@
|
||||
}
|
||||
},
|
||||
"rxjs": {
|
||||
"version": "5.5.5",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.5.tgz",
|
||||
"integrity": "sha512-D/MfQnPMBk8P8gfwGxvCkuaWBcG58W7dUMT//URPoYzIbDEKT0GezdirkK5whMgKFBATfCoTpxO8bJQGJ04W5A==",
|
||||
"version": "5.5.6",
|
||||
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.6.tgz",
|
||||
"integrity": "sha512-v4Q5HDC0FHAQ7zcBX7T2IL6O5ltl1a2GX4ENjPXg6SjDY69Cmx9v4113C99a4wGF16ClPv5Z8mghuYorVkg/kg==",
|
||||
"requires": {
|
||||
"symbol-observable": "1.0.1"
|
||||
}
|
||||
@@ -9087,17 +9256,38 @@
|
||||
"through": {
|
||||
"version": "2.3.8",
|
||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=",
|
||||
"dev": true
|
||||
"integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
|
||||
},
|
||||
"through2": {
|
||||
"version": "2.0.3",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.3.tgz",
|
||||
"integrity": "sha1-AARWmzfHx0ujnEPzzteNGtlBQL4=",
|
||||
"dev": true,
|
||||
"version": "0.6.5",
|
||||
"resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz",
|
||||
"integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=",
|
||||
"requires": {
|
||||
"readable-stream": "2.3.3",
|
||||
"readable-stream": "1.0.34",
|
||||
"xtend": "4.0.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"isarray": {
|
||||
"version": "0.0.1",
|
||||
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
|
||||
"integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "1.0.34",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
|
||||
"integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
|
||||
"requires": {
|
||||
"core-util-is": "1.0.2",
|
||||
"inherits": "2.0.3",
|
||||
"isarray": "0.0.1",
|
||||
"string_decoder": "0.10.31"
|
||||
}
|
||||
},
|
||||
"string_decoder": {
|
||||
"version": "0.10.31",
|
||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
|
||||
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
|
||||
}
|
||||
}
|
||||
},
|
||||
"thunky": {
|
||||
@@ -9474,6 +9664,16 @@
|
||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
|
||||
"dev": true
|
||||
},
|
||||
"unreachable-branch-transform": {
|
||||
"version": "0.3.0",
|
||||
"resolved": "https://registry.npmjs.org/unreachable-branch-transform/-/unreachable-branch-transform-0.3.0.tgz",
|
||||
"integrity": "sha1-2ZzExudG0mSSiEW2EdtUsPNHTKo=",
|
||||
"requires": {
|
||||
"esmangle-evaluator": "1.0.1",
|
||||
"recast": "0.10.43",
|
||||
"through2": "0.6.5"
|
||||
}
|
||||
},
|
||||
"upper-case": {
|
||||
"version": "1.1.3",
|
||||
"resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
|
||||
@@ -10338,8 +10538,7 @@
|
||||
"xtend": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
|
||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
|
||||
"dev": true
|
||||
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
|
||||
},
|
||||
"xxhashjs": {
|
||||
"version": "0.2.1",
|
||||
|
||||
@@ -21,8 +21,14 @@
|
||||
"@angular/platform-browser": "^5.0.0",
|
||||
"@angular/platform-browser-dynamic": "^5.0.0",
|
||||
"@angular/router": "^5.0.0",
|
||||
"@ionic-native/core": "^4.3.1",
|
||||
"@ionic-native/in-app-browser": "^4.3.1",
|
||||
"@ionic-native/splash-screen": "^4.3.1",
|
||||
"@ionic-native/status-bar": "^4.3.1",
|
||||
"@ionic/angular": "next",
|
||||
"@ionic/core": "next",
|
||||
"@ionic/storage": "2.1.3",
|
||||
"@stencil/core": "^0.1.1-0",
|
||||
"core-js": "^2.4.1",
|
||||
"rxjs": "^5.5.2",
|
||||
"zone.js": "^0.8.14"
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
<ion-app>
|
||||
Hello World
|
||||
<ion-nav [root]="rootPage" #content swipeBackEnabled="false" main name="app"></ion-nav>
|
||||
</ion-app>
|
||||
@@ -1,10 +1,12 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
import { TabsPage } from '../pages/tabs-page/tabs-page';
|
||||
|
||||
@Component({
|
||||
selector: 'app-root',
|
||||
templateUrl: './app.component.html',
|
||||
styleUrls: ['./app.component.css']
|
||||
styleUrls: ['./app.component.scss']
|
||||
})
|
||||
export class AppComponent {
|
||||
title = 'app';
|
||||
rootPage = TabsPage;
|
||||
}
|
||||
|
||||
@@ -1,16 +1,35 @@
|
||||
import { BrowserModule, } from '@angular/platform-browser';
|
||||
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
|
||||
|
||||
import { IonicAngularModule } from '@ionic/angular';
|
||||
import { IonicStorageModule } from '@ionic/storage';
|
||||
|
||||
import { AppComponent } from './app.component';
|
||||
|
||||
import { AboutPage } from '../pages/about/about';
|
||||
import { PopoverPage } from '../pages/about-popover/about-popover';
|
||||
import { MapPage } from '../pages/map/map';
|
||||
import { TabsPage } from '../pages/tabs-page/tabs-page';
|
||||
|
||||
|
||||
@NgModule({
|
||||
declarations: [
|
||||
AppComponent
|
||||
AboutPage,
|
||||
AppComponent,
|
||||
MapPage,
|
||||
PopoverPage,
|
||||
TabsPage
|
||||
],
|
||||
entryComponents: [
|
||||
AboutPage,
|
||||
MapPage,
|
||||
PopoverPage,
|
||||
TabsPage
|
||||
],
|
||||
imports: [
|
||||
BrowserModule
|
||||
BrowserModule,
|
||||
IonicAngularModule.forRoot(),
|
||||
IonicStorageModule.forRoot()
|
||||
],
|
||||
providers: [],
|
||||
bootstrap: [AppComponent],
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="icon" type="image/x-icon" href="favicon.ico">
|
||||
<script src="ionic/core/ionic.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
<app-root></app-root>
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
|
||||
export interface UserOptions {
|
||||
username: string;
|
||||
password: string;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
import { PublicNav } from '@ionic/core';
|
||||
import { App } from '@ionic/angular';
|
||||
|
||||
|
||||
@Component({
|
||||
template: `
|
||||
<ion-list>
|
||||
<button ion-item (click)="close('http://ionicframework.com/docs/v2/getting-started')">Learn Ionic</button>
|
||||
<button ion-item (click)="close('http://ionicframework.com/docs/v2')">Documentation</button>
|
||||
<button ion-item (click)="close('http://showcase.ionicframework.com')">Showcase</button>
|
||||
<button ion-item (click)="close('https://github.com/ionic-team/ionic')">GitHub Repo</button>
|
||||
<button ion-item (click)="support()">Support</button>
|
||||
</ion-list>
|
||||
`
|
||||
})
|
||||
export class PopoverPage {
|
||||
|
||||
constructor(public app: App) { }
|
||||
|
||||
support() {
|
||||
(this.app.getRootNavs()[0] as PublicNav).push('SupportPage');
|
||||
// this.viewCtrl.dismiss();
|
||||
}
|
||||
|
||||
close(url: string) {
|
||||
window.open(url, '_blank');
|
||||
// this.viewCtrl.dismiss();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<ion-header>
|
||||
<ion-toolbar>
|
||||
<button ion-button menuToggle>
|
||||
<ion-icon name="menu"></ion-icon>
|
||||
</button>
|
||||
<ion-title>About</ion-title>
|
||||
<ion-buttons end>
|
||||
<button ion-button icon-only (click)="presentPopover($event)">
|
||||
<ion-icon name="more"></ion-icon>
|
||||
</button>
|
||||
</ion-buttons>
|
||||
</ion-toolbar>
|
||||
</ion-header>
|
||||
|
||||
<ion-content>
|
||||
<div class="about-header">
|
||||
<img src="assets/img/ionic-logo-white.svg" alt="ionic logo">
|
||||
</div>
|
||||
<div padding class="about-info">
|
||||
<h4>Ionic Conference</h4>
|
||||
|
||||
<ion-list no-lines>
|
||||
<ion-item>
|
||||
<ion-icon name="calendar" item-start></ion-icon>
|
||||
<ion-label>Date</ion-label>
|
||||
<ion-datetime displayFormat="MMM DD, YYYY" max="2056" [(ngModel)]="conferenceDate"></ion-datetime>
|
||||
</ion-item>
|
||||
|
||||
<ion-item>
|
||||
<ion-icon name="pin" item-start></ion-icon>
|
||||
<ion-label>Location</ion-label>
|
||||
<ion-select>
|
||||
<ion-option value="madison" selected>Madison, WI</ion-option>
|
||||
<ion-option value="austin">Austin, TX</ion-option>
|
||||
<ion-option value="chicago">Chicago, IL</ion-option>
|
||||
<ion-option value="seattle">Seattle, WA</ion-option>
|
||||
</ion-select>
|
||||
</ion-item>
|
||||
</ion-list>
|
||||
|
||||
<p>
|
||||
The Ionic Conference is a one-day conference featuring talks from the
|
||||
Ionic team. It is focused on Ionic applications being built with
|
||||
Ionic 2. This includes migrating apps from Ionic 1 to Ionic 2,
|
||||
Angular concepts, Webpack, Sass, and many other technologies used
|
||||
in Ionic 2. Tickets are completely sold out, and we’re expecting
|
||||
more than 1000 developers – making this the largest Ionic
|
||||
conference ever!
|
||||
</p>
|
||||
</div>
|
||||
</ion-content>
|
||||
@@ -0,0 +1,40 @@
|
||||
.about-header {
|
||||
background-color: #434954;
|
||||
padding: 16px;
|
||||
width: 100%;
|
||||
min-height: 150px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.about-header img {
|
||||
max-width: 200px;
|
||||
min-height: 115px;
|
||||
margin-left: -15px;
|
||||
padding: 25px 0 20px 0;
|
||||
}
|
||||
|
||||
.about-info p {
|
||||
color: #697072;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.about-info ion-icon {
|
||||
color: color($colors, primary);
|
||||
width: 20px;
|
||||
}
|
||||
|
||||
.md,
|
||||
.wp {
|
||||
.about-info [text-right] {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.ios .about-info {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.ios .about-info ion-icon {
|
||||
width: auto;
|
||||
margin-right: 10px;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
import { Component } from '@angular/core';
|
||||
import { PopoverController } from '@ionic/angular';
|
||||
|
||||
import { PopoverPage } from '../about-popover/about-popover';
|
||||
|
||||
@Component({
|
||||
selector: 'page-about',
|
||||
templateUrl: 'about.html',
|
||||
styleUrls: ['./about.scss']
|
||||
})
|
||||
export class AboutPage {
|
||||
conferenceDate = '2047-05-17';
|
||||
|
||||
constructor(public popoverCtrl: PopoverController) { }
|
||||
|
||||
presentPopover(event: Event) {
|
||||
const popover = this.popoverCtrl.create(PopoverPage);
|
||||
popover.present({ ev: event });
|
||||
}
|
||||
}
|
||||
12
packages/demos/conference-app/angular/src/pages/map/map.html
Normal file
12
packages/demos/conference-app/angular/src/pages/map/map.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<ion-header>
|
||||
<ion-toolbar>
|
||||
<button ion-button menuToggle>
|
||||
<ion-icon name="menu"></ion-icon>
|
||||
</button>
|
||||
<ion-title>Map</ion-title>
|
||||
</ion-toolbar>
|
||||
</ion-header>
|
||||
|
||||
<ion-content class="map-page">
|
||||
<div style="height: 100%; width: 100%" #mapCanvas id="map_canvas"></div>
|
||||
</ion-content>
|
||||
31
packages/demos/conference-app/angular/src/pages/map/map.scss
Normal file
31
packages/demos/conference-app/angular/src/pages/map/map.scss
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
page-map ion-content {
|
||||
background: rgb(229, 227, 223);
|
||||
}
|
||||
|
||||
page-map {
|
||||
#map_canvas {
|
||||
height: 500px;
|
||||
width: 320px;
|
||||
background-color : transparent;
|
||||
}
|
||||
}
|
||||
|
||||
page-map ion-content {
|
||||
background: rgb(229, 227, 223);
|
||||
}
|
||||
|
||||
page-map #map_canvas {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0;
|
||||
transition: opacity 150ms ease-in
|
||||
}
|
||||
|
||||
page-map #map_canvas.show-map {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
ion-app._gmaps_cdv_ .nav-decor{
|
||||
background-color: transparent !important;
|
||||
}
|
||||
51
packages/demos/conference-app/angular/src/pages/map/map.ts
Normal file
51
packages/demos/conference-app/angular/src/pages/map/map.ts
Normal file
@@ -0,0 +1,51 @@
|
||||
import { Component, ViewChild, ElementRef } from '@angular/core';
|
||||
|
||||
import { ConferenceData } from '../../providers/conference-data';
|
||||
|
||||
declare var google: any;
|
||||
|
||||
|
||||
@Component({
|
||||
selector: 'page-map',
|
||||
templateUrl: 'map.html',
|
||||
styleUrls: ['./map.scss']
|
||||
})
|
||||
export class MapPage {
|
||||
|
||||
@ViewChild('mapCanvas') mapElement: ElementRef;
|
||||
constructor(public confData: ConferenceData) {
|
||||
}
|
||||
|
||||
ionViewDidLoad() {
|
||||
|
||||
this.confData.getMap().subscribe((mapData: any) => {
|
||||
const mapEle = this.mapElement.nativeElement;
|
||||
|
||||
const map = new google.maps.Map(mapEle, {
|
||||
center: mapData.find((d: any) => d.center),
|
||||
zoom: 16
|
||||
});
|
||||
|
||||
mapData.forEach((markerData: any) => {
|
||||
const infoWindow = new google.maps.InfoWindow({
|
||||
content: `<h5>${markerData.name}</h5>`
|
||||
});
|
||||
|
||||
const marker = new google.maps.Marker({
|
||||
position: markerData,
|
||||
map: map,
|
||||
title: markerData.name
|
||||
});
|
||||
|
||||
marker.addListener('click', () => {
|
||||
infoWindow.open(map, marker);
|
||||
});
|
||||
});
|
||||
|
||||
google.maps.event.addListenerOnce(map, 'idle', () => {
|
||||
mapEle.classList.add('show-map');
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
<ion-tabs name="conference">
|
||||
<ion-tab title="Schedule" icon="calendar">
|
||||
<ion-nav [root]="tab1Root"></ion-nav>
|
||||
</ion-tab>
|
||||
<ion-tab title="Speakers" icon="contacts">
|
||||
<ion-nav [root]="tab2Root"></ion-nav>
|
||||
</ion-tab>
|
||||
<ion-tab title="Map" icon="map">
|
||||
<ion-nav [root]="tab3Root"></ion-nav>
|
||||
</ion-tab>
|
||||
<ion-tab title="About" icon="information-circle">
|
||||
<ion-nav [root]="tab4Root"></ion-nav>
|
||||
</ion-tab>
|
||||
</ion-tabs>
|
||||
@@ -0,0 +1,7 @@
|
||||
.tabbar {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.tab-button {
|
||||
max-width: 200px;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
import { Component } from '@angular/core';
|
||||
|
||||
import { AboutPage } from '../about/about';
|
||||
import { MapPage } from '../map/map';
|
||||
// import { SchedulePage } from '../schedule/schedule';
|
||||
// import { SpeakerListPage } from '../speaker-list/speaker-list';
|
||||
|
||||
@Component({
|
||||
templateUrl: 'tabs-page.html'
|
||||
})
|
||||
export class TabsPage {
|
||||
// set the root pages for each tab
|
||||
tab1Root: any = AboutPage;
|
||||
tab2Root: any = AboutPage;
|
||||
tab3Root: any = MapPage;
|
||||
tab4Root: any = AboutPage;
|
||||
mySelectedIndex: number;
|
||||
|
||||
/*constructor(navParams: NavParams) {
|
||||
this.mySelectedIndex = navParams.data.tabIndex || 0;
|
||||
}
|
||||
*/
|
||||
|
||||
constructor() {
|
||||
this.mySelectedIndex = 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,155 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
import { Http } from '@angular/http';
|
||||
|
||||
import { UserData } from './user-data';
|
||||
|
||||
import { Observable } from 'rxjs/Observable';
|
||||
import 'rxjs/add/operator/map';
|
||||
import 'rxjs/add/observable/of';
|
||||
|
||||
|
||||
@Injectable()
|
||||
export class ConferenceData {
|
||||
data: any;
|
||||
|
||||
constructor(public http: Http, public user: UserData) { }
|
||||
|
||||
load(): any {
|
||||
if (this.data) {
|
||||
return Observable.of(this.data);
|
||||
} else {
|
||||
return this.http.get('assets/data/data.json')
|
||||
.map(this.processData, this);
|
||||
}
|
||||
}
|
||||
|
||||
processData(data: any) {
|
||||
// just some good 'ol JS fun with objects and arrays
|
||||
// build up the data by linking speakers to sessions
|
||||
this.data = data.json();
|
||||
|
||||
this.data.tracks = [];
|
||||
|
||||
// loop through each day in the schedule
|
||||
this.data.schedule.forEach((day: any) => {
|
||||
// loop through each timeline group in the day
|
||||
day.groups.forEach((group: any) => {
|
||||
// loop through each session in the timeline group
|
||||
group.sessions.forEach((session: any) => {
|
||||
session.speakers = [];
|
||||
if (session.speakerNames) {
|
||||
session.speakerNames.forEach((speakerName: any) => {
|
||||
const speaker = this.data.speakers.find((s: any) => s.name === speakerName);
|
||||
if (speaker) {
|
||||
session.speakers.push(speaker);
|
||||
speaker.sessions = speaker.sessions || [];
|
||||
speaker.sessions.push(session);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (session.tracks) {
|
||||
session.tracks.forEach((track: any) => {
|
||||
if (this.data.tracks.indexOf(track) < 0) {
|
||||
this.data.tracks.push(track);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
return this.data;
|
||||
}
|
||||
|
||||
getTimeline(dayIndex: number, queryText = '', excludeTracks: any[] = [], segment = 'all') {
|
||||
return this.load().map((data: any) => {
|
||||
const day = data.schedule[dayIndex];
|
||||
day.shownSessions = 0;
|
||||
|
||||
queryText = queryText.toLowerCase().replace(/,|\.|-/g, ' ');
|
||||
const queryWords = queryText.split(' ').filter(w => !!w.trim().length);
|
||||
|
||||
day.groups.forEach((group: any) => {
|
||||
group.hide = true;
|
||||
|
||||
group.sessions.forEach((session: any) => {
|
||||
// check if this session should show or not
|
||||
this.filterSession(session, queryWords, excludeTracks, segment);
|
||||
|
||||
if (!session.hide) {
|
||||
// if this session is not hidden then this group should show
|
||||
group.hide = false;
|
||||
day.shownSessions++;
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
return day;
|
||||
});
|
||||
}
|
||||
|
||||
filterSession(session: any, queryWords: string[], excludeTracks: any[], segment: string) {
|
||||
|
||||
let matchesQueryText = false;
|
||||
if (queryWords.length) {
|
||||
// of any query word is in the session name than it passes the query test
|
||||
queryWords.forEach((queryWord: string) => {
|
||||
if (session.name.toLowerCase().indexOf(queryWord) > -1) {
|
||||
matchesQueryText = true;
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// if there are no query words then this session passes the query test
|
||||
matchesQueryText = true;
|
||||
}
|
||||
|
||||
// if any of the sessions tracks are not in the
|
||||
// exclude tracks then this session passes the track test
|
||||
let matchesTracks = false;
|
||||
session.tracks.forEach((trackName: string) => {
|
||||
if (excludeTracks.indexOf(trackName) === -1) {
|
||||
matchesTracks = true;
|
||||
}
|
||||
});
|
||||
|
||||
// if the segement is 'favorites', but session is not a user favorite
|
||||
// then this session does not pass the segment test
|
||||
let matchesSegment = false;
|
||||
if (segment === 'favorites') {
|
||||
if (this.user.hasFavorite(session.name)) {
|
||||
matchesSegment = true;
|
||||
}
|
||||
} else {
|
||||
matchesSegment = true;
|
||||
}
|
||||
|
||||
// all tests must be true if it should not be hidden
|
||||
session.hide = !(matchesQueryText && matchesTracks && matchesSegment);
|
||||
}
|
||||
|
||||
getSpeakers() {
|
||||
return this.load().map((data: any) => {
|
||||
return data.speakers.sort((a: any, b: any) => {
|
||||
const aName = a.name.split(' ').pop();
|
||||
const bName = b.name.split(' ').pop();
|
||||
return aName.localeCompare(bName);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
getTracks() {
|
||||
return this.load().map((data: any) => {
|
||||
return data.tracks.sort();
|
||||
});
|
||||
}
|
||||
|
||||
getMap() {
|
||||
return this.load().map((data: any) => {
|
||||
return data.map;
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,72 @@
|
||||
import { Injectable } from '@angular/core';
|
||||
|
||||
import { Events } from '@ionic/angular';
|
||||
import { Storage } from '@ionic/storage';
|
||||
|
||||
|
||||
@Injectable()
|
||||
export class UserData {
|
||||
_favorites: string[] = [];
|
||||
HAS_LOGGED_IN = 'hasLoggedIn';
|
||||
HAS_SEEN_TUTORIAL = 'hasSeenTutorial';
|
||||
|
||||
constructor(
|
||||
public events: Events,
|
||||
public storage: Storage
|
||||
) {}
|
||||
|
||||
hasFavorite(sessionName: string): boolean {
|
||||
return (this._favorites.indexOf(sessionName) > -1);
|
||||
}
|
||||
|
||||
addFavorite(sessionName: string): void {
|
||||
this._favorites.push(sessionName);
|
||||
}
|
||||
|
||||
removeFavorite(sessionName: string): void {
|
||||
const index = this._favorites.indexOf(sessionName);
|
||||
if (index > -1) {
|
||||
this._favorites.splice(index, 1);
|
||||
}
|
||||
}
|
||||
|
||||
login(username: string): void {
|
||||
this.storage.set(this.HAS_LOGGED_IN, true);
|
||||
this.setUsername(username);
|
||||
this.events.publish('user:login');
|
||||
}
|
||||
|
||||
signup(username: string): void {
|
||||
this.storage.set(this.HAS_LOGGED_IN, true);
|
||||
this.setUsername(username);
|
||||
this.events.publish('user:signup');
|
||||
}
|
||||
|
||||
logout(): void {
|
||||
this.storage.remove(this.HAS_LOGGED_IN);
|
||||
this.storage.remove('username');
|
||||
this.events.publish('user:logout');
|
||||
}
|
||||
|
||||
setUsername(username: string): void {
|
||||
this.storage.set('username', username);
|
||||
}
|
||||
|
||||
getUsername(): Promise<string> {
|
||||
return this.storage.get('username').then((value) => {
|
||||
return value;
|
||||
});
|
||||
}
|
||||
|
||||
hasLoggedIn(): Promise<boolean> {
|
||||
return this.storage.get(this.HAS_LOGGED_IN).then((value) => {
|
||||
return value === true;
|
||||
});
|
||||
}
|
||||
|
||||
checkHasSeenTutorial(): Promise<string> {
|
||||
return this.storage.get(this.HAS_SEEN_TUTORIAL).then((value) => {
|
||||
return value;
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,5 @@
|
||||
{
|
||||
"rulesDirectory": [
|
||||
"node_modules/codelyzer"
|
||||
],
|
||||
"rules": {
|
||||
"arrow-return-shorthand": true,
|
||||
|
||||
Reference in New Issue
Block a user