refactor(client): move to Vite by @phillipthelen

This commit is contained in:
Kalista Payne
2025-06-11 19:20:11 -05:00
parent 20d31ed8c8
commit ccc6c9867f
311 changed files with 5321 additions and 10626 deletions

View File

@@ -9,4 +9,4 @@
} }
] ]
] ]
} }

View File

@@ -1,11 +0,0 @@
import gulp from 'gulp';
import nodemon from 'gulp-nodemon';
import pkg from '../package.json';
gulp.task('nodemon', done => {
nodemon({
script: pkg.main,
});
done();
});

View File

@@ -49,12 +49,6 @@ function integrationTestCommand (testDir) {
} }
/* Test task definitions */ /* Test task definitions */
gulp.task('test:nodemon', gulp.series(done => {
process.env.PORT = TEST_SERVER_PORT; // eslint-disable-line no-process-env
process.env.NODE_DB_URI = TEST_DB_URI; // eslint-disable-line no-process-env
done();
}, 'nodemon'));
gulp.task('test:prepare:mongo', cb => { gulp.task('test:prepare:mongo', cb => {
const mongooseOptions = getDefaultConnectionOptions(); const mongooseOptions = getDefaultConnectionOptions();
const connectionUrl = getDevelopmentConnectionUrl(TEST_DB_URI); const connectionUrl = getDevelopmentConnectionUrl(TEST_DB_URI);

View File

@@ -21,7 +21,6 @@ if (process.env.NODE_ENV === 'production') { // eslint-disable-line no-process-e
require('./gulp/gulp-build'); // eslint-disable-line global-require require('./gulp/gulp-build'); // eslint-disable-line global-require
require('./gulp/gulp-console'); // eslint-disable-line global-require require('./gulp/gulp-console'); // eslint-disable-line global-require
require('./gulp/gulp-sprites'); // eslint-disable-line global-require require('./gulp/gulp-sprites'); // eslint-disable-line global-require
require('./gulp/gulp-start'); // eslint-disable-line global-require
require('./gulp/gulp-tests'); // eslint-disable-line global-require require('./gulp/gulp-tests'); // eslint-disable-line global-require
require('./gulp/gulp-transifex-test'); // eslint-disable-line global-require require('./gulp/gulp-transifex-test'); // eslint-disable-line global-require
require('gulp').task('default', gulp.series('test')); // eslint-disable-line global-require require('gulp').task('default', gulp.series('test')); // eslint-disable-line global-require

View File

@@ -37,7 +37,7 @@ let consoleStamp = require('console-stamp');
consoleStamp(console); consoleStamp(console);
// Initialize configuration // Initialize configuration
require('../../website/server/libs/api-v3/setupNconf')(); require('../../website/server/libs/api-v3/setupNconf').default();
let MONGODB_OLD = nconf.get('MONGODB_OLD'); let MONGODB_OLD = nconf.get('MONGODB_OLD');
let MONGODB_NEW = nconf.get('MONGODB_NEW'); let MONGODB_NEW = nconf.get('MONGODB_NEW');

View File

@@ -32,7 +32,7 @@ let moment = require('moment');
consoleStamp(console); consoleStamp(console);
// Initialize configuration // Initialize configuration
require('../../website/server/libs/api-v3/setupNconf')(); require('../../website/server/libs/api-v3/setupNconf').default();
let MONGODB_OLD = nconf.get('MONGODB_OLD'); let MONGODB_OLD = nconf.get('MONGODB_OLD');
let MONGODB_NEW = nconf.get('MONGODB_NEW'); let MONGODB_NEW = nconf.get('MONGODB_NEW');

View File

@@ -6,7 +6,7 @@ require('@babel/register'); // eslint-disable-line import/no-extraneous-dependen
function setUpServer () { function setUpServer () {
const nconf = require('nconf'); // eslint-disable-line global-require, no-unused-vars const nconf = require('nconf'); // eslint-disable-line global-require, no-unused-vars
const mongoose = require('mongoose'); // eslint-disable-line global-require, no-unused-vars const mongoose = require('mongoose'); // eslint-disable-line global-require, no-unused-vars
const setupNconf = require('../website/server/libs/setupNconf'); // eslint-disable-line global-require const setupNconf = require('../website/server/libs/setupNconf').default; // eslint-disable-line global-require
setupNconf(); setupNconf();

563
package-lock.json generated
View File

@@ -43,7 +43,6 @@
"gulp-babel": "^8.0.0", "gulp-babel": "^8.0.0",
"gulp-filter": "^7.0.0", "gulp-filter": "^7.0.0",
"gulp-imagemin": "^7.1.0", "gulp-imagemin": "^7.1.0",
"gulp-nodemon": "^2.5.0",
"gulp.spritesmith": "^6.13.0", "gulp.spritesmith": "^6.13.0",
"habitica-markdown": "^3.0.0", "habitica-markdown": "^3.0.0",
"helmet": "^4.6.0", "helmet": "^4.6.0",
@@ -55,12 +54,12 @@
"merge-stream": "^2.0.0", "merge-stream": "^2.0.0",
"method-override": "^3.0.0", "method-override": "^3.0.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"moment-recur": "^1.0.7", "moment-recur": "git://github.com/HabitRPG/moment-recur.git#d3e8e6da0806f13b74dd2e4d7d9053e6a63db119",
"mongoose": "^8.9.5", "mongoose": "^8.9.5",
"morgan": "^1.10.0", "morgan": "^1.10.0",
"nconf": "^0.12.1", "nconf": "^0.12.1",
"node-gcm": "^1.0.5", "node-gcm": "^1.0.5",
"nodemon": "^2.0.20", "nodemon": "^3.1.9",
"on-headers": "^1.0.2", "on-headers": "^1.0.2",
"passport": "^0.5.3", "passport": "^0.5.3",
"passport-facebook": "^3.0.0", "passport-facebook": "^3.0.0",
@@ -151,14 +150,6 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/@babel/code-frame/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/code-frame/node_modules/supports-color": { "node_modules/@babel/code-frame/node_modules/supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -542,14 +533,6 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/@babel/highlight/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"engines": {
"node": ">=4"
}
},
"node_modules/@babel/highlight/node_modules/supports-color": { "node_modules/@babel/highlight/node_modules/supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -1787,231 +1770,6 @@
"node": ">=10.0.0" "node": ">=10.0.0"
} }
}, },
"node_modules/@esbuild/android-arm": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz",
"integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz",
"integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/android-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz",
"integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"android"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/darwin-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz",
"integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/darwin-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz",
"integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/freebsd-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz",
"integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/freebsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz",
"integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"freebsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-arm": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz",
"integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==",
"cpu": [
"arm"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz",
"integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-ia32": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz",
"integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-loong64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz",
"integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==",
"cpu": [
"loong64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-mips64el": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz",
"integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==",
"cpu": [
"mips64el"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-ppc64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz",
"integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==",
"cpu": [
"ppc64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-riscv64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz",
"integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==",
"cpu": [
"riscv64"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-s390x": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz",
"integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==",
"cpu": [
"s390x"
],
"optional": true,
"os": [
"linux"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/linux-x64": { "node_modules/@esbuild/linux-x64": {
"version": "0.16.17", "version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz",
@@ -2027,96 +1785,6 @@
"node": ">=12" "node": ">=12"
} }
}, },
"node_modules/@esbuild/netbsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz",
"integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"netbsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/openbsd-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz",
"integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"openbsd"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/sunos-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz",
"integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"sunos"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-arm64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz",
"integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==",
"cpu": [
"arm64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-ia32": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz",
"integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==",
"cpu": [
"ia32"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@esbuild/win32-x64": {
"version": "0.16.17",
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz",
"integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==",
"cpu": [
"x64"
],
"optional": true,
"os": [
"win32"
],
"engines": {
"node": ">=12"
}
},
"node_modules/@eslint-community/eslint-utils": { "node_modules/@eslint-community/eslint-utils": {
"version": "4.4.0", "version": "4.4.0",
"resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz",
@@ -4171,6 +3839,14 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/apidoc/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dependencies": {
"ms": "^2.1.1"
}
},
"node_modules/apidoc/node_modules/glob": { "node_modules/apidoc/node_modules/glob": {
"version": "7.2.3", "version": "7.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
@@ -4201,6 +3877,41 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/apidoc/node_modules/nodemon": {
"version": "2.0.22",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz",
"integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==",
"dependencies": {
"chokidar": "^3.5.2",
"debug": "^3.2.7",
"ignore-by-default": "^1.0.1",
"minimatch": "^3.1.2",
"pstree.remy": "^1.1.8",
"semver": "^5.7.1",
"simple-update-notifier": "^1.0.7",
"supports-color": "^5.5.0",
"touch": "^3.1.0",
"undefsafe": "^2.0.5"
},
"bin": {
"nodemon": "bin/nodemon.js"
},
"engines": {
"node": ">=8.10.0"
},
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/nodemon"
}
},
"node_modules/apidoc/node_modules/nodemon/node_modules/semver": {
"version": "5.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
"bin": {
"semver": "bin/semver"
}
},
"node_modules/apidoc/node_modules/semver": { "node_modules/apidoc/node_modules/semver": {
"version": "7.6.0", "version": "7.6.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz",
@@ -4215,6 +3926,36 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/apidoc/node_modules/simple-update-notifier": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz",
"integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==",
"dependencies": {
"semver": "~7.0.0"
},
"engines": {
"node": ">=8.10.0"
}
},
"node_modules/apidoc/node_modules/simple-update-notifier/node_modules/semver": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz",
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==",
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/apidoc/node_modules/supports-color": {
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
"integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
"dependencies": {
"has-flag": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/apidoc/node_modules/yallist": { "node_modules/apidoc/node_modules/yallist": {
"version": "4.0.0", "version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
@@ -6195,7 +5936,7 @@
"version": "1.5.0", "version": "1.5.0",
"resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz",
"integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==",
"devOptional": true, "dev": true,
"dependencies": { "dependencies": {
"file-uri-to-path": "1.0.0" "file-uri-to-path": "1.0.0"
} }
@@ -7015,15 +6756,6 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/coa/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"optional": true,
"engines": {
"node": ">=4"
}
},
"node_modules/coa/node_modules/supports-color": { "node_modules/coa/node_modules/supports-color": {
"version": "5.5.0", "version": "5.5.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
@@ -7117,6 +6849,7 @@
"version": "1.4.0", "version": "1.4.0",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz",
"integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==",
"dev": true,
"engines": { "engines": {
"node": ">=0.1.90" "node": ">=0.1.90"
} }
@@ -8995,14 +8728,6 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/eslint-config-habitrpg/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"engines": {
"node": ">=4"
}
},
"node_modules/eslint-config-habitrpg/node_modules/ignore": { "node_modules/eslint-config-habitrpg/node_modules/ignore": {
"version": "4.0.6", "version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
@@ -10509,7 +10234,7 @@
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
"integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
"devOptional": true "dev": true
}, },
"node_modules/filename-reserved-regex": { "node_modules/filename-reserved-regex": {
"version": "2.0.0", "version": "2.0.0",
@@ -11595,24 +11320,6 @@
"node": ">=0.10.0" "node": ">=0.10.0"
} }
}, },
"node_modules/glob-watcher/node_modules/fsevents": {
"version": "1.2.13",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
"integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
"deprecated": "The v1 package contains DANGEROUS / INSECURE binaries. Upgrade to safe fsevents v2",
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"dependencies": {
"bindings": "^1.5.0",
"nan": "^2.12.1"
},
"engines": {
"node": ">= 4.0"
}
},
"node_modules/glob-watcher/node_modules/glob-parent": { "node_modules/glob-watcher/node_modules/glob-parent": {
"version": "3.1.0", "version": "3.1.0",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
@@ -12302,16 +12009,6 @@
"node": ">=8" "node": ">=8"
} }
}, },
"node_modules/gulp-nodemon": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/gulp-nodemon/-/gulp-nodemon-2.5.0.tgz",
"integrity": "sha512-vXfaP72xo2C6XOaXrNcLEM3QqDJ1x21S3x97U4YtzN2Rl2kH57++aFkAVxe6BafGRSTxs/xVfE/jNNlCv5Ym2Q==",
"dependencies": {
"colors": "^1.2.1",
"gulp": "^4.0.0",
"nodemon": "^2.0.2"
}
},
"node_modules/gulp.spritesmith": { "node_modules/gulp.spritesmith": {
"version": "6.13.0", "version": "6.13.0",
"resolved": "https://registry.npmjs.org/gulp.spritesmith/-/gulp.spritesmith-6.13.0.tgz", "resolved": "https://registry.npmjs.org/gulp.spritesmith/-/gulp.spritesmith-6.13.0.tgz",
@@ -12544,6 +12241,14 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"engines": {
"node": ">=4"
}
},
"node_modules/has-property-descriptors": { "node_modules/has-property-descriptors": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz",
@@ -15337,15 +15042,6 @@
"node": "*" "node": "*"
} }
}, },
"node_modules/mocha/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/mocha/node_modules/minimatch": { "node_modules/mocha/node_modules/minimatch": {
"version": "3.0.4", "version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
@@ -15409,9 +15105,10 @@
} }
}, },
"node_modules/moment-recur": { "node_modules/moment-recur": {
"version": "1.0.7", "version": "1.0.8",
"resolved": "https://registry.npmjs.org/moment-recur/-/moment-recur-1.0.7.tgz", "resolved": "git+ssh://git@github.com/HabitRPG/moment-recur.git#d3e8e6da0806f13b74dd2e4d7d9053e6a63db119",
"integrity": "sha512-jpBQn6H62gCnEYjtYdLfK/VdPZHEXo1t8RrVItHVVS67SRvByyJBNBa3WQSGTe+8H0smcYO/79FYTA9LGMVdQw==", "integrity": "sha512-LaqXV3izeVQjG0EKAEQQWdneMiff5JR6oBKcfgl0uFOTeaFzLKG62psk7r2VE7RTBdhYigt6KNaLZR7GdWPEIA==",
"license": "Unlicense",
"dependencies": { "dependencies": {
"moment": "<3.0.0" "moment": "<3.0.0"
} }
@@ -15951,7 +15648,7 @@
"version": "2.18.0", "version": "2.18.0",
"resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz",
"integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==",
"devOptional": true "dev": true
}, },
"node_modules/nanomatch": { "node_modules/nanomatch": {
"version": "1.2.13", "version": "1.2.13",
@@ -16315,17 +16012,17 @@
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw=="
}, },
"node_modules/nodemon": { "node_modules/nodemon": {
"version": "2.0.22", "version": "3.1.10",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.10.tgz",
"integrity": "sha512-B8YqaKMmyuCO7BowF1Z1/mkPqLk6cs/l63Ojtd6otKjMx47Dq1utxfRxcavH1I7VSaL8n5BUaoutadnsX3AAVQ==", "integrity": "sha512-WDjw3pJ0/0jMFmyNDp3gvY2YizjLmmOUQo6DEBY+JgdvW/yQ9mEeSw6H5ythl5Ny2ytb7f9C2nIbjSxMNzbJXw==",
"dependencies": { "dependencies": {
"chokidar": "^3.5.2", "chokidar": "^3.5.2",
"debug": "^3.2.7", "debug": "^4",
"ignore-by-default": "^1.0.1", "ignore-by-default": "^1.0.1",
"minimatch": "^3.1.2", "minimatch": "^3.1.2",
"pstree.remy": "^1.1.8", "pstree.remy": "^1.1.8",
"semver": "^5.7.1", "semver": "^7.5.3",
"simple-update-notifier": "^1.0.7", "simple-update-notifier": "^2.0.0",
"supports-color": "^5.5.0", "supports-color": "^5.5.0",
"touch": "^3.1.0", "touch": "^3.1.0",
"undefsafe": "^2.0.5" "undefsafe": "^2.0.5"
@@ -16334,35 +16031,22 @@
"nodemon": "bin/nodemon.js" "nodemon": "bin/nodemon.js"
}, },
"engines": { "engines": {
"node": ">=8.10.0" "node": ">=10"
}, },
"funding": { "funding": {
"type": "opencollective", "type": "opencollective",
"url": "https://opencollective.com/nodemon" "url": "https://opencollective.com/nodemon"
} }
}, },
"node_modules/nodemon/node_modules/debug": {
"version": "3.2.7",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
"integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
"dependencies": {
"ms": "^2.1.1"
}
},
"node_modules/nodemon/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"engines": {
"node": ">=4"
}
},
"node_modules/nodemon/node_modules/semver": { "node_modules/nodemon/node_modules/semver": {
"version": "5.7.2", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"bin": { "bin": {
"semver": "bin/semver" "semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
} }
}, },
"node_modules/nodemon/node_modules/supports-color": { "node_modules/nodemon/node_modules/supports-color": {
@@ -19216,15 +18900,6 @@
"integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==",
"dev": true "dev": true
}, },
"node_modules/run-rs/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/run-rs/node_modules/mongodb": { "node_modules/run-rs/node_modules/mongodb": {
"version": "3.6.12", "version": "3.6.12",
"resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.12.tgz", "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-3.6.12.tgz",
@@ -19749,22 +19424,25 @@
} }
}, },
"node_modules/simple-update-notifier": { "node_modules/simple-update-notifier": {
"version": "1.1.0", "version": "2.0.0",
"resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz",
"integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==",
"dependencies": { "dependencies": {
"semver": "~7.0.0" "semver": "^7.5.3"
}, },
"engines": { "engines": {
"node": ">=8.10.0" "node": ">=10"
} }
}, },
"node_modules/simple-update-notifier/node_modules/semver": { "node_modules/simple-update-notifier/node_modules/semver": {
"version": "7.0.0", "version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"bin": { "bin": {
"semver": "bin/semver.js" "semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
} }
}, },
"node_modules/sinon": { "node_modules/sinon": {
@@ -20793,15 +20471,6 @@
"node": ">=4" "node": ">=4"
} }
}, },
"node_modules/svgo/node_modules/has-flag": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
"optional": true,
"engines": {
"node": ">=4"
}
},
"node_modules/svgo/node_modules/sax": { "node_modules/svgo/node_modules/sax": {
"version": "1.2.4", "version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",

View File

@@ -38,7 +38,6 @@
"gulp-babel": "^8.0.0", "gulp-babel": "^8.0.0",
"gulp-filter": "^7.0.0", "gulp-filter": "^7.0.0",
"gulp-imagemin": "^7.1.0", "gulp-imagemin": "^7.1.0",
"gulp-nodemon": "^2.5.0",
"gulp.spritesmith": "^6.13.0", "gulp.spritesmith": "^6.13.0",
"habitica-markdown": "^3.0.0", "habitica-markdown": "^3.0.0",
"helmet": "^4.6.0", "helmet": "^4.6.0",
@@ -50,12 +49,11 @@
"merge-stream": "^2.0.0", "merge-stream": "^2.0.0",
"method-override": "^3.0.0", "method-override": "^3.0.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"moment-recur": "^1.0.7", "moment-recur": "git://github.com/HabitRPG/moment-recur.git#d3e8e6da0806f13b74dd2e4d7d9053e6a63db119",
"mongoose": "^8.9.5", "mongoose": "^8.9.5",
"morgan": "^1.10.0", "morgan": "^1.10.0",
"nconf": "^0.12.1", "nconf": "^0.12.1",
"node-gcm": "^1.0.5", "node-gcm": "^1.0.5",
"nodemon": "^2.0.20",
"on-headers": "^1.0.2", "on-headers": "^1.0.2",
"passport": "^0.5.3", "passport": "^0.5.3",
"passport-facebook": "^3.0.0", "passport-facebook": "^3.0.0",
@@ -100,15 +98,14 @@
"test:sanity": "nyc --silent --no-clean mocha test/sanity --recursive", "test:sanity": "nyc --silent --no-clean mocha test/sanity --recursive",
"test:common": "nyc --silent --no-clean mocha test/common --recursive", "test:common": "nyc --silent --no-clean mocha test/common --recursive",
"test:content": "nyc --silent --no-clean mocha test/content --recursive", "test:content": "nyc --silent --no-clean mocha test/content --recursive",
"test:nodemon": "gulp test:nodemon",
"coverage": "nyc report --reporter=html --report-dir coverage/results; open coverage/results/index.html", "coverage": "nyc report --reporter=html --report-dir coverage/results; open coverage/results/index.html",
"sprites": "gulp sprites:compile", "sprites": "gulp sprites:compile",
"client:dev": "cd website/client && npm run serve", "client:dev": "cd website/client && npm run serve",
"client:build": "cd website/client && npm run build", "client:build": "cd website/client && npm run build",
"client:unit": "cd website/client && npm run test:unit", "client:unit": "cd website/client && npm run test:unit",
"start": "gulp nodemon", "start": "node --watch ./website/server/index.js",
"start:simple": "node ./website/server/index.js", "start:simple": "node ./website/server/index.js",
"debug": "gulp nodemon --inspect", "debug": "node --watch --inspect ./website/server/index.js",
"mongo:dev": "run-rs -v 5.0.23 -l ubuntu1804 --keep --dbpath mongodb-data --number 1 --quiet", "mongo:dev": "run-rs -v 5.0.23 -l ubuntu1804 --keep --dbpath mongodb-data --number 1 --quiet",
"mongo:test": "run-rs -v 5.0.23 -l ubuntu1804 --keep --dbpath mongodb-data-testing --number 1 --quiet", "mongo:test": "run-rs -v 5.0.23 -l ubuntu1804 --keep --dbpath mongodb-data-testing --number 1 --quiet",
"postinstall": "git config --global url.\"https://\".insteadOf git:// && gulp build && cd website/client && npm install", "postinstall": "git config --global url.\"https://\".insteadOf git:// && gulp build && cd website/client && npm install",

View File

@@ -18,7 +18,7 @@ describe('Shop Featured Items', () => {
}); });
it('contains the current premium hatching potions', () => { it('contains the current premium hatching potions', () => {
clock = Sinon.useFakeTimers(new Date('2024-04-08')); clock = Sinon.useFakeTimers(new Date('2024-04-09'));
const items = featuredItems.market(); const items = featuredItems.market();
expect(_.find(items, item => item.path === 'premiumHatchingPotions.Porcelain')).to.exist; expect(_.find(items, item => item.path === 'premiumHatchingPotions.Porcelain')).to.exist;
}); });

