mirror of
https://github.com/HabitRPG/habitica.git
synced 2026-04-25 20:01:12 -05:00
cdf8556fd6
* build cached content files for mobile during gulp build * load already cached content files during startup * add option for mongoose to define minPoolSize * cache client index.html for 10 minutes. Improves initial load times * add option to auth to use lean version of user doc * add a way to produce a heapdump from the command line * fix lint
99 lines
2.9 KiB
JavaScript
99 lines
2.9 KiB
JavaScript
import gulp from 'gulp';
|
|
import fs from 'fs';
|
|
|
|
// TODO parallelize, use gulp file helpers
|
|
gulp.task('cache:content', done => {
|
|
// Requiring at runtime because these files access `common`
|
|
// code which in production works only if transpiled so after
|
|
// gulp build:babel:common has run
|
|
const {
|
|
CONTENT_CACHE_PATH,
|
|
getLocalizedContentResponse,
|
|
IOS_FILTER,
|
|
ANDROID_FILTER,
|
|
buildFilterObject,
|
|
hashForFilter,
|
|
} = require('../website/server/libs/content'); // eslint-disable-line global-require
|
|
const { langCodes } = require('../website/server/libs/i18n'); // eslint-disable-line global-require
|
|
|
|
const iosHash = hashForFilter(IOS_FILTER);
|
|
const iosFilterObj = buildFilterObject(IOS_FILTER);
|
|
const androidHash = hashForFilter(ANDROID_FILTER);
|
|
const androidFilterObj = buildFilterObject(ANDROID_FILTER);
|
|
|
|
try {
|
|
// create the cache folder (if it doesn't exist)
|
|
try {
|
|
fs.mkdirSync(CONTENT_CACHE_PATH);
|
|
} catch (err) {
|
|
if (err.code !== 'EEXIST') throw err;
|
|
}
|
|
|
|
// clone the content for each language and save
|
|
// localize it
|
|
// save the result
|
|
langCodes.forEach(langCode => {
|
|
fs.writeFileSync(
|
|
`${CONTENT_CACHE_PATH}${langCode}.json`,
|
|
getLocalizedContentResponse(langCode),
|
|
'utf8',
|
|
);
|
|
|
|
fs.writeFileSync(
|
|
`${CONTENT_CACHE_PATH}${langCode}${iosHash}.json`,
|
|
getLocalizedContentResponse(langCode, iosFilterObj),
|
|
'utf8',
|
|
);
|
|
|
|
fs.writeFileSync(
|
|
`${CONTENT_CACHE_PATH}${langCode}${androidHash}.json`,
|
|
getLocalizedContentResponse(langCode, androidFilterObj),
|
|
'utf8',
|
|
);
|
|
});
|
|
done();
|
|
} catch (err) {
|
|
done(err);
|
|
}
|
|
});
|
|
|
|
function safeMkdir (path) {
|
|
try {
|
|
fs.mkdirSync(path);
|
|
} catch (err) {
|
|
if (err.code !== 'EEXIST') throw err;
|
|
}
|
|
}
|
|
|
|
gulp.task('cache:i18n', done => {
|
|
// Requiring at runtime because these files access `common`
|
|
// code which in production works only if transpiled so after
|
|
// gulp build:babel:common has run
|
|
const { BROWSER_SCRIPT_CACHE_PATH, geti18nCoreBrowserScript, geti18nContentBrowserScript } = require('../website/server/libs/i18n'); // eslint-disable-line global-require
|
|
const { langCodes } = require('../website/server/libs/i18n'); // eslint-disable-line global-require
|
|
|
|
try {
|
|
// create the cache folders (if they doesn't exist)
|
|
safeMkdir(BROWSER_SCRIPT_CACHE_PATH);
|
|
safeMkdir(`${BROWSER_SCRIPT_CACHE_PATH}core/`);
|
|
safeMkdir(`${BROWSER_SCRIPT_CACHE_PATH}content/`);
|
|
|
|
// create and save the i18n browser script for each language
|
|
langCodes.forEach(languageCode => {
|
|
fs.writeFileSync(
|
|
`${BROWSER_SCRIPT_CACHE_PATH}core/${languageCode}.js`,
|
|
geti18nCoreBrowserScript(languageCode),
|
|
'utf8',
|
|
);
|
|
fs.writeFileSync(
|
|
`${BROWSER_SCRIPT_CACHE_PATH}content/${languageCode}.js`,
|
|
geti18nContentBrowserScript(languageCode),
|
|
'utf8',
|
|
);
|
|
});
|
|
done();
|
|
} catch (err) {
|
|
done(err);
|
|
}
|
|
});
|