Compare commits
238 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4e20ee4aa | ||
|
|
a751a367fc | ||
|
|
d323be19c6 | ||
|
|
be3f61a94b | ||
|
|
f1bb2db73b | ||
|
|
a622344d44 | ||
|
|
e279a3550b | ||
|
|
70aab3059c | ||
|
|
c264e37182 | ||
|
|
b31bc15493 | ||
|
|
ba19c00617 | ||
|
|
93aa92de7c | ||
|
|
d021680945 | ||
|
|
f9595af8a5 | ||
|
|
d2756278c3 | ||
|
|
2e2dc179c4 | ||
|
|
acf7b811ab | ||
|
|
d5170251c0 | ||
|
|
c9ba9054e3 | ||
|
|
d4aac1ee4b | ||
|
|
9615a332a5 | ||
|
|
417455e5ef | ||
|
|
136502a110 | ||
|
|
425887c1e4 | ||
|
|
cfa8a5190f | ||
|
|
df5be81706 | ||
|
|
08b3491047 | ||
|
|
e73c3147c1 | ||
|
|
a43254000e | ||
|
|
4e3c984baf | ||
|
|
c112e923f1 | ||
|
|
540353f024 | ||
|
|
2b9b5e369e | ||
|
|
cb38475765 | ||
|
|
8bb92577b0 | ||
|
|
fb26cbd26d | ||
|
|
a0de5cd8f8 | ||
|
|
9fe10b1818 | ||
|
|
d8dd39422a | ||
|
|
3f9b710773 | ||
|
|
8a8bab4be1 | ||
|
|
2a0747ed72 | ||
|
|
a5196e94f6 | ||
|
|
009ab26711 | ||
|
|
3fabf3391f | ||
|
|
8020990264 | ||
|
|
a2cfeafc02 | ||
|
|
d04a4fb1ed | ||
|
|
aeb86db306 | ||
|
|
49960c0e32 | ||
|
|
932cb5cf6a | ||
|
|
74d6e77504 | ||
|
|
8400f1786b | ||
|
|
d7bd5dd9f8 | ||
|
|
3288b0de33 | ||
|
|
c025ffbd10 | ||
|
|
afb5b473a3 | ||
|
|
aeee29f5fa | ||
|
|
0cca2a07a2 | ||
|
|
55d94c129a | ||
|
|
358e1aed22 | ||
|
|
36241f061f | ||
|
|
b6201a3b75 | ||
|
|
005f74d918 | ||
|
|
926e188017 | ||
|
|
94da808279 | ||
|
|
7568dd52e9 | ||
|
|
c6e2b78982 | ||
|
|
b6104c3ef3 | ||
|
|
56b5c960f0 | ||
|
|
528abf77af | ||
|
|
8db6b7c6cb | ||
|
|
578dee59bd | ||
|
|
d40c923e6e | ||
|
|
3c4c64b023 | ||
|
|
c84d6ba141 | ||
|
|
5f3b147d2a | ||
|
|
ff08e8b586 | ||
|
|
cb2acbfefd | ||
|
|
b16da35585 | ||
|
|
826d7b85d7 | ||
|
|
6bcc6a15e2 | ||
|
|
b600eceb49 | ||
|
|
b83ef872c9 | ||
|
|
4ebc2e2175 | ||
|
|
2f4b8c569a | ||
|
|
85b5b5a62d | ||
|
|
e271e57f63 | ||
|
|
558fb145b5 | ||
|
|
fc30456b53 | ||
|
|
68b2d19b04 | ||
|
|
6d33acccf4 | ||
|
|
acee4bad80 | ||
|
|
30fe5088b8 | ||
|
|
69602f93e9 | ||
|
|
0109aa4250 | ||
|
|
2dc0958678 | ||
|
|
52f4e5f37d | ||
|
|
c014da297c | ||
|
|
285041cdee | ||
|
|
6a82206f81 | ||
|
|
8b6052a3ca | ||
|
|
04fd907a45 | ||
|
|
70343079f1 | ||
|
|
df952eece5 | ||
|
|
e3a619c7ff | ||
|
|
23f531372b | ||
|
|
97b15006fd | ||
|
|
35b92f13a3 | ||
|
|
556a7e5229 | ||
|
|
378625b4af | ||
|
|
ee15e29ba4 | ||
|
|
ed880a665a | ||
|
|
3c7f71d214 | ||
|
|
edac06b0d1 | ||
|
|
24562f8d60 | ||
|
|
97840ed732 | ||
|
|
76499412ed | ||
|
|
9b10f348cc | ||
|
|
17b0329c43 | ||
|
|
cda84a6d68 | ||
|
|
306505ebab | ||
|
|
2476cdd873 | ||
|
|
8465dd69be | ||
|
|
461e7445c2 | ||
|
|
24df8d8f2f | ||
|
|
2bca92b4d5 | ||
|
|
c3843cae80 | ||
|
|
816e4a2f19 | ||
|
|
d0d4927e59 | ||
|
|
023ff5789d | ||
|
|
cc9be6f4a1 | ||
|
|
145bcb6f7c | ||
|
|
d7db599f88 | ||
|
|
ca935670f7 | ||
|
|
c2eb113672 | ||
|
|
257e932bc3 | ||
|
|
50e2731811 | ||
|
|
d67b9e5688 | ||
|
|
bfc7b9d3e8 | ||
|
|
eb0e234afa | ||
|
|
177f78cbb0 | ||
|
|
e3b484b29a | ||
|
|
941000d737 | ||
|
|
63ce7c6034 | ||
|
|
921f9a65a3 | ||
|
|
d6bf30eff8 | ||
|
|
faed0dff20 | ||
|
|
7bb2f4a3fa | ||
|
|
e3bcea4077 | ||
|
|
51ffe2c8c2 | ||
|
|
efc0469bef | ||
|
|
bda0617a23 | ||
|
|
913cb16638 | ||
|
|
331993c1df | ||
|
|
136e2de125 | ||
|
|
966a50431f | ||
|
|
4df1601718 | ||
|
|
4d5b6992be | ||
|
|
b54441a637 | ||
|
|
bccdf4e989 | ||
|
|
633da7ff73 | ||
|
|
d3371e323e | ||
|
|
5480157977 | ||
|
|
c5888e3d21 | ||
|
|
2ca185474f | ||
|
|
5f0c1687b5 | ||
|
|
8f9ed6e377 | ||
|
|
1a38546721 | ||
|
|
359d9f8d3a | ||
|
|
ca97732f21 | ||
|
|
e820b55080 | ||
|
|
3d2d01f647 | ||
|
|
b907590bf2 | ||
|
|
ec01388b5a | ||
|
|
aff475b9c8 | ||
|
|
476e06ab8b | ||
|
|
82b905514f | ||
|
|
7f1e27f6e4 | ||
|
|
f5315a4f92 | ||
|
|
c244c3e797 | ||
|
|
0102648f8a | ||
|
|
ed4d955e3e | ||
|
|
6792e75c7f | ||
|
|
62f004222b | ||
|
|
ed1f0a04ae | ||
|
|
bde01c30ad | ||
|
|
12275cc174 | ||
|
|
f751ccacc5 | ||
|
|
d371297482 | ||
|
|
00b75b23bb | ||
|
|
589b2aaf3a | ||
|
|
676d9aedf1 | ||
|
|
67febde1cb | ||
|
|
019560df64 | ||
|
|
8b1dd43e0a | ||
|
|
2f626c7875 | ||
|
|
381bea1e94 | ||
|
|
c12b0890d5 | ||
|
|
5ceb470464 | ||
|
|
d5d27355da | ||
|
|
190aa2c0e7 | ||
|
|
fb8ec7677c | ||
|
|
c4c70ba1bd | ||
|
|
248fd1d912 | ||
|
|
5fa76f6aeb | ||
|
|
f90a31b4be | ||
|
|
e3b9636c42 | ||
|
|
7f5d070ee6 | ||
|
|
28bb543397 | ||
|
|
4f3a9802c1 | ||
|
|
c615af82f8 | ||
|
|
4468c2ca2f | ||
|
|
ff53552fd3 | ||
|
|
f3f4229e49 | ||
|
|
d782ed5d20 | ||
|
|
31a6e89be9 | ||
|
|
b3f21421e5 | ||
|
|
a70b8bc82b | ||
|
|
de9644f126 | ||
|
|
8b83d8d4e9 | ||
|
|
c7fd6701ae | ||
|
|
5d18640215 | ||
|
|
bde6b7d6ce | ||
|
|
5393c3b6c0 | ||
|
|
84136882d3 | ||
|
|
86c9bddc09 | ||
|
|
81b7eeeb71 | ||
|
|
d971e673af | ||
|
|
603226a084 | ||
|
|
a38f524d62 | ||
|
|
3b0e6e138a | ||
|
|
9c0998c29a | ||
|
|
4ad50b9d30 | ||
|
|
998037e0a1 | ||
|
|
2539655932 | ||
|
|
3d72233d54 | ||
|
|
ab84e88650 |
@@ -1,28 +1,27 @@
|
||||
# Compiled and vendored files
|
||||
common/dist/
|
||||
common/transpiled-babel/
|
||||
coverage/
|
||||
database_reports/
|
||||
website/build/
|
||||
website/transpiled-babel/
|
||||
website/common/transpiled-babel/
|
||||
dist/
|
||||
dist-client/
|
||||
|
||||
# Not linted
|
||||
migrations/*
|
||||
|
||||
# The files in website/client-old/js should be moved out and browserified
|
||||
website/client-old/
|
||||
|
||||
# Temporarilly disabled. These should be removed when the linting errors are fixed
|
||||
common/script/content/index.js
|
||||
|
||||
debug-scripts/*
|
||||
scripts/*
|
||||
tasks/*.js
|
||||
gulpfile.js
|
||||
Gruntfile.js
|
||||
newrelic.js
|
||||
|
||||
test/api-legacy/**/*
|
||||
test/common/simulations/**/*
|
||||
test/content/**/*
|
||||
test/server_side/**/*
|
||||
test/spec/**/*
|
||||
test/client-old/spec/**/*
|
||||
|
||||
# Temporarilly disabled. These should be removed when the linting errors are fixed TODO
|
||||
website/common/script/content/index.js
|
||||
website/common/browserify.js
|
||||
test/content/**/*
|
||||
Gruntfile.js
|
||||
gulpfile.js
|
||||
gulp
|
||||
webpack
|
||||
test/client/e2e
|
||||
test/client/unit/index.js
|
||||
test/client/unit/karma.conf.js
|
||||
|
||||
12
.eslintrc
@@ -1,10 +1,10 @@
|
||||
{
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true,
|
||||
},
|
||||
"extends": [
|
||||
"habitrpg/server",
|
||||
"habitrpg/babel"
|
||||
"habitrpg/es6",
|
||||
"habitrpg"
|
||||
],
|
||||
"globals": {
|
||||
"Promise": true,
|
||||
"Set": false
|
||||
}
|
||||
}
|
||||
|
||||
13
.gitignore
vendored
@@ -2,8 +2,10 @@
|
||||
website/client-old/gen
|
||||
website/client-old/common
|
||||
website/client-old/apidoc
|
||||
website/client-old/js/habitrpg-shared.js*
|
||||
website/client-old/css/habitrpg-shared.css
|
||||
website/transpiled-babel/
|
||||
common/transpiled-babel/
|
||||
website/common/transpiled-babel/
|
||||
node_modules
|
||||
*.swp
|
||||
.idea*
|
||||
@@ -12,7 +14,6 @@ npm-debug.log*
|
||||
lib
|
||||
website/client-old/bower_components
|
||||
website/client-old/new-stuff.html
|
||||
website/build
|
||||
newrelic_agent.log
|
||||
.bower-tmp
|
||||
.bower-registry
|
||||
@@ -30,9 +31,11 @@ website/client-old/docs
|
||||
coverage
|
||||
coverage.html
|
||||
common/dist/scripts/*
|
||||
common/dist/sprites/habitrpg-shared.css
|
||||
|
||||
test/spec/mocks/translations.js
|
||||
dist
|
||||
dist-client
|
||||
test/client/unit/coverage
|
||||
test/client/e2e/reports
|
||||
test/client-old/spec/mocks/translations.js
|
||||
|
||||
# Elastic Beanstalk Files
|
||||
.elasticbeanstalk/*
|
||||
|
||||
@@ -6,6 +6,7 @@ website/client-old/**
|
||||
website/client/**
|
||||
website/views/**
|
||||
website/build/**
|
||||
dist/**
|
||||
test/**
|
||||
.git/**
|
||||
Gruntfile.js
|
||||
|
||||
25
.travis.yml
@@ -2,16 +2,21 @@ language: node_js
|
||||
node_js:
|
||||
- '4.3.1'
|
||||
before_install:
|
||||
- "npm install -g npm@3"
|
||||
- "npm install -g gulp"
|
||||
- "sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10"
|
||||
- "echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list"
|
||||
- "sudo apt-get update"
|
||||
- "sudo apt-get install mongodb-org-server"
|
||||
- npm install -g npm@3
|
||||
- if [ $REQUIRES_SERVER ]; then sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10; echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list; sudo apt-get update; sudo apt-get install mongodb-org-server; fi
|
||||
before_script:
|
||||
- 'npm install -g grunt-cli mocha'
|
||||
- npm run test:build
|
||||
- cp config.json.example config.json
|
||||
- "until nc -z localhost 27017; do echo Waiting for MongoDB; sleep 1; done"
|
||||
- "export DISPLAY=:99"
|
||||
- if [ $REQUIRES_SERVER ]; then until nc -z localhost 27017; do echo Waiting for MongoDB; sleep 1; done; export DISPLAY=:99; fi
|
||||
after_script:
|
||||
- "./node_modules/.bin/lcov-result-merger 'coverage/**/*.info' | ./node_modules/coveralls/bin/coveralls.js"
|
||||
- ./node_modules/.bin/lcov-result-merger 'coverage/**/*.info' | ./node_modules/coveralls/bin/coveralls.js
|
||||
script: npm run $TEST
|
||||
env:
|
||||
matrix:
|
||||
- TEST="lint"
|
||||
- TEST="test:api-v3" REQUIRES_SERVER=true
|
||||
- TEST="test:sanity"
|
||||
- TEST="test:content"
|
||||
- TEST="test:common"
|
||||
- TEST="test:karma"
|
||||
- TEST="client:unit"
|
||||
|
||||
40
Gruntfile.js
@@ -9,10 +9,10 @@ module.exports = function(grunt) {
|
||||
|
||||
karma: {
|
||||
unit: {
|
||||
configFile: 'karma.conf.js'
|
||||
configFile: 'test/client-old/spec/karma.conf.js'
|
||||
},
|
||||
continuous: {
|
||||
configFile: 'karma.conf.js',
|
||||
configFile: 'test/client-old/spec/karma.conf.js',
|
||||
singleRun: true,
|
||||
autoWatch: false
|
||||
}
|
||||
@@ -28,11 +28,11 @@ module.exports = function(grunt) {
|
||||
report: 'gzip'
|
||||
},
|
||||
files:{
|
||||
"common/dist/sprites/habitrpg-shared.css": [
|
||||
"common/dist/sprites/spritesmith*.css",
|
||||
"common/css/backer.css",
|
||||
"common/css/Mounts.css",
|
||||
"common/css/index.css"
|
||||
"website/client-old/css/habitrpg-shared.css": [
|
||||
"website/assets/sprites/dist/spritesmith*.css",
|
||||
"website/assets/sprites/css/backer.css",
|
||||
"website/assets/sprites/css/Mounts.css",
|
||||
"website/assets/sprites/css/index.css"
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -57,10 +57,10 @@ module.exports = function(grunt) {
|
||||
files: [
|
||||
{expand: true, cwd: 'website/client-old/', src: 'favicon.ico', dest: 'website/build/'},
|
||||
{expand: true, cwd: 'website/client-old/', src: 'favicon_192x192.png', dest: 'website/build/'},
|
||||
{expand: true, cwd: '', src: 'common/dist/sprites/spritesmith*.png', dest: 'website/build/'},
|
||||
{expand: true, cwd: '', src: 'common/img/sprites/backer-only/*.gif', dest: 'website/build/'},
|
||||
{expand: true, cwd: '', src: 'common/img/sprites/npc_ian.gif', dest: 'website/build/'},
|
||||
{expand: true, cwd: '', src: 'common/img/sprites/quest_*.gif', dest: 'website/build/'},
|
||||
{expand: true, cwd: 'website/assets/sprites/dist/', src: 'spritesmith*.png', dest: 'website/build/'},
|
||||
{expand: true, cwd: 'website/assets/sprites/', src: 'backer-only/*.gif', dest: 'website/build/'},
|
||||
{expand: true, cwd: 'website/assets/sprites/', src: 'npc_ian.gif', dest: 'website/build/'},
|
||||
{expand: true, cwd: 'website/assets/sprites/', src: 'quest_*.gif', dest: 'website/build/'},
|
||||
{expand: true, cwd: 'website/client-old/', src: 'bower_components/bootstrap/dist/fonts/*', dest: 'website/build/'}
|
||||
]
|
||||
}
|
||||
@@ -77,10 +77,8 @@ module.exports = function(grunt) {
|
||||
'website/build/*.css',
|
||||
'website/build/favicon.ico',
|
||||
'website/build/favicon_192x192.png',
|
||||
'website/build/common/dist/sprites/*.png',
|
||||
'website/build/common/img/sprites/backer-only/*.gif',
|
||||
'website/build/common/img/sprites/npc_ian.gif',
|
||||
'website/build/common/img/sprites/quest_*.gif',
|
||||
'website/build/*.png',
|
||||
'website/build/*.gif',
|
||||
'website/build/bower_components/bootstrap/dist/fonts/*'
|
||||
],
|
||||
dest: 'website/build/*.css'
|
||||
@@ -128,15 +126,7 @@ module.exports = function(grunt) {
|
||||
// Register tasks.
|
||||
grunt.registerTask('build:prod', ['loadManifestFiles', 'clean:build', 'uglify', 'stylus', 'cssmin', 'copy:build', 'hashres']);
|
||||
grunt.registerTask('build:dev', ['cssmin', 'stylus']);
|
||||
grunt.registerTask('build:test', ['test:prepare:translations', 'build:dev']);
|
||||
|
||||
grunt.registerTask('test:prepare:translations', function() {
|
||||
var i18n = require('./website/server/libs/i18n'),
|
||||
fs = require('fs');
|
||||
fs.writeFileSync('test/spec/mocks/translations.js',
|
||||
"if(!window.env) window.env = {};\n" +
|
||||
"window.env.translations = " + JSON.stringify(i18n.translations['en']) + ';');
|
||||
});
|
||||
grunt.registerTask('build:test', ['build:dev']);
|
||||
|
||||
// Load tasks
|
||||
grunt.loadNpmTasks('grunt-contrib-uglify');
|
||||
@@ -146,6 +136,6 @@ module.exports = function(grunt) {
|
||||
grunt.loadNpmTasks('grunt-contrib-copy');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
grunt.loadNpmTasks('grunt-hashres');
|
||||
grunt.loadNpmTasks('grunt-karma');
|
||||
if (process.env.NODE_ENV !== 'production') grunt.loadNpmTasks('grunt-karma');
|
||||
|
||||
};
|
||||
|
||||
20
README.md
@@ -1,4 +1,4 @@
|
||||
Habitica [](https://travis-ci.org/HabitRPG/habitrpg) [](https://codeclimate.com/github/HabitRPG/habitrpg) [](https://coveralls.io/r/HabitRPG/habitrpg?branch=develop) [](https://www.bountysource.com/trackers/68393-habitrpg?utm_source=68393&utm_medium=shield&utm_campaign=TRACKER_BADGE)
|
||||
Habitica [](https://travis-ci.org/HabitRPG/habitica) [](https://codeclimate.com/github/HabitRPG/habitrpg) [](https://coveralls.io/r/HabitRPG/habitrpg?branch=develop) [](https://www.bountysource.com/trackers/68393-habitrpg?utm_source=68393&utm_medium=shield&utm_campaign=TRACKER_BADGE)
|
||||
===============
|
||||
|
||||
[Habitica](https://habitica.com) is an open source habit building program which treats your life like a Role Playing Game. Level up as you succeed, lose HP as you fail, earn money to buy weapons and armor.
|
||||
@@ -10,21 +10,3 @@ For an introduction to the technologies used and how the software is organized,
|
||||
To set up a local install of Habitica for development and testing, see [Setting up Habitica Locally](http://habitica.wikia.com/wiki/Setting_up_Habitica_Locally), which contains instructions for Windows, *nix / Mac OS, and Vagrant.
|
||||
|
||||
Then read [Guidance for Blacksmiths](http://habitica.wikia.com/wiki/Guidance_for_Blacksmiths) for additional instructions and useful tips.
|
||||
|
||||
## Debug Scripts
|
||||
|
||||
In the `./debug-scripts/` folder, there are a few files. Here's a sample:
|
||||
|
||||
```bash
|
||||
grant-all-equipment.js
|
||||
grant-all-mounts.js
|
||||
grant-all-pets.js
|
||||
```
|
||||
|
||||
You can run them by doing:
|
||||
|
||||
```bash
|
||||
node debug-scripts/name-of-script.js
|
||||
```
|
||||
|
||||
If there are more arguments required to make the script work, it will print out the usage and an explanation of what the script does.
|
||||
|
||||
@@ -36,14 +36,15 @@
|
||||
"jquery-ui": "1.10.3",
|
||||
"jquery.cookie": "1.4.0",
|
||||
"js-emoji": "snicker/js-emoji#f25d8a303f",
|
||||
"ngInfiniteScroll": "1.0.0",
|
||||
"ngInfiniteScroll": "1.1.0",
|
||||
"pnotify": "1.3.1",
|
||||
"sticky": "1.0.3",
|
||||
"swagger-ui": "wordnik/swagger-ui#v2.0.24",
|
||||
"smart-app-banner": "78ef9c0679723b25be1a0ae04f7b4aef7cbced4f",
|
||||
"habitica-markdown": "1.2.2",
|
||||
"pusher-js-auth": "^2.0.0",
|
||||
"pusher-websocket-iso": "pusher#^3.1.0"
|
||||
"pusher-websocket-iso": "pusher#^3.2.0",
|
||||
"taggle": "^1.11.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"angular-mocks": "1.3.9"
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
{
|
||||
"extends": "habitrpg/browser"
|
||||
}
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
# Common
|
||||
|
||||
Shared resources useful for the multiple Habitica repositories, that way all the repositories remain in-sync with common characteristics. Includes things like:
|
||||
|
||||
* Assets - sprites, images, etc
|
||||
* CSS - especially, esp. sprite-sheet mapping
|
||||
* Algorithms - level up algorithm, scoring functions, etc
|
||||
* View helper functions that may come in handy for multiple client MVCs
|
||||
* Item definitions - weapons, armor, pets
|
||||
|
||||
## Compiling spritesheets
|
||||
Because of some wonkiness with Heroku, the spritesheet compilation is not part of the production build process and must be done manually when new images are added by running:
|
||||
|
||||
``` bash
|
||||
npm run sprites
|
||||
```
|
||||
576
common/dist/sprites/spritesmith-largeSprites-0.css
vendored
@@ -1,576 +0,0 @@
|
||||
.2014_Fall_HealerPROMO2 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1092px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.2014_Fall_Mage_PROMO9 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1513px -808px;
|
||||
width: 120px;
|
||||
height: 90px;
|
||||
}
|
||||
.2014_Fall_RoguePROMO3 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -769px -1378px;
|
||||
width: 105px;
|
||||
height: 90px;
|
||||
}
|
||||
.2014_Fall_Warrior_PROMO {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1433px -1378px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_android {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -954px -151px;
|
||||
width: 175px;
|
||||
height: 175px;
|
||||
}
|
||||
.promo_backgrounds_armoire_201602 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1135px -199px;
|
||||
width: 141px;
|
||||
height: 294px;
|
||||
}
|
||||
.promo_backgrounds_armoire_201603 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1277px -199px;
|
||||
width: 141px;
|
||||
height: 294px;
|
||||
}
|
||||
.promo_backgrounds_armoire_201604 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -281px -525px;
|
||||
width: 140px;
|
||||
height: 441px;
|
||||
}
|
||||
.promo_backgrounds_armoire_201605 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -452px 0px;
|
||||
width: 140px;
|
||||
height: 441px;
|
||||
}
|
||||
.promo_backgrounds_armoire_201606 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -140px -525px;
|
||||
width: 140px;
|
||||
height: 447px;
|
||||
}
|
||||
.promo_backgrounds_armoire_201607 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px -525px;
|
||||
width: 139px;
|
||||
height: 588px;
|
||||
}
|
||||
.promo_backgrounds_armoire_201608 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -593px 0px;
|
||||
width: 140px;
|
||||
height: 439px;
|
||||
}
|
||||
.promo_backgrounds_armoire_201609 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -593px -440px;
|
||||
width: 139px;
|
||||
height: 438px;
|
||||
}
|
||||
.promo_backtoschool {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -151px -1378px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.promo_burnout {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -734px -151px;
|
||||
width: 219px;
|
||||
height: 240px;
|
||||
}
|
||||
.promo_chairs_glasses {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1634px 0px;
|
||||
width: 51px;
|
||||
height: 210px;
|
||||
}
|
||||
.promo_classes_fall_2014 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -734px -684px;
|
||||
width: 321px;
|
||||
height: 100px;
|
||||
}
|
||||
.promo_classes_fall_2015 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1135px -808px;
|
||||
width: 377px;
|
||||
height: 99px;
|
||||
}
|
||||
.promo_cow {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -452px -442px;
|
||||
width: 140px;
|
||||
height: 441px;
|
||||
}
|
||||
.promo_dilatoryDistress {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -546px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_egg_mounts {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1135px -494px;
|
||||
width: 280px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_enchanted_armoire {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px -1114px;
|
||||
width: 374px;
|
||||
height: 76px;
|
||||
}
|
||||
.promo_enchanted_armoire_201507 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -250px -1275px;
|
||||
width: 217px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_enchanted_armoire_201508 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -468px -1275px;
|
||||
width: 180px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_enchanted_armoire_201509 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -728px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_enchanted_armoire_201511 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1498px -908px;
|
||||
width: 122px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_enchanted_armoire_201601 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -910px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_floral_potions {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -734px -785px;
|
||||
width: 105px;
|
||||
height: 273px;
|
||||
}
|
||||
.promo_habitica {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1419px -199px;
|
||||
width: 175px;
|
||||
height: 175px;
|
||||
}
|
||||
.promo_habitica_sticker {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px -220px;
|
||||
width: 305px;
|
||||
height: 304px;
|
||||
}
|
||||
.promo_haunted_hair {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -453px -1378px;
|
||||
width: 100px;
|
||||
height: 137px;
|
||||
}
|
||||
.promo_item_notif {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px -1275px;
|
||||
width: 249px;
|
||||
height: 102px;
|
||||
}
|
||||
.promo_mystery_201405 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1001px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201406 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -182px -1529px;
|
||||
width: 90px;
|
||||
height: 96px;
|
||||
}
|
||||
.promo_mystery_201407 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1634px -412px;
|
||||
width: 42px;
|
||||
height: 62px;
|
||||
}
|
||||
.promo_mystery_201408 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1573px -494px;
|
||||
width: 60px;
|
||||
height: 71px;
|
||||
}
|
||||
.promo_mystery_201409 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1183px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201410 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1060px -573px;
|
||||
width: 72px;
|
||||
height: 63px;
|
||||
}
|
||||
.promo_mystery_201411 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1274px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201412 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1634px -345px;
|
||||
width: 42px;
|
||||
height: 66px;
|
||||
}
|
||||
.promo_mystery_201501 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1634px -211px;
|
||||
width: 48px;
|
||||
height: 63px;
|
||||
}
|
||||
.promo_mystery_201502 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1365px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201503 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -819px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201504 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1573px -566px;
|
||||
width: 60px;
|
||||
height: 69px;
|
||||
}
|
||||
.promo_mystery_201505 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -637px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201506 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1634px -275px;
|
||||
width: 42px;
|
||||
height: 69px;
|
||||
}
|
||||
.promo_mystery_201507 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px -1529px;
|
||||
width: 90px;
|
||||
height: 105px;
|
||||
}
|
||||
.promo_mystery_201508 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1157px -1378px;
|
||||
width: 93px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201509 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -364px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201510 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1063px -1378px;
|
||||
width: 93px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201511 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1524px -1378px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201512 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1565px -96px;
|
||||
width: 60px;
|
||||
height: 81px;
|
||||
}
|
||||
.promo_mystery_201601 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1496px -1011px;
|
||||
width: 120px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201602 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1342px -1378px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201603 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1251px -1378px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201604 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -969px -1378px;
|
||||
width: 93px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201605 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -455px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201606 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -91px -1529px;
|
||||
width: 90px;
|
||||
height: 105px;
|
||||
}
|
||||
.promo_mystery_201607 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -273px -1529px;
|
||||
width: 90px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_201608 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -875px -1378px;
|
||||
width: 93px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_mystery_3014 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -840px -967px;
|
||||
width: 217px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_orca {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -554px -1378px;
|
||||
width: 105px;
|
||||
height: 105px;
|
||||
}
|
||||
.promo_partyhats {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -954px -327px;
|
||||
width: 115px;
|
||||
height: 47px;
|
||||
}
|
||||
.promo_pastel_skin {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -331px -1191px;
|
||||
width: 330px;
|
||||
height: 83px;
|
||||
}
|
||||
.customize-option.promo_pastel_skin {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -356px -1206px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.promo_peppermint_flame {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -593px -879px;
|
||||
width: 140px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_pet_skins {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -452px -884px;
|
||||
width: 140px;
|
||||
height: 147px;
|
||||
}
|
||||
.customize-option.promo_pet_skins {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -477px -899px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.promo_shimmer_hair {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px -1191px;
|
||||
width: 330px;
|
||||
height: 83px;
|
||||
}
|
||||
.promo_splashyskins {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1419px -375px;
|
||||
width: 198px;
|
||||
height: 91px;
|
||||
}
|
||||
.customize-option.promo_splashyskins {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1444px -390px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.promo_spring_classes_2016 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1135px -908px;
|
||||
width: 362px;
|
||||
height: 102px;
|
||||
}
|
||||
.promo_springclasses2014 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -840px -876px;
|
||||
width: 288px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_springclasses2015 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -840px -785px;
|
||||
width: 288px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_staff_spotlight_Lemoness {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -306px -220px;
|
||||
width: 102px;
|
||||
height: 146px;
|
||||
}
|
||||
.promo_staff_spotlight_Viirus {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1005px -392px;
|
||||
width: 119px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_staff_spotlight_paglias {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -306px -367px;
|
||||
width: 99px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_summer_classes_2014 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1135px -96px;
|
||||
width: 429px;
|
||||
height: 102px;
|
||||
}
|
||||
.promo_summer_classes_2015 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -140px -973px;
|
||||
width: 300px;
|
||||
height: 88px;
|
||||
}
|
||||
.promo_summer_classes_2016 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -734px 0px;
|
||||
width: 400px;
|
||||
height: 150px;
|
||||
}
|
||||
.promo_takeThis_gear {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -649px -1275px;
|
||||
width: 114px;
|
||||
height: 87px;
|
||||
}
|
||||
.promo_takethis_armor {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -764px -1275px;
|
||||
width: 114px;
|
||||
height: 87px;
|
||||
}
|
||||
.promo_unconventional_armor {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1056px -684px;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
}
|
||||
.promo_updos {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1416px -494px;
|
||||
width: 156px;
|
||||
height: 147px;
|
||||
}
|
||||
.promo_veteran_pets {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -528px -1114px;
|
||||
width: 146px;
|
||||
height: 75px;
|
||||
}
|
||||
.promo_winter_classes_2016 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1135px -1011px;
|
||||
width: 360px;
|
||||
height: 90px;
|
||||
}
|
||||
.promo_winterclasses2015 {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -734px -573px;
|
||||
width: 325px;
|
||||
height: 110px;
|
||||
}
|
||||
.promo_winteryhair {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -375px -1114px;
|
||||
width: 152px;
|
||||
height: 75px;
|
||||
}
|
||||
.avatar_variety {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1135px 0px;
|
||||
width: 498px;
|
||||
height: 95px;
|
||||
}
|
||||
.npc_viirus {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -660px -1378px;
|
||||
width: 108px;
|
||||
height: 90px;
|
||||
}
|
||||
.party_preview {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px 0px;
|
||||
width: 451px;
|
||||
height: 219px;
|
||||
}
|
||||
.scene_coding {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -302px -1378px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.scene_phone_peek {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: 0px -1378px;
|
||||
width: 150px;
|
||||
height: 150px;
|
||||
}
|
||||
.welcome_basic_avatars {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1135px -642px;
|
||||
width: 246px;
|
||||
height: 165px;
|
||||
}
|
||||
.welcome_promo_party {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -734px -392px;
|
||||
width: 270px;
|
||||
height: 180px;
|
||||
}
|
||||
.welcome_sample_tasks {
|
||||
background-image: url(spritesmith-largeSprites-0.png);
|
||||
background-position: -1382px -642px;
|
||||
width: 246px;
|
||||
height: 165px;
|
||||
}
|
||||
BIN
common/dist/sprites/spritesmith-largeSprites-0.png
vendored
|
Before Width: | Height: | Size: 483 KiB |
BIN
common/dist/sprites/spritesmith-main-0.png
vendored
|
Before Width: | Height: | Size: 418 KiB |
BIN
common/dist/sprites/spritesmith-main-1.png
vendored
|
Before Width: | Height: | Size: 65 KiB |
1368
common/dist/sprites/spritesmith-main-10.css
vendored
BIN
common/dist/sprites/spritesmith-main-10.png
vendored
|
Before Width: | Height: | Size: 143 KiB |
1992
common/dist/sprites/spritesmith-main-11.css
vendored
BIN
common/dist/sprites/spritesmith-main-11.png
vendored
|
Before Width: | Height: | Size: 149 KiB |
BIN
common/dist/sprites/spritesmith-main-12.png
vendored
|
Before Width: | Height: | Size: 175 KiB |
1710
common/dist/sprites/spritesmith-main-13.css
vendored
BIN
common/dist/sprites/spritesmith-main-13.png
vendored
|
Before Width: | Height: | Size: 138 KiB |
BIN
common/dist/sprites/spritesmith-main-2.png
vendored
|
Before Width: | Height: | Size: 32 KiB |
BIN
common/dist/sprites/spritesmith-main-3.png
vendored
|
Before Width: | Height: | Size: 128 KiB |
2796
common/dist/sprites/spritesmith-main-4.css
vendored
BIN
common/dist/sprites/spritesmith-main-4.png
vendored
|
Before Width: | Height: | Size: 136 KiB |
3090
common/dist/sprites/spritesmith-main-5.css
vendored
BIN
common/dist/sprites/spritesmith-main-5.png
vendored
|
Before Width: | Height: | Size: 143 KiB |
1212
common/dist/sprites/spritesmith-main-6.css
vendored
BIN
common/dist/sprites/spritesmith-main-6.png
vendored
|
Before Width: | Height: | Size: 404 KiB |
1644
common/dist/sprites/spritesmith-main-7.css
vendored
BIN
common/dist/sprites/spritesmith-main-7.png
vendored
|
Before Width: | Height: | Size: 151 KiB |
1368
common/dist/sprites/spritesmith-main-8.css
vendored
BIN
common/dist/sprites/spritesmith-main-8.png
vendored
|
Before Width: | Height: | Size: 136 KiB |
1464
common/dist/sprites/spritesmith-main-9.css
vendored
BIN
common/dist/sprites/spritesmith-main-9.png
vendored
|
Before Width: | Height: | Size: 153 KiB |
|
Before Width: | Height: | Size: 5.7 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 6.8 KiB |
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,6 +0,0 @@
|
||||
You may edit any files in this directory. Do not edit files in any
|
||||
other locales directory.
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"tipTitle": "Tip #<%= tipNumber %>",
|
||||
"tip1": "Houd je taken overal in de gaten met de Habitica mobiele app. ",
|
||||
"tip2": "Bereik level 100 om de Bol der Hergeboorte gratis vrij te spelen en een nieuw avontuur te beginnen.",
|
||||
"tip3": "Gebruik emoticons om snel onderscheid te maken tussen je taken.",
|
||||
"tip4": "Gebruik het # teken voor de naam van een taak om het heel groot te maken!",
|
||||
"tip5": "Het beste is het om versterkingen 's morgens uit te spreken, zodat ze zo lang mogelijk effectief zijn. ",
|
||||
"tip6": "Herevalueer je taken van tijd tot tijd om te zorgen dat ze up-to-date zijn!",
|
||||
"tip7": "Sommige achtergronden verbinden zich perfect met elkaar als groepsleden dezelfde achtergrond gebruiken. Bv: Bergmeer, Pagodas en Rollende heuvels.",
|
||||
"tip8": "Stuur een Persoonlijk bericht naar iemand door te klikken op het envelopje bij de naam van diegene in de chat!",
|
||||
"tip9": "Bezoek de Guild Leaders & Challenge Creators gilde voor advies over het starten van een gilde.",
|
||||
"tip10": "Je kan edelstenen winnen door deel te nemen aan Uitdagingen. Dagelijks worden er nieuwe toegevoegd. ",
|
||||
"tip11": "Als je het leuk vindt om je avatar aan te kleden, neem dan een kijkje in de Costume Carnival gilde.",
|
||||
"tip12": "Word lid van de \"Challenge... Accepted\" gilde voor regelmatig geplande willekeurige uitdagingen.",
|
||||
"tip13": "Meer dan vier groepsleden hebben verhoogt de verantwoordelijkheid!",
|
||||
"tip14": "Je kan koplijnen of inspirationele uitspraken toevoegen aan je lijst van Gewoontes zonder (+/-).",
|
||||
"tip15": "Voeg checklijsten aan jet To-do lijst toe om je beloningen te verhogen!",
|
||||
"tip16": "Bekijk de Data knop voor waardevolle inzichten in jouw vooruitgang. ",
|
||||
"tip17": "Het gebruik van labels kan een haast onmogelijke takenlijst toch handelbaar maken. ",
|
||||
"tip18": "Gewoontes die gewoon positief of negatief zijn, \"vervagen\" langzaam en worden terug geel.",
|
||||
"tip19": "Verhoog je Intelligentie-eigenschap om meer EP te krijgen wanneer je een taak volbrengt.",
|
||||
"tip20": "Verhoog je Perceptie-eigenschap om meer vondsten en goud te krijgen.",
|
||||
"tip21": "Verhoog je Kracht-eigenschap om meer schade toe te brengen aan eindbazen of om voltreffers te krijgen.",
|
||||
"tip22": "Verhoog je Lichaam eigenschap om de schade van onvoltooide dagelijkse taken te minderen.",
|
||||
"tip23": "klik op het histogram-grafiek icoon van jouw taak om de grafiek te zien van je vooruitgang.",
|
||||
"tip24": "Habitica is een Open source! Vraag in de Aankomende Legendes Gilde als je wilt bijdragen",
|
||||
"tip25": "De vier seizoengebonden Grote Gala's beginnen dicht bij de zonnewende's en de nachteveningen.",
|
||||
"tip26": "Een pijltje links van iemand's level nummer betekent dat ze op het moment versterkt zijn. ",
|
||||
"tip27": "Verwijs in je laatavond dagelijkse taken naar de vorige avond (zoals: \"gisterenavond geflost\") zodat je ze 's ochtends kan afvinken.",
|
||||
"tip28": "Stel een aangepast dagbegin in onder Instellingen > Site om te bepalen wanneer een nieuwe dag begint.",
|
||||
"tip29": "Voltooi al je dagelijkse taken om een 'perfecte dag versterking' te krijgen die je eigenschappen verhoogt!",
|
||||
"tip30": "Je kan mensen uitnodigen voor gildes, niet enkel voor groepen. ",
|
||||
"tip31": "Bekijk de voorgemaakte lijsten in de \"Library of Shared Lists\" gilde voor voorbeeldtaken.",
|
||||
"tip32": "Veel van Habitica's code, afbeeldingen en teksten zijn gemaakt door vrijwilligers! Iedereen kan helpen."
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"tipTitle": "Совет #<%= tipNumber %>",
|
||||
"tip1": "Проверьте задачи на ходу с помощью мобильных приложений Habitica.",
|
||||
"tip2": "Достигните 100 уровня, чтобы бесплатно получить Шар Возрождения и начать новое приключение!",
|
||||
"tip3": "Используйте emoji, чтобы быстро различать задачи.",
|
||||
"tip4": "Используйте символ # перед названием задания, чтобы сделать его очень большим!",
|
||||
"tip5": "Баффы, наложенные утром, продержатся дольше.",
|
||||
"tip6": "Иногда переоценивайте свои задачи, чтобы удостовериться в их своевременности",
|
||||
"tip7": "Некоторые фоны идеально соединяются друг с другом, если члены команды используют одно и то же изображение. Например, Горное Озеро, Пагода или Круглые Холмы.",
|
||||
"tip8": "Чтобы отправить сообщение, просто щелкните по иконке конверта рядом с именем в чате.",
|
||||
"tip9": "Visit the Guild Leaders & Challenge Creators Guild for advice on starting a Guild.",
|
||||
"tip10": "Вы можете выиграть самоцветы, участвуя в испытаниях. Каждый день появляются новые!",
|
||||
"tip11": "If you enjoy dressing up your avatar, check out the Costume Carnival Guild.",
|
||||
"tip12": "Join the “Challenge... Accepted” Guild for regularly scheduled random challenges.",
|
||||
"tip13": "Having more than four Party members increases accountability!",
|
||||
"tip14": "You can add headers or inspirational quotes to your list as Habits with no (+/-).",
|
||||
"tip15": "Add checklists to your To-Dos to increase your rewards!",
|
||||
"tip16": "Check out the Data tab for valuable insights on your progress.",
|
||||
"tip17": "Using Tags can make an unwieldy task list very manageable!",
|
||||
"tip18": "Habits that are just positive or just negative gradually “fade” and return to yellow.",
|
||||
"tip19": "Boost your Intelligence Stat to gain more XP when you complete a task.",
|
||||
"tip20": "Повышайте Восприятие, чтобы получить больше добычи и золота.",
|
||||
"tip21": "Повышайте свою Силу, чтобы наносить больше урона боссам или делать критические удары.",
|
||||
"tip22": "Boost your Constitution Stat to lessen the damage from incomplete Dailies.",
|
||||
"tip23": "Click the bar graph icon on your tasks to see a graph showing your progress.",
|
||||
"tip24": "Habitica is Open Source! Ask in the Aspiring Legends Guild if you want to contribute.",
|
||||
"tip25": "The four seasonal Grand Galas start near the solstices and equinoxes.",
|
||||
"tip26": "An arrow to the left of someone’s level number means they’re currently buffed.",
|
||||
"tip27": "Make late-night Dailies refer to the night before (such as “flossed last night”) so you can check them off in the morning.",
|
||||
"tip28": "Set a Custom Day Start under Settings > Site to control when your day restarts.",
|
||||
"tip29": "Complete all your Dailies to get a Perfect Day Buff that increases your stats!",
|
||||
"tip30": "You can invite people to Guilds, not just Parties.",
|
||||
"tip31": "Check out the pre-made lists in the Library of Shared Lists Guild for example tasks.",
|
||||
"tip32": "Lots of Habitica’s code, art, and writing is made by volunteer contributors! Anyone can help."
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,17 +0,0 @@
|
||||
{
|
||||
"lostAllHealth": "У вас закінчилося здоров'я!",
|
||||
"dontDespair": "Не занепадайте духом!",
|
||||
"deathPenaltyDetails": "Ви втратили рівень, ваше золото, і одне обмундирування, але ви можете їх відпрацювати! Ви прекрасно справитеся, щасти!",
|
||||
"refillHealthTryAgain": "Вилікуватися і спробувати знову",
|
||||
"dyingOftenTips": "Часто вмираєте? <a href='http://habitica.wikia.com/wiki/Death_Mechanics#Strategies_for_Staying_Alive' target='_blank'>Ось кілька порад!</a>\n",
|
||||
"losingHealthWarning": "Обережно - Ви втрачаєте здоров'я!",
|
||||
"losingHealthWarning2": "Не дайте скінчитися здоров'ю! Втратите рівень, ваше золото, і одну річ з інвентаря.",
|
||||
"toRegainHealth": "Щоб знову отримати Здоров'я:",
|
||||
"lowHealthTips1": "Підвищіть рівень щоб повністю оздоровитися!",
|
||||
"lowHealthTips2": "Купіть лікувальне зілля з колонки нагород щоб відновити 15 очків здоров'я.",
|
||||
"losingHealthQuickly": "Швидко втрачаєте здоров'я?",
|
||||
"lowHealthTips3": "Невиконані щоденні задачі приносять вам шкоду уночі, тож не додавайте забагато спочатку!",
|
||||
"lowHealthTips4": "Ви можете вимкнути щоденне завдання, якщо воно не має терміну придатності.",
|
||||
"goodLuck": "Удачі!",
|
||||
"cannotRevive": "Не можливо оживити живого."
|
||||
}
|
||||
@@ -1,35 +0,0 @@
|
||||
{
|
||||
"tipTitle": "Порада #<%= tipNumber %>",
|
||||
"tip1": "Відмічайте завдання на ходу за допомогою мобільних додатків Habitica.",
|
||||
"tip2": "Досягніть ріня 100, щоб безплатно розблокувати Сферу Переродження та почати пригоди заново!",
|
||||
"tip3": "Використовуйте смайлики, щоб швидко розрізняти свої завдання.",
|
||||
"tip4": "Використайте знак # перед назвою завдання, щоб зробити текст справді великим!",
|
||||
"tip5": "Краще використовувати підсилюючі чари вранці, щоб вони тривали довше.",
|
||||
"tip6": "Час від часу переоцінюйте свої завдання, щоб переконатися в їх актуальності!",
|
||||
"tip7": "Some backgrounds connect perfectly if party members use the same background. Ex: Mountain Lake, Pagodas, and Rolling Hills.",
|
||||
"tip8": "Надішліть комусь приватне повідомлення, натиснувши на конверт біля його імені в чаті!",
|
||||
"tip9": "Visit the Guild Leaders & Challenge Creators Guild for advice on starting a Guild.",
|
||||
"tip10": "Ви можете виграти самоцвіти, проходячи випробування. Вони з'являються кожен день!",
|
||||
"tip11": "If you enjoy dressing up your avatar, check out the Costume Carnival Guild.",
|
||||
"tip12": "Join the “Challenge... Accepted” Guild for regularly scheduled random challenges.",
|
||||
"tip13": "Having more than four Party members increases accountability!",
|
||||
"tip14": "Ви можете додати заголовки або надихаючі вас цитати в ваш список як звички без (+/-)",
|
||||
"tip15": "Add checklists to your To-Dos to increase your rewards!",
|
||||
"tip16": "Глянувши на вкладку з даними, ви отримаєте корисну інформацію щодо вашого прогресу.",
|
||||
"tip17": "Громіздкий список щоденних справ можна значно спростити, розбивши його тегами.",
|
||||
"tip18": "Звички, які є лише хорошими або лише поганими, з часом жовтіють самі.",
|
||||
"tip19": "Підвищіть ваш інтелект щоб отримувати більше досвіду від завдань.",
|
||||
"tip20": "Підвищіть вашу спостережливість щоб отримувати більше випадкових призів та золота.",
|
||||
"tip21": "Підвищіть вашу силу щоб наносити більше ушкоджень босам та критичних ударів.",
|
||||
"tip22": "Boost your Constitution Stat to lessen the damage from incomplete Dailies.",
|
||||
"tip23": "Натисніть іконку \"графік\" на задачі щоб поглянути на графік, ілюструючий ваш прогрес.",
|
||||
"tip24": "Habitica is Open Source! Ask in the Aspiring Legends Guild if you want to contribute.",
|
||||
"tip25": "The four seasonal Grand Galas start near the solstices and equinoxes.",
|
||||
"tip26": "Стрілка зліва від рівня персонажа означає, що він посилений.",
|
||||
"tip27": "Make late-night Dailies refer to the night before (such as “flossed last night”) so you can check them off in the morning.",
|
||||
"tip28": "В налаштуваннях можна змінити час початку доби.",
|
||||
"tip29": "За завершення всіх щоденних завдань дається \"підсилення ідеального дня\", яке збільшує характеристики.",
|
||||
"tip30": "Крім груп, людей можна запрошувати в гільдії.",
|
||||
"tip31": "Check out the pre-made lists in the Library of Shared Lists Guild for example tasks.",
|
||||
"tip32": "Багато коду, графіки і текстів сайту Habitica зроблено добровольцями. Кожен може допомогти."
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
Do not edit any files in this directory!
|
||||
|
||||
For more information read:
|
||||
|
||||
https://github.com/HabitRPG/habitrpg/blob/develop/common/locales/README.md
|
||||
@@ -1,7 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
// TODO remove completely, use _.get, only used in client
|
||||
|
||||
module.exports = function dotGet (user, path) {
|
||||
return _.get(user, path);
|
||||
};
|
||||
@@ -1,14 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
/*
|
||||
This allows you to set object properties by dot-path. Eg, you can run pathSet('stats.hp',50,user) which is the same as
|
||||
user.stats.hp = 50. This is useful because in our habitrpg-shared functions we're returning changesets as {path:value},
|
||||
so that different consumers can implement setters their own way. Derby needs model.set(path, value) for example, where
|
||||
Angular sets object properties directly - in which case, this function will be used.
|
||||
*/
|
||||
|
||||
// TODO use directly _.set and remove this fn, only used in client
|
||||
|
||||
module.exports = function dotSet (user, path, val) {
|
||||
return _.set(user, path, val);
|
||||
};
|
||||
@@ -1,7 +0,0 @@
|
||||
// TODO remove once v2 is retired
|
||||
|
||||
module.exports = function nullify (user) {
|
||||
user.ops = null;
|
||||
user.fns = null;
|
||||
user = null;
|
||||
};
|
||||
@@ -1,12 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
import predictableRandom from './predictableRandom';
|
||||
|
||||
// Get a random property from an object
|
||||
// returns random property (the value)
|
||||
|
||||
module.exports = function randomVal (user, obj, options = {}) {
|
||||
let array = options.key ? _.keys(obj) : _.values(obj);
|
||||
let rand = predictableRandom(user, options.seed);
|
||||
array.sort();
|
||||
return array[Math.floor(rand * array.length)];
|
||||
};
|
||||
@@ -1,27 +0,0 @@
|
||||
import refPush from '../libs/refPush';
|
||||
import validator from 'validator';
|
||||
import i18n from '../i18n';
|
||||
import {
|
||||
BadRequest,
|
||||
} from '../libs/errors';
|
||||
import _ from 'lodash';
|
||||
|
||||
module.exports = function addWebhook (user, req = {}) {
|
||||
let wh = user.preferences.webhooks;
|
||||
|
||||
if (!validator.isURL(_.get(req, 'body.url'))) throw new BadRequest(i18n.t('invalidUrl', req.language));
|
||||
if (!validator.isBoolean(_.get(req, 'body.enabled'))) throw new BadRequest(i18n.t('invalidEnabled', req.language));
|
||||
|
||||
user.markModified('preferences.webhooks');
|
||||
|
||||
if (req.v2 === true) {
|
||||
return user.preferences.webhooks;
|
||||
} else {
|
||||
return [
|
||||
refPush(wh, {
|
||||
url: req.body.url,
|
||||
enabled: req.body.enabled,
|
||||
}),
|
||||
];
|
||||
}
|
||||
};
|
||||
@@ -1,15 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
import autoAllocate from '../fns/autoAllocate';
|
||||
|
||||
module.exports = function allocateNow (user, req = {}) {
|
||||
_.times(user.stats.points, () => autoAllocate(user));
|
||||
user.stats.points = 0;
|
||||
|
||||
if (req.v2 === true) {
|
||||
return _.pick(user, 'stats');
|
||||
} else {
|
||||
return [
|
||||
user.stats,
|
||||
];
|
||||
}
|
||||
};
|
||||
@@ -1,10 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
module.exports = function deleteWebhook (user, req) {
|
||||
delete user.preferences.webhooks[_.get(req, 'params.id')];
|
||||
user.markModified('preferences.webhooks');
|
||||
|
||||
return [
|
||||
user.preferences.webhooks,
|
||||
];
|
||||
};
|
||||
@@ -1,18 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
import i18n from '../i18n';
|
||||
import { NotFound } from '../libs/errors';
|
||||
|
||||
// TODO used only in client, move there?
|
||||
|
||||
module.exports = function getTag (user, req = {}) {
|
||||
let tid = _.get(req, 'params.id');
|
||||
|
||||
let index = _.findIndex(user.tags, {
|
||||
id: tid,
|
||||
});
|
||||
if (index === -1) {
|
||||
throw new NotFound(i18n.t('messageTagNotFound', req.language));
|
||||
}
|
||||
|
||||
return user.tags[index];
|
||||
};
|
||||
@@ -1,5 +0,0 @@
|
||||
// TODO used only in client, move there?
|
||||
|
||||
module.exports = function getTags (user) {
|
||||
return user.tags;
|
||||
};
|
||||
@@ -1,14 +0,0 @@
|
||||
import i18n from '../i18n';
|
||||
|
||||
module.exports = function markPmsRead (user, req = {}) {
|
||||
user.inbox.newMessages = 0;
|
||||
|
||||
if (req.v2 === true) {
|
||||
return user;
|
||||
} else {
|
||||
return [
|
||||
user.inbox.newMessages,
|
||||
i18n.t('pmsMarkedRead'),
|
||||
];
|
||||
}
|
||||
};
|
||||
@@ -1,9 +0,0 @@
|
||||
module.exports = function sleep (user, req = {}) {
|
||||
user.preferences.sleep = !user.preferences.sleep;
|
||||
|
||||
if (req.v2 === true) {
|
||||
return {};
|
||||
} else {
|
||||
return [user.preferences.sleep];
|
||||
}
|
||||
};
|
||||
@@ -1,11 +0,0 @@
|
||||
import _ from 'lodash';
|
||||
|
||||
// TODO used only in client, move there?
|
||||
|
||||
module.exports = function updateUser (user, req = {}) {
|
||||
_.each(req.body, (val, key) => {
|
||||
_.set(user, key, val);
|
||||
});
|
||||
|
||||
return user;
|
||||
};
|
||||
@@ -1,20 +0,0 @@
|
||||
import validator from 'validator';
|
||||
import i18n from '../i18n';
|
||||
import {
|
||||
BadRequest,
|
||||
} from '../libs/errors';
|
||||
|
||||
module.exports = function updateWebhook (user, req) {
|
||||
if (!validator.isURL(req.body.url)) throw new BadRequest(i18n.t('invalidUrl', req.language));
|
||||
if (!validator.isBoolean(req.body.enabled)) throw new BadRequest(i18n.t('invalidEnabled', req.language));
|
||||
|
||||
user.markModified('preferences.webhooks');
|
||||
user.preferences.webhooks[req.params.id].url = req.body.url;
|
||||
user.preferences.webhooks[req.params.id].enabled = req.body.enabled;
|
||||
|
||||
if (req.v2 === true) {
|
||||
return user.preferences.webhooks;
|
||||
} else {
|
||||
return [user.preferences.webhooks[req.params.id]];
|
||||
}
|
||||
};
|
||||
@@ -7,6 +7,8 @@
|
||||
"FACEBOOK_ANALYTICS":"1234567890123456",
|
||||
"FACEBOOK_KEY":"123456789012345",
|
||||
"FACEBOOK_SECRET":"aaaabbbbccccddddeeeeffff00001111",
|
||||
"GOOGLE_CLIENT_ID":"123456789012345",
|
||||
"GOOGLE_CLIENT_SECRET":"aaaabbbbccccddddeeeeffff00001111",
|
||||
"NODE_DB_URI":"mongodb://localhost/habitrpg",
|
||||
"TEST_DB_URI":"mongodb://localhost/habitrpg_test",
|
||||
"NODE_ENV":"development",
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
import { MongoClient as mongo } from 'mongodb';
|
||||
import config from '../config';
|
||||
|
||||
module.exports.updateUser = (_id, path, value) => {
|
||||
mongo.connect(config.NODE_DB_URI, (err, db) => {
|
||||
if (err) throw err;
|
||||
|
||||
let collection = db.collection('users');
|
||||
collection.updateOne(
|
||||
{ _id },
|
||||
{ $set: { [`${path}`]: value } },
|
||||
(updateErr, result) => {
|
||||
if (updateErr) throw updateErr;
|
||||
console.log('done updating', _id);
|
||||
db.close();
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require('babel-register');
|
||||
|
||||
let _ = require('lodash');
|
||||
let updateUser = require('./_helper').updateUser;
|
||||
|
||||
let userId = process.argv[2];
|
||||
|
||||
if (!userId) {
|
||||
console.error('USAGE: node debug-scripts/grant-all-equipment.js <user_id>');
|
||||
console.error('EFFECT: Adds all gear to specified user');
|
||||
return;
|
||||
}
|
||||
|
||||
let gearFlat = require('../common').content.gear.flat;
|
||||
|
||||
let userGear = {};
|
||||
|
||||
_.each(gearFlat, (piece, key) => {
|
||||
userGear[key] = true;
|
||||
});
|
||||
|
||||
updateUser(userId, 'items.gear.owned', userGear);
|
||||
@@ -1,28 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require('babel-register');
|
||||
|
||||
let _ = require('lodash');
|
||||
let updateUser = require('./_helper').updateUser;
|
||||
let userId = process.argv[2];
|
||||
|
||||
if (!userId) {
|
||||
console.error('USAGE: node debug-scripts/grant-all-mounts.js <user_id>');
|
||||
console.error('EFFECT: Adds all mounts to specified user');
|
||||
return;
|
||||
}
|
||||
|
||||
let dropMounts = require('../common').content.mounts;
|
||||
let questMounts = require('../common').content.questMounts;
|
||||
let specialMounts = require('../common').content.specialMounts;
|
||||
let premiumMounts = require('../common').content.premiumPets; // premium mounts isn't exposed on the content object
|
||||
|
||||
let userMounts = {};
|
||||
|
||||
_.each([ dropMounts, questMounts, specialMounts, premiumMounts ], (set) => {
|
||||
_.each(set, (pet, key) => {
|
||||
userMounts[key] = true;
|
||||
});
|
||||
})
|
||||
|
||||
updateUser(userId, 'items.mounts', userMounts);
|
||||
@@ -1,28 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
require('babel-register');
|
||||
|
||||
let _ = require('lodash');
|
||||
let updateUser = require('./_helper').updateUser;
|
||||
let userId = process.argv[2];
|
||||
|
||||
if (!userId) {
|
||||
console.error('USAGE: node debug-scripts/grant-all-pets.js <user_id>');
|
||||
console.error('EFFECT: Adds all pets to specified user');
|
||||
return;
|
||||
}
|
||||
|
||||
let dropPets = require('../common').content.pets;
|
||||
let questPets = require('../common').content.questPets;
|
||||
let specialPets = require('../common').content.specialPets;
|
||||
let premiumPets = require('../common').content.premiumPets;
|
||||
|
||||
let userPets = {};
|
||||
|
||||
_.each([ dropPets, questPets, specialPets, premiumPets ], (set) => {
|
||||
_.each(set, (pet, key) => {
|
||||
userPets[key] = 95;
|
||||
});
|
||||
})
|
||||
|
||||
updateUser(userId, 'items.pets', userPets);
|
||||
1
dist/habitrpg-shared.css
vendored
10
gulp/.eslintrc
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true,
|
||||
},
|
||||
"extends": [
|
||||
"habitrpg/server",
|
||||
"habitrpg/babel"
|
||||
],
|
||||
}
|
||||
@@ -15,8 +15,12 @@ gulp.task('apidoc', ['apidoc:clean'], (done) => {
|
||||
});
|
||||
|
||||
if (result === false) {
|
||||
done(new Error('There was a problem generating apiDoc documentation.'))
|
||||
done(new Error('There was a problem generating apiDoc documentation.'));
|
||||
} else {
|
||||
done();
|
||||
}
|
||||
});
|
||||
|
||||
gulp.task('apidoc:watch', ['apidoc'], () => {
|
||||
return gulp.watch(APIDOC_SRC_PATH + '/**/*.js', ['apidoc']);
|
||||
});
|
||||
@@ -8,7 +8,7 @@ import babel from 'babelify';
|
||||
|
||||
gulp.task('browserify', function () {
|
||||
let bundler = browserify({
|
||||
entries: './common/browserify.js',
|
||||
entries: './website/common/browserify.js',
|
||||
debug: true,
|
||||
transform: [[babel, { compact: false }]],
|
||||
});
|
||||
@@ -23,9 +23,9 @@ gulp.task('browserify', function () {
|
||||
this.emit('end');
|
||||
})
|
||||
.pipe(sourcemaps.write('./'))
|
||||
.pipe(gulp.dest('./common/dist/scripts/'));
|
||||
.pipe(gulp.dest('./website/client-old/js/'));
|
||||
});
|
||||
|
||||
gulp.task('browserify:watch', () => {
|
||||
gulp.watch('./common/script/**/*.js', ['browserify']);
|
||||
gulp.watch('./website/common/script/**/*.js', ['browserify']);
|
||||
});
|
||||
@@ -18,22 +18,22 @@ gulp.task('build:src', () => {
|
||||
});
|
||||
|
||||
gulp.task('build:common', () => {
|
||||
return gulp.src('common/script/**/*.js')
|
||||
return gulp.src('website/common/script/**/*.js')
|
||||
.pipe(babel())
|
||||
.pipe(gulp.dest('common/transpiled-babel/'));
|
||||
.pipe(gulp.dest('website/common/transpiled-babel/'));
|
||||
});
|
||||
|
||||
gulp.task('build:server', ['build:src', 'build:common']);
|
||||
|
||||
gulp.task('build:dev', ['browserify', 'prepare:staticNewStuff'], (done) => {
|
||||
gulp.task('build:dev', ['browserify', 'prepare:staticNewStuff', 'semantic-ui'], (done) => {
|
||||
gulp.start('grunt-build:dev', done);
|
||||
});
|
||||
|
||||
gulp.task('build:dev:watch', ['build:dev'], () => {
|
||||
gulp.watch(['website/client-old/**/*.styl', 'common/script/*']);
|
||||
gulp.watch(['website/client-old/**/*.styl', 'website/common/script/*']);
|
||||
});
|
||||
|
||||
gulp.task('build:prod', ['browserify', 'build:server', 'prepare:staticNewStuff'], (done) => {
|
||||
gulp.task('build:prod', ['browserify', 'build:server', 'prepare:staticNewStuff', 'semantic-ui'], (done) => {
|
||||
runSequence(
|
||||
'grunt-build:prod',
|
||||
'apidoc',
|
||||
@@ -10,11 +10,11 @@ let improveRepl = (context) => {
|
||||
|
||||
// Let "exit" and "quit" terminate the console
|
||||
['exit', 'quit'].forEach((term) => {
|
||||
Object.defineProperty(context, term, { get() { process.exit(); }});
|
||||
Object.defineProperty(context, term, { get () { process.exit(); }});
|
||||
});
|
||||
|
||||
// "clear" clears the screen
|
||||
Object.defineProperty(context, 'clear', { get() {
|
||||
Object.defineProperty(context, 'clear', { get () {
|
||||
process.stdout.write('\u001B[2J\u001B[0;0f');
|
||||
}});
|
||||
|
||||
@@ -25,13 +25,13 @@ let improveRepl = (context) => {
|
||||
var isProd = nconf.get('NODE_ENV') === 'production';
|
||||
var mongooseOptions = !isProd ? {} : {
|
||||
replset: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
|
||||
server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } }
|
||||
server: { socketOptions: { keepAlive: 1, connectTimeoutMS: 30000 } },
|
||||
};
|
||||
autoinc.init(
|
||||
mongoose.connect(
|
||||
nconf.get('NODE_DB_URI'),
|
||||
mongooseOptions,
|
||||
function(err) {
|
||||
function (err) {
|
||||
if (err) throw err;
|
||||
logger.info('Connected with Mongoose');
|
||||
}
|
||||
@@ -42,6 +42,6 @@ let improveRepl = (context) => {
|
||||
|
||||
gulp.task('console', (cb) => {
|
||||
improveRepl(repl.start({
|
||||
prompt: 'Habitica > '
|
||||
prompt: 'Habitica > ',
|
||||
}).context);
|
||||
});
|
||||
43
gulp/gulp-semanticui.js
Normal file
@@ -0,0 +1,43 @@
|
||||
import gulp from 'gulp';
|
||||
import fs from 'fs';
|
||||
|
||||
// Make semantic-ui-less work with a theme in a different folder
|
||||
// Code taken from https://www.artembutusov.com/webpack-semantic-ui/
|
||||
|
||||
// Relative to node_modules/semantic-ui-less
|
||||
const SEMANTIC_THEME_PATH = '../../website/client/assets/less/semantic-ui/theme.config';
|
||||
|
||||
// fix well known bug with default distribution
|
||||
function fixFontPath (filename) {
|
||||
return new Promise((resolve, reject) => {
|
||||
fs.readFile(filename, 'utf8', (err, content) => {
|
||||
if (err) return reject(err);
|
||||
|
||||
let newContent = content.replace(
|
||||
'@fontPath : \'../../themes/',
|
||||
'@fontPath : \'../../../themes/'
|
||||
);
|
||||
|
||||
fs.writeFile(filename, newContent, 'utf8', (err1) => {
|
||||
if (err) return reject(err1);
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
gulp.task('semantic-ui', (done) => {
|
||||
// relocate default config
|
||||
fs.writeFile(
|
||||
'node_modules/semantic-ui-less/theme.config',
|
||||
`@import '${SEMANTIC_THEME_PATH}';\n`,
|
||||
'utf8',
|
||||
(err) => {
|
||||
if (err) return done(err);
|
||||
|
||||
fixFontPath('node_modules/semantic-ui-less/themes/default/globals/site.variables')
|
||||
.then(() => done())
|
||||
.catch(done);
|
||||
}
|
||||
);
|
||||
});
|
||||
@@ -10,17 +10,17 @@ import {each} from 'lodash';
|
||||
|
||||
// https://github.com/Ensighten/grunt-spritesmith/issues/67#issuecomment-34786248
|
||||
const MAX_SPRITESHEET_SIZE = 1024 * 1024 * 3;
|
||||
const DIST_PATH = 'common/dist/sprites/';
|
||||
const DIST_PATH = 'website/assets/sprites/dist/';
|
||||
|
||||
gulp.task('sprites:compile', ['sprites:clean', 'sprites:main', 'sprites:largeSprites', 'sprites:checkCompiledDimensions']);
|
||||
|
||||
gulp.task('sprites:main', () => {
|
||||
let mainSrc = sync('common/img/sprites/spritesmith/**/*.png');
|
||||
let mainSrc = sync('website/assets/sprites/spritesmith/**/*.png');
|
||||
return createSpritesStream('main', mainSrc);
|
||||
});
|
||||
|
||||
gulp.task('sprites:largeSprites', () => {
|
||||
let largeSrc = sync('common/img/sprites/spritesmith_large/**/*.png');
|
||||
let largeSrc = sync('website/assets/sprites/spritesmith_large/**/*.png');
|
||||
return createSpritesStream('largeSprites', largeSrc);
|
||||
});
|
||||
|
||||
@@ -52,7 +52,7 @@ gulp.task('sprites:checkCompiledDimensions', ['sprites:main', 'sprites:largeSpri
|
||||
}
|
||||
});
|
||||
|
||||
function createSpritesStream(name, src) {
|
||||
function createSpritesStream (name, src) {
|
||||
let spritesheetSliceIndicies = calculateSpritesheetsSrcIndicies(src);
|
||||
let stream = mergeStream();
|
||||
|
||||
@@ -65,7 +65,7 @@ function createSpritesStream(name, src) {
|
||||
cssName: `spritesmith-${name}-${index}.css`,
|
||||
algorithm: 'binary-tree',
|
||||
padding: 1,
|
||||
cssTemplate: 'common/css/css.template.handlebars',
|
||||
cssTemplate: 'website/assets/sprites/css/css.template.handlebars',
|
||||
cssVarMap: cssVarMap
|
||||
}));
|
||||
|
||||
@@ -83,7 +83,7 @@ function createSpritesStream(name, src) {
|
||||
return stream;
|
||||
}
|
||||
|
||||
function calculateSpritesheetsSrcIndicies(src) {
|
||||
function calculateSpritesheetsSrcIndicies (src) {
|
||||
let totalPixels = 0;
|
||||
let slices = [0];
|
||||
|
||||
@@ -100,7 +100,7 @@ function calculateSpritesheetsSrcIndicies(src) {
|
||||
return slices;
|
||||
}
|
||||
|
||||
function calculateImgDimensions(img, addPadding) {
|
||||
function calculateImgDimensions (img, addPadding) {
|
||||
let dims = sizeOf(img);
|
||||
|
||||
let requiresSpecialTreatment = checkForSpecialTreatment(img);
|
||||
@@ -109,7 +109,7 @@ function calculateImgDimensions(img, addPadding) {
|
||||
let newHeight = dims.height < 90 ? 90 : dims.height;
|
||||
dims = {
|
||||
width: newWidth,
|
||||
height: newHeight
|
||||
height: newHeight,
|
||||
};
|
||||
}
|
||||
|
||||
@@ -119,19 +119,19 @@ function calculateImgDimensions(img, addPadding) {
|
||||
padding = (dims.width * 8) + (dims.height * 8);
|
||||
}
|
||||
|
||||
if(!dims.width || !dims.height) console.error('MISSING DIMENSIONS:', dims);
|
||||
if (!dims.width || !dims.height) console.error('MISSING DIMENSIONS:', dims);
|
||||
|
||||
let totalPixelSize = (dims.width * dims.height) + padding;
|
||||
|
||||
return totalPixelSize;
|
||||
}
|
||||
|
||||
function checkForSpecialTreatment(name) {
|
||||
function checkForSpecialTreatment (name) {
|
||||
let regex = /^hair|skin|beard|mustach|shirt|flower|^headAccessory_special_\w+Ears|^eyewear_special_\w+TopFrame/;
|
||||
return name.match(regex) || name === 'head_0';
|
||||
}
|
||||
|
||||
function cssVarMap(sprite) {
|
||||
function cssVarMap (sprite) {
|
||||
// For hair, skins, beards, etc. we want to output a '.customize-options.WHATEVER' class, which works as a
|
||||
// 60x60 image pointing at the proper part of the 90x90 sprite.
|
||||
// We set up the custom info here, and the template makes use of it.
|
||||
@@ -142,9 +142,9 @@ function cssVarMap(sprite) {
|
||||
offset_x: `-${ sprite.x + 25 }px`,
|
||||
offset_y: `-${ sprite.y + 15 }px`,
|
||||
width: '60px',
|
||||
height: '60px'
|
||||
}
|
||||
}
|
||||
height: '60px',
|
||||
},
|
||||
};
|
||||
}
|
||||
if (~sprite.name.indexOf('shirt'))
|
||||
sprite.custom.px.offset_y = `-${ sprite.y + 30 }px`; // even more for shirts
|
||||
@@ -12,6 +12,6 @@ gulp.task('nodemon', () => {
|
||||
'website/client-old/*',
|
||||
'website/views/*',
|
||||
'common/dist/script/content/*',
|
||||
]
|
||||
],
|
||||
});
|
||||
});
|
||||
@@ -13,10 +13,13 @@ import Bluebird from 'bluebird';
|
||||
import runSequence from 'run-sequence';
|
||||
import os from 'os';
|
||||
import nconf from 'nconf';
|
||||
import fs from 'fs';
|
||||
|
||||
const i18n = require('../website/server/libs/i18n');
|
||||
|
||||
// TODO rewrite
|
||||
|
||||
const TEST_SERVER_PORT = 3003
|
||||
const TEST_SERVER_PORT = 3003;
|
||||
let server;
|
||||
|
||||
const TEST_DB_URI = nconf.get('TEST_DB_URI');
|
||||
@@ -33,11 +36,11 @@ let testResults = [];
|
||||
let testCount = (stdout, regexp) => {
|
||||
let match = stdout.match(regexp);
|
||||
return parseInt(match && match[1] || 0);
|
||||
}
|
||||
};
|
||||
|
||||
let testBin = (string, additionalEnvVariables = '') => {
|
||||
if(os.platform() === "win32") {
|
||||
if(additionalEnvVariables != '') {
|
||||
if (os.platform() === 'win32') {
|
||||
if (additionalEnvVariables != '') {
|
||||
additionalEnvVariables = additionalEnvVariables.split(' ').join('&&set ');
|
||||
additionalEnvVariables = 'set ' + additionalEnvVariables + '&&';
|
||||
}
|
||||
@@ -49,7 +52,7 @@ let testBin = (string, additionalEnvVariables = '') => {
|
||||
|
||||
gulp.task('test:nodemon', (done) => {
|
||||
process.env.PORT = TEST_SERVER_PORT;
|
||||
process.env.NODE_DB_URI=TEST_DB_URI;
|
||||
process.env.NODE_DB_URI = TEST_DB_URI;
|
||||
|
||||
runSequence('nodemon');
|
||||
});
|
||||
@@ -65,17 +68,24 @@ gulp.task('test:prepare:mongo', (cb) => {
|
||||
|
||||
gulp.task('test:prepare:server', ['test:prepare:mongo'], () => {
|
||||
if (!server) {
|
||||
server = exec(testBin(`node ./website/server/index.js`, `NODE_DB_URI=${TEST_DB_URI} PORT=${TEST_SERVER_PORT}`), (error, stdout, stderr) => {
|
||||
server = exec(testBin('node ./website/server/index.js', `NODE_DB_URI=${TEST_DB_URI} PORT=${TEST_SERVER_PORT}`), (error, stdout, stderr) => {
|
||||
if (error) { throw `Problem with the server: ${error}`; }
|
||||
if (stderr) { console.error(stderr); }
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
gulp.task('test:prepare:build', ['build'], (cb) => {
|
||||
exec(testBin('grunt build:test'), cb);
|
||||
gulp.task('test:prepare:translations', (cb) => {
|
||||
fs.writeFile(
|
||||
'test/client-old/spec/mocks/translations.js',
|
||||
`if(!window.env) window.env = {};
|
||||
window.env.translations = ${JSON.stringify(i18n.translations['en'])};`, cb);
|
||||
|
||||
});
|
||||
|
||||
gulp.task('test:prepare:build', ['build', 'test:prepare:translations']);
|
||||
// exec(testBin('grunt build:test'), cb);
|
||||
|
||||
gulp.task('test:prepare:webdriver', (cb) => {
|
||||
exec('npm run test:prepare:webdriver', cb);
|
||||
});
|
||||
@@ -83,7 +93,7 @@ gulp.task('test:prepare:webdriver', (cb) => {
|
||||
gulp.task('test:prepare', [
|
||||
'test:prepare:build',
|
||||
'test:prepare:mongo',
|
||||
'test:prepare:webdriver'
|
||||
'test:prepare:webdriver',
|
||||
]);
|
||||
|
||||
gulp.task('test:sanity', (cb) => {
|
||||
@@ -128,7 +138,7 @@ gulp.task('test:common:safe', ['test:prepare:build'], (cb) => {
|
||||
suite: 'Common Specs\t',
|
||||
pass: testCount(stdout, /(\d+) passing/),
|
||||
fail: testCount(stdout, /(\d+) failing/),
|
||||
pend: testCount(stdout, /(\d+) pending/)
|
||||
pend: testCount(stdout, /(\d+) pending/),
|
||||
});
|
||||
cb();
|
||||
}
|
||||
@@ -167,33 +177,7 @@ gulp.task('test:content:safe', ['test:prepare:build'], (cb) => {
|
||||
suite: 'Content Specs\t',
|
||||
pass: testCount(stdout, /(\d+) passing/),
|
||||
fail: testCount(stdout, /(\d+) failing/),
|
||||
pend: testCount(stdout, /(\d+) pending/)
|
||||
});
|
||||
cb();
|
||||
}
|
||||
);
|
||||
pipe(runner);
|
||||
});
|
||||
|
||||
gulp.task('test:server_side', ['test:prepare:build'], (cb) => {
|
||||
let runner = exec(
|
||||
testBin(SERVER_SIDE_TEST_COMMAND),
|
||||
(err, stdout, stderr) => {
|
||||
cb(err);
|
||||
}
|
||||
);
|
||||
pipe(runner);
|
||||
});
|
||||
|
||||
gulp.task('test:server_side:safe', ['test:prepare:build'], (cb) => {
|
||||
let runner = exec(
|
||||
testBin(SERVER_SIDE_TEST_COMMAND),
|
||||
(err, stdout, stderr) => {
|
||||
testResults.push({
|
||||
suite: 'Server Side Specs',
|
||||
pass: testCount(stdout, /(\d+) passing/),
|
||||
fail: testCount(stdout, /(\d+) failing/),
|
||||
pend: testCount(stdout, /(\d+) pending/)
|
||||
pend: testCount(stdout, /(\d+) pending/),
|
||||
});
|
||||
cb();
|
||||
}
|
||||
@@ -232,7 +216,7 @@ gulp.task('test:karma:safe', ['test:prepare:build'], (cb) => {
|
||||
suite: 'Karma Specs\t',
|
||||
pass: testCount(stdout, /(\d+) tests? completed/),
|
||||
fail: testCount(stdout, /(\d+) tests? failed/),
|
||||
pend: testCount(stdout, /(\d+) tests? skipped/)
|
||||
pend: testCount(stdout, /(\d+) tests? skipped/),
|
||||
});
|
||||
cb();
|
||||
}
|
||||
@@ -249,7 +233,7 @@ gulp.task('test:e2e', ['test:prepare', 'test:prepare:server'], (cb) => {
|
||||
|
||||
Bluebird.all([
|
||||
awaitPort(TEST_SERVER_PORT),
|
||||
awaitPort(4444)
|
||||
awaitPort(4444),
|
||||
]).then(() => {
|
||||
let runner = exec(
|
||||
'npm run test:e2e',
|
||||
@@ -273,7 +257,7 @@ gulp.task('test:e2e:safe', ['test:prepare', 'test:prepare:server'], (cb) => {
|
||||
|
||||
Bluebird.all([
|
||||
awaitPort(TEST_SERVER_PORT),
|
||||
awaitPort(4444)
|
||||
awaitPort(4444),
|
||||
]).then(() => {
|
||||
let runner = exec(
|
||||
'npm run test:e2e',
|
||||
@@ -284,7 +268,7 @@ gulp.task('test:e2e:safe', ['test:prepare', 'test:prepare:server'], (cb) => {
|
||||
suite: 'End-to-End Specs\t',
|
||||
pass: testCount(stdout, /(\d+) passing/),
|
||||
fail: testCount(stdout, /(\d+) failing/),
|
||||
pend: testCount(stdout, /(\d+) pending/)
|
||||
pend: testCount(stdout, /(\d+) pending/),
|
||||
});
|
||||
support.forEach(kill);
|
||||
cb();
|
||||
@@ -296,14 +280,14 @@ gulp.task('test:e2e:safe', ['test:prepare', 'test:prepare:server'], (cb) => {
|
||||
|
||||
gulp.task('test:api-v3:unit', (done) => {
|
||||
let runner = exec(
|
||||
testBin('mocha test/api/v3/unit --recursive'),
|
||||
testBin('mocha test/api/v3/unit --recursive --require ./test/helpers/start-server'),
|
||||
(err, stdout, stderr) => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
done();
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
pipe(runner);
|
||||
});
|
||||
@@ -314,15 +298,15 @@ gulp.task('test:api-v3:unit:watch', () => {
|
||||
|
||||
gulp.task('test:api-v3:integration', (done) => {
|
||||
let runner = exec(
|
||||
testBin('mocha test/api/v3/integration --recursive'),
|
||||
{maxBuffer: 500*1024},
|
||||
testBin('mocha test/api/v3/integration --recursive --require ./test/helpers/start-server'),
|
||||
{maxBuffer: 500 * 1024},
|
||||
(err, stdout, stderr) => {
|
||||
if (err) {
|
||||
process.exit(1);
|
||||
}
|
||||
done();
|
||||
}
|
||||
)
|
||||
);
|
||||
|
||||
pipe(runner);
|
||||
});
|
||||
@@ -335,9 +319,9 @@ gulp.task('test:api-v3:integration:watch', () => {
|
||||
gulp.task('test:api-v3:integration:separate-server', (done) => {
|
||||
let runner = exec(
|
||||
testBin('mocha test/api/v3/integration --recursive', 'LOAD_SERVER=0'),
|
||||
{maxBuffer: 500*1024},
|
||||
{maxBuffer: 500 * 1024},
|
||||
(err, stdout, stderr) => done(err)
|
||||
)
|
||||
);
|
||||
|
||||
pipe(runner);
|
||||
});
|
||||