View File

@@ -19,6 +19,6 @@ const sinonStubPromise = require('sinon-stub-promise');
sinonStubPromise(global.sinon); sinonStubPromise(global.sinon);
global.sandbox = sinon.createSandbox(); global.sandbox = sinon.createSandbox();
const setupNconf = require('../../website/server/libs/setupNconf'); const setupNconf = require('../../website/server/libs/setupNconf').default;
setupNconf('./config.json.example'); setupNconf('./config.json.example');

View File

@@ -3,7 +3,7 @@
const nconf = require('nconf'); const nconf = require('nconf');
const mongoose = require('mongoose'); const mongoose = require('mongoose');
const setupNconf = require('../../website/server/libs/setupNconf'); const setupNconf = require('../../website/server/libs/setupNconf').default;
// fix further imports of require/import syntaxes // fix further imports of require/import syntaxes
require('@babel/register'); require('@babel/register');

View File

@@ -3,6 +3,7 @@ module.exports = {
root: true, root: true,
env: { env: {
node: true, node: true,
es2021: true,
}, },
extends: [ extends: [
'habitrpg/lib/vue', 'habitrpg/lib/vue',
@@ -39,7 +40,4 @@ module.exports = {
order: ['template', 'style', 'script'], order: ['template', 'style', 'script'],
}], }],
}, },
parserOptions: {
parser: 'babel-eslint',
},
}; };

View File

@@ -1,9 +0,0 @@
/* eslint-disable import/no-commonjs */
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset',
],
plugins: [
'@babel/plugin-proposal-optional-chaining',
],
};

View File

