Commit ddc1123b by Nabil Sadki

Merge branch 'v1.1.1.0' into v1.1.2.0

parents fccfd0f7 d5c1aa47
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget android-versionCode="11000" id="com.allotesteurs.app" version="1.1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0"> <widget android-versionCode="11000" id="com.allotesteurs.app" version="1.1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>Allo Testeurs</name> <name>Allo Testeurs</name>
<description>Découvrir les bon plans à Kénitra et ailleurs!</description> <description>Découvrir les bon plans à Kénitra et ailleurs!</description>
<author email="contact@allo-testeurs.com" href="https://www.allo-testeurs.com">Allo Testeurs Agency</author> <author email="contact@allo-testeurs.com" href="https://www.allo-testeurs.com">Allo Testeurs Agency</author>
<content src="index.html" /> <content src="index.html" />
<access origin="*" /> <access origin="*" />
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application">
<application android:usesCleartextTraffic="true" />
</edit-config>
<allow-navigation href="*" />
<allow-intent href="http://*/*" /> <allow-intent href="http://*/*" />
<allow-intent href="https://*/*" /> <allow-intent href="https://*/*" />
<allow-navigation href="http://*/*" /> <allow-navigation href="http://*/*" />
......
...@@ -455,6 +455,11 @@ ...@@ -455,6 +455,11 @@
"tslib": "^1.9.0" "tslib": "^1.9.0"
} }
}, },
"@angular/fire": {
"version": "5.2.1",
"resolved": "https://registry.npmjs.org/@angular/fire/-/fire-5.2.1.tgz",
"integrity": "sha512-pS4zWhLLANzMbYVIKNtebDQKhm9+KANUDvDV6DwKP24XHzkZdvazKe1HC6uXWlf7QmDxSPFleCSBkn0tnQQzdQ=="
},
"@angular/forms": { "@angular/forms": {
"version": "7.2.15", "version": "7.2.15",
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.15.tgz", "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-7.2.15.tgz",
...@@ -644,6 +649,214 @@ ...@@ -644,6 +649,214 @@
} }
} }
}, },
"@firebase/app": {
"version": "0.4.16",
"resolved": "https://registry.npmjs.org/@firebase/app/-/app-0.4.16.tgz",
"integrity": "sha512-4aa6ixQlV6xQxj4HbwFKrfYZnnKk8AtB/vEEuIaBCGQYBvV287OVNCozXd4CC4Q4I4Vtkzrc+kggahYFl8nDWQ==",
"requires": {
"@firebase/app-types": "0.4.3",
"@firebase/logger": "0.1.24",
"@firebase/util": "0.2.27",
"dom-storage": "2.1.0",
"tslib": "1.10.0",
"xmlhttprequest": "1.8.0"
}
},
"@firebase/app-types": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@firebase/app-types/-/app-types-0.4.3.tgz",
"integrity": "sha512-VU5c+ZjejvefLVH4cjiX3Hy1w9HYMv7TtZ1tF9ZmOqT4DSIU1a3VISWoo8///cGGffr5IirMO+Q/WZLI4p8VcA=="
},
"@firebase/auth": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/@firebase/auth/-/auth-0.12.0.tgz",
"integrity": "sha512-DGYvAmz2aUmrWYS3ADw/UmsuicxJi6G+X38XITqNPUrd1YxmM5SBzX19oEb9WCrJZXcr4JaESg6hQkT2yEPaCA==",
"requires": {
"@firebase/auth-types": "0.8.0"
}
},
"@firebase/auth-types": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/@firebase/auth-types/-/auth-types-0.8.0.tgz",
"integrity": "sha512-foQHhvyB0RR+mb/+wmHXd/VOU+D8fruFEW1k79Q9wzyTPpovMBa1Mcns5fwEWBhUfi8bmoEtaGB8RSAHnTFzTg=="
},
"@firebase/database": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/@firebase/database/-/database-0.5.3.tgz",
"integrity": "sha512-TFjQ/M0T4jO24jAMU5cZAHNk3ndNfeNtGKe5PL4o/YrGYJHg3XaE2LKzU/vFrXUFLnLxqbETzXjFa4hTA6cDUg==",
"requires": {
"@firebase/database-types": "0.4.3",
"@firebase/logger": "0.1.24",
"@firebase/util": "0.2.27",
"faye-websocket": "0.11.3",
"tslib": "1.10.0"
},
"dependencies": {
"faye-websocket": {
"version": "0.11.3",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
"integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
"requires": {
"websocket-driver": ">=0.5.1"
}
}
}
},
"@firebase/database-types": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/@firebase/database-types/-/database-types-0.4.3.tgz",
"integrity": "sha512-21yCiJA2Tyt6dJYwWeB69MwoawBu5UWNtP6MAY0ugyRBHVdjAMHMYalPxCjZ46LAmhfim0+i8NXRadOFVS3hUA==",
"requires": {
"@firebase/app-types": "0.x"
}
},
"@firebase/firestore": {
"version": "1.5.2",
"resolved": "https://registry.npmjs.org/@firebase/firestore/-/firestore-1.5.2.tgz",
"integrity": "sha512-CPYLvkGZBKE47oQC9a0q13UMVRj3LvnSbB1nOerktE3CGRHKy44LxDumamN8Kj067hV/80mKK9FdbeUufwO/Rg==",
"requires": {
"@firebase/firestore-types": "1.5.0",
"@firebase/logger": "0.1.24",
"@firebase/util": "0.2.27",
"@firebase/webchannel-wrapper": "0.2.26",
"@grpc/proto-loader": "^0.5.0",
"grpc": "1.23.3",
"tslib": "1.10.0"
}
},
"@firebase/firestore-types": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/@firebase/firestore-types/-/firestore-types-1.5.0.tgz",
"integrity": "sha512-VhRHNbEbak+R2iK8e1ir2Lec7eaHMZpGTRy6LMtzATYthlkwNHF9tO8JU8l6d1/kYkI4+DWzX++i3HhTziHEWA=="
},
"@firebase/functions": {
"version": "0.4.17",
"resolved": "https://registry.npmjs.org/@firebase/functions/-/functions-0.4.17.tgz",
"integrity": "sha512-heWMXrR3hgvQNe1JEZMUeY7a0QFLMVwVS+lzLq/lzk06bj22X9bJy7Yct+/P9P1ftnsCGLrhk3jAEuL78seoqg==",
"requires": {
"@firebase/functions-types": "0.3.8",
"@firebase/messaging-types": "0.3.2",
"isomorphic-fetch": "2.2.1",
"tslib": "1.10.0"
}
},
"@firebase/functions-types": {
"version": "0.3.8",
"resolved": "https://registry.npmjs.org/@firebase/functions-types/-/functions-types-0.3.8.tgz",
"integrity": "sha512-9hajHxA4UWVCGFmoL8PBYHpamE3JTNjObieMmnvZw3cMRTP2EwipMpzZi+GPbMlA/9swF9yHCY/XFAEkwbvdgQ=="
},
"@firebase/installations": {
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/@firebase/installations/-/installations-0.2.6.tgz",
"integrity": "sha512-hkuKmBtnsmqIfWxt9KyaN+cP574pfTcB81IG5tnmVcgP1xQ4hyQ9LRP0M7jDTGWMw272TInBzUuaM05xw9GMnA==",
"requires": {
"@firebase/installations-types": "0.1.2",
"@firebase/util": "0.2.27",
"idb": "3.0.2",
"tslib": "1.10.0"
}
},
"@firebase/installations-types": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@firebase/installations-types/-/installations-types-0.1.2.tgz",
"integrity": "sha512-fQaWIW8hyX1XUN7+FCSPjvM1agFjGidVuF4Sxi7aFwfyh5t+4fD2VpM4wCQbWmodnx4fZLvsuQd9mkxxU+lGYQ=="
},
"@firebase/logger": {
"version": "0.1.24",
"resolved": "https://registry.npmjs.org/@firebase/logger/-/logger-0.1.24.tgz",
"integrity": "sha512-wPwhWCepEjWiTIqeC9U+7Hcw4XwezKPdXmyXbYSPiWNDcVekNgMPkntwSK+/2ufJO/1nMwAL2n6fL12oQG/PpQ=="
},
"@firebase/messaging": {
"version": "0.4.10",
"resolved": "https://registry.npmjs.org/@firebase/messaging/-/messaging-0.4.10.tgz",
"integrity": "sha512-WqtSqlulV2ix4MZ3r1HwGAEj0DiEWtpNCSPh5wOXZsj8Kd01Q2QPTLUtUWmwXSV9WCQWnowfE2x8wjq5388ixw==",
"requires": {
"@firebase/messaging-types": "0.3.2",
"@firebase/util": "0.2.27",
"tslib": "1.10.0"
}
},
"@firebase/messaging-types": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/@firebase/messaging-types/-/messaging-types-0.3.2.tgz",
"integrity": "sha512-2qa2qNKqpalmtwaUV3+wQqfCm5myP/dViIBv+pXF8HinemIfO1IPQtr9pCNfsSYyus78qEhtfldnPWXxUH5v0w=="
},
"@firebase/performance": {
"version": "0.2.18",
"resolved": "https://registry.npmjs.org/@firebase/performance/-/performance-0.2.18.tgz",
"integrity": "sha512-PcN+nTPaMGqODfwAXgwbaCvcxXH+YzvK6UpZzm0Bl9wmW28/oJipnUxF3cYbVGCiaLAaByIPVSIF22XhTOjUtA==",
"requires": {
"@firebase/installations": "0.2.6",
"@firebase/logger": "0.1.24",
"@firebase/performance-types": "0.0.3",
"@firebase/util": "0.2.27",
"tslib": "1.10.0"
}
},
"@firebase/performance-types": {
"version": "0.0.3",
"resolved": "https://registry.npmjs.org/@firebase/performance-types/-/performance-types-0.0.3.tgz",
"integrity": "sha512-RuC63nYJPJU65AsrNMc3fTRcRgHiyNcQLh9ufeKUT1mEsFgpxr167gMb+tpzNU4jsbvM6+c6nQAFdHpqcGkRlQ=="
},
"@firebase/polyfill": {
"version": "0.3.21",
"resolved": "https://registry.npmjs.org/@firebase/polyfill/-/polyfill-0.3.21.tgz",
"integrity": "sha512-2mqS3FQHMhCGyfMGRsaZEypHSBD8hVmp9ZBnZSkn8hq5sSOLiNTFSC0FsvNu5z99GNsPQJFTui8bxcZl5cHQbw==",
"requires": {
"core-js": "3.2.1",
"promise-polyfill": "8.1.3",
"whatwg-fetch": "2.0.4"
},
"dependencies": {
"core-js": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/core-js/-/core-js-3.2.1.tgz",
"integrity": "sha512-Qa5XSVefSVPRxy2XfUC13WbvqkxhkwB3ve+pgCQveNgYzbM/UxZeu1dcOX/xr4UmfUd+muuvsaxilQzCyUurMw=="
},
"whatwg-fetch": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz",
"integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng=="
}
}
},
"@firebase/storage": {
"version": "0.3.11",
"resolved": "https://registry.npmjs.org/@firebase/storage/-/storage-0.3.11.tgz",
"integrity": "sha512-Q2ffXE+X62gFy5mZkg7qhzAC7+kqaNZWpgS+297h/hWr/cFBDyC8eBPmnI509eKi2okixmOMbWnNluZkNYNSfw==",
"requires": {
"@firebase/storage-types": "0.3.3",
"@firebase/util": "0.2.27",
"tslib": "1.10.0"
}
},
"@firebase/storage-types": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/@firebase/storage-types/-/storage-types-0.3.3.tgz",
"integrity": "sha512-fUp4kpbxwDiWs/aIBJqBvXgFHZvgoND2JA0gJYSEsXtWtVwfgzY/710plErgZDeQKopX5eOR1sHskZkQUy0U6w=="
},
"@firebase/util": {
"version": "0.2.27",
"resolved": "https://registry.npmjs.org/@firebase/util/-/util-0.2.27.tgz",
"integrity": "sha512-kFlbWNX1OuLfHrDXZ5QLmNNiLtMyxzbBgMo1DY1tXMjKK1AMYsHnyjInA8esvO0SCDp5XN3Pt9EDlhY4sRiLsw==",
"requires": {
"tslib": "1.10.0"
}
},
"@firebase/webchannel-wrapper": {
"version": "0.2.26",
"resolved": "https://registry.npmjs.org/@firebase/webchannel-wrapper/-/webchannel-wrapper-0.2.26.tgz",
"integrity": "sha512-VlTurkvs4v7EVFWESBZGOPghFEokQhU5au5CP9WqA8B2/PcQRDsaaQlQCA6VATuEnW+vtSiSBvTiOc4004f8xg=="
},
"@grpc/proto-loader": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.5.2.tgz",
"integrity": "sha512-eBKD/FPxQoY1x6QONW2nBd54QUEyzcFP9FenujmoeDPy1rutVSHki1s/wR68F6O1QfCNDx+ayBH1O2CVNMzyyw==",
"requires": {
"lodash.camelcase": "^4.3.0",
"protobufjs": "^6.8.6"
}
},
"@ionic-native/app-version": { "@ionic-native/app-version": {
"version": "5.11.0", "version": "5.11.0",
"resolved": "https://registry.npmjs.org/@ionic-native/app-version/-/app-version-5.11.0.tgz", "resolved": "https://registry.npmjs.org/@ionic-native/app-version/-/app-version-5.11.0.tgz",
...@@ -1136,6 +1349,60 @@ ...@@ -1136,6 +1349,60 @@
} }
} }
}, },
"@protobufjs/aspromise": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
"integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78="
},
"@protobufjs/base64": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz",
"integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg=="
},
"@protobufjs/codegen": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz",
"integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg=="
},
"@protobufjs/eventemitter": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz",
"integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A="
},
"@protobufjs/fetch": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz",
"integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=",
"requires": {
"@protobufjs/aspromise": "^1.1.1",
"@protobufjs/inquire": "^1.1.0"
}
},
"@protobufjs/float": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz",
"integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E="
},
"@protobufjs/inquire": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz",
"integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik="
},
"@protobufjs/path": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz",
"integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0="
},
"@protobufjs/pool": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz",
"integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q="
},
"@protobufjs/utf8": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz",
"integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA="
},
"@schematics/angular": { "@schematics/angular": {
"version": "7.3.9", "version": "7.3.9",
"resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.3.9.tgz", "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-7.3.9.tgz",
...@@ -1178,6 +1445,15 @@ ...@@ -1178,6 +1445,15 @@
} }
} }
}, },
"@types/bytebuffer": {
"version": "5.0.40",
"resolved": "https://registry.npmjs.org/@types/bytebuffer/-/bytebuffer-5.0.40.tgz",
"integrity": "sha512-h48dyzZrPMz25K6Q4+NCwWaxwXany2FhQg/ErOcdZS1ZpsaDnDMZg8JYLMTGz7uvXKrcKGJUZJlZObyfgdaN9g==",
"requires": {
"@types/long": "*",
"@types/node": "*"
}
},
"@types/cordova": { "@types/cordova": {
"version": "0.0.34", "version": "0.0.34",
"resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz", "resolved": "https://registry.npmjs.org/@types/cordova/-/cordova-0.0.34.tgz",
...@@ -1198,6 +1474,11 @@ ...@@ -1198,6 +1474,11 @@
"@types/jasmine": "*" "@types/jasmine": "*"
} }
}, },
"@types/long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.0.tgz",
"integrity": "sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q=="
},
"@types/node": { "@types/node": {
"version": "12.0.10", "version": "12.0.10",
"resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.10.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.10.tgz",
...@@ -1637,6 +1918,15 @@ ...@@ -1637,6 +1918,15 @@
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
}, },
"ascli": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/ascli/-/ascli-1.0.1.tgz",
"integrity": "sha1-vPpZdKYvGOgcq660lzKrSoj5Brw=",
"requires": {
"colour": "~0.7.1",
"optjs": "~3.2.2"
}
},
"asn1": { "asn1": {
"version": "0.2.4", "version": "0.2.4",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
...@@ -2242,6 +2532,21 @@ ...@@ -2242,6 +2532,21 @@
"resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz",
"integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=" "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og="
}, },
"bytebuffer": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/bytebuffer/-/bytebuffer-5.0.1.tgz",
"integrity": "sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0=",
"requires": {
"long": "~3"
},
"dependencies": {
"long": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/long/-/long-3.2.0.tgz",
"integrity": "sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s="
}
}
},
"bytes": { "bytes": {
"version": "3.0.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
...@@ -2550,6 +2855,11 @@ ...@@ -2550,6 +2855,11 @@
"resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
"integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=" "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM="
}, },
"colour": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/colour/-/colour-0.7.1.tgz",
"integrity": "sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g="
},
"combined-stream": { "combined-stream": {
"version": "1.0.8", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
...@@ -3312,6 +3622,11 @@ ...@@ -3312,6 +3622,11 @@
"void-elements": "^2.0.0" "void-elements": "^2.0.0"
} }
}, },
"dom-storage": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.1.0.tgz",
"integrity": "sha512-g6RpyWXzl0RR6OTElHKBl7nwnK87GUyZMYC7JWsB/IA73vpqK2K6LT39x4VepLxlSsWBFrPVLnsSR5Jyty0+2Q=="
},
"domain-browser": { "domain-browser": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
...@@ -3569,6 +3884,11 @@ ...@@ -3569,6 +3884,11 @@
"is-symbol": "^1.0.2" "is-symbol": "^1.0.2"
} }
}, },
"es6-object-assign": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/es6-object-assign/-/es6-object-assign-1.1.0.tgz",
"integrity": "sha1-wsNYJlYkfDnqEHyx5mUrb58kUjw="
},
"es6-promise": { "es6-promise": {
"version": "4.2.8", "version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
...@@ -3980,6 +4300,25 @@ ...@@ -3980,6 +4300,25 @@
"locate-path": "^2.0.0" "locate-path": "^2.0.0"
} }
}, },
"firebase": {
"version": "6.6.1",
"resolved": "https://registry.npmjs.org/firebase/-/firebase-6.6.1.tgz",
"integrity": "sha512-iXbHPIBRt04xYSjWffnARqZbc3vUc0RTnOHsMtAqaT7pqDWicaghEwj2WbCJ0+JLAiKnLNK7fTjW73zfKQSSoQ==",
"requires": {
"@firebase/app": "0.4.16",
"@firebase/app-types": "0.4.3",
"@firebase/auth": "0.12.0",
"@firebase/database": "0.5.3",
"@firebase/firestore": "1.5.2",
"@firebase/functions": "0.4.17",
"@firebase/installations": "0.2.6",
"@firebase/messaging": "0.4.10",
"@firebase/performance": "0.2.18",
"@firebase/polyfill": "0.3.21",
"@firebase/storage": "0.3.11",
"@firebase/util": "0.2.27"
}
},
"flatted": { "flatted": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz", "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.0.tgz",
...@@ -4368,7 +4707,599 @@ ...@@ -4368,7 +4707,599 @@
"node-pre-gyp": { "node-pre-gyp": {
"version": "0.12.0", "version": "0.12.0",
"bundled": true, "bundled": true,
"optional": true, "optional": true,
"requires": {
"detect-libc": "^1.0.2",
"mkdirp": "^0.5.1",
"needle": "^2.2.1",
"nopt": "^4.0.1",
"npm-packlist": "^1.1.6",
"npmlog": "^4.0.2",
"rc": "^1.2.7",
"rimraf": "^2.6.1",
"semver": "^5.3.0",
"tar": "^4"
}
},
"nopt": {
"version": "4.0.1",
"bundled": true,
"optional": true,
"requires": {
"abbrev": "1",
"osenv": "^0.1.4"
}
},
"npm-bundled": {
"version": "1.0.6",
"bundled": true,
"optional": true
},
"npm-packlist": {
"version": "1.4.1",
"bundled": true,
"optional": true,
"requires": {
"ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1"
}
},
"npmlog": {
"version": "4.1.2",
"bundled": true,
"optional": true,
"requires": {
"are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0",
"gauge": "~2.7.3",
"set-blocking": "~2.0.0"
}
},
"number-is-nan": {
"version": "1.0.1",
"bundled": true,
"optional": true
},
"object-assign": {
"version": "4.1.1",
"bundled": true,
"optional": true
},
"once": {
"version": "1.4.0",
"bundled": true,
"optional": true,
"requires": {
"wrappy": "1"
}
},
"os-homedir": {
"version": "1.0.2",
"bundled": true,
"optional": true
},
"os-tmpdir": {
"version": "1.0.2",
"bundled": true,
"optional": true
},
"osenv": {
"version": "0.1.5",
"bundled": true,
"optional": true,
"requires": {
"os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0"
}
},
"path-is-absolute": {
"version": "1.0.1",
"bundled": true,
"optional": true
},
"process-nextick-args": {
"version": "2.0.0",
"bundled": true,
"optional": true
},
"rc": {
"version": "1.2.8",
"bundled": true,
"optional": true,
"requires": {
"deep-extend": "^0.6.0",
"ini": "~1.3.0",
"minimist": "^1.2.0",
"strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true,
"optional": true
}
}
},
"readable-stream": {
"version": "2.3.6",
"bundled": true,
"optional": true,
"requires": {
"core-util-is": "~1.0.0",
"inherits": "~2.0.3",
"isarray": "~1.0.0",
"process-nextick-args": "~2.0.0",
"safe-buffer": "~5.1.1",
"string_decoder": "~1.1.1",
"util-deprecate": "~1.0.1"
}
},
"rimraf": {
"version": "2.6.3",
"bundled": true,
"optional": true,
"requires": {
"glob": "^7.1.3"
}
},
"safe-buffer": {
"version": "5.1.2",
"bundled": true,
"optional": true
},
"safer-buffer": {
"version": "2.1.2",
"bundled": true,
"optional": true
},
"sax": {
"version": "1.2.4",
"bundled": true,
"optional": true
},
"semver": {
"version": "5.7.0",
"bundled": true,
"optional": true
},
"set-blocking": {
"version": "2.0.0",
"bundled": true,
"optional": true
},
"signal-exit": {
"version": "3.0.2",
"bundled": true,
"optional": true
},
"string-width": {
"version": "1.0.2",
"bundled": true,
"optional": true,
"requires": {
"code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0",
"strip-ansi": "^3.0.0"
}
},
"string_decoder": {
"version": "1.1.1",
"bundled": true,
"optional": true,
"requires": {
"safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"bundled": true,
"optional": true,
"requires": {
"ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
"version": "2.0.1",
"bundled": true,
"optional": true
},
"tar": {
"version": "4.4.8",
"bundled": true,
"optional": true,
"requires": {
"chownr": "^1.1.1",
"fs-minipass": "^1.2.5",
"minipass": "^2.3.4",
"minizlib": "^1.1.1",
"mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2",
"yallist": "^3.0.2"
}
},
"util-deprecate": {
"version": "1.0.2",
"bundled": true,
"optional": true
},
"wide-align": {
"version": "1.1.3",
"bundled": true,
"optional": true,
"requires": {
"string-width": "^1.0.2 || 2"
}
},
"wrappy": {
"version": "1.0.2",
"bundled": true,
"optional": true
},
"yallist": {
"version": "3.0.3",
"bundled": true,
"optional": true
}
}
},
"fstream": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
}
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
},
"gauge": {
"version": "2.7.4",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"gaze": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"requires": {
"globule": "^1.0.0"
}
},
"genfun": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
"integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA=="
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
},
"get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
},
"get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
},
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"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"
}
},
"glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"requires": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
},
"dependencies": {
"is-glob": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"requires": {
"is-extglob": "^2.1.0"
}
}
}
},
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
},
"globby": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
"integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
"requires": {
"array-union": "^1.0.1",
"dir-glob": "^2.0.0",
"glob": "^7.1.2",
"ignore": "^3.3.5",
"pify": "^3.0.0",
"slash": "^1.0.0"
}
},
"globule": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
"integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
"requires": {
"glob": "~7.1.1",
"lodash": "~4.17.10",
"minimatch": "~3.0.2"
}
},
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"grpc": {
"version": "1.23.3",
"resolved": "https://registry.npmjs.org/grpc/-/grpc-1.23.3.tgz",
"integrity": "sha512-7vdzxPw9s5UYch4aUn4hyM5tMaouaxUUkwkgJlwbR4AXMxiYZJOv19N2ps2eKiuUbJovo5fnGF9hg/X91gWYjw==",
"requires": {
"@types/bytebuffer": "^5.0.40",
"lodash.camelcase": "^4.3.0",
"lodash.clone": "^4.5.0",
"nan": "^2.13.2",
"node-pre-gyp": "^0.13.0",
"protobufjs": "^5.0.3"
},
"dependencies": {
"abbrev": {
"version": "1.1.1",
"bundled": true
},
"ansi-regex": {
"version": "2.1.1",
"bundled": true
},
"aproba": {
"version": "1.2.0",
"bundled": true
},
"are-we-there-yet": {
"version": "1.1.5",
"bundled": true,
"requires": {
"delegates": "^1.0.0",
"readable-stream": "^2.0.6"
}
},
"balanced-match": {
"version": "1.0.0",
"bundled": true
},
"brace-expansion": {
"version": "1.1.11",
"bundled": true,
"requires": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"chownr": {
"version": "1.1.2",
"bundled": true
},
"code-point-at": {
"version": "1.1.0",
"bundled": true
},
"concat-map": {
"version": "0.0.1",
"bundled": true
},
"console-control-strings": {
"version": "1.1.0",
"bundled": true
},
"core-util-is": {
"version": "1.0.2",
"bundled": true
},
"debug": {
"version": "3.2.6",
"bundled": true,
"requires": {
"ms": "^2.1.1"
}
},
"deep-extend": {
"version": "0.6.0",
"bundled": true
},
"delegates": {
"version": "1.0.0",
"bundled": true
},
"detect-libc": {
"version": "1.0.3",
"bundled": true
},
"fs-minipass": {
"version": "1.2.6",
"bundled": true,
"requires": {
"minipass": "^2.2.1"
}
},
"fs.realpath": {
"version": "1.0.0",
"bundled": true
},
"gauge": {
"version": "2.7.4",
"bundled": true,
"requires": {
"aproba": "^1.0.3",
"console-control-strings": "^1.0.0",
"has-unicode": "^2.0.0",
"object-assign": "^4.1.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1",
"strip-ansi": "^3.0.1",
"wide-align": "^1.1.0"
}
},
"glob": {
"version": "7.1.4",
"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"
}
},
"has-unicode": {
"version": "2.0.1",
"bundled": true
},
"iconv-lite": {
"version": "0.4.24",
"bundled": true,
"requires": {
"safer-buffer": ">= 2.1.2 < 3"
}
},
"ignore-walk": {
"version": "3.0.1",
"bundled": true,
"requires": {
"minimatch": "^3.0.4"
}
},
"inflight": {
"version": "1.0.6",
"bundled": true,
"requires": {
"once": "^1.3.0",
"wrappy": "1"
}
},
"inherits": {
"version": "2.0.4",
"bundled": true
},
"ini": {
"version": "1.3.5",
"bundled": true
},
"is-fullwidth-code-point": {
"version": "1.0.0",
"bundled": true,
"requires": {
"number-is-nan": "^1.0.0"
}
},
"isarray": {
"version": "1.0.0",
"bundled": true
},
"minimatch": {
"version": "3.0.4",
"bundled": true,
"requires": {
"brace-expansion": "^1.1.7"
}
},
"minimist": {
"version": "1.2.0",
"bundled": true
},
"minipass": {
"version": "2.3.5",
"bundled": true,
"requires": {
"safe-buffer": "^5.1.2",
"yallist": "^3.0.0"
}
},
"minizlib": {
"version": "1.2.1",
"bundled": true,
"requires": {
"minipass": "^2.2.1"
}
},
"mkdirp": {
"version": "0.5.1",
"bundled": true,
"requires": {
"minimist": "0.0.8"
},
"dependencies": {
"minimist": {
"version": "0.0.8",
"bundled": true
}
}
},
"ms": {
"version": "2.1.2",
"bundled": true
},
"needle": {
"version": "2.4.0",
"bundled": true,
"requires": {
"debug": "^3.2.6",
"iconv-lite": "^0.4.4",
"sax": "^1.2.4"
}
},
"node-pre-gyp": {
"version": "0.13.0",
"bundled": true,
"requires": { "requires": {
"detect-libc": "^1.0.2", "detect-libc": "^1.0.2",
"mkdirp": "^0.5.1", "mkdirp": "^0.5.1",
...@@ -4385,7 +5316,6 @@ ...@@ -4385,7 +5316,6 @@
"nopt": { "nopt": {
"version": "4.0.1", "version": "4.0.1",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"abbrev": "1", "abbrev": "1",
"osenv": "^0.1.4" "osenv": "^0.1.4"
...@@ -4393,13 +5323,11 @@ ...@@ -4393,13 +5323,11 @@
}, },
"npm-bundled": { "npm-bundled": {
"version": "1.0.6", "version": "1.0.6",
"bundled": true, "bundled": true
"optional": true
}, },
"npm-packlist": { "npm-packlist": {
"version": "1.4.1", "version": "1.4.4",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"ignore-walk": "^3.0.1", "ignore-walk": "^3.0.1",
"npm-bundled": "^1.0.1" "npm-bundled": "^1.0.1"
...@@ -4408,7 +5336,6 @@ ...@@ -4408,7 +5336,6 @@
"npmlog": { "npmlog": {
"version": "4.1.2", "version": "4.1.2",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"are-we-there-yet": "~1.1.2", "are-we-there-yet": "~1.1.2",
"console-control-strings": "~1.1.0", "console-control-strings": "~1.1.0",
...@@ -4418,36 +5345,30 @@ ...@@ -4418,36 +5345,30 @@
}, },
"number-is-nan": { "number-is-nan": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "bundled": true
"optional": true
}, },
"object-assign": { "object-assign": {
"version": "4.1.1", "version": "4.1.1",
"bundled": true, "bundled": true
"optional": true
}, },
"once": { "once": {
"version": "1.4.0", "version": "1.4.0",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"wrappy": "1" "wrappy": "1"
} }
}, },
"os-homedir": { "os-homedir": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true
"optional": true
}, },
"os-tmpdir": { "os-tmpdir": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true
"optional": true
}, },
"osenv": { "osenv": {
"version": "0.1.5", "version": "0.1.5",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"os-homedir": "^1.0.0", "os-homedir": "^1.0.0",
"os-tmpdir": "^1.0.0" "os-tmpdir": "^1.0.0"
...@@ -4455,36 +5376,36 @@ ...@@ -4455,36 +5376,36 @@
}, },
"path-is-absolute": { "path-is-absolute": {
"version": "1.0.1", "version": "1.0.1",
"bundled": true, "bundled": true
"optional": true
}, },
"process-nextick-args": { "process-nextick-args": {
"version": "2.0.0", "version": "2.0.1",
"bundled": true, "bundled": true
"optional": true },
"protobufjs": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-5.0.3.tgz",
"integrity": "sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA==",
"requires": {
"ascli": "~1",
"bytebuffer": "~5",
"glob": "^7.0.5",
"yargs": "^3.10.0"
}
}, },
"rc": { "rc": {
"version": "1.2.8", "version": "1.2.8",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"deep-extend": "^0.6.0", "deep-extend": "^0.6.0",
"ini": "~1.3.0", "ini": "~1.3.0",
"minimist": "^1.2.0", "minimist": "^1.2.0",
"strip-json-comments": "~2.0.1" "strip-json-comments": "~2.0.1"
},
"dependencies": {
"minimist": {
"version": "1.2.0",
"bundled": true,
"optional": true
}
} }
}, },
"readable-stream": { "readable-stream": {
"version": "2.3.6", "version": "2.3.6",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"core-util-is": "~1.0.0", "core-util-is": "~1.0.0",
"inherits": "~2.0.3", "inherits": "~2.0.3",
...@@ -4496,47 +5417,39 @@ ...@@ -4496,47 +5417,39 @@
} }
}, },
"rimraf": { "rimraf": {
"version": "2.6.3", "version": "2.7.1",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"glob": "^7.1.3" "glob": "^7.1.3"
} }
}, },
"safe-buffer": { "safe-buffer": {
"version": "5.1.2", "version": "5.1.2",
"bundled": true, "bundled": true
"optional": true
}, },
"safer-buffer": { "safer-buffer": {
"version": "2.1.2", "version": "2.1.2",
"bundled": true, "bundled": true
"optional": true
}, },
"sax": { "sax": {
"version": "1.2.4", "version": "1.2.4",
"bundled": true, "bundled": true
"optional": true
}, },
"semver": { "semver": {
"version": "5.7.0", "version": "5.7.1",
"bundled": true, "bundled": true
"optional": true
}, },
"set-blocking": { "set-blocking": {
"version": "2.0.0", "version": "2.0.0",
"bundled": true, "bundled": true
"optional": true
}, },
"signal-exit": { "signal-exit": {
"version": "3.0.2", "version": "3.0.2",
"bundled": true, "bundled": true
"optional": true
}, },
"string-width": { "string-width": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"code-point-at": "^1.0.0", "code-point-at": "^1.0.0",
"is-fullwidth-code-point": "^1.0.0", "is-fullwidth-code-point": "^1.0.0",
...@@ -4546,7 +5459,6 @@ ...@@ -4546,7 +5459,6 @@
"string_decoder": { "string_decoder": {
"version": "1.1.1", "version": "1.1.1",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"safe-buffer": "~5.1.0" "safe-buffer": "~5.1.0"
} }
...@@ -4554,192 +5466,67 @@ ...@@ -4554,192 +5466,67 @@
"strip-ansi": { "strip-ansi": {
"version": "3.0.1", "version": "3.0.1",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"ansi-regex": "^2.0.0" "ansi-regex": "^2.0.0"
} }
}, },
"strip-json-comments": { "strip-json-comments": {
"version": "2.0.1", "version": "2.0.1",
"bundled": true, "bundled": true
"optional": true
}, },
"tar": { "tar": {
"version": "4.4.8", "version": "4.4.10",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"chownr": "^1.1.1", "chownr": "^1.1.1",
"fs-minipass": "^1.2.5", "fs-minipass": "^1.2.5",
"minipass": "^2.3.4", "minipass": "^2.3.5",
"minizlib": "^1.1.1", "minizlib": "^1.2.1",
"mkdirp": "^0.5.0", "mkdirp": "^0.5.0",
"safe-buffer": "^5.1.2", "safe-buffer": "^5.1.2",
"yallist": "^3.0.2" "yallist": "^3.0.3"
} }
}, },
"util-deprecate": { "util-deprecate": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true
"optional": true
}, },
"wide-align": { "wide-align": {
"version": "1.1.3", "version": "1.1.3",
"bundled": true, "bundled": true,
"optional": true,
"requires": { "requires": {
"string-width": "^1.0.2 || 2" "string-width": "^1.0.2 || 2"
} }
}, },
"wrappy": { "wrappy": {
"version": "1.0.2", "version": "1.0.2",
"bundled": true, "bundled": true
"optional": true },
"y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",
"integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE="
}, },
"yallist": { "yallist": {
"version": "3.0.3", "version": "3.0.3",
"bundled": true, "bundled": true
"optional": true
}
}
},
"fstream": {
"version": "1.0.12",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
"integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
"requires": {
"graceful-fs": "^4.1.2",
"inherits": "~2.0.0",
"mkdirp": ">=0.5 0",
"rimraf": "2"
}
},
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
}, },
"gauge": { "yargs": {
"version": "2.7.4", "version": "3.32.0",
"resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz",
"integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=",
"requires": { "requires": {
"aproba": "^1.0.3", "camelcase": "^2.0.1",
"console-control-strings": "^1.0.0", "cliui": "^3.0.3",
"has-unicode": "^2.0.0", "decamelize": "^1.1.1",
"object-assign": "^4.1.0", "os-locale": "^1.4.0",
"signal-exit": "^3.0.0",
"string-width": "^1.0.1", "string-width": "^1.0.1",
"strip-ansi": "^3.0.1", "window-size": "^0.1.4",
"wide-align": "^1.1.0" "y18n": "^3.2.0"
}
},
"gaze": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
"integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
"requires": {
"globule": "^1.0.0"
}
},
"genfun": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz",
"integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA=="
},
"get-caller-file": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz",
"integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w=="
},
"get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz",
"integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4="
},
"get-stream": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz",
"integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ="
},
"get-value": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
"integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg="
},
"getpass": {
"version": "0.1.7",
"resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
"integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
"requires": {
"assert-plus": "^1.0.0"
}
},
"glob": {
"version": "7.1.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz",
"integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==",
"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"
}
},
"glob-parent": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
"integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"requires": {
"is-glob": "^3.1.0",
"path-dirname": "^1.0.0"
},
"dependencies": {
"is-glob": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
"integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"requires": {
"is-extglob": "^2.1.0"
}
}
} }
},
"globals": {
"version": "9.18.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz",
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ=="
},
"globby": {
"version": "7.1.1",
"resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
"integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
"requires": {
"array-union": "^1.0.1",
"dir-glob": "^2.0.0",
"glob": "^7.1.2",
"ignore": "^3.3.5",
"pify": "^3.0.0",
"slash": "^1.0.0"
} }
},
"globule": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/globule/-/globule-1.2.1.tgz",
"integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
"requires": {
"glob": "~7.1.1",
"lodash": "~4.17.10",
"minimatch": "~3.0.2"
} }
}, },
"graceful-fs": {
"version": "4.1.15",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.15.tgz",
"integrity": "sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA=="
},
"handle-thing": { "handle-thing": {
"version": "2.0.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz", "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.0.tgz",
...@@ -5035,6 +5822,11 @@ ...@@ -5035,6 +5822,11 @@
"safer-buffer": ">= 2.1.2 < 3" "safer-buffer": ">= 2.1.2 < 3"
} }
}, },
"idb": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/idb/-/idb-3.0.2.tgz",
"integrity": "sha512-+FLa/0sTXqyux0o6C+i2lOR0VoS60LU/jzUo5xjfY6+7sEEgy4Gz1O7yFBXvjd7N0NyIGWIRg8DcQSLEG+VSPw=="
},
"ieee754": { "ieee754": {
"version": "1.1.13", "version": "1.1.13",
"resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
...@@ -5546,6 +6338,15 @@ ...@@ -5546,6 +6338,15 @@
"resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
"integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=" "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8="
}, },
"isomorphic-fetch": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz",
"integrity": "sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk=",
"requires": {
"node-fetch": "^1.0.1",
"whatwg-fetch": ">=0.10.0"
}
},
"isstream": { "isstream": {
"version": "0.1.2", "version": "0.1.2",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
...@@ -6156,6 +6957,16 @@ ...@@ -6156,6 +6957,16 @@
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
"integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==" "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A=="
}, },
"lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
"integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY="
},
"lodash.clone": {
"version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clone/-/lodash.clone-4.5.0.tgz",
"integrity": "sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y="
},
"lodash.clonedeep": { "lodash.clonedeep": {
"version": "4.5.0", "version": "4.5.0",
"resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
...@@ -6253,6 +7064,11 @@ ...@@ -6253,6 +7064,11 @@
"resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz", "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.3.tgz",
"integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA==" "integrity": "sha512-LoEDv5pgpvWgPF4kNYuIp0qqSJVWak/dML0RY74xlzMZiT9w77teNAwKYKWBTYjlokMirg+o3jBwp+vlLrcfAA=="
}, },
"long": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz",
"integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA=="
},
"loose-envify": { "loose-envify": {
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
...@@ -6741,6 +7557,15 @@ ...@@ -6741,6 +7557,15 @@
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
"integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==" "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
}, },
"node-fetch": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz",
"integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==",
"requires": {
"encoding": "^0.1.11",
"is-stream": "^1.0.1"
}
},
"node-fetch-npm": { "node-fetch-npm": {
"version": "2.0.2", "version": "2.0.2",
"resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz", "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.2.tgz",
...@@ -7139,6 +7964,11 @@ ...@@ -7139,6 +7964,11 @@
} }
} }
}, },
"optjs": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/optjs/-/optjs-3.2.2.tgz",
"integrity": "sha1-aabOicRCpEQDFBrS+bNwvVu29O4="
},
"original": { "original": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
...@@ -7651,6 +8481,11 @@ ...@@ -7651,6 +8481,11 @@
"resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
"integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=" "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM="
}, },
"promise-polyfill": {
"version": "8.1.3",
"resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-8.1.3.tgz",
"integrity": "sha512-MG5r82wBzh7pSKDRa9y+vllNHz3e3d4CNj1PQE4BQYxLme0gKYYBm9YENq+UkEikyZ0XbiGWxYlVw3Rl9O/U8g=="
},
"promise-retry": { "promise-retry": {
"version": "1.1.1", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz",
...@@ -7668,6 +8503,33 @@ ...@@ -7668,6 +8503,33 @@
"string.prototype.codepointat": "^0.2.0" "string.prototype.codepointat": "^0.2.0"
} }
}, },
"protobufjs": {
"version": "6.8.8",
"resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.8.8.tgz",
"integrity": "sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw==",
"requires": {
"@protobufjs/aspromise": "^1.1.2",
"@protobufjs/base64": "^1.1.2",
"@protobufjs/codegen": "^2.0.4",
"@protobufjs/eventemitter": "^1.1.0",
"@protobufjs/fetch": "^1.1.0",
"@protobufjs/float": "^1.0.2",
"@protobufjs/inquire": "^1.1.0",
"@protobufjs/path": "^1.1.2",
"@protobufjs/pool": "^1.1.0",
"@protobufjs/utf8": "^1.1.0",
"@types/long": "^4.0.0",
"@types/node": "^10.1.0",
"long": "^4.0.0"
},
"dependencies": {
"@types/node": {
"version": "10.14.18",
"resolved": "https://registry.npmjs.org/@types/node/-/node-10.14.18.tgz",
"integrity": "sha512-ryO3Q3++yZC/+b8j8BdKd/dn9JlzlHBPdm80656xwYUdmPkpTGTjkAdt6BByiNupGPE8w0FhBgvYy/fX9hRNGQ=="
}
}
},
"protoduck": { "protoduck": {
"version": "5.0.1", "version": "5.0.1",
"resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz",
...@@ -9296,6 +10158,22 @@ ...@@ -9296,6 +10158,22 @@
"has-flag": "^3.0.0" "has-flag": "^3.0.0"
} }
}, },
"sweetalert": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/sweetalert/-/sweetalert-2.1.2.tgz",
"integrity": "sha512-iWx7X4anRBNDa/a+AdTmvAzQtkN1+s4j/JJRWlHpYE8Qimkohs8/XnFcWeYHH2lMA8LRCa5tj2d244If3S/hzA==",
"requires": {
"es6-object-assign": "^1.1.0",
"promise-polyfill": "^6.0.2"
},
"dependencies": {
"promise-polyfill": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.1.0.tgz",
"integrity": "sha1-36lpQ+qcEh/KTem1hoyznTRy4Fc="
}
}
},
"symbol-observable": { "symbol-observable": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
...@@ -10448,6 +11326,11 @@ ...@@ -10448,6 +11326,11 @@
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz", "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==" "integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg=="
}, },
"whatwg-fetch": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.0.0.tgz",
"integrity": "sha512-9GSJUgz1D4MfyKU7KRqwOjXCXTqWdFNvEr7eUBYchQiVc744mqK/MzXPNR2WsPkmkOa4ywfg8C2n8h+13Bey1Q=="
},
"when": { "when": {
"version": "3.6.4", "version": "3.6.4",
"resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz", "resolved": "https://registry.npmjs.org/when/-/when-3.6.4.tgz",
...@@ -10474,6 +11357,11 @@ ...@@ -10474,6 +11357,11 @@
"string-width": "^1.0.2 || 2" "string-width": "^1.0.2 || 2"
} }
}, },
"window-size": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz",
"integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY="
},
"wordwrap": { "wordwrap": {
"version": "0.0.3", "version": "0.0.3",
"resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz",
...@@ -10546,6 +11434,11 @@ ...@@ -10546,6 +11434,11 @@
"resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz", "resolved": "https://registry.npmjs.org/xmldom/-/xmldom-0.1.27.tgz",
"integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=" "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk="
}, },
"xmlhttprequest": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
"integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
},
"xmlhttprequest-ssl": { "xmlhttprequest-ssl": {
"version": "1.5.5", "version": "1.5.5",
"resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz", "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-1.5.5.tgz",
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
"dependencies": { "dependencies": {
"@angular/common": "^7.2.2", "@angular/common": "^7.2.2",
"@angular/core": "^7.2.2", "@angular/core": "^7.2.2",
"@angular/fire": "^5.2.1",
"@angular/forms": "^7.2.2", "@angular/forms": "^7.2.2",
"@angular/http": "^7.2.2", "@angular/http": "^7.2.2",
"@angular/platform-browser": "^7.2.2", "@angular/platform-browser": "^7.2.2",
...@@ -47,11 +48,13 @@ ...@@ -47,11 +48,13 @@
"cordova-sqlite-storage": "^3.2.0", "cordova-sqlite-storage": "^3.2.0",
"cordova.plugins.diagnostic": "^5.0.0", "cordova.plugins.diagnostic": "^5.0.0",
"core-js": "^2.5.4", "core-js": "^2.5.4",
"firebase": "^6.6.1",
"ionic-image-loader": "^6.3.3", "ionic-image-loader": "^6.3.3",
"leaflet": "^1.5.1", "leaflet": "^1.5.1",
"leaflet.markercluster": "^1.4.1", "leaflet.markercluster": "^1.4.1",
"path": "^0.12.7", "path": "^0.12.7",
"rxjs": "~6.5.1", "rxjs": "~6.5.1",
"sweetalert": "^2.1.2",
"tslib": "^1.9.0", "tslib": "^1.9.0",
"zone.js": "~0.8.29" "zone.js": "~0.8.29"
}, },
......
import { NgModule } from '@angular/core'; import { NgModule } from '@angular/core';
import { PreloadAllModules, RouterModule, Routes } from '@angular/router'; import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
import { AuthGuardService } from './services/auth-guard.service';
const routes: Routes = [ const routes: Routes = [
{ path: '', redirectTo: 'mainslider', pathMatch: 'full' }, { path: '', redirectTo: 'start', pathMatch: 'full' },
{ path: 'start', loadChildren: './pages/start/start.module#StartPageModule' }, { path: 'start', loadChildren: './pages/start/start.module#StartPageModule' },
{ path: 'login', loadChildren: './pages/compte/login/login.module#LoginPageModule' }, { path: 'login', loadChildren: './pages/compte/login/login.module#LoginPageModule' },
{ path: 'mainslider', loadChildren: './pages/mainslider/mainslider.module#MainsliderPageModule' }, { path: 'mainslider', loadChildren: './pages/mainslider/mainslider.module#MainsliderPageModule' },
{ path: 'app', loadChildren: './pages/menu/menu.module#MenuPageModule' }, {
{ path: 'offre-details', loadChildren: './pages/offres/offre-details/offre-details.module#OffreDetailsPageModule' }, path: 'app',
loadChildren: './pages/menu/menu.module#MenuPageModule',
canActivate: [AuthGuardService]
},
{
path: 'offre-details',
loadChildren: './pages/offres/offre-details/offre-details.module#OffreDetailsPageModule',
canActivate: [AuthGuardService]
},
{ path: 'login-help', loadChildren: './modals/compte/login-help/login-help.module#LoginHelpPageModule' },
]; ];
@NgModule({ @NgModule({
......
...@@ -8,6 +8,7 @@ import { StatusBar } from '@ionic-native/status-bar/ngx'; ...@@ -8,6 +8,7 @@ import { StatusBar } from '@ionic-native/status-bar/ngx';
import { LocalNotifications } from '@ionic-native/local-notifications/ngx'; import { LocalNotifications } from '@ionic-native/local-notifications/ngx';
import { TripService } from './services/trip-service'; import { TripService } from './services/trip-service';
import { AuthService } from './services/auth.service';
// import { LocationService } from './services/location-service'; // import { LocationService } from './services/location-service';
@Component({ @Component({
...@@ -24,7 +25,8 @@ export class AppComponent { ...@@ -24,7 +25,8 @@ export class AppComponent {
private splashScreen: SplashScreen, private splashScreen: SplashScreen,
private statusBar: StatusBar, private statusBar: StatusBar,
private router: Router, private router: Router,
private _STOR: Storage private _STOR: Storage,
private _AUTH: AuthService
// private _LOCAT: LocationService // private _LOCAT: LocationService
) { ) {
this.initializeApp(); this.initializeApp();
...@@ -42,6 +44,27 @@ export class AppComponent { ...@@ -42,6 +44,27 @@ export class AppComponent {
// Set locator // Set locator
// this.setLocator(); // this.setLocator();
this._AUTH.authState.subscribe(state => {
if (state) {
this._STOR.get('APP_PARAMS').then(appParams => {
if (appParams.PARAM_mainslider) {
this.router.navigate(['app/dashboard']);
} else {
this.router.navigate(['mainslider']);
}
});
} else {
this.router.navigate(['login']);
}
});
// this._STOR.get('wpUser').then((wpUser) => {
// if (wpUser) {
// this.router.navigateByUrl('/app/dashboard', { replaceUrl: true });
// // this._AUTH.validateAuthToken(wpUser.token);
// } else {
// this.router.navigateByUrl('/login', { replaceUrl: true });
// }
// });
// this._STOR.get('PARAM_mainslider').then((prmMainslider) => { // this._STOR.get('PARAM_mainslider').then((prmMainslider) => {
// if (prmMainslider) { // if (prmMainslider) {
// this._STOR.get('isLoggedIn').then((isLoggedIn) => { // this._STOR.get('isLoggedIn').then((isLoggedIn) => {
...@@ -60,34 +83,17 @@ export class AppComponent { ...@@ -60,34 +83,17 @@ export class AppComponent {
} }
setDefaultParams() { setDefaultParams() {
this._STOR.get('PARAM_geolocate').then((val) => { this._STOR.get('APP_PARAMS').then((val) => {
if (val === null) { if (val === null) {
this._STOR.set('PARAM_geolocate', true); this._STOR.set('APP_PARAMS', {
} PARAM_mainslider: false,
PARAM_geolocate: true,
PARAM_geoarea: 1000,
PARAM_notiftime: 2880,
PARAM_trackdelay: 60000,
PARAM_notifnbr: 'all',
NOTIF_shownpartners: [],
}); });
this._STOR.get('PARAM_geoarea').then((val) => {
if (val === null) {
this._STOR.set('PARAM_geoarea', 1000);
}
});
this._STOR.get('PARAM_notiftime').then((val) => {
if (val === null) {
this._STOR.set('PARAM_notiftime', 2880);
}
});
this._STOR.get('PARAM_trackdelay').then((val) => {
if (val === null) {
this._STOR.set('PARAM_trackdelay', 60000);
}
});
this._STOR.get('PARAM_notifnbr').then((val) => {
if (val === null) {
this._STOR.set('PARAM_notifnbr', 'all');
}
});
this._STOR.get('NOTIF_shownpartners').then((val) => {
if (val === null) {
this._STOR.set('NOTIF_shownpartners', []);
} }
}); });
} }
......
...@@ -19,6 +19,15 @@ import { BackgroundMode } from '@ionic-native/background-mode/ngx'; ...@@ -19,6 +19,15 @@ import { BackgroundMode } from '@ionic-native/background-mode/ngx';
import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx'; import { BackgroundGeolocation } from '@ionic-native/background-geolocation/ngx';
import { AppVersion } from '@ionic-native/app-version/ngx'; import { AppVersion } from '@ionic-native/app-version/ngx';
import { GooglePlus } from '@ionic-native/google-plus/ngx'; import { GooglePlus } from '@ionic-native/google-plus/ngx';
import { environment } from 'src/environments/environment';
import { AuthService } from './services/auth.service';
import { AuthGuardService } from './services/auth-guard.service';
import { LoginHelpPageModule } from './modals/login-help/login-help.module';
// import { AngularFireAuthModule } from '@angular/fire/auth';
// import * as firebase from 'firebase';
// firebase.initializeApp(environment.firebase);
@NgModule({ @NgModule({
declarations: [AppComponent], declarations: [AppComponent],
...@@ -31,7 +40,8 @@ import { GooglePlus } from '@ionic-native/google-plus/ngx'; ...@@ -31,7 +40,8 @@ import { GooglePlus } from '@ionic-native/google-plus/ngx';
name: '__allo_testeurs_app', name: '__allo_testeurs_app',
driverOrder: ['websql', 'sqlite', 'indexeddb'] driverOrder: ['websql', 'sqlite', 'indexeddb']
}), }),
HttpClientModule HttpClientModule,
LoginHelpPageModule
], ],
providers: [ providers: [
StatusBar, StatusBar,
...@@ -44,7 +54,9 @@ import { GooglePlus } from '@ionic-native/google-plus/ngx'; ...@@ -44,7 +54,9 @@ import { GooglePlus } from '@ionic-native/google-plus/ngx';
BackgroundMode, BackgroundMode,
BackgroundGeolocation, BackgroundGeolocation,
AppVersion, AppVersion,
GooglePlus GooglePlus,
AuthService,
AuthGuardService
], ],
bootstrap: [AppComponent] bootstrap: [AppComponent]
}) })
......
...@@ -45,3 +45,13 @@ div.start { ...@@ -45,3 +45,13 @@ div.start {
transform: scale(3); transform: scale(3);
} }
} }
.swiper-pagination {
.swiper-pagination-bullet {
opacity: 1 !important;
}
}
ion-modal .modal-wrapper {
width: 90vw !important;
max-height: 90vh !important;
border-radius: 10px !important;
}
\ No newline at end of file
export const WORDPRESS_URL = 'http://www.allo-testeurs.com/';
export const WORDPRESS_REST_API_URL = WORDPRESS_URL + 'wp-json/wp/v2/';
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { FormsModule } from '@angular/forms';
import { Routes, RouterModule } from '@angular/router';
import { IonicModule } from '@ionic/angular';
import { LoginHelpPage } from './login-help.page';
const routes: Routes = [
{
path: '',
component: LoginHelpPage
}
];
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
declarations: [LoginHelpPage]
})
export class LoginHelpPageModule {}
<ion-header>
<ion-toolbar color="primary">
<ion-title>Informations</ion-title>
<ion-button fill="outline" size="small" color="light" slot="end" (click)="dismissHelpModal()">
X
</ion-button>
</ion-toolbar>
</ion-header>
<ion-content padding>
<ion-list>
<ion-list-header>
Avec le mode <strong>anonyme</strong>, vous pouvez :
</ion-list-header>
<ion-item>
<ion-icon name="arrow-dropright-circle" slot="start"></ion-icon>
<ion-label class="ion-text-wrap" padding-left>Parcourir les offres de nos partenaires</ion-label>
</ion-item>
<ion-item lines="none">
<ion-icon name="arrow-dropright-circle" slot="start"></ion-icon>
<ion-label class="ion-text-wrap">Voir la liste des partenaires et les localiser sur la carte</ion-label>
</ion-item>
<ion-list-header margin-top>
En plus, si vous êtes connecté(e), vous pouvez :
</ion-list-header>
<ion-item>
<ion-icon name="arrow-dropright-circle" slot="start"></ion-icon>
<ion-label class="ion-text-wrap" padding-left>Sauvegarder vos offres préférées</ion-label>
</ion-item>
<ion-item>
<ion-icon name="arrow-dropright-circle" slot="start"></ion-icon>
<ion-label class="ion-text-wrap" padding-left>Noter des offres</ion-label>
</ion-item>
<ion-item>
<ion-icon name="arrow-dropright-circle" slot="start"></ion-icon>
<ion-label class="ion-text-wrap" padding-left>Commenter des offres</ion-label>
</ion-item>
<ion-item>
<ion-icon name="arrow-dropright-circle" slot="start"></ion-icon>
<ion-label class="ion-text-wrap" padding-left>Réclamer des points mérites et gagner des supers lots! (prochainement)</ion-label>
</ion-item>
<ion-item>
<ion-icon name="arrow-dropright-circle" slot="start"></ion-icon>
<ion-label class="ion-text-wrap" padding-left>Réclamer des points dexpériences et monter dans le tableau des meilleur(e)s testeur(se)s! (prochainement)</ion-label>
</ion-item>
<ion-item lines="none">
<ion-icon name="arrow-dropright-circle" slot="start"></ion-icon>
<ion-label class="ion-text-wrap" padding-left>Et beaucoup d'autres surprises bientôt!!!</ion-label>
</ion-item>
</ion-list>
</ion-content>
\ No newline at end of file
ion-label {
font-size: 13px !important;
}
ion-icon {
width: 0.7em;
height: 0.7em;
}
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { LoginHelpPage } from './login-help.page';
describe('LoginHelpPage', () => {
let component: LoginHelpPage;
let fixture: ComponentFixture<LoginHelpPage>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LoginHelpPage ],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(LoginHelpPage);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});
import { Component, OnInit } from '@angular/core';
import { ModalController } from '@ionic/angular';
@Component({
selector: 'app-login-help',
templateUrl: './login-help.page.html',
styleUrls: ['./login-help.page.scss'],
})
export class LoginHelpPage implements OnInit {
constructor(
public modalController: ModalController
) { }
ngOnInit() {
}
dismissHelpModal() {
// using the injected ModalController this page
// can "dismiss" itself and optionally pass back data
this.modalController.dismiss();
}
}
...@@ -24,4 +24,4 @@ const routes: Routes = [ ...@@ -24,4 +24,4 @@ const routes: Routes = [
], ],
declarations: [LoginPage] declarations: [LoginPage]
}) })
export class LoginPageModule {} export class LoginPageModule { }
<ion-header> <ion-header>
<ion-toolbar color="primary"> <ion-toolbar color="primary">
<ion-title>Connexion</ion-title> <ion-title>Connexion</ion-title>
<ion-button size="small" fill="solid" color="light" slot="end" (click)="presentHelpModal()">
<ion-icon name="information"></ion-icon>
</ion-button>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content text-center color="primary" padding> <ion-content text-center color="primary" padding>
...@@ -59,18 +62,26 @@ ...@@ -59,18 +62,26 @@
</div> </div>
</ion-card-content> </ion-card-content>
</ion-card> </ion-card>
<a href="javascript:;"> <!-- <a href="javascript:;">
<ion-text color="light"> <ion-text color="light">
Mot de passe oublié? Mot de passe oublié?
</ion-text> </ion-text>
</a> </a> -->
<ion-item-divider color="primary"> </ion-item-divider> <ion-item-divider color="primary"> </ion-item-divider>
<ion-button color="dark" expand="block" type="submit" [disabled]="validationsForm.invalid" no-margin>Connexion</ion-button> <ion-button color="dark" expand="block" type="submit" [disabled]="validationsForm.invalid" no-margin>
<ion-icon name="log-in"></ion-icon>
Connexion
</ion-button>
</form> </form>
<ion-item-divider color="primary" lines="none"> </ion-item-divider> <ion-item-divider color="primary" lines="none"> </ion-item-divider>
<ion-item-divider color="primary" justify-content-center> <!-- <ion-item-divider color="primary" justify-content-center>
Se connecter avec Facebook ou Google Se connecter avec Facebook ou Google
</ion-item-divider> </ion-item-divider> -->
<ion-button color="light" expand="block" class="btn-g" (click)="doAnonymousLogIn()" no-margin>
<ion-icon name="walk"></ion-icon>
Connexion anonyme
</ion-button>
<ion-grid> <ion-grid>
<ion-row> <ion-row>
<!-- <ion-col> <!-- <ion-col>
...@@ -79,9 +90,9 @@ ...@@ -79,9 +90,9 @@
</ion-button> </ion-button>
</ion-col> --> </ion-col> -->
<ion-col> <ion-col>
<ion-button color="light" expand="block" class="btn-g" (click)="doGoogleLogin()" no-margin> <!-- <ion-button color="light" expand="block" class="btn-g" (click)="doGoogleLogin()" no-margin>
<ion-icon name="logo-google"></ion-icon> <ion-icon name="logo-google"></ion-icon>
</ion-button> </ion-button> -->
</ion-col> </ion-col>
</ion-row> </ion-row>
</ion-grid> </ion-grid>
......
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms'; import { Validators, FormBuilder, FormGroup, FormControl } from '@angular/forms';
import { AlloService } from '../../../services/allo-service'; import { ModalController } from '@ionic/angular';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
import { Router } from '@angular/router'; import { Router } from '@angular/router';
import { GooglePlus } from '@ionic-native/google-plus/ngx'; import { GooglePlus } from '@ionic-native/google-plus/ngx';
import { AlloService } from '../../../services/allo-service';
import { AuthService } from '../../../services/auth.service';
import { LoginHelpPage } from '../../../modals/login-help/login-help.page';
// import swal from 'sweetalert';
@Component({ @Component({
selector: 'app-login', selector: 'app-login',
...@@ -31,11 +35,19 @@ export class LoginPage implements OnInit { ...@@ -31,11 +35,19 @@ export class LoginPage implements OnInit {
public formBuilder: FormBuilder, public formBuilder: FormBuilder,
public storage: Storage, public storage: Storage,
public router: Router, public router: Router,
public modalController: ModalController,
private googlePlus: GooglePlus, private googlePlus: GooglePlus,
public _ALLO: AlloService public _ALLO: AlloService,
public _AUTH: AuthService
) { } ) { }
ngOnInit() { ngOnInit() {
this._AUTH.getAuthState().subscribe(state => {
if (state) {
let name = this._AUTH.infoNicename === 'anonymous' ? 'Anonyme' : this._AUTH.infoFullname;
this._ALLO.presentToast('Connexion', 'Bienvenue ' + name, 'top');
}
});
this.validationsForm = this.formBuilder.group({ this.validationsForm = this.formBuilder.group({
email: new FormControl('', Validators.compose([ email: new FormControl('', Validators.compose([
Validators.required, Validators.required,
...@@ -45,8 +57,66 @@ export class LoginPage implements OnInit { ...@@ -45,8 +57,66 @@ export class LoginPage implements OnInit {
}); });
} }
async presentHelpModal() {
const modal = await this.modalController.create({
component: LoginHelpPage
});
return await modal.present();
}
doAnonymousLogIn() {
const wpUser = {
token: null,
user_nicename: 'anonymous',
user_display_name: 'Mode anonyme',
user_email: 'nomail',
};
this.storage.set('wpUser', wpUser).then(() => {
this._AUTH.setUser(wpUser);
// this.storage.get('APP_PARAMS').then(appParams => {
// if (appParams.PARAM_mainslider) {
// this.router.navigate(['app/dashboard']);
// } else {
// this.router.navigate(['mainslider']);
// }
// });
});
}
onSubmit(values) { onSubmit(values) {
console.log(values); this._ALLO.presentLoading();
this._AUTH.doLogin(values)
.then(
res => {
this._ALLO.dismissLoading();
console.log('User exist', res);
this.storage.get('APP_PARAMS').then(appParams => {
if (appParams.PARAM_mainslider) {
this.router.navigate(['app/dashboard']);
} else {
this.router.navigate(['mainslider']);
}
});
},
err => {
this._ALLO.dismissLoading();
// swal('Connexion', 'Email ou Mot de passe incorrects. Veuillez réessayer.', 'error');
// this._ALLO.presentAlert('Connexion', 'Email ou Mot de passe incorrects.<br>Veuillez réessayer.');
this._ALLO.presentToast('', 'Email ou Mot de passe incorrects.<br>Veuillez réessayer.', 'top');
console.log('Auth error', err);
});
// this._ALLO.presentLoading();
// this._AUTH.firebaseRegister(values)
// .then(res => {
// this._ALLO.dismissLoading();
// console.log('User exist', res);
// // this.errorMessage = "";
// // this.navCtrl.navigateForward('/dashboard');
// }, err => {
// this._ALLO.dismissLoading();
// // this.errorMessage = err.message;
// console.log('Auth error', err);
// });
} }
async doGoogleLogin() { async doGoogleLogin() {
......
...@@ -197,12 +197,8 @@ ...@@ -197,12 +197,8 @@
<ion-text color="light"> <ion-text color="light">
<p class="text-1x"> <p class="text-1x">
Pour une expérience très riche, il est très souhaitable d'activer le GPS de votre Pour une expérience très riche, il est très souhaitable d'activer le GPS de votre
mobile, mobile, afin de vous envoyer des notifications sur les promos de nos partenaires à
afin de vous proximité !
envoyer des notifications sur les promos de nos partenaires, une fois vous vous
approchez de
leurs
locaux !
</p> </p>
</ion-text> </ion-text>
</ion-col> </ion-col>
...@@ -212,14 +208,13 @@ ...@@ -212,14 +208,13 @@
<ion-grid no-margin no-padding> <ion-grid no-margin no-padding>
<ion-row> <ion-row>
<ion-col> <ion-col>
<ion-button class="round" color="light" margin-top full tappable <ion-button class="round" size="small" color="light" margin-top full tappable
routerLink="/app/dashboard" (click)="goToDashboard()" routerDirection="forward" routerLinkActive="active">
routerDirection="root" routerLinkActive="active">
Continuer sans &nbsp;<ion-icon name="arrow-dropright-circle"></ion-icon> Continuer sans &nbsp;<ion-icon name="arrow-dropright-circle"></ion-icon>
</ion-button> </ion-button>
</ion-col> </ion-col>
<ion-col> <ion-col>
<ion-button ion-button class="round" color="warning" margin-top full tappable <ion-button class="round" size="small" color="warning" margin-top full tappable
(click)="getGps()"> (click)="getGps()">
Activer le GPS &nbsp;<ion-icon name="locate"></ion-icon> Activer le GPS &nbsp;<ion-icon name="locate"></ion-icon>
</ion-button> </ion-button>
......
...@@ -20,5 +20,5 @@ ion-slides { ...@@ -20,5 +20,5 @@ ion-slides {
} }
--bullet-background: #ffffff !important; --bullet-background: #ffffff !important;
--bullet-background-active: var(--ion-color-secondary, #ffffff) !important; --bullet-background-active: var(--ion-color-dark, #000000) !important;
} }
\ No newline at end of file
...@@ -81,11 +81,13 @@ export class MainsliderPage implements OnInit { ...@@ -81,11 +81,13 @@ export class MainsliderPage implements OnInit {
getGps() { getGps() {
if (this.platform.is('cordova')) { if (this.platform.is('cordova')) {
console.log('cord');
this._PERM.checkGps(); this._PERM.checkGps();
this._LOCATE.initLocator(); this._LOCATE.initLocator();
} }
this._STOR.set('PARAM_geolocate', true); this._STOR.get('APP_PARAMS').then(appParams => {
appParams.PARAM_mainslider = true;
this._STOR.set('APP_PARAMS', appParams);
});
this.goToDashboard(); this.goToDashboard();
} }
...@@ -95,7 +97,11 @@ export class MainsliderPage implements OnInit { ...@@ -95,7 +97,11 @@ export class MainsliderPage implements OnInit {
} }
goToDashboard() { goToDashboard() {
this.router.navigateByUrl('/app/dashboard'); this._STOR.get('APP_PARAMS').then(appParams => {
appParams.PARAM_mainslider = true;
this._STOR.set('APP_PARAMS', appParams);
});
this.router.navigate(['app/dashboard']);
} }
ionViewDidEnter() { ionViewDidEnter() {
......
<ion-menu contentId="content"> <ion-menu contentId="content">
<ion-header> <ion-header>
<ion-toolbar color="primary"> <ion-toolbar color="primary">
<div class="anonymous ion-text-center" *ngIf="_AUTH.infoNicename === 'anonymous'" padding>
<p no-margin>
<img src="../../../../assets/img/ionic3-ico.png" />
</p>
<ion-chip color="" outline="true">
Mode anonyme
</ion-chip>
<p no-margin>
<ion-button size="small" color="dark" (click)="logout()">
<ion-icon name="log-out"></ion-icon>
Déconnexion
</ion-button>
</p>
</div>
<div class="connected" *ngIf="_AUTH.infoNicename !== 'anonymous'">
<ion-grid> <ion-grid>
<ion-row> <ion-row>
<ion-col size="4"> <ion-col size="4">
...@@ -10,15 +25,15 @@ ...@@ -10,15 +25,15 @@
</ion-col> </ion-col>
<ion-col size="8"> <ion-col size="8">
<ion-text> <ion-text>
<h4>Nabil Sadki</h4> <h4>{{ _AUTH.infoFullname }}</h4>
</ion-text> </ion-text>
<ion-chip color="light" outline="true"> <ion-chip color="light" outline="true">
<ion-icon name="star"></ion-icon> <ion-icon name="star"></ion-icon>
<ion-label>Testeur</ion-label> <ion-label>Testeur</ion-label>
</ion-chip> </ion-chip>
<ion-chip color="light"> <!-- <ion-chip color="light">
<ion-icon name="trophy" no-margin></ion-icon> <ion-icon name="trophy" no-margin></ion-icon>
</ion-chip> </ion-chip> -->
</ion-col> </ion-col>
</ion-row> </ion-row>
</ion-grid> </ion-grid>
...@@ -49,7 +64,7 @@ ...@@ -49,7 +64,7 @@
</ion-menu-toggle> </ion-menu-toggle>
</ion-col> </ion-col>
<ion-col no-padding class="column"> <ion-col no-padding class="column">
<ion-button size="small" color="dark" href="/login"> <ion-button size="small" color="dark" (click)="logout()">
<ion-icon name="log-out"></ion-icon> <ion-icon name="log-out"></ion-icon>
Déconnexion Déconnexion
</ion-button> </ion-button>
...@@ -58,6 +73,7 @@ ...@@ -58,6 +73,7 @@
</ion-grid> </ion-grid>
</ion-card> </ion-card>
</div>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content> <ion-content>
......
...@@ -6,3 +6,8 @@ ion-progress-bar { ...@@ -6,3 +6,8 @@ ion-progress-bar {
height: 10px; height: 10px;
border-radius: 5px; border-radius: 5px;
} }
.anonymous {
img {
width: 50vw;
}
}
\ No newline at end of file
import { Component, OnInit } from '@angular/core'; import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { AuthService } from '../../services/auth.service';
@Component({ @Component({
selector: 'app-menu', selector: 'app-menu',
...@@ -40,7 +42,15 @@ export class MenuPage implements OnInit { ...@@ -40,7 +42,15 @@ export class MenuPage implements OnInit {
} }
]; ];
constructor() { } constructor(
public router: Router,
public _AUTH: AuthService
) { }
logout() {
this._AUTH.logOut();
this.router.navigateByUrl('/login', { replaceUrl: true });
}
ngOnInit() { ngOnInit() {
// this._ALLO.presentLoading(); // this._ALLO.presentLoading();
......
...@@ -31,7 +31,7 @@ export class OffresCartePage implements OnInit { ...@@ -31,7 +31,7 @@ export class OffresCartePage implements OnInit {
if (loadedData) { if (loadedData) {
this._TRIP.offersCardListPointer = this._TRIP.offersCardListPointer + 1; this._TRIP.offersCardListPointer = this._TRIP.offersCardListPointer + 1;
this._TRIP.offersCardList = this._TRIP.offersCardList.concat(loadedData); this._TRIP.offersCardList = this._TRIP.offersCardList.concat(loadedData);
console.log(loadedData, this._TRIP.offersCardList, this._TRIP.offersCardListPointer); // console.log(loadedData, this._TRIP.offersCardList, this._TRIP.offersCardListPointer);
event.target.complete(); event.target.complete();
} else { } else {
event.target.disabled = true; event.target.disabled = true;
......
<ion-content> <ion-content padding>
<ion-list-header>Meilleures deals</ion-list-header> <!-- <ion-card color="light" margin-bottom> -->
<ion-text>
<p class="ion-text-center">
<img class="soon" src="../../../../assets/img/soon.png">
</p>
</ion-text>
<!-- </ion-card> -->
<ion-text class="ion-text-justify">
<p>
Que vous soyez détenteur(se) ou non de la Carte Testeur, cette section est ouverte à tout le monde, et permettra
dans un future proche de bénéficier des offres de nos partenaires.
</p>
<p>
Les plus fidéles seront <strong color="primary">trop bien</strong> récompensés!!
</p>
<p>
Restez à l'écoute!
</p>
</ion-text>
<!-- <ion-list-header>Meilleures deals</ion-list-header>
<div class="app"> <div class="app">
<ul class="hs"> <ul class="hs">
<li class="item">test</li> <li class="item">test</li>
...@@ -14,5 +33,5 @@ ...@@ -14,5 +33,5 @@
<ion-item> <ion-item>
Offre Offre
</ion-item> </ion-item>
</ion-list> </ion-list> -->
</ion-content> </ion-content>
\ No newline at end of file
...@@ -57,3 +57,9 @@ ul { ...@@ -57,3 +57,9 @@ ul {
background: #fff; background: #fff;
border-radius: 8px; border-radius: 8px;
} }
img.soon {
height: 30vh !important;
width: auto !important;
margin: 0 auto;
}
\ No newline at end of file
...@@ -13,64 +13,40 @@ ...@@ -13,64 +13,40 @@
<form class="list-form"> <form class="list-form">
<!-- <ion-item> <!-- <ion-item>
<ion-label color="dark" class="text-1x">Cacher l'écran d'accueil</ion-label> <ion-label color="dark" class="text-1x">Cacher l'écran d'accueil</ion-label>
<ion-toggle checked color="primary" [(ngModel)]="prm_mainslider" [ngModelOptions]="{standalone: true}" <ion-toggle checked color="primary" [(ngModel)]="prmMainslider" [ngModelOptions]="{standalone: true}"
(ionChange)="setParam('mainslider')"></ion-toggle> (ionChange)="setParam('mainslider')"></ion-toggle>
</ion-item> --> </ion-item> -->
<ion-item> <ion-item>
<ion-label color="dark" class="text-1x">Géo-notifications</ion-label> <ion-label color="dark" class="text-1x">Géo-notifications</ion-label>
<ion-toggle checked color="primary" [(ngModel)]="prm_geolocate" [ngModelOptions]="{standalone: true}" <ion-toggle color="primary" [(ngModel)]="prmGeolocate" [ngModelOptions]="{standalone: true}"
(ionChange)="setParam('geolocate')"></ion-toggle> (ionChange)="setParam('geolocate')"></ion-toggle>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-label color="dark" class="text-1x">Rayon de détection</ion-label> <ion-label color="dark" class="text-1x">Rayon de détection</ion-label>
<ion-select class="text-primary" [(ngModel)]="prm_geoarea" [ngModelOptions]="{standalone: true}" <ion-select class="text-primary" [(ngModel)]="prmGeoarea" [ngModelOptions]="{standalone: true}"
(ionChange)="setParam('geoarea')"> (ionChange)="setParam('geoarea')">
<ion-select-option value="400">400m</ion-select-option> <ion-select-option *ngFor="let gOpt of geoAreaOptions | keyvalue" [value]="gOpt.key">{{ gOpt.value }}</ion-select-option>
<ion-select-option value="800">800m</ion-select-option>
<ion-select-option value="1200">1,2Km</ion-select-option>
<ion-select-option value="1600">1,6Km</ion-select-option>
<ion-select-option value="2000">2Km</ion-select-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-label color="dark" class="text-1x">Raffraichir la position GPS chaque</ion-label> <ion-label color="dark" class="text-1x">Raffraichir la position GPS chaque</ion-label>
<ion-select class="text-primary" [(ngModel)]="prm_trackdelay" [ngModelOptions]="{standalone: true}" <ion-select class="text-primary" [(ngModel)]="prmTrackdelay" [ngModelOptions]="{standalone: true}"
(ionChange)="setParam('trackdelay')"> (ionChange)="setParam('trackdelay')">
<ion-select-option value="60000">minute</ion-select-option> <ion-select-option *ngFor="let tdOpt of trackDelayOptions | keyvalue" [value]="tdOpt.key">{{ tdOpt.value }}</ion-select-option>
<ion-select-option value="120000">2 minutes</ion-select-option>
<ion-select-option value="180000">3 minutes</ion-select-option>
<ion-select-option value="240000">4 minutes</ion-select-option>
<ion-select-option value="300000">5 minutes</ion-select-option>
<ion-select-option value="360000">6 minutes</ion-select-option>
<ion-select-option value="420000">7 minutes</ion-select-option>
<ion-select-option value="480000">8 minutes</ion-select-option>
<ion-select-option value="540000">9 minutes</ion-select-option>
<ion-select-option value="600000">10 minutes</ion-select-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-label color="dark" class="text-1x">Réaffichage des notifications</ion-label> <ion-label color="dark" class="text-1x">Réaffichage des notifications</ion-label>
<ion-select class="text-primary" [(ngModel)]="prm_notiftime" [ngModelOptions]="{standalone: true}" <ion-select class="text-primary" [(ngModel)]="prmNotiftime" [ngModelOptions]="{standalone: true}"
(ionChange)="setParam('notiftime')"> (ionChange)="setParam('notiftime')">
<ion-select-option value="5">5 min</ion-select-option> <ion-select-option *ngFor="let ntOpt of notifTimeOptions | keyvalue" [value]="ntOpt.key">{{ ntOpt.value }}</ion-select-option>
<ion-select-option value="15">15 min</ion-select-option>
<ion-select-option value="30">30 min</ion-select-option>
<ion-select-option value="45">45 min</ion-select-option>
<ion-select-option value="60">1 h</ion-select-option>
<ion-select-option value="120">2 h</ion-select-option>
<ion-select-option value="480">4 h</ion-select-option>
<ion-select-option value="960">8 h</ion-select-option>
<ion-select-option value="2880">1 j</ion-select-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-label color="dark" class="text-1x">Notifications par rafraîchissement</ion-label> <ion-label color="dark" class="text-1x">Notifications par rafraîchissement</ion-label>
<ion-select class="text-primary" [(ngModel)]="prm_notifnbr" [ngModelOptions]="{standalone: true}" <ion-select class="text-primary" [(ngModel)]="prmNotifnbr" [ngModelOptions]="{standalone: true}"
(ionChange)="setParam('notifnbr')"> (ionChange)="setParam('notifnbr')">
<ion-select-option value="2">Pas plus de 2 à la fois</ion-select-option> <ion-select-option *ngFor="let nnOpt of notifNbrOptions | keyvalue" [value]="nnOpt.key">{{ nnOpt.value }}</ion-select-option>
<ion-select-option value="4">Pas plus de 4 à la fois</ion-select-option>
<ion-select-option value="6">Pas plus de 6 à la fois</ion-select-option>
<ion-select-option value="all">Afficher toutes les notifications</ion-select-option>
</ion-select> </ion-select>
</ion-item> </ion-item>
</form> </form>
......
...@@ -11,12 +11,49 @@ import { AlloService } from '../../services/allo-service'; ...@@ -11,12 +11,49 @@ import { AlloService } from '../../services/allo-service';
}) })
export class ParamsPage implements OnInit { export class ParamsPage implements OnInit {
public prm_mainslider = true; public prmMainslider = true;
public prm_geolocate = false; public prmGeolocate = false;
public prm_geoarea: any = 400; public prmGeoarea: any = 400;
public prm_notiftime = 15; public prmNotiftime = 15;
public prm_trackdelay = 60000; public prmTrackdelay = 60000;
public prm_notifnbr: any = 'all'; public prmNotifnbr: any = 'all';
public geoAreaOptions = {
400: '400m',
800: '800m',
1200: '1,2Km',
1600: '1,6m',
2000: '2Km',
};
public trackDelayOptions = {
60000: '1 minute',
120000: '2 minutes',
180000: '3 minutes',
240000: '4 minutes',
300000: '5 minutes',
360000: '6 minutes',
420000: '7 minutes',
480000: '8 minutes',
540000: '9 minutes',
600000: '10 minutes',
};
public notifTimeOptions = {
5: '5 minutes',
15: '15 minutes',
30: '30 minutes',
45: '45 minutes',
60: '1 heure',
120: '2 heure',
480: '4 heure',
960: '8 heure',
2880: '1 jour',
};
public notifNbrOptions = {
2: 'Pas plus de 2 à la fois',
4: 'Pas plus de 4 à la fois',
6: 'Pas plus de 6 à la fois',
all: 'Afficher toutes les notifications',
};
constructor( constructor(
private _STOR: Storage, private _STOR: Storage,
...@@ -24,46 +61,27 @@ export class ParamsPage implements OnInit { ...@@ -24,46 +61,27 @@ export class ParamsPage implements OnInit {
private _LOCAT: LocationService, private _LOCAT: LocationService,
private _ALLO: AlloService private _ALLO: AlloService
) { ) {
this._STOR.get('PARAM_mainslider').then((val) => { this._STOR.get('APP_PARAMS').then((appParams) => {
if (val !== null) { if (appParams !== null) {
this.prm_mainslider = val; this.prmGeolocate = appParams.PARAM_geolocate;
} this.prmGeoarea = appParams.PARAM_geoarea;
}); this.prmNotiftime = appParams.PARAM_notiftime;
this._STOR.get('PARAM_geolocate').then((val) => { this.prmTrackdelay = appParams.PARAM_trackdelay;
if (val !== null) { this.prmNotifnbr = appParams.PARAM_notifnbr;
this.prm_geolocate = val;
}
});
this._STOR.get('PARAM_geoarea').then((val) => {
if (val !== null) {
this.prm_geoarea = val;
}
});
this._STOR.get('PARAM_notiftime').then((val) => {
if (val !== null) {
this.prm_notiftime = val;
}
});
this._STOR.get('PARAM_trackdelay').then((val) => {
if (val !== null) {
this.prm_trackdelay = val;
}
});
this._STOR.get('PARAM_notifnbr').then((val) => {
if (val !== null) {
this.prm_notifnbr = val;
} }
}); });
} }
setParam(name) { setParam(name) {
this._STOR.get('APP_PARAMS').then((appParams) => {
if (appParams !== null) {
switch (name) { switch (name) {
case 'mainslider': // case 'mainslider':
this._ALLO.setParam('mainslider', this.prm_mainslider); // this._ALLO.setParam('mainslider', this.prm_mainslider);
break; // break;
case 'geolocate': case 'geolocate':
this._ALLO.setParam('geolocate', this.prm_geolocate); appParams.PARAM_geolocate = this.prmGeolocate;
if (this.prm_geolocate) { if (this.prmGeolocate) {
this._PERM.checkGps(); this._PERM.checkGps();
this._LOCAT.initLocator(); this._LOCAT.initLocator();
} else { } else {
...@@ -71,19 +89,22 @@ export class ParamsPage implements OnInit { ...@@ -71,19 +89,22 @@ export class ParamsPage implements OnInit {
} }
break; break;
case 'geoarea': case 'geoarea':
this._ALLO.setParam('geoarea', +this.prm_geoarea); appParams.PARAM_geoarea = +this.prmGeoarea;
break; break;
case 'notiftime': case 'notiftime':
this._ALLO.setParam('notiftime', +this.prm_notiftime); appParams.PARAM_notiftime = +this.prmNotiftime;
break; break;
case 'notifnbr': case 'notifnbr':
this._ALLO.setParam('notifnbr', +this.prm_notifnbr); appParams.PARAM_notifnbr = +this.prmNotifnbr;
break; break;
case 'trackdelay': case 'trackdelay':
this._ALLO.setParam('trackdelay', +this.prm_trackdelay); appParams.PARAM_trackdelay = +this.prmTrackdelay;
this._LOCAT.restartTracking(); this._LOCAT.restartTracking();
break; break;
} }
this._STOR.set('APP_PARAMS', appParams);
}
});
} }
ngOnInit() { ngOnInit() {
......
...@@ -6,38 +6,39 @@ ...@@ -6,38 +6,39 @@
<ion-title> <ion-title>
Modifier mon profil Modifier mon profil
</ion-title> </ion-title>
<ion-button color="success" slot="end">Valider</ion-button>
</ion-toolbar> </ion-toolbar>
</ion-header> </ion-header>
<ion-content> <ion-content>
<ion-card> <ion-grid>
<ion-item color="primary"> <ion-row>
Ma carte testeur : <ion-col size="2"></ion-col>
<ion-col size="8">
<ion-img src="../../assets/img/avatar.jpeg"></ion-img>
</ion-col>
<ion-col size="2"></ion-col>
</ion-row>
</ion-grid>
<ion-card padding-bottom>
<ion-item color="light" lines="none">
Mes infos :
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-icon name="card" slot="start"></ion-icon> 2019 0108 0000 0001 <ion-label position="floating">Nom</ion-label>
<ion-input clearInput></ion-input>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-icon name="stopwatch" slot="start"></ion-icon> 08/2020 <ion-label position="floating">Prénom</ion-label>
</ion-item> <ion-input clearInput></ion-input>
<ion-item lines="none">
<ion-icon name="person" slot="start"></ion-icon> G101010
</ion-item>
</ion-card>
<ion-card>
<ion-item color="primary">
Infos :
<ion-button slot="end" color="light" fill="outline" routerLink="/app/profil-edit" routerDirection="root"
routerLinkActive="active">Modifier</ion-button>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-icon name="mail" slot="start"></ion-icon> monemail@allo-testeurs.com <ion-label position="floating">E-mail</ion-label>
<ion-input clearInput></ion-input>
</ion-item> </ion-item>
<ion-item> <ion-item>
<ion-icon name="pin" slot="start"></ion-icon> Lorem ipsum sit dolor amet <ion-label position="floating">Téléphone</ion-label>
</ion-item> <ion-input clearInput></ion-input>
<ion-item lines="none">
<ion-icon name="call" slot="start"></ion-icon> +212 661 20 30 40
</ion-item> </ion-item>
</ion-card> </ion-card>
</ion-content> </ion-content>
\ No newline at end of file
import { LoadingController, AlertController } from "@ionic/angular"; import { LoadingController, AlertController, ToastController } from '@ionic/angular';
import { Injectable } from "@angular/core"; import { Injectable } from '@angular/core';
import { Storage } from '@ionic/storage'; import { Storage } from '@ionic/storage';
@Injectable({ providedIn: 'root' }) @Injectable({ providedIn: 'root' })
...@@ -12,44 +12,25 @@ export class AlloService { ...@@ -12,44 +12,25 @@ export class AlloService {
public prmNotiftime = 15; public prmNotiftime = 15;
public prmTrackdelay = 60000; public prmTrackdelay = 60000;
public prmNotifnbr: any = 'all'; public prmNotifnbr: any = 'all';
public loading;
constructor( constructor(
private alertCtrl: AlertController, private alertCtrl: AlertController,
private loadingCtrl: LoadingController, private loadingCtrl: LoadingController,
private toastCtrl: ToastController,
private _STOR: Storage private _STOR: Storage
) { ) {
this.setDefaultParams(); this.setDefaultParams();
} }
setDefaultParams() { setDefaultParams() {
this._STOR.get('PARAM_mainslider').then((val) => { this._STOR.get('APP_PARAMS').then((appParams) => {
if (val !== null) { if (appParams !== null) {
this.prmMainslider = val; this.prmGeolocate = appParams.PARAM_geolocate;
} this.prmGeoarea = appParams.PARAM_geoarea;
}); this.prmNotiftime = appParams.PARAM_notiftime;
this._STOR.get('PARAM_geolocate').then((val) => { this.prmTrackdelay = appParams.PARAM_trackdelay;
if (val !== null) { this.prmNotifnbr = appParams.PARAM_notifnbr;
this.prmGeolocate = val;
}
});
this._STOR.get('PARAM_geoarea').then((val) => {
if (val !== null) {
this.prmGeoarea = val;
}
});
this._STOR.get('PARAM_notiftime').then((val) => {
if (val !== null) {
this.prmNotiftime = val;
}
});
this._STOR.get('PARAM_trackdelay').then((val) => {
if (val !== null) {
this.prmTrackdelay = val;
}
});
this._STOR.get('PARAM_notifnbr').then((val) => {
if (val !== null) {
this.prmNotifnbr = val;
} }
}); });
} }
...@@ -111,19 +92,38 @@ export class AlloService { ...@@ -111,19 +92,38 @@ export class AlloService {
async presentLoading() { async presentLoading() {
this.showPage = false; this.showPage = false;
const loading = await this.loadingCtrl.create({ this.loading = await this.loadingCtrl.create({
// spinner: null, // spinner: null,
duration: 2000, duration: 0,
message: 'Chargement...', message: 'Chargement...',
translucent: true, translucent: true,
cssClass: 'custom-class custom-loading' cssClass: 'custom-class custom-loading'
}); });
return await loading.present().then(() => { return await this.loading.present().then(() => {
this.showPage = true; this.showPage = true;
}); });
} }
dismissLoading() { dismissLoading() {
this.loadingCtrl.dismiss(); this.loading.dismiss();
}
async presentToast(header, message, position) {
const toast = await this.toastCtrl.create({
message: message,
duration: 3000,
header: header,
position: position,
buttons: [
{
text: 'OK',
role: 'cancel',
handler: () => {
console.log('Cancel clicked');
}
}
]
});
toast.present();
} }
} }
import { TestBed } from '@angular/core/testing';
import { AuthGuardService } from './auth-guard.service';
describe('AuthGuardService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: AuthGuardService = TestBed.get(AuthGuardService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { CanActivate } from '@angular/router';
import { AuthService } from './auth.service';
@Injectable({
providedIn: 'root'
})
export class AuthGuardService implements CanActivate {
constructor(
public authService: AuthService
) { }
canActivate(): boolean {
return this.authService.isAuthenticated();
}
}
import { TestBed } from '@angular/core/testing';
import { AuthService } from './auth.service';
describe('AuthService', () => {
beforeEach(() => TestBed.configureTestingModule({}));
it('should be created', () => {
const service: AuthService = TestBed.get(AuthService);
expect(service).toBeTruthy();
});
});
import { Injectable } from '@angular/core';
import { Platform } from '@ionic/angular';
import { Storage } from '@ionic/storage';
import { HttpClient, HttpHeaders, HttpErrorResponse } from '@angular/common/http';
import { HTTP } from '@ionic-native/http/ngx';
import { Router } from '@angular/router';
import { BehaviorSubject } from 'rxjs';
import { AlloService } from './allo-service';
// import * as firebase from 'firebase/app';
// import 'firebase/auth';
import * as Config from '../constants';
@Injectable({
providedIn: 'root'
})
export class AuthService {
public infoNicename;
public infoFullname;
public infoEmail;
authState = new BehaviorSubject(false);
authProfile = new BehaviorSubject(false);
constructor(
private platform: Platform,
public storage: Storage,
private http: HttpClient,
private httpAdv: HTTP,
private router: Router,
private _ALLO: AlloService
) {
this.platform.ready().then(() => {
this.storage.get('wpUser').then(wpUser => {
if (wpUser) {
this.infoNicename = wpUser.user_nicename;
this.infoFullname = wpUser.user_display_name;
this.infoEmail = wpUser.user_email;
}
});
this.isLoggedIn();
this.isAnonymous();
});
}
isAuthenticated() {
return this.authState.value;
}
getAuthState() {
return this.authState;
}
isLoggedIn() {
this.storage.get('wpUser').then((wpUser) => {
if (wpUser) {
console.log('wpuser found')
this.authState.next(true);
}
});
}
isAnonymous() {
this.storage.get('wpUser').then((wpUser) => {
if (wpUser && wpUser.hasOwnProperty('user_nicename') && wpUser.user_nicename === 'anonymous') {
this.authProfile.next(true);
}
});
}
// Wordpress
getUser() {
return this.storage.get('wpUser');
}
setUser(user) {
this.infoNicename = user.user_nicename;
this.infoFullname = user.user_display_name;
this.infoEmail = user.user_email;
this.authState.next(true);
return this.storage.set('wpUser', user);
}
logOut() {
this.authState.next(false);
return this.storage.remove('wpUser');
}
doLogin(values) {
let authData = {
username: values.email,
password: values.password
};
return new Promise<any>((resolve, reject) => {
if (this.platform.is('cordova')) {
this.httpAdv.post(Config.WORDPRESS_URL + 'wp-json/jwt-auth/v1/token', authData, {}).then(
res => {
console.log(res);
this.setUser(JSON.parse(res.data));
this.authState.next(true);
resolve(res);
},
err => reject(err)
);
} else {
this.http.post(Config.WORDPRESS_URL + 'wp-json/jwt-auth/v1/token', authData).subscribe(
res => {
this.setUser(res);
this.authState.next(true);
resolve(res);
},
err => reject(err)
);
}
});
}
doRegister(user_data, token) {
return this.http.post(Config.WORDPRESS_REST_API_URL + 'users?token=' + token, user_data);
}
validateAuthToken(token) {
this._ALLO.presentLoading();
if (this.platform.is('cordova')) {
let header: Headers = new Headers();
header.append('Authorization', 'Bearer ' + token);
return this.httpAdv.post(
Config.WORDPRESS_URL + 'wp-json/jwt-auth/v1/token/validate',
{},
{ headers: header }
).then(result => {
this.processeAuthToken(result);
}).catch(error => {
this._ALLO.dismissLoading();
console.log(error);
});
} else {
let header: HttpHeaders = new HttpHeaders();
header.append('Authorization', 'Bearer ' + token);
return this.http.post(
Config.WORDPRESS_URL + 'wp-json/jwt-auth/v1/token/validate',
{},
{ headers: header }
).subscribe((result: any) => {
this.processeAuthToken(result);
}, error => {
this._ALLO.dismissLoading();
console.log(error);
});
}
}
processeAuthToken(result: any) {
this._ALLO.dismissLoading();
if (result.data.status !== 200) {
if (this.router.url === '/login') {
alert('Votre session est expirée. Veuillez vous reconnecter');
}
} else {
this.router.navigateByUrl('/mainslider', { replaceUrl: true });
}
}
// Firebase
firebaseRegister(value) {
// return new Promise<any>((resolve, reject) => {
// firebase.auth().createUserWithEmailAndPassword(value.email, value.password)
// .then(
// res => resolve(res),
// err => reject(err));
// })
}
firebaseLogin(value) {
// return new Promise<any>((resolve, reject) => {
// firebase.auth().signInWithEmailAndPassword(value.email, value.password)
// .then(
// res => resolve(res),
// err => reject(err));
// });
}
firebaseLogout() {
// return new Promise((resolve, reject) => {
// if (firebase.auth().currentUser) {
// firebase.auth().signOut()
// .then(() => {
// console.log("LOG Out");
// resolve();
// }).catch((error) => {
// reject();
// });
// }
// })
}
firebaseUserDetails() {
// return firebase.auth().currentUser;
}
}
export const environment = { export const environment = {
production: true production: true,
firebase: {
apiKey: 'AIzaSyDCp8ZFLfMtRtCIuFCYbmmcBU5jcu64MIg',
authDomain: 'allo-testeurs-1546348822085.firebaseapp.com',
databaseURL: 'https://allo-testeurs-1546348822085.firebaseio.com',
projectId: 'allo-testeurs-1546348822085',
storageBucket: '',
messagingSenderId: '536597038498',
appId: '1:536597038498:web:7896f1f4b2960e72479efb'
}
}; };
...@@ -3,7 +3,16 @@ ...@@ -3,7 +3,16 @@
// The list of file replacements can be found in `angular.json`. // The list of file replacements can be found in `angular.json`.
export const environment = { export const environment = {
production: false production: false,
firebase: {
apiKey: 'AIzaSyDCp8ZFLfMtRtCIuFCYbmmcBU5jcu64MIg',
authDomain: 'allo-testeurs-1546348822085.firebaseapp.com',
databaseURL: 'https://allo-testeurs-1546348822085.firebaseio.com',
projectId: 'allo-testeurs-1546348822085',
storageBucket: '',
messagingSenderId: '536597038498',
appId: '1:536597038498:web:7896f1f4b2960e72479efb'
}
}; };
/* /*
......
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
// http://ionicframework.com/docs/theming/ // http://ionicframework.com/docs/theming/
/** Ionic CSS Variables **/ /** Ionic CSS Variables **/
@import url('https://fonts.googleapis.com/css?family=Abel');
@font-face { @font-face {
font-family: "Open Sans"; font-family: "Open Sans";
src: url("../assets/fonts/opensans/regular/OpenSans-Regular-webfont.eot"); src: url("../assets/fonts/opensans/regular/OpenSans-Regular-webfont.eot");
...@@ -25,27 +26,27 @@ ...@@ -25,27 +26,27 @@
:root { :root {
/** primary **/ /** primary **/
--ion-color-primary: #f93129; --ion-color-primary: #f93129;
--ion-color-primary-rgb: 56, 128, 255; --ion-color-primary-rgb: 249, 49, 41;
--ion-color-primary-contrast: #ffffff; --ion-color-primary-contrast: #ffffff;
--ion-color-primary-contrast-rgb: 255, 255, 255; --ion-color-primary-contrast-rgb: 255, 255, 255;
--ion-color-primary-shade: #f7b32b; --ion-color-primary-shade: #db2b24;
--ion-color-primary-tint: #fcf6b1; --ion-color-primary-tint: #fa463e;
/** secondary **/ /** secondary **/
--ion-color-secondary: #f7b32b; --ion-color-secondary: #f7b32b;
--ion-color-secondary-rgb: 12, 209, 232; --ion-color-secondary-rgb: 247, 179, 43;
--ion-color-secondary-contrast: #ffffff; --ion-color-secondary-contrast: #000000;
--ion-color-secondary-contrast-rgb: 255, 255, 255; --ion-color-secondary-contrast-rgb: 0, 0, 0;
--ion-color-secondary-shade: #f7b32b; --ion-color-secondary-shade: #d99e26;
--ion-color-secondary-tint: #fcf6b1; --ion-color-secondary-tint: #f8bb40;
/** tertiary **/ /** tertiary **/
--ion-color-tertiary: #2d1e2f; --ion-color-tertiary: #2d1e2f;
--ion-color-tertiary-rgb: 112, 68, 255; --ion-color-tertiary-rgb: 45, 30, 47;
--ion-color-tertiary-contrast: #ffffff; --ion-color-tertiary-contrast: #ffffff;
--ion-color-tertiary-contrast-rgb: 255, 255, 255; --ion-color-tertiary-contrast-rgb: 255, 255, 255;
--ion-color-tertiary-shade: #2d1e2f; --ion-color-tertiary-shade: #281a29;
--ion-color-tertiary-tint: #7e57ff; --ion-color-tertiary-tint: #423544;
/** success **/ /** success **/
--ion-color-success: #10dc60; --ion-color-success: #10dc60;
...@@ -95,9 +96,124 @@ ...@@ -95,9 +96,124 @@
--ion-color-light-shade: #d7d8da; --ion-color-light-shade: #d7d8da;
--ion-color-light-tint: #f5f6f9; --ion-color-light-tint: #f5f6f9;
/** **/ /** Gradient grey **/
--ion-color-gradgrey: linear-gradient(to bottom, #ffffff, #fbfbfb, #f6f6f6, #f2f2f2, #eeeeee);
--ion-color-gradgrey-rgb: 255, 255, 255;
--ion-color-gradgrey-contrast: #000000;
--ion-color-gradgrey-contrast-rgb: 0, 0, 0;
--ion-color-gradgrey-shade: #e0e0e0;
--ion-color-gradgrey-tint: #ffffff;
/** FB **/
--ion-color-fb: #3c5a99; --ion-color-fb: #3c5a99;
--ion-color-fb-rgb: 60, 90, 153;
--ion-color-fb-contrast: #ffffff;
--ion-color-fb-contrast-rgb: 255, 255, 255;
--ion-color-fb-shade: #354f87;
--ion-color-fb-tint: #506ba3;
/** G **/
--ion-color-g: #cc3333; --ion-color-g: #cc3333;
--ion-color-g-rgb: 204, 51, 51;
--ion-color-g-contrast: #ffffff;
--ion-color-g-contrast-rgb: 255, 255, 255;
--ion-color-g-shade: #b42d2d;
--ion-color-g-tint: #d14747;
/** Blue **/
--ion-color-blue: #3880ff;
--ion-color-blue-rgb: 56,128,255;
--ion-color-blue-contrast: #ffffff;
--ion-color-blue-contrast-rgb: 255,255,255;
--ion-color-blue-shade: #3171e0;
--ion-color-blue-tint: #4c8dff;
/** Rose **/
--ion-color-rose: #ffceff;
--ion-color-rose-rgb: 255,206,255;
--ion-color-rose-contrast: #000000;
--ion-color-rose-contrast-rgb: 0,0,0;
--ion-color-rose-shade: #e0b5e0;
--ion-color-rose-tint: #ffd3ff;
/** Purple **/
--ion-color-purple: #c98ce3;
--ion-color-purple-rgb: 201,140,227;
--ion-color-purple-contrast: #ffffff;
--ion-color-purple-contrast-rgb: 0,0,0;
--ion-color-purple-shade: #b17bc8;
--ion-color-purple-tint: #ce98e6;
/** Orange **/
--ion-color-orange: #FFA500;
--ion-color-orange-rgb: 255,165,0;
--ion-color-orange-contrast: #ffffff;
--ion-color-orange-contrast-rgb: 0,0,0;
--ion-color-orange-shade: #e09100;
--ion-color-orange-tint: #ffae1a;
--ion-font-family: "Open Sans";
}
.ion-color-gradgrey {
--ion-color-base: var(--ion-color-gradgrey);
--ion-color-base-rgb: var(--ion-color-gradgrey-rgb);
--ion-color-contrast: var(--ion-color-gradgrey-contrast);
--ion-color-contrast-rgb: var(--ion-color-gradgrey-contrast-rgb);
--ion-color-shade: var(--ion-color-gradgrey-shade);
--ion-color-tint: var(--ion-color-gradgrey-tint);
}
.ion-color-fb {
--ion-color-base: var(--ion-color-fb);
--ion-color-base-rgb: var(--ion-color-fb-rgb);
--ion-color-contrast: var(--ion-color-fb-contrast);
--ion-color-contrast-rgb: var(--ion-color-fb-contrast-rgb);
--ion-color-shade: var(--ion-color-fb-shade);
--ion-color-tint: var(--ion-color-fb-tint);
}
.ion-color-g {
--ion-color-base: var(--ion-color-g);
--ion-color-base-rgb: var(--ion-color-g-rgb);
--ion-color-contrast: var(--ion-color-g-contrast);
--ion-color-contrast-rgb: var(--ion-color-g-contrast-rgb);
--ion-color-shade: var(--ion-color-g-shade);
--ion-color-tint: var(--ion-color-g-tint);
}
.ion-color-blue {
--ion-color-base: var(--ion-color-blue);
--ion-color-base-rgb: var(--ion-color-blue-rgb);
--ion-color-contrast: var(--ion-color-blue-contrast);
--ion-color-contrast-rgb: var(--ion-color-blue-contrast-rgb);
--ion-color-shade: var(--ion-color-blue-shade);
--ion-color-tint: var(--ion-color-blue-tint);
}
.ion-color-rose {
--ion-color-base: var(--ion-color-rose);
--ion-color-base-rgb: var(--ion-color-rose-rgb);
--ion-color-contrast: var(--ion-color-rose-contrast);
--ion-color-contrast-rgb: var(--ion-color-rose-contrast-rgb);
--ion-color-shade: var(--ion-color-rose-shade);
--ion-color-tint: var(--ion-color-rose-tint);
}
.ion-color-purple {
--ion-color-base: var(--ion-color-purple);
--ion-color-base-rgb: var(--ion-color-purple-rgb);
--ion-color-contrast: var(--ion-color-purple-contrast);
--ion-color-contrast-rgb: var(--ion-color-purple-contrast-rgb);
--ion-color-shade: var(--ion-color-purple-shade);
--ion-color-tint: var(--ion-color-purple-tint);
}
--ion-font-family: 'Open Sans'; .ion-color-orange {
--ion-color-base: var(--ion-color-orange);
--ion-color-base-rgb: var(--ion-color-orange-rgb);
--ion-color-contrast: var(--ion-color-orange-contrast);
--ion-color-contrast-rgb: var(--ion-color-orange-contrast-rgb);
--ion-color-shade: var(--ion-color-orange-shade);
--ion-color-tint: var(--ion-color-orange-tint);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment