Frontend: Refactor session.js and unit tests
Signed-off-by: Michael Mayer <michael@liquidbytes.net>
This commit is contained in:
parent
02c3cdc8b9
commit
33156b5bd7
326
frontend/package-lock.json
generated
326
frontend/package-lock.json
generated
|
@ -3043,20 +3043,20 @@
|
|||
}
|
||||
},
|
||||
"browserslist": {
|
||||
"version": "4.14.2",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.2.tgz",
|
||||
"integrity": "sha512-HI4lPveGKUR0x2StIz+2FXfDk9SfVMrxn6PLh1JeGUwcuoDkdKZebWiyLRJ68iIPDpMI4JLVDf7S7XzslgWOhw==",
|
||||
"version": "4.14.3",
|
||||
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.14.3.tgz",
|
||||
"integrity": "sha512-GcZPC5+YqyPO4SFnz48/B0YaCwS47Q9iPChRGi6t7HhflKBcINzFrJvRfC+jp30sRMKxF+d4EHGs27Z0XP1NaQ==",
|
||||
"requires": {
|
||||
"caniuse-lite": "^1.0.30001125",
|
||||
"electron-to-chromium": "^1.3.564",
|
||||
"escalade": "^3.0.2",
|
||||
"caniuse-lite": "^1.0.30001131",
|
||||
"electron-to-chromium": "^1.3.570",
|
||||
"escalade": "^3.1.0",
|
||||
"node-releases": "^1.1.61"
|
||||
},
|
||||
"dependencies": {
|
||||
"caniuse-lite": {
|
||||
"version": "1.0.30001128",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001128.tgz",
|
||||
"integrity": "sha512-ocjGtRj+4wP6XTEIn2AGn3ebd8nkFN3991GlZ3ubLrjUC/w/YGgBFb5iy7CHr5NaBZ/pfo0SrctGRDVUbGgpzg=="
|
||||
"version": "1.0.30001133",
|
||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001133.tgz",
|
||||
"integrity": "sha512-s3XAUFaC/ntDb1O3lcw9K8MPeOW7KO3z9+GzAoBxfz1B0VdacXPMKgFUtG4KIsgmnbexmi013s9miVu4h+qMHw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -3101,39 +3101,67 @@
|
|||
"integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg=="
|
||||
},
|
||||
"cacache": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
|
||||
"integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
|
||||
"version": "15.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
|
||||
"integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
|
||||
"requires": {
|
||||
"bluebird": "^3.5.5",
|
||||
"chownr": "^1.1.1",
|
||||
"figgy-pudding": "^3.5.1",
|
||||
"@npmcli/move-file": "^1.0.1",
|
||||
"chownr": "^2.0.0",
|
||||
"fs-minipass": "^2.0.0",
|
||||
"glob": "^7.1.4",
|
||||
"graceful-fs": "^4.1.15",
|
||||
"infer-owner": "^1.0.3",
|
||||
"lru-cache": "^5.1.1",
|
||||
"mississippi": "^3.0.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"move-concurrently": "^1.0.1",
|
||||
"infer-owner": "^1.0.4",
|
||||
"lru-cache": "^6.0.0",
|
||||
"minipass": "^3.1.1",
|
||||
"minipass-collect": "^1.0.2",
|
||||
"minipass-flush": "^1.0.5",
|
||||
"minipass-pipeline": "^1.2.2",
|
||||
"mkdirp": "^1.0.3",
|
||||
"p-map": "^4.0.0",
|
||||
"promise-inflight": "^1.0.1",
|
||||
"rimraf": "^2.6.3",
|
||||
"ssri": "^6.0.1",
|
||||
"unique-filename": "^1.1.1",
|
||||
"y18n": "^4.0.0"
|
||||
"rimraf": "^3.0.2",
|
||||
"ssri": "^8.0.0",
|
||||
"tar": "^6.0.2",
|
||||
"unique-filename": "^1.1.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"chownr": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
||||
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"requires": {
|
||||
"yallist": "^3.0.2"
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
|
||||
},
|
||||
"p-map": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
|
||||
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
|
||||
"requires": {
|
||||
"aggregate-error": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -3768,9 +3796,9 @@
|
|||
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
|
||||
},
|
||||
"copy-webpack-plugin": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.1.0.tgz",
|
||||
"integrity": "sha512-aWjIuLt1OVQxaDVffnt3bnGmLA8zGgAJaFwPA+a+QYVPh1vhIKjVfh3SbOFLV0kRPvGBITbw17n5CsmiBS4LQQ==",
|
||||
"version": "6.1.1",
|
||||
"resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.1.1.tgz",
|
||||
"integrity": "sha512-4TlkHFYkrZ3WppLA5XkPmBLI5lnEpFsXvpeqxCf5PzkratZiVklNXsvoQkLhUU43q7ZL3AOXtaHAd9jLNJoU0w==",
|
||||
"requires": {
|
||||
"cacache": "^15.0.5",
|
||||
"fast-glob": "^3.2.4",
|
||||
|
@ -3781,7 +3809,7 @@
|
|||
"normalize-path": "^3.0.0",
|
||||
"p-limit": "^3.0.2",
|
||||
"schema-utils": "^2.7.1",
|
||||
"serialize-javascript": "^4.0.0",
|
||||
"serialize-javascript": "^5.0.1",
|
||||
"webpack-sources": "^1.4.3"
|
||||
},
|
||||
"dependencies": {
|
||||
|
@ -3795,35 +3823,6 @@
|
|||
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
|
||||
"integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw=="
|
||||
},
|
||||
"cacache": {
|
||||
"version": "15.0.5",
|
||||
"resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz",
|
||||
"integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==",
|
||||
"requires": {
|
||||
"@npmcli/move-file": "^1.0.1",
|
||||
"chownr": "^2.0.0",
|
||||
"fs-minipass": "^2.0.0",
|
||||
"glob": "^7.1.4",
|
||||
"infer-owner": "^1.0.4",
|
||||
"lru-cache": "^6.0.0",
|
||||
"minipass": "^3.1.1",
|
||||
"minipass-collect": "^1.0.2",
|
||||
"minipass-flush": "^1.0.5",
|
||||
"minipass-pipeline": "^1.2.2",
|
||||
"mkdirp": "^1.0.3",
|
||||
"p-map": "^4.0.0",
|
||||
"promise-inflight": "^1.0.1",
|
||||
"rimraf": "^3.0.2",
|
||||
"ssri": "^8.0.0",
|
||||
"tar": "^6.0.2",
|
||||
"unique-filename": "^1.1.1"
|
||||
}
|
||||
},
|
||||
"chownr": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz",
|
||||
"integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ=="
|
||||
},
|
||||
"emojis-list": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
|
||||
|
@ -3887,14 +3886,6 @@
|
|||
"p-locate": "^4.1.0"
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "6.0.0",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
|
||||
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
|
||||
"requires": {
|
||||
"yallist": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"make-dir": {
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz",
|
||||
|
@ -3903,11 +3894,6 @@
|
|||
"semver": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"mkdirp": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz",
|
||||
"integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw=="
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.0.2.tgz",
|
||||
|
@ -3934,14 +3920,6 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
"p-map": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz",
|
||||
"integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==",
|
||||
"requires": {
|
||||
"aggregate-error": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"path-exists": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
|
||||
|
@ -3955,14 +3933,6 @@
|
|||
"find-up": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"rimraf": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
|
||||
"integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
|
||||
"requires": {
|
||||
"glob": "^7.1.3"
|
||||
}
|
||||
},
|
||||
"schema-utils": {
|
||||
"version": "2.7.1",
|
||||
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz",
|
||||
|
@ -3978,23 +3948,18 @@
|
|||
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
|
||||
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
|
||||
},
|
||||
"serialize-javascript": {
|
||||
"version": "5.0.1",
|
||||
"resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz",
|
||||
"integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==",
|
||||
"requires": {
|
||||
"randombytes": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"slash": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
|
||||
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q=="
|
||||
},
|
||||
"ssri": {
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz",
|
||||
"integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==",
|
||||
"requires": {
|
||||
"minipass": "^3.1.1"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -4765,9 +4730,9 @@
|
|||
"integrity": "sha512-7vmuyh5+kuUyJKePhQfRQBhXV5Ce+RnaeeQArKu1EAMpL3WbgMt5WG6uQZpEVvYSSsxMXRKOewtDk9RaTKXRlA=="
|
||||
},
|
||||
"electron-to-chromium": {
|
||||
"version": "1.3.567",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.567.tgz",
|
||||
"integrity": "sha512-1aKkw0Hha1Bw9JA5K5PT5eFXC/TXbkJvUfNSNEciPUMgSIsRJZM1hF2GUEAGZpAbgvd8En21EA+Lv820KOhvqA=="
|
||||
"version": "1.3.570",
|
||||
"resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.570.tgz",
|
||||
"integrity": "sha512-Y6OCoVQgFQBP5py6A/06+yWxUZHDlNr/gNDGatjH8AZqXl8X0tE4LfjLJsXGz/JmWJz8a6K7bR1k+QzZ+k//fg=="
|
||||
},
|
||||
"elliptic": {
|
||||
"version": "6.5.3",
|
||||
|
@ -5058,9 +5023,9 @@
|
|||
}
|
||||
},
|
||||
"escalade": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.0.2.tgz",
|
||||
"integrity": "sha512-gPYAU37hYCUhW5euPeR+Y74F7BL+IBsV93j5cvGriSaD1aG6MGsqsV1yamRdrWrb2j3aiZvb0X+UBOWpx3JWtQ=="
|
||||
"version": "3.1.0",
|
||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.0.tgz",
|
||||
"integrity": "sha512-mAk+hPSO8fLDkhV7V0dXazH5pDc6MrjBTPyD3VeKzxnVFjH1MIxbCdqGZB9O8+EwWakZs3ZCbDS4IpRt79V1ig=="
|
||||
},
|
||||
"escape-html": {
|
||||
"version": "1.0.3",
|
||||
|
@ -5730,11 +5695,18 @@
|
|||
}
|
||||
},
|
||||
"esrecurse": {
|
||||
"version": "4.2.1",
|
||||
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
|
||||
"integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
|
||||
"integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
|
||||
"requires": {
|
||||
"estraverse": "^4.1.0"
|
||||
"estraverse": "^5.2.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"estraverse": {
|
||||
"version": "5.2.0",
|
||||
"resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
|
||||
"integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"estraverse": {
|
||||
|
@ -9372,6 +9344,11 @@
|
|||
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.61.tgz",
|
||||
"integrity": "sha512-DD5vebQLg8jLCOzwupn954fbIiZht05DAZs0k2u8NStSe6h9XdsuIQL8hSRKYiU8WUQRznmSDrKGbv3ObOmC7g=="
|
||||
},
|
||||
"node-storage-shim": {
|
||||
"version": "2.0.1",
|
||||
"resolved": "https://registry.npmjs.org/node-storage-shim/-/node-storage-shim-2.0.1.tgz",
|
||||
"integrity": "sha512-ce8enbToMe8iUHDTMCg4rdP1K0syoJrZRO0Dl9uMLPCwlc5M1HKaapV3Pqlv6/3LQNuDiYXBm4rPlj78MeUSSA=="
|
||||
},
|
||||
"normalize-package-data": {
|
||||
"version": "2.5.0",
|
||||
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
|
||||
|
@ -9546,9 +9523,9 @@
|
|||
}
|
||||
},
|
||||
"opener": {
|
||||
"version": "1.5.1",
|
||||
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz",
|
||||
"integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA=="
|
||||
"version": "1.5.2",
|
||||
"resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz",
|
||||
"integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A=="
|
||||
},
|
||||
"optimize-css-assets-webpack-plugin": {
|
||||
"version": "5.0.4",
|
||||
|
@ -9999,9 +9976,9 @@
|
|||
"integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs="
|
||||
},
|
||||
"postcss": {
|
||||
"version": "7.0.32",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz",
|
||||
"integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==",
|
||||
"version": "7.0.34",
|
||||
"resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.34.tgz",
|
||||
"integrity": "sha512-H/7V2VeNScX9KE83GDrDZNiGT1m2H+UTnlinIzhjlLX9hfMUn1mHNnGeX81a1c8JSBdBvqk7c2ZOG6ZPn5itGw==",
|
||||
"requires": {
|
||||
"chalk": "^2.4.2",
|
||||
"source-map": "^0.6.1",
|
||||
|
@ -12549,11 +12526,11 @@
|
|||
"integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
|
||||
},
|
||||
"ssri": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
|
||||
"integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
|
||||
"version": "8.0.0",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.0.tgz",
|
||||
"integrity": "sha512-aq/pz989nxVYwn16Tsbj1TqFpD5LLrQxHf5zaHuieFV+R0Bbr4y8qUsOA45hXT/N4/9UNXTarBjnjVmjSOVaAA==",
|
||||
"requires": {
|
||||
"figgy-pudding": "^3.5.1"
|
||||
"minipass": "^3.1.1"
|
||||
}
|
||||
},
|
||||
"stable": {
|
||||
|
@ -13076,10 +13053,53 @@
|
|||
"worker-farm": "^1.7.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"cacache": {
|
||||
"version": "12.0.4",
|
||||
"resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
|
||||
"integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
|
||||
"requires": {
|
||||
"bluebird": "^3.5.5",
|
||||
"chownr": "^1.1.1",
|
||||
"figgy-pudding": "^3.5.1",
|
||||
"glob": "^7.1.4",
|
||||
"graceful-fs": "^4.1.15",
|
||||
"infer-owner": "^1.0.3",
|
||||
"lru-cache": "^5.1.1",
|
||||
"mississippi": "^3.0.0",
|
||||
"mkdirp": "^0.5.1",
|
||||
"move-concurrently": "^1.0.1",
|
||||
"promise-inflight": "^1.0.1",
|
||||
"rimraf": "^2.6.3",
|
||||
"ssri": "^6.0.1",
|
||||
"unique-filename": "^1.1.1",
|
||||
"y18n": "^4.0.0"
|
||||
}
|
||||
},
|
||||
"lru-cache": {
|
||||
"version": "5.1.1",
|
||||
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
|
||||
"integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
|
||||
"requires": {
|
||||
"yallist": "^3.0.2"
|
||||
}
|
||||
},
|
||||
"source-map": {
|
||||
"version": "0.6.1",
|
||||
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
|
||||
"integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="
|
||||
},
|
||||
"ssri": {
|
||||
"version": "6.0.1",
|
||||
"resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
|
||||
"integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
|
||||
"requires": {
|
||||
"figgy-pudding": "^3.5.1"
|
||||
}
|
||||
},
|
||||
"yallist": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
|
||||
"integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -13937,9 +13957,9 @@
|
|||
}
|
||||
},
|
||||
"webpack": {
|
||||
"version": "4.44.1",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.1.tgz",
|
||||
"integrity": "sha512-4UOGAohv/VGUNQJstzEywwNxqX417FnjZgZJpJQegddzPmTvph37eBIRbRTfdySXzVtJXLJfbMN3mMYhM6GdmQ==",
|
||||
"version": "4.44.2",
|
||||
"resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz",
|
||||
"integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==",
|
||||
"requires": {
|
||||
"@webassemblyjs/ast": "1.9.0",
|
||||
"@webassemblyjs/helper-module-context": "1.9.0",
|
||||
|
@ -13966,37 +13986,11 @@
|
|||
"webpack-sources": "^1.4.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"acorn": {
|
||||
"version": "6.4.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz",
|
||||
"integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA=="
|
||||
},
|
||||
"ajv-keywords": {
|
||||
"version": "3.5.2",
|
||||
"resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz",
|
||||
"integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ=="
|
||||
},
|
||||
"enhanced-resolve": {
|
||||
"version": "4.3.0",
|
||||
"resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.3.0.tgz",
|
||||
"integrity": "sha512-3e87LvavsdxyoCfGusJnrZ5G8SLPOFeHSNpZI/ATL9a5leXo2k0w6MKnbqhdBad9qTobSfB20Ld7UmgoNbAZkQ==",
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"memory-fs": "^0.5.0",
|
||||
"tapable": "^1.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"memory-fs": {
|
||||
"version": "0.5.0",
|
||||
"resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
|
||||
"integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
|
||||
"requires": {
|
||||
"errno": "^0.1.3",
|
||||
"readable-stream": "^2.0.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"eslint-scope": {
|
||||
"version": "4.0.3",
|
||||
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
|
||||
|
@ -14009,9 +14003,9 @@
|
|||
}
|
||||
},
|
||||
"webpack-bundle-analyzer": {
|
||||
"version": "3.8.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.8.0.tgz",
|
||||
"integrity": "sha512-PODQhAYVEourCcOuU+NiYI7WdR8QyELZGgPvB1y2tjbUpbmcQOt5Q7jEK+ttd5se0KSBKD9SXHCEozS++Wllmw==",
|
||||
"version": "3.9.0",
|
||||
"resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-3.9.0.tgz",
|
||||
"integrity": "sha512-Ob8amZfCm3rMB1ScjQVlbYYUEJyEjdEtQ92jqiFUYt5VkEeO2v5UMbv49P/gnmCZm3A6yaFQzCBvpZqN4MUsdA==",
|
||||
"requires": {
|
||||
"acorn": "^7.1.1",
|
||||
"acorn-walk": "^7.1.1",
|
||||
|
@ -14022,21 +14016,21 @@
|
|||
"express": "^4.16.3",
|
||||
"filesize": "^3.6.1",
|
||||
"gzip-size": "^5.0.0",
|
||||
"lodash": "^4.17.15",
|
||||
"lodash": "^4.17.19",
|
||||
"mkdirp": "^0.5.1",
|
||||
"opener": "^1.5.1",
|
||||
"ws": "^6.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"acorn": {
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.2.0.tgz",
|
||||
"integrity": "sha512-apwXVmYVpQ34m/i71vrApRrRKCWQnZZF1+npOD0WV5xZFfwWOmKGQ2RWlfdy9vWITsenisM8M0Qeq8agcFHNiQ=="
|
||||
"version": "7.4.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.0.tgz",
|
||||
"integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w=="
|
||||
},
|
||||
"acorn-walk": {
|
||||
"version": "7.1.1",
|
||||
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.1.1.tgz",
|
||||
"integrity": "sha512-wdlPY2tm/9XBr7QkKlq0WQVgiuGTX6YWPyRyBviSoScBuLfTVQhvwg6wJ369GJ/1nPfTLMfnrFIfjqVg6d+jQQ=="
|
||||
"version": "7.2.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz",
|
||||
"integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA=="
|
||||
},
|
||||
"chalk": {
|
||||
"version": "2.4.2",
|
||||
|
|
|
@ -35,14 +35,14 @@
|
|||
"babel-eslint": "^10.1.0",
|
||||
"babel-loader": "^8.1.0",
|
||||
"babel-plugin-istanbul": "^6.0.0",
|
||||
"browserslist": "^4.14.2",
|
||||
"browserslist": "^4.14.3",
|
||||
"chai": "^4.2.0",
|
||||
"chalk": "^4.1.0",
|
||||
"chart.js": "^2.9.3",
|
||||
"chrome-finder": "^1.0.7",
|
||||
"clean-webpack-plugin": "^3.0.0",
|
||||
"connect-history-api-fallback": "^1.3.0",
|
||||
"copy-webpack-plugin": "^6.1.0",
|
||||
"copy-webpack-plugin": "^6.1.1",
|
||||
"core-js": "^3.6.5",
|
||||
"cross-env": "^7.0.2",
|
||||
"crypto-random-string": "^3.3.0",
|
||||
|
@ -82,11 +82,12 @@
|
|||
"minimist": "^1.2.5",
|
||||
"mocha": "^8.1.3",
|
||||
"moment-timezone": "^0.5.31",
|
||||
"node-storage-shim": "^2.0.1",
|
||||
"optimize-css-assets-webpack-plugin": "^5.0.4",
|
||||
"ora": "^4.1.1",
|
||||
"photoswipe": "^4.1.3",
|
||||
"pluralize": "^8.0.0",
|
||||
"postcss": "^7.0.32",
|
||||
"postcss": "^7.0.34",
|
||||
"postcss-browser-reporter": "^0.6.0",
|
||||
"postcss-import": "^12.0.1",
|
||||
"postcss-loader": "^3.0.0",
|
||||
|
@ -120,8 +121,8 @@
|
|||
"vue2-filters": "^0.11.0",
|
||||
"vuelidate": "^0.7.5",
|
||||
"vuetify": "^1.5.24",
|
||||
"webpack": "^4.44.1",
|
||||
"webpack-bundle-analyzer": "^3.8.0",
|
||||
"webpack": "^4.44.2",
|
||||
"webpack-bundle-analyzer": "^3.9.0",
|
||||
"webpack-cli": "^3.3.12",
|
||||
"webpack-hot-middleware": "^2.25.0",
|
||||
"webpack-md5-hash": "0.0.6",
|
||||
|
|
|
@ -53,7 +53,7 @@ export default class Session {
|
|||
this.data = dataJson !== "undefined" ? JSON.parse(dataJson) : null;
|
||||
}
|
||||
|
||||
if(this.data && this.data.user) {
|
||||
if (this.data && this.data.user) {
|
||||
this.user = new User(this.data.user);
|
||||
}
|
||||
|
||||
|
@ -62,7 +62,7 @@ export default class Session {
|
|||
}
|
||||
|
||||
Event.subscribe("session.logout", () => {
|
||||
this.onLogout();
|
||||
return this.onLogout();
|
||||
});
|
||||
|
||||
Event.subscribe("websocket.connected", () => {
|
||||
|
@ -108,6 +108,10 @@ export default class Session {
|
|||
return this.session_id;
|
||||
}
|
||||
|
||||
hasId() {
|
||||
return !!this.session_id;
|
||||
}
|
||||
|
||||
deleteId() {
|
||||
this.session_id = null;
|
||||
this.storage.removeItem("session_id");
|
||||
|
@ -116,7 +120,7 @@ export default class Session {
|
|||
}
|
||||
|
||||
setData(data) {
|
||||
if(!data) {
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -167,7 +171,7 @@ export default class Session {
|
|||
}
|
||||
|
||||
hasToken(token) {
|
||||
if(!this.data || !this.data.tokens) {
|
||||
if (!this.data || !this.data.tokens) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -192,7 +196,7 @@ export default class Session {
|
|||
try {
|
||||
Socket.send(JSON.stringify(clientInfo));
|
||||
} catch (e) {
|
||||
if(this.config.debug) {
|
||||
if (this.config.debug) {
|
||||
console.log("session: can't use websocket, not connected (yet)");
|
||||
}
|
||||
}
|
||||
|
@ -203,10 +207,13 @@ export default class Session {
|
|||
|
||||
return Api.post("session", {username, password, token}).then(
|
||||
(resp) => {
|
||||
this.setConfig(resp.data.config);
|
||||
this.setId(resp.data.id);
|
||||
this.setData(resp.data.data);
|
||||
this.sendClientInfo();
|
||||
return new Promise(resolve => {
|
||||
this.setConfig(resp.data.config);
|
||||
this.setId(resp.data.id);
|
||||
this.setData(resp.data.data);
|
||||
this.sendClientInfo();
|
||||
resolve();
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
@ -222,20 +229,25 @@ export default class Session {
|
|||
);
|
||||
}
|
||||
|
||||
onLogout() {
|
||||
onLogout(noRedirect) {
|
||||
this.deleteId();
|
||||
window.location = "/";
|
||||
if (noRedirect !== true) {
|
||||
window.location = "/";
|
||||
}
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
logout() {
|
||||
const id = this.getId();
|
||||
|
||||
this.deleteId();
|
||||
|
||||
Api.delete("session/" + id).then(
|
||||
() => {
|
||||
window.location = "/";
|
||||
}
|
||||
);
|
||||
logout(noRedirect) {
|
||||
if (this.hasId()) {
|
||||
return Api.delete("session/" + this.getId())
|
||||
.then(() => {
|
||||
return this.onLogout(noRedirect);
|
||||
})
|
||||
.catch(() => {
|
||||
return this.onLogout(noRedirect);
|
||||
});
|
||||
} else {
|
||||
return this.onLogout(noRedirect);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import Clipboard from "common/clipboard";
|
||||
import Photo from "model/photo";
|
||||
import Album from "model/album";
|
||||
import StorageShim from "node-storage-shim";
|
||||
|
||||
window.__CONFIG__ = {"name":"PhotoPrism","version":"200531-4684f66-Linux-x86_64-DEBUG","copyright":"(c) 2018-2020 PhotoPrism.org \u003chello@photoprism.org\u003e","flags":"public debug experimental settings","siteUrl":"http://localhost:2342/","siteTitle":"PhotoPrism","siteCaption":"Browse your life","siteDescription":"Personal Photo Management powered by Go and Google TensorFlow. Free and open-source.","siteAuthor":"Anonymous","debug":true,"readonly":false,"uploadNSFW":false,"public":true,"experimental":true,"disableSettings":false,"albumCategories":null,"albums":[],"cameras":[{"ID":2,"Slug":"olympus-c2500l","Name":"Olympus C2500L","Make":"Olympus","Model":"C2500L"},{"ID":1,"Slug":"zz","Name":"Unknown","Make":"","Model":"Unknown"}],"lenses":[{"ID":1,"Slug":"zz","Name":"Unknown","Make":"","Model":"Unknown","Type":""}],"countries":[{"ID":"de","Slug":"germany","Name":"Germany"},{"ID":"is","Slug":"iceland","Name":"Iceland"},{"ID":"zz","Slug":"zz","Name":"Unknown"}],"thumbs":[{"Name":"fit_720","Width":720,"Height":720},{"Name":"fit_2048","Width":2048,"Height":2048},{"Name":"fit_1280","Width":1280,"Height":1024},{"Name":"fit_1920","Width":1920,"Height":1200},{"Name":"fit_2560","Width":2560,"Height":1600},{"Name":"fit_3840","Width":3840,"Height":2400}],"downloadToken":"1uhovi0e","previewToken":"static","jsHash":"0fd34136","cssHash":"2b327230","settings":{"theme":"default","language":"en","templates":{"default":"index.tmpl"},"maps":{"animate":0,"style":"streets"},"features":{"archive":true,"private":true,"review":true,"upload":true,"import":true,"files":true,"moments":true,"labels":true,"places":true,"download":true,"edit":true,"share":true,"logs":true},"import":{"path":"/","move":false},"index":{"path":"/","convert":true,"rescan":false,"group":true}},"count":{"cameras":1,"lenses":0,"countries":2,"photos":126,"videos":0,"hidden":3,"favorites":1,"private":0,"review":0,"stories":0,"albums":0,"moments":0,"months":0,"folders":0,"files":255,"places":0,"labels":13,"labelMaxPhotos":1},"pos":{"uid":"","loc":"","utc":"0001-01-01T00:00:00Z","lat":0,"lng":0},"years":[2003,2002],"colors":[{"Example":"#AB47BC","Name":"Purple","Slug":"purple"},{"Example":"#FF00FF","Name":"Magenta","Slug":"magenta"},{"Example":"#EC407A","Name":"Pink","Slug":"pink"},{"Example":"#EF5350","Name":"Red","Slug":"red"},{"Example":"#FFA726","Name":"Orange","Slug":"orange"},{"Example":"#D4AF37","Name":"Gold","Slug":"gold"},{"Example":"#FDD835","Name":"Yellow","Slug":"yellow"},{"Example":"#CDDC39","Name":"Lime","Slug":"lime"},{"Example":"#66BB6A","Name":"Green","Slug":"green"},{"Example":"#009688","Name":"Teal","Slug":"teal"},{"Example":"#00BCD4","Name":"Cyan","Slug":"cyan"},{"Example":"#2196F3","Name":"Blue","Slug":"blue"},{"Example":"#A1887F","Name":"Brown","Slug":"brown"},{"Example":"#F5F5F5","Name":"White","Slug":"white"},{"Example":"#9E9E9E","Name":"Grey","Slug":"grey"},{"Example":"#212121","Name":"Black","Slug":"black"}],"categories":[{"UID":"lqb6y631re96cper","Slug":"animal","Name":"Animal"},{"UID":"lqb6y5gvo9avdfx5","Slug":"architecture","Name":"Architecture"},{"UID":"lqb6y633nhfj1uzt","Slug":"bird","Name":"Bird"},{"UID":"lqb6y633g3hxg1aq","Slug":"farm","Name":"Farm"},{"UID":"lqb6y4i1ez9cw5bi","Slug":"nature","Name":"Nature"},{"UID":"lqb6y4f2v7dw8irs","Slug":"plant","Name":"Plant"},{"UID":"lqb6y6s2ohhmu0fn","Slug":"reptile","Name":"Reptile"},{"UID":"lqb6y6ctgsq2g2np","Slug":"water","Name":"Water"}],"clip":160,"server":{"cores":2,"routines":23,"memory":{"used":1224531272,"reserved":1416904088,"info":"Used 1.2 GB / Reserved 1.4 GB"}}};
|
||||
|
||||
|
@ -10,7 +11,7 @@ let sinon = require("sinon");
|
|||
|
||||
describe("common/clipboard", () => {
|
||||
it("should construct clipboard", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -20,7 +21,7 @@ describe("common/clipboard", () => {
|
|||
|
||||
it("should toggle model", () => {
|
||||
let spy = sinon.spy(console, "log");
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -45,7 +46,7 @@ describe("common/clipboard", () => {
|
|||
});
|
||||
|
||||
it("should toggle id", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -58,7 +59,7 @@ describe("common/clipboard", () => {
|
|||
|
||||
it("should add model", () => {
|
||||
let spy = sinon.spy(console, "log");
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -78,7 +79,7 @@ describe("common/clipboard", () => {
|
|||
});
|
||||
|
||||
it("should add id", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -89,7 +90,7 @@ describe("common/clipboard", () => {
|
|||
|
||||
it("should test whether clipboard has model", () => {
|
||||
let spy = sinon.spy(console, "log");
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -113,7 +114,7 @@ describe("common/clipboard", () => {
|
|||
});
|
||||
|
||||
it("should test whether clipboard has id", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -125,7 +126,7 @@ describe("common/clipboard", () => {
|
|||
|
||||
it("should remove model", () => {
|
||||
let spy = sinon.spy(console, "log");
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -150,7 +151,7 @@ describe("common/clipboard", () => {
|
|||
});
|
||||
|
||||
it("should set and get ids", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -166,7 +167,7 @@ describe("common/clipboard", () => {
|
|||
});
|
||||
|
||||
it("should clear", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
|
@ -178,7 +179,7 @@ describe("common/clipboard", () => {
|
|||
});
|
||||
|
||||
it("should add range", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const key = "clipboard";
|
||||
const clipboard = new Clipboard(storage, key);
|
||||
clipboard.clear();
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
import Config from "common/config";
|
||||
import MockAdapter from "axios-mock-adapter";
|
||||
import Api from "common/api";
|
||||
import StorageShim from "node-storage-shim";
|
||||
|
||||
window.__CONFIG__ = {
|
||||
"name": "PhotoPrism",
|
||||
|
@ -152,14 +153,14 @@ window.__CONFIG__ = {
|
|||
let chai = require("chai/chai");
|
||||
let assert = chai.assert;
|
||||
|
||||
const config2 = new Config(window.localStorage, window.__CONFIG__);
|
||||
const config2 = new Config(new StorageShim(), window.__CONFIG__);
|
||||
|
||||
describe("common/config", () => {
|
||||
|
||||
const mock = new MockAdapter(Api);
|
||||
|
||||
it("should get all config values", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const values = {siteTitle: "Foo", name: "testConfig", year: "2300"};
|
||||
|
||||
const config = new Config(storage, values);
|
||||
|
@ -168,7 +169,7 @@ describe("common/config", () => {
|
|||
});
|
||||
|
||||
it("should set multiple config values", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const values = {siteTitle: "Foo", country: "Germany", city: "Hamburg"};
|
||||
const newValues = {siteTitle: "Foo", new: "xxx", city: "Berlin", debug: true, settings: {theme: "lavender"}};
|
||||
const config = new Config(storage, values);
|
||||
|
@ -186,7 +187,7 @@ describe("common/config", () => {
|
|||
});
|
||||
|
||||
it("should store values", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const values = {siteTitle: "Foo", country: "Germany", city: "Hamburg"};
|
||||
const config = new Config(storage, values);
|
||||
assert.equal(config.storage["config"], undefined);
|
||||
|
@ -196,7 +197,7 @@ describe("common/config", () => {
|
|||
});
|
||||
|
||||
it("should set and get single config value", () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const values = {};
|
||||
|
||||
const config = new Config(storage, values);
|
||||
|
|
|
@ -150,6 +150,7 @@ import {config} from "session";
|
|||
import Session from "common/session";
|
||||
import MockAdapter from "axios-mock-adapter";
|
||||
import Api from "common/api";
|
||||
import StorageShim from "node-storage-shim";
|
||||
|
||||
let chai = require("chai/chai");
|
||||
let assert = chai.assert;
|
||||
|
@ -163,13 +164,13 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should construct session', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
assert.equal(session.session_id, null);
|
||||
});
|
||||
|
||||
it('should set, get and delete token', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
assert.equal(session.hasToken("1uhovi0e"), false);
|
||||
assert.equal(session.session_id, null);
|
||||
|
@ -182,7 +183,7 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should set, get and delete user', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
assert.isFalse(session.user.hasId());
|
||||
const values = {"user": {ID: 5, GivenName: "Max", FamilyName: "Last", PrimaryEmail: "test@test.com", RoleAdmin: true}};
|
||||
|
@ -199,7 +200,7 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should get user email', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
const values = {"user": {ID: 5, GivenName: "Max", FamilyName: "Last", PrimaryEmail: "test@test.com", RoleAdmin: true}};
|
||||
session.setData(values);
|
||||
|
@ -213,7 +214,7 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should get user firstname', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
const values = {"user": {ID: 5, GivenName: "Max", FamilyName: "Last", PrimaryEmail: "test@test.com", RoleAdmin: true}};
|
||||
session.setData(values);
|
||||
|
@ -227,7 +228,7 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should get user full name', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
const values = {"user": {ID: 5, GivenName: "Max", FamilyName: "Last", PrimaryEmail: "test@test.com", RoleAdmin: true}};
|
||||
session.setData(values);
|
||||
|
@ -241,7 +242,7 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should test whether user is set', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
const values = {"user": {ID: 5, GivenName: "Max", FamilyName: "Last", PrimaryEmail: "test@test.com", RoleAdmin: true}};
|
||||
session.setData(values);
|
||||
|
@ -251,7 +252,7 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should test whether user is admin', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
const values = {"user": {ID: 5, GivenName: "Max", FamilyName: "Last", PrimaryEmail: "test@test.com", RoleAdmin: true}};
|
||||
session.setData(values);
|
||||
|
@ -261,7 +262,7 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should test whether user is anonymous', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
const values = {"user": {ID: 5, GivenName: "Max", FamilyName: "Last", PrimaryEmail: "test@test.com", RoleAdmin: true}};
|
||||
session.setData(values);
|
||||
|
@ -273,15 +274,14 @@ describe('common/session', () => {
|
|||
it('should test login and logout', async () => {
|
||||
mock
|
||||
.onPost("session").reply(200, {id: "8877", data: {user: {ID: 1, PrimaryEmail: "test@test.com"}}})
|
||||
.onDelete("session/8877").reply(200);
|
||||
const storage = window.localStorage;
|
||||
.onDelete("session/8877").reply(200)
|
||||
.onDelete("session/123").reply(200);
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
assert.equal(session.session_id, null);
|
||||
assert.equal(session.storage.data, undefined);
|
||||
await session.login("test@test.com", "passwd");
|
||||
assert.equal(session.session_id, 8877);
|
||||
assert.equal(session.storage.data, '{"user":{"ID":1,"PrimaryEmail":"test@test.com"}}');
|
||||
await session.logout();
|
||||
await session.logout(true);
|
||||
assert.equal(session.session_id, null);
|
||||
mock.reset();
|
||||
});
|
||||
|
@ -305,7 +305,7 @@ describe('common/session', () => {
|
|||
});*/
|
||||
|
||||
it('should use session storage', () => {
|
||||
const storage = window.sessionStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
assert.equal(storage.getItem("session_storage"), null);
|
||||
session.useSessionStorage();
|
||||
|
@ -314,7 +314,7 @@ describe('common/session', () => {
|
|||
});
|
||||
|
||||
it('should use local storage', () => {
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
assert.equal(storage.getItem("session_storage"), null);
|
||||
session.useLocalStorage();
|
||||
|
@ -325,7 +325,7 @@ describe('common/session', () => {
|
|||
it('should test redeem token', async () => {
|
||||
mock
|
||||
.onPost("session").reply(200, {id: "123", data: {token: "123token"}});
|
||||
const storage = window.localStorage;
|
||||
const storage = new StorageShim();
|
||||
const session = new Session(storage, config);
|
||||
assert.equal(session.data, null);
|
||||
await session.redeemToken("token123");
|
||||
|
|
Loading…
Reference in a new issue