@@ -12,6 +12,7 @@
<link rel="shortcut icon" sizes="192x192" href="/static/icons/favicon_192x192.png"> <link rel="shortcut icon" sizes="192x192" href="/static/icons/favicon_192x192.png">
<link rel="mask-icon" href="/static/icons/favicon.ico"> <link rel="mask-icon" href="/static/icons/favicon.ico">
<meta property="og:image" content="/static/emails/images/meta-image.png" /> <meta property="og:image" content="/static/emails/images/meta-image.png" />
<script type="module" src="/src/main.js"></script>
</head> </head>
<body> <body>
<div id="loading-screen"> <div id="loading-screen">
@@ -28,10 +29,9 @@
</div> </div>
<div id="app"></div> <div id="app"></div>
<!-- built files will be auto injected -->
<script type="text/javascript" src="//cloudfront.loggly.com/js/loggly.tracker-latest.min.js" async></script> <script type="text/javascript" src="//cloudfront.loggly.com/js/loggly.tracker-latest.min.js" async></script>
<!-- Translations --> <!-- Translations -->
<script type='text/javascript' src='/api/v4/i18n/browser-script'></script> <script type='text/javascript' src='/api/v4/i18n/browser-script' vite-ignore></script>
</body> </body>
</html> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -3,28 +3,26 @@
"version": "1.0.0", "version": "1.0.0",
"private": true, "private": true,
"scripts": { "scripts": {
"serve": "vue-cli-service serve", "serve": "vite",
"build": "vue-cli-service build", "build": "vite build",
"test:unit": "vue-cli-service test:unit --require ./tests/unit/helpers.js", "preview": "vite preview",
"lint": "vue-cli-service lint .", "test:unit": "vitest run",
"lint-no-fix": "vue-cli-service lint --no-fix .", "test:unit:watch": "vitest watch",
"lint": "eslint --ext .js,.vue --ignore-path ../../.gitignore --fix .",
"lint-no-fix": "eslint --ext .js,.vue --no-fix src",
"postinstall": "node ./scripts/npm-postinstall.js" "postinstall": "node ./scripts/npm-postinstall.js"
}, },
"dependencies": { "dependencies": {
"@vue/cli-plugin-babel": "^5.0.8", "@froxz/vite-plugin-s3": "^1.6.0",
"@vue/cli-plugin-eslint": "^5.0.8", "@vitejs/plugin-vue2": "^2.3.3",
"@vue/cli-plugin-router": "^5.0.8",
"@vue/cli-plugin-unit-mocha": "^5.0.8",
"@vue/cli-service": "^5.0.8",
"@vue/test-utils": "1.0.0-beta.29", "@vue/test-utils": "1.0.0-beta.29",
"amplitude-js": "^8.21.3", "amplitude-js": "^8.21.3",
"assert": "^2.1.0", "assert": "^2.1.0",
"autoprefixer": "^10.4.20",
"axios": "^0.28.0", "axios": "^0.28.0",
"axios-progress-bar": "^1.2.0", "axios-progress-bar": "^1.2.0",
"babel-eslint": "^10.1.0",
"bootstrap": "^4.6.0", "bootstrap": "^4.6.0",
"bootstrap-vue": "^2.23.1", "bootstrap-vue": "^2.23.1",
"core-js": "^3.33.1",
"eslint": "7.32.0", "eslint": "7.32.0",
"eslint-config-habitrpg": "6.2.0", "eslint-config-habitrpg": "6.2.0",
"eslint-plugin-mocha": "5.3.0", "eslint-plugin-mocha": "5.3.0",
@@ -34,31 +32,34 @@
"intro.js": "^7.2.0", "intro.js": "^7.2.0",
"jquery": "^3.7.1", "jquery": "^3.7.1",
"lodash": "^4.17.21", "lodash": "^4.17.21",
"markdown-it": "^14.0.0",
"moment": "^2.29.4", "moment": "^2.29.4",
"moment-locales-webpack-plugin": "^1.2.0",
"nconf": "^0.12.1", "nconf": "^0.12.1",
"sass": "^1.63.4", "sass": "^1.63.4",
"sass-loader": "^14.1.1",
"sinon": "^17.0.1", "sinon": "^17.0.1",
"stopword": "^2.0.8", "stopword": "^2.0.8",
"timers-browserify": "^2.0.12", "timers-browserify": "^2.0.12",
"uuid": "^9.0.1", "uuid": "^9.0.1",
"validator": "^13.9.0", "validator": "^13.9.0",
"vite": "^6.0.0",
"vite-plugin-compression2": "^1.3.3",
"vue": "^2.7.10", "vue": "^2.7.10",
"vue-fragment": "^1.6.0", "vue-fragment": "^1.6.0",
"vue-mugen-scroll": "^0.2.6", "vue-mugen-scroll": "^0.2.6",
"vue-router": "^3.6.5", "vue-router": "^3.6.5",
"vue-template-babel-compiler": "^2.0.0",
"vue-template-compiler": "^2.7.10",
"vuedraggable": "^2.24.3", "vuedraggable": "^2.24.3",
"vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0" "vuejs-datepicker": "git://github.com/habitrpg/vuejs-datepicker.git#153d339e4dbebb73733658aeda1d5b7fcc55b0a0"
}, },
"devDependencies": { "devDependencies": {
"@babel/plugin-proposal-optional-chaining": "^7.21.0", "@babel/plugin-proposal-optional-chaining": "^7.21.0",
"@vitest/browser": "^3.0.5",
"babel-plugin-lodash": "^3.3.4", "babel-plugin-lodash": "^3.3.4",
"chai": "^5.1.0",
"inspectpack": "^4.7.1", "inspectpack": "^4.7.1",
"jsdom": "^26.0.0",
"mocha": "^11.1.0",
"playwright": "^1.50.1",
"terser-webpack-plugin": "^5.3.10", "terser-webpack-plugin": "^5.3.10",
"vitest": "^3.0.5",
"webpack": "^5.94.0" "webpack": "^5.94.0"
} }
} }

View File

