vue-router-webcache
Version:
Enable vue-router routing for google webcache(and same caches)
61 lines • 2.69 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
exports.__esModule = true;
var path_1 = require("path");
var fs_1 = require("fs");
var defu_1 = __importDefault(require("defu"));
var lodash_template_1 = __importDefault(require("lodash.template"));
var config_1 = require("../config");
var config_2 = require("./config");
var logger = require('consola').withScope('vue-router-webcache');
var defaultOptions = {
cacheList: config_1.defaultCacheUrls,
replacePush: true,
urlGetter: function () {
if (!window.__NUXT__)
return '/';
var _a = (window.__NUXT__.state.route || {}).fullPath, fullPath = _a === void 0 ? '/' : _a;
return fullPath;
},
forceVuexRouterSync: false
};
var nuxtModule = function (moduleOptions) {
var options = (0, defu_1["default"])(this.options.webcache, moduleOptions, defaultOptions);
var isAllCachesHasGetters = options.cacheList
.every(function (_a) {
var getRealUrl = _a.getRealUrl;
return getRealUrl;
});
var isDefaultUrlGetter = options.urlGetter === defaultOptions.urlGetter;
if (!isAllCachesHasGetters && isDefaultUrlGetter) {
logger.warn('Not all caches have a "getRealUrl" function, adding "nuxt-vuex-router-sync"');
options.forceVuexRouterSync = true;
}
if (options.forceVuexRouterSync) {
options.urlGetter = defaultOptions.urlGetter;
this.requireModule('nuxt-vuex-router-sync');
}
var routerFilePath = (0, path_1.resolve)(this.options.srcDir, './router.js');
var needWriteFile = true;
if ((0, fs_1.existsSync)(routerFilePath)) {
var currentRouterFile = (0, fs_1.readFileSync)(routerFilePath, { encoding: 'utf-8' });
var isGenerated = currentRouterFile.startsWith(config_2.AUTO_UPDATE_FLAG);
if (isGenerated)
logger.info('Update auto-generated "router.js" file');
else
logger.info('Cannot change manually updated "router.js" file');
needWriteFile = isGenerated;
}
if (needWriteFile) {
logger.info("Creating new router configuration in \"" + this.options.srcDir + "\"");
var template = (0, fs_1.readFileSync)((0, path_1.resolve)(__dirname, './router.js'), { encoding: 'utf-8' });
var compiler = (0, lodash_template_1["default"])(template);
var compiled = compiler({ options: options });
(0, fs_1.writeFileSync)(routerFilePath, config_2.AUTO_UPDATE_FLAG + compiled);
}
};
exports["default"] = nuxtModule;
module.exports.meta = require('../../package.json');
//# sourceMappingURL=index.js.map