@@ -29,12 +29,14 @@
</div> </div>
<snackbars /> <snackbars />
<router-view v-if="!isUserLoggedIn || isStaticPage" /> <router-view v-if="!isUserLoggedIn || isStaticPage" />
<user-main v-else /> <div v-else>
<user-main />
</div>
</div> </div>
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#loading-screen-inapp { #loading-screen-inapp {
#melior { #melior {
@@ -90,7 +92,7 @@
</style> </style>
<style lang='scss'> <style lang='scss'>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.modal-backdrop { .modal-backdrop {
opacity: .9 !important; opacity: .9 !important;
@@ -108,16 +110,15 @@ import axios from 'axios';
import * as Analytics from '@/libs/analytics'; import * as Analytics from '@/libs/analytics';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import userMain from '@/pages/user-main';
import snackbars from '@/components/snackbars/notifications'; import snackbars from '@/components/snackbars/notifications';
const COMMUNITY_MANAGER_EMAIL = process.env.EMAILS_COMMUNITY_MANAGER_EMAIL; // eslint-disable-line const COMMUNITY_MANAGER_EMAIL = import.meta.env.EMAILS_COMMUNITY_MANAGER_EMAIL;
export default { export default {
name: 'App', name: 'App',
components: { components: {
snackbars, snackbars,
userMain, userMain: () => import('@/pages/user-main'),
}, },
data () { data () {
return { return {
@@ -301,4 +302,3 @@ export default {
</script> </script>
<style src="@/assets/scss/index.scss" lang="scss"></style> <style src="@/assets/scss/index.scss" lang="scss"></style>
<style src="@/assets/scss/sprites.scss" lang="scss"></style>

View File

@@ -1,5 +1,5 @@
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.featured-label { .featured-label {
width: auto; width: auto;

View File

@@ -2,7 +2,7 @@
$grid-gutter-width: 24px; $grid-gutter-width: 24px;
// Bootstrap and its default variables // Bootstrap and its default variables
@import 'node_modules/bootstrap/scss/bootstrap'; @import '~/bootstrap/scss/bootstrap';
// Bootstrap Vue styles // Bootstrap Vue styles
@import 'node_modules/bootstrap-vue/dist/bootstrap-vue'; @import '~/bootstrap-vue/dist/bootstrap-vue';

View File

@@ -1,4 +1,4 @@
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h1 { h1 {
margin-top: 0px; margin-top: 0px;

View File

@@ -61,13 +61,13 @@ input, textarea, input.form-control, textarea.form-control {
&.input-valid { &.input-valid {
padding-right: 27px; padding-right: 27px;
background-image: url(~@/assets/svg/for-css/check.svg); background-image: url(@/assets/svg/for-css/check.svg);
background-size: 1rem; background-size: 1rem;
} }
&.input-invalid { &.input-invalid {
padding-right: 40px; padding-right: 40px;
background-image: url(~@/assets/svg/for-css/alert.svg); background-image: url(@/assets/svg/for-css/alert.svg);
background-size: 16px 16px; background-size: 16px 16px;
border-color: $red-100 !important; border-color: $red-100 !important;
} }
@@ -239,7 +239,7 @@ $bg-disabled-control: $gray-10;
&:checked~.custom-control-label::after { &:checked~.custom-control-label::after {
width: 18px; width: 18px;
height: 18px; height: 18px;
background-image: url(~@/assets/svg/for-css/checkbox-white.svg); background-image: url(@/assets/svg/for-css/checkbox-white.svg);
background-size: 13px 10px; background-size: 13px 10px;
} }

View File

@@ -29,13 +29,13 @@
} }
.iconalert-success::before { .iconalert-success::before {
background-image: url(~@/assets/svg/for-css/checkbox-white.svg); background-image: url(@/assets/svg/for-css/checkbox-white.svg);
background-size: 13px 10px; background-size: 13px 10px;
background-color: #1ca372; background-color: #1ca372;
} }
.iconalert-warning::before, .iconalert-error::before { .iconalert-warning::before, .iconalert-error::before {
background-image: url(~@/assets/svg/for-css/alert-white.svg); background-image: url(@/assets/svg/for-css/alert-white.svg);
background-size: 16px 16px; background-size: 16px 16px;
} }

View File

@@ -1,4 +1,4 @@
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.modal { .modal {
z-index: 1350; z-index: 1350;

View File

@@ -1,4 +1,4 @@
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.container-fluid.static-view { .container-fluid.static-view {
margin: 5em 2em 0 2em; margin: 5em 2em 0 2em;

View File

@@ -4,7 +4,7 @@
<!-- @TODO i18n. How to setup the strings with the router-link inside?--> <!-- @TODO i18n. How to setup the strings with the router-link inside?-->
<img <img
:class="retiredChatPage ? 'mt-5' : 'image-404'" :class="retiredChatPage ? 'mt-5' : 'image-404'"
src="~@/assets/images/404.png" src="@/assets/images/404.png"
> >
<div v-if="retiredChatPage"> <div v-if="retiredChatPage">
<h1> <h1>
@@ -48,7 +48,7 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h1, .static-wrapper h1 { h1, .static-wrapper h1 {
color: $purple-200; color: $purple-200;

View File

@@ -107,7 +107,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.btn-primary:active { .btn-primary:active {
border: 2px solid $purple-400 !important; border: 2px solid $purple-400 !important;
@@ -193,10 +193,10 @@
import Avatar from '../avatar'; import Avatar from '../avatar';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import markdownDirective from '@/directives/markdown'; import markdownDirective from '@/directives/markdown';
import warriorIcon from '@/assets/svg/warrior.svg'; import warriorIcon from '@/assets/svg/warrior.svg?raw';
import rogueIcon from '@/assets/svg/rogue.svg'; import rogueIcon from '@/assets/svg/rogue.svg?raw';
import healerIcon from '@/assets/svg/healer.svg'; import healerIcon from '@/assets/svg/healer.svg?raw';
import wizardIcon from '@/assets/svg/wizard.svg'; import wizardIcon from '@/assets/svg/wizard.svg?raw';
export default { export default {
components: { components: {

View File

@@ -70,7 +70,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h2 { h2 {
color: $purple-200; color: $purple-200;
@@ -100,7 +100,7 @@
</style> </style>
<script> <script>
import closeIcon from '@/assets/svg/close.svg'; import closeIcon from '@/assets/svg/close.svg?raw';
import Sprite from '@/components/ui/sprite.vue'; import Sprite from '@/components/ui/sprite.vue';
export default { export default {

View File

@@ -45,7 +45,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/mixins.scss'; @import '@/assets/scss/mixins.scss';
#generic-achievement { #generic-achievement {
@include centeredModal(); @include centeredModal();
@@ -61,7 +61,7 @@
</style> </style>
<style scoped lang="scss"> <style scoped lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.content { .content {
text-align: center; text-align: center;
@@ -98,7 +98,7 @@
<script> <script>
import achievements from '@/../../common/script/content/achievements'; import achievements from '@/../../common/script/content/achievements';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import svgClose from '@/assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg?raw';
import Sprite from '@/components/ui/sprite.vue'; import Sprite from '@/components/ui/sprite.vue';
export default { export default {

View File

@@ -58,7 +58,7 @@ label(style='display:inline-block') {{ $t('dontShowAgain') }}
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#level-up { #level-up {
.modal-content { .modal-content {
@@ -157,8 +157,8 @@ label(style='display:inline-block') {{ $t('dontShowAgain') }}
import Avatar from '../avatar'; import Avatar from '../avatar';
import Sprite from '@/components/ui/sprite'; import Sprite from '@/components/ui/sprite';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import starGroup from '@/assets/svg/star-group.svg'; import starGroup from '@/assets/svg/star-group.svg?raw';
import sparkles from '@/assets/svg/sparkles-left.svg'; import sparkles from '@/assets/svg/sparkles-left.svg?raw';
const levelQuests = { const levelQuests = {
15: 'atom1', 15: 'atom1',

View File

@@ -17,7 +17,7 @@
</h2> </h2>
<img <img
class="onboarding-complete-banner d-block" class="onboarding-complete-banner d-block"
src="~@/assets/images/onboarding-complete-banner@2x.png" src="@/assets/images/onboarding-complete-banner@2x.png"
> >
<p <p
v-once v-once
@@ -59,7 +59,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h2 { h2 {
color: $purple-200; color: $purple-200;
@@ -100,7 +100,7 @@ button {
</style> </style>
<script> <script>
import svgClose from '@/assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg?raw';
export default { export default {
data () { data () {

View File

@@ -73,7 +73,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#won-challenge { #won-challenge {
.modal-body { .modal-body {
@@ -96,7 +96,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.purple { .purple {
color: $purple-300; color: $purple-300;
@@ -146,9 +146,9 @@
<script> <script>
import habiticaMarkdown from 'habitica-markdown'; import habiticaMarkdown from 'habitica-markdown';
import closeIcon from '@/components/shared/closeIcon'; import closeIcon from '@/components/shared/closeIcon';
import sparkles from '@/assets/svg/star-group.svg'; import sparkles from '@/assets/svg/star-group.svg?raw';
import gem from '@/assets/svg/gem.svg'; import gem from '@/assets/svg/gem.svg?raw';
import stars from '@/assets/svg/sparkles-left.svg'; import stars from '@/assets/svg/sparkles-left.svg?raw';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
export default { export default {

View File

@@ -19,7 +19,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.about-row { .about-row {
margin-left: 0px; margin-left: 0px;

View File

@@ -170,7 +170,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.about-row { .about-row {
margin-left: 0px; margin-left: 0px;

View File

@@ -401,7 +401,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.input-group-append { .input-group-append {
width: auto; width: auto;

View File

@@ -150,7 +150,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.page-header.btn-flat { .page-header.btn-flat {
background: transparent; background: transparent;

View File

@@ -403,7 +403,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.footer-row { .footer-row {
margin: 0; margin: 0;
flex: 0 1 auto; flex: 0 1 auto;
@@ -838,12 +838,12 @@ import moment from 'moment';
import Vue from 'vue'; import Vue from 'vue';
// images // images
import melior from '@/assets/svg/melior.svg'; import melior from '@/assets/svg/melior.svg?raw';
import bluesky from '@/assets/svg/bluesky.svg'; import bluesky from '@/assets/svg/bluesky.svg?raw';
import facebook from '@/assets/svg/facebook.svg'; import facebook from '@/assets/svg/facebook.svg?raw';
import instagram from '@/assets/svg/instagram.svg'; import instagram from '@/assets/svg/instagram.svg?raw';
import tumblr from '@/assets/svg/tumblr.svg'; import tumblr from '@/assets/svg/tumblr.svg?raw';
import heart from '@/assets/svg/heart.svg'; import heart from '@/assets/svg/heart.svg?raw';
// components & modals // components & modals
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
@@ -851,12 +851,14 @@ import buyGemsModal from './payments/buyGemsModal.vue';
import reportBug from '@/mixins/reportBug.js'; import reportBug from '@/mixins/reportBug.js';
import { worldStateMixin } from '@/mixins/worldState'; import { worldStateMixin } from '@/mixins/worldState';
const DEBUG_ENABLED = process.env.DEBUG_ENABLED === 'true'; // eslint-disable-line no-process-env const DEBUG_ENABLED = import.meta.env.DEBUG_ENABLED === 'true';
const TIME_TRAVEL_ENABLED = process.env.TIME_TRAVEL_ENABLED === 'true'; // eslint-disable-line no-process-env const TIME_TRAVEL_ENABLED = import.meta.env.TIME_TRAVEL_ENABLED === 'true';
let sinon; let sinon;
if (TIME_TRAVEL_ENABLED) { if (import.meta.env.TIME_TRAVEL_ENABLED === 'true') {
// eslint-disable-next-line global-require (async () => {
sinon = await import('sinon'); sinon = await import('sinon');
})();
} }
export default { export default {

View File

@@ -168,7 +168,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.form { .form {
margin: 0 auto; margin: 0 auto;
@@ -227,8 +227,8 @@ import debounce from 'lodash/debounce';
import isEmail from 'validator/es/lib/isEmail'; import isEmail from 'validator/es/lib/isEmail';
import { MINIMUM_PASSWORD_LENGTH } from '@/../../common/script/constants'; import { MINIMUM_PASSWORD_LENGTH } from '@/../../common/script/constants';
import { setUpAxios, buildAppleAuthUrl } from '@/libs/auth'; import { setUpAxios, buildAppleAuthUrl } from '@/libs/auth';
import googleIcon from '@/assets/svg/google.svg'; import googleIcon from '@/assets/svg/google.svg?raw';
import appleIcon from '@/assets/svg/apple_black.svg'; import appleIcon from '@/assets/svg/apple_black.svg?raw';
export default { export default {
name: 'AuthForm', name: 'AuthForm',
@@ -290,7 +290,7 @@ export default {
}, },
mounted () { mounted () {
hello.init({ hello.init({
google: process.env.GOOGLE_CLIENT_ID, // eslint-disable-line google: import.meta.env.GOOGLE_CLIENT_ID, // eslint-disable-line
}); });
}, },
methods: { methods: {

View File

@@ -355,7 +355,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@media only screen and (min-height: 1080px) { @media only screen and (min-height: 1080px) {
.bottom-wrap-register { .bottom-wrap-register {
@@ -491,7 +491,7 @@
#top-background { #top-background {
.seamless_stars_varied_opacity_repeat { .seamless_stars_varied_opacity_repeat {
background-image: url('~@/assets/images/auth/seamless_stars_varied_opacity.png'); background-image: url('@/assets/images/auth/seamless_stars_varied_opacity.png');
background-repeat: repeat-x; background-repeat: repeat-x;
position: absolute; position: absolute;
height: 500px; height: 500px;
@@ -510,7 +510,7 @@
position: relative; position: relative;
.seamless_mountains_demo_repeat { .seamless_mountains_demo_repeat {
background-image: url('~@/assets/images/auth/seamless_mountains_demo.png'); background-image: url('@/assets/images/auth/seamless_mountains_demo.png');
background-repeat: repeat-x; background-repeat: repeat-x;
width: 100%; width: 100%;
height: 300px; height: 300px;
@@ -520,7 +520,7 @@
} }
.midground_foreground_extended2 { .midground_foreground_extended2 {
background-image: url('~@/assets/images/auth/midground_foreground_extended2.png'); background-image: url('@/assets/images/auth/midground_foreground_extended2.png');
position: relative; position: relative;
width: 1500px; width: 1500px;
max-width: 100%; max-width: 100%;
@@ -611,11 +611,11 @@ import isEmail from 'validator/es/lib/isEmail';
import { MINIMUM_PASSWORD_LENGTH } from '@/../../common/script/constants'; import { MINIMUM_PASSWORD_LENGTH } from '@/../../common/script/constants';
import { buildAppleAuthUrl } from '../../libs/auth'; import { buildAppleAuthUrl } from '../../libs/auth';
import sanitizeRedirect from '@/mixins/sanitizeRedirect'; import sanitizeRedirect from '@/mixins/sanitizeRedirect';
import exclamation from '@/assets/svg/exclamation.svg'; import exclamation from '@/assets/svg/exclamation.svg?raw';
import gryphon from '@/assets/svg/gryphon.svg'; import gryphon from '@/assets/svg/gryphon.svg?raw';
import habiticaIcon from '@/assets/svg/logo-horizontal.svg'; import habiticaIcon from '@/assets/svg/logo-horizontal.svg?raw';
import googleIcon from '@/assets/svg/google.svg'; import googleIcon from '@/assets/svg/google.svg?raw';
import appleIcon from '@/assets/svg/apple_black.svg'; import appleIcon from '@/assets/svg/apple_black.svg?raw';
export default { export default {
mixins: [sanitizeRedirect], mixins: [sanitizeRedirect],
@@ -732,7 +732,7 @@ export default {
} }
} }
hello.init({ hello.init({
google: process.env.GOOGLE_CLIENT_ID, // eslint-disable-line google: import.meta.env.GOOGLE_CLIENT_ID, // eslint-disable-line
}); });
}, },
methods: { methods: {

View File

@@ -97,7 +97,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.avatar { .avatar {
width: 141px; width: 141px;

View File

@@ -27,7 +27,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.bottom-banner { .bottom-banner {
background: linear-gradient(114.26deg, $purple-300 0%, $purple-200 100%); background: linear-gradient(114.26deg, $purple-300 0%, $purple-200 100%);
@@ -55,7 +55,7 @@
</style> </style>
<script> <script>
import sparkles from '@/assets/svg/sparkles-left.svg'; import sparkles from '@/assets/svg/sparkles-left.svg?raw';
export default { export default {
data () { data () {

View File

@@ -42,8 +42,8 @@
</template> </template>
<script> <script>
import gem from '@/assets/svg/gem.svg'; import gem from '@/assets/svg/gem.svg?raw';
import gold from '@/assets/svg/gold.svg'; import gold from '@/assets/svg/gold.svg?raw';
import { avatarEditorUtilities } from '../../mixins/avatarEditUtilities'; import { avatarEditorUtilities } from '../../mixins/avatarEditUtilities';
import Sprite from '@/components/ui/sprite.vue'; import Sprite from '@/components/ui/sprite.vue';
@@ -72,7 +72,7 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.customize-options { .customize-options {
width: 100%; width: 100%;

View File

@@ -19,7 +19,7 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.sub-menu { .sub-menu {
display: flex; display: flex;

View File

@@ -31,7 +31,7 @@
<script> <script>
import markdownDirective from '@/directives/markdown'; import markdownDirective from '@/directives/markdown';
const COMMUNITY_MANAGER_EMAIL = process.env.EMAILS_COMMUNITY_MANAGER_EMAIL; // eslint-disable-line const COMMUNITY_MANAGER_EMAIL = import.meta.env.EMAILS_COMMUNITY_MANAGER_EMAIL; // eslint-disable-line
export default { export default {
directives: { directives: {

View File

@@ -118,7 +118,7 @@
</style> </style>
<style scoped lang="scss"> <style scoped lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h2 { h2 {
color: $white; color: $white;

View File

@@ -70,7 +70,7 @@
</style> </style>
<style scoped lang="scss"> <style scoped lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h2 { h2 {
color: $white; color: $white;
@@ -134,7 +134,7 @@ label {
<script> <script>
import closeIcon from '@/components/shared/closeIcon'; import closeIcon from '@/components/shared/closeIcon';
import checkCircleIcon from '@/assets/svg/check_circle.svg'; import checkCircleIcon from '@/assets/svg/check_circle.svg?raw';
import { MODALS } from '@/libs/consts'; import { MODALS } from '@/libs/consts';
export default { export default {

View File

@@ -259,7 +259,7 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h1 { h1 {
color: $purple-200; color: $purple-200;
@@ -380,9 +380,9 @@ import sidebarSection from '../sidebarSection';
import userLink from '../userLink'; import userLink from '../userLink';
import groupLink from '../groupLink'; import groupLink from '../groupLink';
import gemIcon from '@/assets/svg/gem.svg'; import gemIcon from '@/assets/svg/gem.svg?raw';
import memberIcon from '@/assets/svg/member-icon.svg'; import memberIcon from '@/assets/svg/member-icon.svg?raw';
import calendarIcon from '@/assets/svg/calendar.svg'; import calendarIcon from '@/assets/svg/calendar.svg?raw';
const TASK_KEYS_TO_REMOVE = ['_id', 'completed', 'date', 'dateCompleted', 'history', 'id', 'streak', 'createdAt', 'challenge']; const TASK_KEYS_TO_REMOVE = ['_id', 'completed', 'date', 'dateCompleted', 'history', 'id', 'streak', 'createdAt', 'challenge'];

View File

@@ -106,7 +106,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
// Have to use this, because v-markdown creates p element in h3. Scoping doesn't work with it. // Have to use this, because v-markdown creates p element in h3. Scoping doesn't work with it.
.challenge-title > p { .challenge-title > p {
display: -webkit-box; display: -webkit-box;
@@ -127,7 +127,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.challenge { .challenge {
background-color: $white; background-color: $white;
@@ -377,14 +377,14 @@ import categoryTags from '../categories/categoryTags';
import markdownDirective from '@/directives/markdown'; import markdownDirective from '@/directives/markdown';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import gemIcon from '@/assets/svg/gem.svg'; import gemIcon from '@/assets/svg/gem.svg?raw';
import memberIcon from '@/assets/svg/member-icon.svg'; import memberIcon from '@/assets/svg/member-icon.svg?raw';
import calendarIcon from '@/assets/svg/calendar.svg'; import calendarIcon from '@/assets/svg/calendar.svg?raw';
import habitIcon from '@/assets/svg/habit.svg'; import habitIcon from '@/assets/svg/habit.svg?raw';
import todoIcon from '@/assets/svg/todo.svg'; import todoIcon from '@/assets/svg/todo.svg?raw';
import dailyIcon from '@/assets/svg/daily.svg'; import dailyIcon from '@/assets/svg/daily.svg?raw';
import rewardIcon from '@/assets/svg/reward.svg'; import rewardIcon from '@/assets/svg/reward.svg?raw';
import officialIcon from '@/assets/svg/official.svg'; import officialIcon from '@/assets/svg/official.svg?raw';
export default { export default {
components: { components: {

View File

@@ -207,7 +207,7 @@
</template> </template>
<style lang='scss'> <style lang='scss'>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#challenge-modal { #challenge-modal {
h5 { h5 {

View File

@@ -81,7 +81,7 @@
</template> </template>
<style lang='scss'> <style lang='scss'>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#close-challenge-modal { #close-challenge-modal {
h2 { h2 {
@@ -98,7 +98,7 @@
} }
.support-habitica { .support-habitica {
background-image: url('~@/assets/svg/for-css/support-habitica-gems.svg'); background-image: url('@/assets/svg/for-css/support-habitica-gems.svg?raw');
width: 325px; width: 325px;
height: 89px; height: 89px;
margin: 0 auto; margin: 0 auto;

View File

@@ -63,7 +63,7 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@media only screen and (max-width: 768px) { @media only screen and (max-width: 768px) {
.header-row { .header-row {
@@ -122,7 +122,7 @@ import challengeModal from './challengeModal';
import externalLinks from '@/mixins/externalLinks'; import externalLinks from '@/mixins/externalLinks';
import challengeUtilities from '@/mixins/challengeUtilities'; import challengeUtilities from '@/mixins/challengeUtilities';
import positiveIcon from '@/assets/svg/positive.svg'; import positiveIcon from '@/assets/svg/positive.svg?raw';
export default { export default {
components: { components: {

View File

@@ -49,7 +49,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.no-challenge-section { .no-challenge-section {
padding: 2em; padding: 2em;
@@ -84,7 +84,7 @@ import markdownDirective from '@/directives/markdown';
import externalLinks from '../../mixins/externalLinks'; import externalLinks from '../../mixins/externalLinks';
import challengeItem from './challengeItem'; import challengeItem from './challengeItem';
import challengeIcon from '@/assets/svg/challenge.svg'; import challengeIcon from '@/assets/svg/challenge.svg?raw';
export default { export default {
components: { components: {

View File

@@ -86,7 +86,7 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@media only screen and (max-width: 768px) { @media only screen and (max-width: 768px) {
.header-row { .header-row {
@@ -150,8 +150,8 @@ import challengeModal from './challengeModal';
import challengeUtilities from '@/mixins/challengeUtilities'; import challengeUtilities from '@/mixins/challengeUtilities';
import externalLinks from '@/mixins/externalLinks'; import externalLinks from '@/mixins/externalLinks';
import challengeIcon from '@/assets/svg/challenge.svg'; import challengeIcon from '@/assets/svg/challenge.svg?raw';
import positiveIcon from '@/assets/svg/positive.svg'; import positiveIcon from '@/assets/svg/positive.svg?raw';
export default { export default {
components: { components: {

View File

@@ -102,7 +102,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.modal-body { .modal-body {
padding: 0px 8px 0px 8px; padding: 0px 8px 0px 8px;
@@ -207,8 +207,8 @@ import { mapState } from '@/libs/store';
import notifications from '@/mixins/notifications'; import notifications from '@/mixins/notifications';
import { userStateMixin } from '../../mixins/userState'; import { userStateMixin } from '../../mixins/userState';
import markdownDirective from '@/directives/markdown'; import markdownDirective from '@/directives/markdown';
import svgClose from '@/assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg?raw';
import svgReport from '@/assets/svg/report.svg'; import svgReport from '@/assets/svg/report.svg?raw';
export default { export default {
directives: { directives: {

View File

@@ -34,8 +34,8 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/tiers.scss'; @import '@/assets/scss/tiers.scss';
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.autocomplete-results { .autocomplete-results {
padding: .5em; padding: .5em;
@@ -74,16 +74,16 @@
<script> <script>
import groupBy from 'lodash/groupBy'; import groupBy from 'lodash/groupBy';
import styleHelper from '@/mixins/styleHelper'; import styleHelper from '@/mixins/styleHelper';
import tier1 from '@/assets/svg/tier-1.svg'; import tier1 from '@/assets/svg/tier-1.svg?raw';
import tier2 from '@/assets/svg/tier-2.svg'; import tier2 from '@/assets/svg/tier-2.svg?raw';
import tier3 from '@/assets/svg/tier-3.svg'; import tier3 from '@/assets/svg/tier-3.svg?raw';
import tier4 from '@/assets/svg/tier-4.svg'; import tier4 from '@/assets/svg/tier-4.svg?raw';
import tier5 from '@/assets/svg/tier-5.svg'; import tier5 from '@/assets/svg/tier-5.svg?raw';
import tier6 from '@/assets/svg/tier-6.svg'; import tier6 from '@/assets/svg/tier-6.svg?raw';
import tier7 from '@/assets/svg/tier-7.svg'; import tier7 from '@/assets/svg/tier-7.svg?raw';
import tier8 from '@/assets/svg/tier-mod.svg'; import tier8 from '@/assets/svg/tier-mod.svg?raw';
import tier9 from '@/assets/svg/tier-staff.svg'; import tier9 from '@/assets/svg/tier-staff.svg?raw';
import tierNPC from '@/assets/svg/tier-npc.svg'; import tierNPC from '@/assets/svg/tier-npc.svg?raw';
export default { export default {
mixins: [styleHelper], mixins: [styleHelper],

View File

@@ -63,7 +63,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.avatar { .avatar {
width: 10%; width: 10%;

View File

@@ -95,7 +95,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.modal-body { .modal-body {
padding: 0px 8px 0px 8px; padding: 0px 8px 0px 8px;
@@ -199,7 +199,7 @@
import notifications from '@/mixins/notifications'; import notifications from '@/mixins/notifications';
import markdownDirective from '@/directives/markdown'; import markdownDirective from '@/directives/markdown';
import { userStateMixin } from '../../mixins/userState'; import { userStateMixin } from '../../mixins/userState';
import svgClose from '@/assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg?raw';
export default { export default {
directives: { directives: {

View File

@@ -572,7 +572,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
$dialogMarginTop: 56px; $dialogMarginTop: 56px;
$userCreationBgHeight: 105px; $userCreationBgHeight: 105px;
@@ -671,7 +671,7 @@
} }
.user-creation-bg { .user-creation-bg {
background-image: url('~@/assets/creator/creator-hills-bg.png'); background-image: url('@/assets/creator/creator-hills-bg.png');
height: $userCreationBgHeight; height: $userCreationBgHeight;
width: 219px; width: 219px;
margin: 0 auto; margin: 0 auto;
@@ -1001,18 +1001,18 @@ import hairSettings from './avatarModal/hair-settings';
import extraSettings from './avatarModal/extra-settings'; import extraSettings from './avatarModal/extra-settings';
import closeX from './ui/closeX'; import closeX from './ui/closeX';
import logoPurple from '@/assets/svg/logo-purple.svg'; import logoPurple from '@/assets/svg/logo-purple.svg?raw';
import bodyIcon from '@/assets/svg/body.svg'; import bodyIcon from '@/assets/svg/body.svg?raw';
import accessoriesIcon from '@/assets/svg/accessories.svg'; import accessoriesIcon from '@/assets/svg/accessories.svg?raw';
import skinIcon from '@/assets/svg/skin.svg'; import skinIcon from '@/assets/svg/skin.svg?raw';
import hairIcon from '@/assets/svg/hair.svg'; import hairIcon from '@/assets/svg/hair.svg?raw';
import backgroundsIcon from '@/assets/svg/backgrounds.svg'; import backgroundsIcon from '@/assets/svg/backgrounds.svg?raw';
import gem from '@/assets/svg/gem.svg'; import gem from '@/assets/svg/gem.svg?raw';
import hourglass from '@/assets/svg/hourglass.svg'; import hourglass from '@/assets/svg/hourglass.svg?raw';
import gold from '@/assets/svg/gold.svg'; import gold from '@/assets/svg/gold.svg?raw';
import arrowRight from '@/assets/svg/arrow_right.svg'; import arrowRight from '@/assets/svg/arrow_right.svg?raw';
import arrowLeft from '@/assets/svg/arrow_left.svg'; import arrowLeft from '@/assets/svg/arrow_left.svg?raw';
import svgClose from '@/assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg?raw';
import { avatarEditorUtilities } from '../mixins/avatarEditUtilities'; import { avatarEditorUtilities } from '../mixins/avatarEditUtilities';
import Sprite from './ui/sprite'; import Sprite from './ui/sprite';

View File

@@ -60,7 +60,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#external-link-modal { #external-link-modal {
&.modal { &.modal {
@@ -174,8 +174,8 @@
</style> </style>
<script> <script>
import exclamationIcon from '@/assets/svg/exclamation.svg'; import exclamationIcon from '@/assets/svg/exclamation.svg?raw';
import closeIcon from '@/assets/svg/new-close.svg'; import closeIcon from '@/assets/svg/new-close.svg?raw';
export default { export default {
data () { data () {

View File

@@ -39,7 +39,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.face-avatar { .face-avatar {
width: 36px; width: 36px;

View File

@@ -108,7 +108,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h2 { h2 {
color: $purple-300; color: $purple-300;
@@ -201,7 +201,7 @@
</style> </style>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/mixins.scss'; @import '@/assets/scss/mixins.scss';
#create-group { #create-group {
.modal-dialog { .modal-dialog {
max-width: 448px; max-width: 448px;

View File

@@ -28,9 +28,9 @@
></div> ></div>
<img <img
class="task-columns" class="task-columns"
src="~@/assets/images/group-plans/task-columns.png" src="@/assets/images/group-plans/task-columns.png"
srcset="~@/assets/images/group-plans/task-columns@2x.png 2x, srcset="@/assets/images/group-plans/task-columns@2x.png 2x,
~@/assets/images/group-plans/task-columns@3x.png 3x" @/assets/images/group-plans/task-columns@3x.png 3x"
> >
</div> </div>
<div <div
@@ -96,7 +96,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#group-plans-update { #group-plans-update {
.modal-content { .modal-content {
border-top-left-radius: 10px; border-top-left-radius: 10px;
@@ -125,7 +125,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h2 { h2 {
color: $white; color: $white;
line-height: 28px; line-height: 28px;
@@ -183,8 +183,8 @@
</style> </style>
<script> <script>
import closeIcon from '@/assets/svg/close.svg'; import closeIcon from '@/assets/svg/close.svg?raw';
import sparkles from '@/assets/svg/sparkles-left.svg'; import sparkles from '@/assets/svg/sparkles-left.svg?raw';
export default { export default {
data () { data () {

View File

@@ -125,8 +125,8 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@import '~@/assets/scss/create-task.scss'; @import '@/assets/scss/create-task.scss';
h1 { h1 {
color: $purple-300; color: $purple-300;
@@ -190,13 +190,13 @@ import toggleSwitch from '@/components/ui/toggleSwitch';
import sync from '../../mixins/sync'; import sync from '../../mixins/sync';
import positiveIcon from '@/assets/svg/positive.svg'; import positiveIcon from '@/assets/svg/positive.svg?raw';
import filterIcon from '@/assets/svg/filter.svg'; import filterIcon from '@/assets/svg/filter.svg?raw';
import deleteIcon from '@/assets/svg/delete.svg'; import deleteIcon from '@/assets/svg/delete.svg?raw';
import habitIcon from '@/assets/svg/habit.svg'; import habitIcon from '@/assets/svg/habit.svg?raw';
import dailyIcon from '@/assets/svg/daily.svg'; import dailyIcon from '@/assets/svg/daily.svg?raw';
import todoIcon from '@/assets/svg/todo.svg'; import todoIcon from '@/assets/svg/todo.svg?raw';
import rewardIcon from '@/assets/svg/reward.svg'; import rewardIcon from '@/assets/svg/reward.svg?raw';
import * as Analytics from '@/libs/analytics'; import * as Analytics from '@/libs/analytics';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';

View File

@@ -212,8 +212,8 @@ export default {
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@import '~@/assets/scss/variables.scss'; @import '@/assets/scss/variables.scss';
.chat-actions { .chat-actions {
margin-top: 1em; margin-top: 1em;

View File

@@ -21,7 +21,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.community-guidelines { .community-guidelines {
background-color: rgba(135, 129, 144, 0.84); background-color: rgba(135, 129, 144, 0.84);

View File

@@ -114,7 +114,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.copy-icon { .copy-icon {
width: 1rem; width: 1rem;
@@ -163,7 +163,7 @@
width: 100%; width: 100%;
.quest_screen { .quest_screen {
background-image: url('~@/assets/images/group@3x.png'); background-image: url('@/assets/images/group@3x.png');
background-size: cover; background-size: cover;
width: 100%; width: 100%;
height: 246px; height: 246px;
@@ -196,7 +196,7 @@
} }
.join-party { .join-party {
background-image: url('~@/assets/images/party.png'); background-image: url('@/assets/images/party.png');
background-size: cover; background-size: cover;
width: 203px; width: 203px;
height: 66px; height: 66px;
@@ -244,7 +244,7 @@ import * as Analytics from '@/libs/analytics';
import notifications from '@/mixins/notifications'; import notifications from '@/mixins/notifications';
import closeX from '../ui/closeX'; import closeX from '../ui/closeX';
import copyIcon from '@/assets/svg/copy.svg'; import copyIcon from '@/assets/svg/copy.svg?raw';
import copyToClipboard from '@/mixins/copyToClipboard'; import copyToClipboard from '@/mixins/copyToClipboard';
export default { export default {

View File

@@ -65,7 +65,7 @@ b-dropdown(:text="$t('sort')", right=true)
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.sort-select { .sort-select {
margin: 2em; margin: 2em;
@@ -95,7 +95,7 @@ import PublicGuildItem from './publicGuildItem';
import Sidebar from './groupSidebar'; import Sidebar from './groupSidebar';
import groupUtilities from '@/mixins/groupsUtilities'; import groupUtilities from '@/mixins/groupsUtilities';
import positiveIcon from '@/assets/svg/positive.svg'; import positiveIcon from '@/assets/svg/positive.svg?raw';
function _mapCategories (guilds) { function _mapCategories (guilds) {
guilds.forEach(guild => { guilds.forEach(guild => {

View File

@@ -115,7 +115,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@media (min-width: 1300px) { @media (min-width: 1300px) {
.standard-page { .standard-page {
@@ -297,17 +297,17 @@ import markdownDirective from '@/directives/markdown';
import chat from './chat'; import chat from './chat';
import userLink from '../userLink'; import userLink from '../userLink';
import deleteIcon from '@/assets/svg/delete.svg'; import deleteIcon from '@/assets/svg/delete.svg?raw';
import copyIcon from '@/assets/svg/copy.svg'; import copyIcon from '@/assets/svg/copy.svg?raw';
import likeIcon from '@/assets/svg/like.svg'; import likeIcon from '@/assets/svg/like.svg?raw';
import likedIcon from '@/assets/svg/liked.svg'; import likedIcon from '@/assets/svg/liked.svg?raw';
import reportIcon from '@/assets/svg/report.svg'; import reportIcon from '@/assets/svg/report.svg?raw';
import gemIcon from '@/assets/svg/gem.svg'; import gemIcon from '@/assets/svg/gem.svg?raw';
import questIcon from '@/assets/svg/quest.svg'; import questIcon from '@/assets/svg/quest.svg?raw';
import questBackground from '@/assets/svg/quest-background-border.svg'; import questBackground from '@/assets/svg/quest-background-border.svg?raw';
import goldGuildBadgeIcon from '@/assets/svg/gold-guild-badge-small.svg'; import goldGuildBadgeIcon from '@/assets/svg/gold-guild-badge-small.svg?raw';
import silverGuildBadgeIcon from '@/assets/svg/silver-guild-badge-small.svg'; import silverGuildBadgeIcon from '@/assets/svg/silver-guild-badge-small.svg?raw';
import bronzeGuildBadgeIcon from '@/assets/svg/bronze-guild-badge-small.svg'; import bronzeGuildBadgeIcon from '@/assets/svg/bronze-guild-badge-small.svg?raw';
import QuestDetailModal from './questDetailModal'; import QuestDetailModal from './questDetailModal';
import RightSidebar from '@/components/groups/rightSidebar'; import RightSidebar from '@/components/groups/rightSidebar';
import InvitationListModal from './invitationListModal'; import InvitationListModal from './invitationListModal';

View File

@@ -312,7 +312,7 @@ label.custom-control-label(v-once) {{ $t('allowGuildInvitationsFromNonMembers')
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.custom-control-input { .custom-control-input {
z-index: 1 !important; z-index: 1 !important;
@@ -376,8 +376,8 @@ import { MAX_SUMMARY_SIZE_FOR_GUILDS } from '@/../../common/script/constants';
import CategoryOptions from '@/../../common/script/content/categoryOptions'; import CategoryOptions from '@/../../common/script/content/categoryOptions';
import toggleSwitch from '@/components/ui/toggleSwitch'; import toggleSwitch from '@/components/ui/toggleSwitch';
import markdownDirective from '@/directives/markdown'; import markdownDirective from '@/directives/markdown';
import gemIcon from '@/assets/svg/gem.svg'; import gemIcon from '@/assets/svg/gem.svg?raw';
import informationIcon from '@/assets/svg/information.svg'; import informationIcon from '@/assets/svg/information.svg?raw';
import { userStateMixin } from '../../mixins/userState'; import { userStateMixin } from '../../mixins/userState';

View File

@@ -79,7 +79,7 @@
</template> </template>
<style lang='scss'> <style lang='scss'>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#invitation-list { #invitation-list {
.modal-header { .modal-header {
@@ -127,7 +127,7 @@
</style> </style>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.header-wrap { .header-wrap {
width: 100%; width: 100%;
@@ -242,8 +242,8 @@ import CloseIcon from '../shared/closeIcon';
import ClassBadge from '../members/classBadge'; import ClassBadge from '../members/classBadge';
import UserLabel from '../userLabel'; import UserLabel from '../userLabel';
import svgClose from '@/assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg?raw';
import svgCheck from '@/assets/svg/check.svg'; import svgCheck from '@/assets/svg/check.svg?raw';
export default { export default {
components: { components: {

View File

@@ -75,7 +75,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
a:not([href]) { a:not([href]) {
font-size: 16px; font-size: 16px;
@@ -126,7 +126,7 @@ import isEmail from 'validator/es/lib/isEmail';
import isUUID from 'validator/es/lib/isUUID'; import isUUID from 'validator/es/lib/isUUID';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import notifications from '@/mixins/notifications'; import notifications from '@/mixins/notifications';
import positiveIcon from '@/assets/svg/positive.svg'; import positiveIcon from '@/assets/svg/positive.svg?raw';
const INVITE_DEFAULTS = { text: '', error: null, valid: null }; const INVITE_DEFAULTS = { text: '', error: null, valid: null };

View File

@@ -128,7 +128,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h1 { h1 {
color: $purple-300; color: $purple-300;
@@ -252,12 +252,12 @@ import Avatar from '../avatar';
import userLink from '../userLink'; import userLink from '../userLink';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import syncIcon from '@/assets/svg/sync-2.svg'; import syncIcon from '@/assets/svg/sync-2.svg?raw';
import usersIcon from '@/assets/svg/users.svg'; import usersIcon from '@/assets/svg/users.svg?raw';
import warriorIcon from '@/assets/svg/warrior.svg'; import warriorIcon from '@/assets/svg/warrior.svg?raw';
import rogueIcon from '@/assets/svg/rogue.svg'; import rogueIcon from '@/assets/svg/rogue.svg?raw';
import healerIcon from '@/assets/svg/healer.svg'; import healerIcon from '@/assets/svg/healer.svg?raw';
import wizardIcon from '@/assets/svg/wizard.svg'; import wizardIcon from '@/assets/svg/wizard.svg?raw';
export default { export default {
components: { components: {

View File

@@ -284,7 +284,7 @@
</style> </style>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.apply-options { .apply-options {
padding: 1em; padding: 1em;
@@ -378,10 +378,10 @@ import isEmpty from 'lodash/isEmpty';
import removeMemberModal from '@/components/members/removeMemberModal'; import removeMemberModal from '@/components/members/removeMemberModal';
import loadingGryphon from '@/components/ui/loadingGryphon'; import loadingGryphon from '@/components/ui/loadingGryphon';
import MemberDetails from '../memberDetails'; import MemberDetails from '../memberDetails';
import blockIcon from '@/assets/svg/block.svg'; import blockIcon from '@/assets/svg/block.svg?raw';
import messageIcon from '@/assets/members/message.svg'; import messageIcon from '@/assets/members/message.svg?raw';
import starIcon from '@/assets/members/star.svg'; import starIcon from '@/assets/members/star.svg?raw';
import dots from '@/assets/svg/dots.svg'; import dots from '@/assets/svg/dots.svg?raw';
import SelectList from '@/components/ui/selectList'; import SelectList from '@/components/ui/selectList';
import { PAGES } from '@/libs/consts'; import { PAGES } from '@/libs/consts';
import { userStateMixin } from '../../mixins/userState'; import { userStateMixin } from '../../mixins/userState';

View File

@@ -81,7 +81,7 @@ b-dropdown(:text="$t('sort')", right=true)
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.sort-select { .sort-select {
margin: 2em; margin: 2em;
} }
@@ -115,8 +115,8 @@ import groupUtilities from '@/mixins/groupsUtilities';
import PublicGuildItem from './publicGuildItem'; import PublicGuildItem from './publicGuildItem';
import Sidebar from './groupSidebar'; import Sidebar from './groupSidebar';
import greyBadgeIcon from '@/assets/svg/grey-badge.svg'; import greyBadgeIcon from '@/assets/svg/grey-badge.svg?raw';
import positiveIcon from '@/assets/svg/positive.svg'; import positiveIcon from '@/assets/svg/positive.svg?raw';
export default { export default {
components: { PublicGuildItem, Sidebar }, components: { PublicGuildItem, Sidebar },

View File

@@ -87,7 +87,7 @@
</style> </style>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.header-wrap { .header-wrap {
width: 100%; width: 100%;

View File

@@ -109,7 +109,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.card-link { .card-link {
color: #4E4A57 !important; color: #4E4A57 !important;
@@ -218,10 +218,10 @@ import { mapState } from '@/libs/store';
import categoryTags from '../categories/categoryTags'; import categoryTags from '../categories/categoryTags';
import groupUtilities from '@/mixins/groupsUtilities'; import groupUtilities from '@/mixins/groupsUtilities';
import markdown from '@/directives/markdown'; import markdown from '@/directives/markdown';
import gemIcon from '@/assets/svg/gem.svg'; import gemIcon from '@/assets/svg/gem.svg?raw';
import goldGuildBadgeIcon from '@/assets/svg/gold-guild-badge-large.svg'; import goldGuildBadgeIcon from '@/assets/svg/gold-guild-badge-large.svg?raw';
import silverGuildBadgeIcon from '@/assets/svg/silver-guild-badge-large.svg'; import silverGuildBadgeIcon from '@/assets/svg/silver-guild-badge-large.svg?raw';
import bronzeGuildBadgeIcon from '@/assets/svg/bronze-guild-badge-large.svg'; import bronzeGuildBadgeIcon from '@/assets/svg/bronze-guild-badge-large.svg?raw';
export default { export default {
directives: { directives: {

View File

@@ -151,7 +151,7 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h2 { h2 {
color: $purple-300; color: $purple-300;
@@ -308,7 +308,7 @@ import getItemInfo from '@/../../common/script/libs/getItemInfo';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import * as Analytics from '@/libs/analytics'; import * as Analytics from '@/libs/analytics';
import navigationBack from '@/assets/svg/navigation_back.svg'; import navigationBack from '@/assets/svg/navigation_back.svg?raw';
import questDialogContent from '../shops/quests/questDialogContent'; import questDialogContent from '../shops/quests/questDialogContent';
import closeIcon from '../shared/closeIcon'; import closeIcon from '../shared/closeIcon';
import QuestRewards from '../shops/quests/questRewards'; import QuestRewards from '../shops/quests/questRewards';

View File

@@ -268,7 +268,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.svg-icon { .svg-icon {
height: 25px; height: 25px;
@@ -644,10 +644,10 @@ import { mapState } from '@/libs/store';
import sidebarSection from '../sidebarSection'; import sidebarSection from '../sidebarSection';
import Sprite from '../ui/sprite'; import Sprite from '../ui/sprite';
import questIcon from '@/assets/svg/quest.svg'; import questIcon from '@/assets/svg/quest.svg?raw';
import swordIcon from '@/assets/svg/sword.svg'; import swordIcon from '@/assets/svg/sword.svg?raw';
import rageIcon from '@/assets/svg/rage.svg'; import rageIcon from '@/assets/svg/rage.svg?raw';
import healthNoPaddingIcon from '@/assets/svg/health_no_padding.svg'; import healthNoPaddingIcon from '@/assets/svg/health_no_padding.svg?raw';
import questActionsMixin from '@/components/groups/questActions.mixin'; import questActionsMixin from '@/components/groups/questActions.mixin';
export default { export default {

View File

@@ -143,12 +143,12 @@ import questSidebarSection from '@/components/groups/questSidebarSection';
import sidebarSection from '@/components/sidebarSection'; import sidebarSection from '@/components/sidebarSection';
import markdownDirective from '@/directives/markdown'; import markdownDirective from '@/directives/markdown';
import menuIcon from '@/assets/svg/menu.svg'; import menuIcon from '@/assets/svg/menu.svg?raw';
import sparklesIcon from '@/assets/svg/sparklesIcon.svg'; import sparklesIcon from '@/assets/svg/sparklesIcon.svg?raw';
import leaveIcon from '@/assets/svg/leave.svg'; import leaveIcon from '@/assets/svg/leave.svg?raw';
import editIcon from '@/assets/svg/edit.svg'; import editIcon from '@/assets/svg/edit.svg?raw';
import messageIcon from '@/assets/svg/message.svg'; import messageIcon from '@/assets/svg/message.svg?raw';
import usersIcon from '@/assets/svg/users.svg'; import usersIcon from '@/assets/svg/users.svg?raw';
export default { export default {
components: { components: {
@@ -181,7 +181,7 @@ export default {
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@media (min-width: 1300px) { @media (min-width: 1300px) {
.sidebar { .sidebar {

View File

@@ -157,12 +157,12 @@
<img <img
v-if="!group.quest.extra.worldDmg.seasonalShop" v-if="!group.quest.extra.worldDmg.seasonalShop"
class="rage-strike" class="rage-strike"
src="~@/assets/images/world-boss/rage_strike@2x.png" src="@/assets/images/world-boss/rage_strike@2x.png"
> >
<img <img
v-if="group.quest.extra.worldDmg.seasonalShop" v-if="group.quest.extra.worldDmg.seasonalShop"
class="rage-strike-active" class="rage-strike-active"
src="~@/assets/images/world-boss/rage_strike-seasonalShop@2x.png" src="@/assets/images/world-boss/rage_strike-seasonalShop@2x.png"
> >
</div> </div>
<div <div
@@ -172,12 +172,12 @@
<img <img
v-if="!group.quest.extra.worldDmg.market" v-if="!group.quest.extra.worldDmg.market"
class="rage-strike" class="rage-strike"
src="~@/assets/images/world-boss/rage_strike@2x.png" src="@/assets/images/world-boss/rage_strike@2x.png"
> >
<img <img
v-if="group.quest.extra.worldDmg.market" v-if="group.quest.extra.worldDmg.market"
class="rage-strike-active" class="rage-strike-active"
src="~@/assets/images/world-boss/rage_strike-market@2x.png" src="@/assets/images/world-boss/rage_strike-market@2x.png"
> >
</div> </div>
<div <div
@@ -187,12 +187,12 @@
<img <img
v-if="!group.quest.extra.worldDmg.quests" v-if="!group.quest.extra.worldDmg.quests"
class="rage-strike" class="rage-strike"
src="~@/assets/images/world-boss/rage_strike@2x.png" src="@/assets/images/world-boss/rage_strike@2x.png"
> >
<img <img
v-if="group.quest.extra.worldDmg.quests" v-if="group.quest.extra.worldDmg.quests"
class="rage-strike-active" class="rage-strike-active"
src="~@/assets/images/world-boss/rage_strike-quests@2x.png" src="@/assets/images/world-boss/rage_strike-quests@2x.png"
> >
</div> </div>
</div> </div>
@@ -486,7 +486,7 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
h1 { h1 {
color: $purple-200; color: $purple-200;
@@ -756,25 +756,25 @@ import worldBossRageModal from '../world-boss/worldBossRageModal';
import sidebarSection from '../sidebarSection'; import sidebarSection from '../sidebarSection';
import chat from './chat'; import chat from './chat';
import challengeIcon from '@/assets/svg/challenge.svg'; import challengeIcon from '@/assets/svg/challenge.svg?raw';
import chevronIcon from '@/assets/svg/chevron-red.svg'; import chevronIcon from '@/assets/svg/chevron-red.svg?raw';
import gemIcon from '@/assets/svg/gem.svg'; import gemIcon from '@/assets/svg/gem.svg?raw';
import healthIcon from '@/assets/svg/health.svg'; import healthIcon from '@/assets/svg/health.svg?raw';
import informationIconRed from '@/assets/svg/information-red.svg'; import informationIconRed from '@/assets/svg/information-red.svg?raw';
import questBackground from '@/assets/svg/quest-background-border.svg'; import questBackground from '@/assets/svg/quest-background-border.svg?raw';
import rageIcon from '@/assets/svg/rage.svg'; import rageIcon from '@/assets/svg/rage.svg?raw';
import swordIcon from '@/assets/svg/sword.svg'; import swordIcon from '@/assets/svg/sword.svg?raw';
import tier1 from '@/assets/svg/tier-1.svg'; import tier1 from '@/assets/svg/tier-1.svg?raw';
import tier2 from '@/assets/svg/tier-2.svg'; import tier2 from '@/assets/svg/tier-2.svg?raw';
import tier3 from '@/assets/svg/tier-3.svg'; import tier3 from '@/assets/svg/tier-3.svg?raw';
import tier4 from '@/assets/svg/tier-4.svg'; import tier4 from '@/assets/svg/tier-4.svg?raw';
import tier5 from '@/assets/svg/tier-5.svg'; import tier5 from '@/assets/svg/tier-5.svg?raw';
import tier6 from '@/assets/svg/tier-6.svg'; import tier6 from '@/assets/svg/tier-6.svg?raw';
import tier7 from '@/assets/svg/tier-7.svg'; import tier7 from '@/assets/svg/tier-7.svg?raw';
import tierMod from '@/assets/svg/tier-mod.svg'; import tierMod from '@/assets/svg/tier-mod.svg?raw';
import tierNPC from '@/assets/svg/tier-npc.svg'; import tierNPC from '@/assets/svg/tier-npc.svg?raw';
import tierStaff from '@/assets/svg/tier-staff.svg'; import tierStaff from '@/assets/svg/tier-staff.svg?raw';
import staffList from '../../libs/staffList'; import staffList from '../../libs/staffList';
import reportBug from '@/mixins/reportBug.js'; import reportBug from '@/mixins/reportBug.js';

View File

@@ -20,7 +20,7 @@ body.modal-open .habitica-top-banner {
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.habitica-top-banner { .habitica-top-banner {
width: 100%; width: 100%;

View File

@@ -41,7 +41,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.announce-text { .announce-text {
color: $purple-50; color: $purple-50;
@@ -56,7 +56,7 @@
rgba(255,190,93,1) 25%, rgba(255,190,93,1) 25%,
rgba(255,190,93,1) 75%, rgba(255,190,93,1) 75%,
rgba(255,190,93,0) 100%), rgba(255,190,93,0) 100%),
url('~@/assets/images/glitter.png'); url('@/assets/images/glitter.png');
cursor: pointer; cursor: pointer;
} }
@@ -86,8 +86,8 @@ import find from 'lodash/find';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import BaseBanner from './base'; import BaseBanner from './base';
import giftsBirthday from '@/assets/svg/gifts-birthday.svg'; import giftsBirthday from '@/assets/svg/gifts-birthday.svg?raw';
import tenBirthday from '@/assets/svg/10th-birthday-linear.svg'; import tenBirthday from '@/assets/svg/10th-birthday-linear.svg?raw';
export default { export default {
components: { components: {

View File

@@ -17,7 +17,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.chat-banner { .chat-banner {
width: 100%; width: 100%;

View File

@@ -28,7 +28,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.resting-banner { .resting-banner {
background-color: $blue-10; background-color: $blue-10;

View File

@@ -15,62 +15,62 @@
v-if="eventName === 'fall_extra_gems'" v-if="eventName === 'fall_extra_gems'"
class="d-none d-xl-block" class="d-none d-xl-block"
srcset=" srcset="
~@/assets/images/gems/fall-confetti-left/confetti.png, @/assets/images/gems/fall-confetti-left/confetti.png,
~@/assets/images/gems/fall-confetti-left/confetti@2x.png 2x, @/assets/images/gems/fall-confetti-left/confetti@2x.png 2x,
~@/assets/images/gems/fall-confetti-left/confetti@3x.png 3x" @/assets/images/gems/fall-confetti-left/confetti@3x.png 3x"
src="~@/assets/images/gems/fall-confetti-left/confetti.png" src="@/assets/images/gems/fall-confetti-left/confetti.png"
> >
<img <img
v-else-if="eventName === 'spooky_extra_gems'" v-else-if="eventName === 'spooky_extra_gems'"
class="d-none d-xl-block" class="d-none d-xl-block"
srcset=" srcset="
~@/assets/images/gems/spooky-confetti-left/confetti.png, @/assets/images/gems/spooky-confetti-left/confetti.png,
~@/assets/images/gems/spooky-confetti-left/confetti@2x.png 2x, @/assets/images/gems/spooky-confetti-left/confetti@2x.png 2x,
~@/assets/images/gems/spooky-confetti-left/confetti@3x.png 3x" @/assets/images/gems/spooky-confetti-left/confetti@3x.png 3x"
src="~@/assets/images/gems/spooky-confetti-left/confetti.png" src="@/assets/images/gems/spooky-confetti-left/confetti.png"
> >
<div class="promo-test"> <div class="promo-test">
<img <img
v-if="eventName === 'fall_extra_gems'" v-if="eventName === 'fall_extra_gems'"
srcset=" srcset="
~@/assets/images/gems/fall-text/text.png, @/assets/images/gems/fall-text/text.png,
~@/assets/images/gems/fall-text/text@2x.png 2x, @/assets/images/gems/fall-text/text@2x.png 2x,
~@/assets/images/gems/fall-text/text@3x.png 3x" @/assets/images/gems/fall-text/text@3x.png 3x"
src="~@/assets/images/gems/fall-text/text.png" src="@/assets/images/gems/fall-text/text.png"
> >
<img <img
v-else-if="eventName === 'spooky_extra_gems'" v-else-if="eventName === 'spooky_extra_gems'"
srcset=" srcset="
~@/assets/images/gems/spooky-text/text.png, @/assets/images/gems/spooky-text/text.png,
~@/assets/images/gems/spooky-text/text@2x.png 2x, @/assets/images/gems/spooky-text/text@2x.png 2x,
~@/assets/images/gems/spooky-text/text@3x.png 3x" @/assets/images/gems/spooky-text/text@3x.png 3x"
src="~@/assets/images/gems/spooky-text/text.png" src="@/assets/images/gems/spooky-text/text.png"
> >
</div> </div>
<img <img
v-if="eventName === 'fall_extra_gems'" v-if="eventName === 'fall_extra_gems'"
class="d-none d-xl-block" class="d-none d-xl-block"
srcset=" srcset="
~@/assets/images/gems/fall-confetti-right/confetti.png, @/assets/images/gems/fall-confetti-right/confetti.png,
~@/assets/images/gems/fall-confetti-right/confetti@2x.png 2x, @/assets/images/gems/fall-confetti-right/confetti@2x.png 2x,
~@/assets/images/gems/fall-confetti-right/confetti@3x.png 3x" @/assets/images/gems/fall-confetti-right/confetti@3x.png 3x"
src="~@/assets/images/gems/fall-confetti-right/confetti.png" src="@/assets/images/gems/fall-confetti-right/confetti.png"
> >
<img <img
v-else-if="eventName === 'spooky_extra_gems'" v-else-if="eventName === 'spooky_extra_gems'"
class="d-none d-xl-block" class="d-none d-xl-block"
srcset=" srcset="
~@/assets/images/gems/spooky-confetti-right/confetti.png, @/assets/images/gems/spooky-confetti-right/confetti.png,
~@/assets/images/gems/spooky-confetti-right/confetti@2x.png 2x, @/assets/images/gems/spooky-confetti-right/confetti@2x.png 2x,
~@/assets/images/gems/spooky-confetti-right/confetti@3x.png 3x" @/assets/images/gems/spooky-confetti-right/confetti@3x.png 3x"
src="~@/assets/images/gems/spooky-confetti-right/confetti.png" src="@/assets/images/gems/spooky-confetti-right/confetti.png"
> >
</div> </div>
</base-banner> </base-banner>
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.gems-promo-banner-fall_extra_gems { .gems-promo-banner-fall_extra_gems {
background: $gray-10; background: $gray-10;

View File

@@ -34,7 +34,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.announce-text { .announce-text {
color: $white; color: $white;
@@ -67,7 +67,7 @@ import find from 'lodash/find';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import BaseBanner from './base'; import BaseBanner from './base';
import gifts from '@/assets/svg/gifts.svg'; import gifts from '@/assets/svg/gifts.svg?raw';
export default { export default {
components: { components: {

View File

@@ -74,7 +74,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
#app-header { #app-header {
padding-left: 24px; padding-left: 24px;

View File

@@ -402,9 +402,9 @@ body.modal-open #habitica-menu {
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@import '~@/assets/scss/utils.scss'; @import '@/assets/scss/utils.scss';
@import '~@/assets/scss/variables.scss'; @import '@/assets/scss/variables.scss';
.menu-toggle { .menu-toggle {
border: none; border: none;
@@ -417,7 +417,7 @@ body.modal-open #habitica-menu {
.topbar { .topbar {
z-index: 1080; z-index: 1080;
background: $purple-100 url(~@/assets/svg/for-css/bits.svg) right top no-repeat; background: $purple-100 url(@/assets/svg/for-css/bits.svg) right top no-repeat;
min-height: 56px; min-height: 56px;
box-shadow: 0 1px 2px 0 rgba($black, 0.24); box-shadow: 0 1px 2px 0 rgba($black, 0.24);
@@ -740,12 +740,12 @@ body.modal-open #habitica-menu {
import { mapState, mapGetters } from '@/libs/store'; import { mapState, mapGetters } from '@/libs/store';
import { goToModForm } from '@/libs/modform'; import { goToModForm } from '@/libs/modform';
import gemIcon from '@/assets/svg/gem.svg'; import gemIcon from '@/assets/svg/gem.svg?raw';
import goldIcon from '@/assets/svg/gold.svg'; import goldIcon from '@/assets/svg/gold.svg?raw';
import syncIcon from '@/assets/svg/sync.svg'; import syncIcon from '@/assets/svg/sync.svg?raw';
import svgHourglasses from '@/assets/svg/hourglass.svg'; import svgHourglasses from '@/assets/svg/hourglass.svg?raw';
import chevronDownIcon from '@/assets/svg/chevron-down.svg'; import chevronDownIcon from '@/assets/svg/chevron-down.svg?raw';
import melior from '@/assets/svg/melior.svg'; import melior from '@/assets/svg/melior.svg?raw';
import creatorIntro from '../creatorIntro'; import creatorIntro from '../creatorIntro';
import notificationMenu from './notificationsDropdown'; import notificationMenu from './notificationsDropdown';

View File

@@ -7,7 +7,7 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.message-count { .message-count {
background-color: $red-50; background-color: $red-50;

View File

@@ -30,7 +30,7 @@
</template> </template>
<style lang="scss"> // Not scoped because the classes could be used in i18n strings <style lang="scss"> // Not scoped because the classes could be used in i18n strings
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.notification-small { .notification-small {
font-size: 12px; font-size: 12px;
line-height: 1.33; line-height: 1.33;
@@ -68,7 +68,7 @@
</style> </style>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.notification { .notification {
width: 378px; width: 378px;
@@ -132,7 +132,7 @@
</style> </style>
<script> <script>
import closeIcon from '@/assets/svg/close.svg'; import closeIcon from '@/assets/svg/close.svg?raw';
import { mapActions, mapState } from '@/libs/store'; import { mapActions, mapState } from '@/libs/store';
export default { export default {

View File

@@ -39,14 +39,14 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
small, strong { small, strong {
color: $white; color: $white;
} }
.notification { .notification {
background-image: url('~@/assets/images/g1g1-notif.png'); background-image: url('@/assets/images/g1g1-notif.png');
height: 10rem; height: 10rem;
padding: 3rem; padding: 3rem;
position: relative; position: relative;
@@ -81,7 +81,7 @@
</style> </style>
<script> <script>
import closeIcon from '@/assets/svg/close-teal.svg'; import closeIcon from '@/assets/svg/close-teal.svg?raw';
import { mapActions } from '@/libs/store'; import { mapActions } from '@/libs/store';
export default { export default {

View File

@@ -13,7 +13,7 @@
> >
<img <img
class="onboarding-complete-banner d-block" class="onboarding-complete-banner d-block"
src="~@/assets/images/onboarding-complete-banner@2x.png" src="@/assets/images/onboarding-complete-banner@2x.png"
> >
<h3 v-once> <h3 v-once>
{{ $t('onboardingComplete') }} {{ $t('onboardingComplete') }}
@@ -36,7 +36,7 @@
</template> </template>
<style lang="scss" scoped> <style lang="scss" scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.onboarding-complete-content { .onboarding-complete-content {
text-align: center; text-align: center;

View File

@@ -27,7 +27,7 @@
<script> <script>
import BaseNotification from './base'; import BaseNotification from './base';
import sparklesIcon from '@/assets/svg/sparkles.svg'; import sparklesIcon from '@/assets/svg/sparkles.svg?raw';
export default { export default {
components: { components: {

View File

@@ -102,7 +102,7 @@
} }
.left-hearts { .left-hearts {
background-image: url('~@/assets/images/world-boss/left-hearts@3x.png'); background-image: url('@/assets/images/world-boss/left-hearts@3x.png');
} }
.quest_dysheartener_notification, .phobia_dysheartener_notification { .quest_dysheartener_notification, .phobia_dysheartener_notification {
@@ -116,12 +116,12 @@
} }
.quest_dysheartener_notification { .quest_dysheartener_notification {
background-image: url('~@/assets/images/world-boss/mantis-static-notification@3x.png'); background-image: url('@/assets/images/world-boss/mantis-static-notification@3x.png');
} }
.phobia_dysheartener_notification { .phobia_dysheartener_notification {
display: none; display: none;
background-image: url('~@/assets/images/world-boss/heart-translucent-shadow-notification@3x.png'); background-image: url('@/assets/images/world-boss/heart-translucent-shadow-notification@3x.png');
} }
.health-bar { .health-bar {
@@ -173,8 +173,8 @@ import * as quests from '@/../../common/script/content/quests';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import BaseNotification from './base'; import BaseNotification from './base';
import health from '@/assets/svg/health.svg'; import health from '@/assets/svg/health.svg?raw';
import sword from '@/assets/svg/sword.svg'; import sword from '@/assets/svg/sword.svg?raw';
import { worldStateMixin } from '@/mixins/worldState'; import { worldStateMixin } from '@/mixins/worldState';
export default { export default {

View File

@@ -73,7 +73,7 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.dropdown-item { .dropdown-item {
padding: 16px 24px; padding: 16px 24px;
@@ -115,12 +115,12 @@
import * as quests from '@/../../common/script/content/quests'; import * as quests from '@/../../common/script/content/quests';
import { hasCompletedOnboarding } from '@/../../common/script/libs/onboarding'; import { hasCompletedOnboarding } from '@/../../common/script/libs/onboarding';
import { mapState, mapActions } from '@/libs/store'; import { mapState, mapActions } from '@/libs/store';
import notificationsIcon from '@/assets/svg/notifications.svg'; import notificationsIcon from '@/assets/svg/notifications.svg?raw';
import MenuDropdown from '../ui/customMenuDropdown'; import MenuDropdown from '../ui/customMenuDropdown';
import MessageCount from './messageCount.functional.vue'; import MessageCount from './messageCount.functional.vue';
import { CONSTANTS, getLocalSetting, setLocalSetting } from '@/libs/userlocalManager'; import { CONSTANTS, getLocalSetting, setLocalSetting } from '@/libs/userlocalManager';
import successImage from '@/assets/svg/success.svg'; import successImage from '@/assets/svg/success.svg?raw';
import starBadge from '@/assets/svg/star-badge.svg'; import starBadge from '@/assets/svg/star-badge.svg?raw';
// Notifications // Notifications
import CARD_RECEIVED from './notifications/cardReceived'; import CARD_RECEIVED from './notifications/cardReceived';

View File

@@ -68,7 +68,7 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.onboarding-guide-panel { .onboarding-guide-panel {
white-space: normal; white-space: normal;
@@ -193,8 +193,8 @@
import achievs from '@/../../common/script/libs/achievements'; import achievs from '@/../../common/script/libs/achievements';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import onboardingGuideBanner from '@/assets/svg/onboarding-guide-banner.svg'; import onboardingGuideBanner from '@/assets/svg/onboarding-guide-banner.svg?raw';
import downIcon from '@/assets/svg/down.svg'; import downIcon from '@/assets/svg/down.svg?raw';
export default { export default {
props: { props: {

View File

@@ -80,10 +80,10 @@
<img <img
class="swords mb-3" class="swords mb-3"
srcset=" srcset="
~@/assets/images/swords.png, @/assets/images/swords.png,
~@/assets/images/swords@2x.png 2x, @/assets/images/swords@2x.png 2x,
~@/assets/images/swords@3x.png 3x" @/assets/images/swords@3x.png 3x"
src="~@/assets/images/swords.png" src="@/assets/images/swords.png"
> >
<p <p
v-once v-once
@@ -104,7 +104,7 @@
</template> </template>
<style lang='scss' scoped> <style lang='scss' scoped>
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@media only screen and (max-width: 992px) { @media only screen and (max-width: 992px) {
.item-with-icon.item-user { .item-with-icon.item-user {
margin-right: 0px; margin-right: 0px;
@@ -140,7 +140,7 @@
<script> <script>
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import userIcon from '@/assets/svg/user.svg'; import userIcon from '@/assets/svg/user.svg?raw';
import MenuDropdown from '../ui/customMenuDropdown'; import MenuDropdown from '../ui/customMenuDropdown';
import MessageCount from './messageCount.functional.vue'; import MessageCount from './messageCount.functional.vue';
import { EVENTS } from '@/libs/events'; import { EVENTS } from '@/libs/events';

View File

@@ -38,7 +38,7 @@
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
.attributes-group { .attributes-group {
border-radius: 4px; border-radius: 4px;

View File

@@ -73,8 +73,8 @@
</template> </template>
<style lang="scss"> <style lang="scss">
@import '~@/assets/scss/colors.scss'; @import '@/assets/scss/colors.scss';
@import '~@/assets/scss/mixins.scss'; @import '@/assets/scss/mixins.scss';
#equipgear-modal { #equipgear-modal {
@include centeredModal(); @include centeredModal();
@@ -182,13 +182,13 @@
import { getClassName } from '@/../../common/script/libs/getClassName'; import { getClassName } from '@/../../common/script/libs/getClassName';
import { mapState } from '@/libs/store'; import { mapState } from '@/libs/store';
import svgClose from '@/assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg?raw';
import svgWarrior from '@/assets/svg/warrior.svg'; import svgWarrior from '@/assets/svg/warrior.svg?raw';
import svgWizard from '@/assets/svg/wizard.svg'; import svgWizard from '@/assets/svg/wizard.svg?raw';
import svgRogue from '@/assets/svg/rogue.svg'; import svgRogue from '@/assets/svg/rogue.svg?raw';
import svgHealer from '@/assets/svg/healer.svg'; import svgHealer from '@/assets/svg/healer.svg?raw';
import svgEquipIcon from '@/assets/svg/equip.svg'; import svgEquipIcon from '@/assets/svg/equip.svg?raw';
import svgUnEquipIcon from '@/assets/svg/unequip.svg'; import svgUnEquipIcon from '@/assets/svg/unequip.svg?raw';
import Avatar from '@/components/avatar'; import Avatar from '@/components/avatar';
import attributesGrid from '@/components/inventory/equipment/attributesGrid.vue'; import attributesGrid from '@/components/inventory/equipment/attributesGrid.vue';

Some files were not shown because too many files have changed in this diff Show More