UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

67 lines (62 loc) โ€ข 1.99 kB
const redis = require('redis'); const promisify = require('es6-promisify'); // RedisClient instance and Promised API const client = redis.createClient({ url: process.env.REDIS_URL, retry_strategy(options) { if (options.error && options.error.code === 'ECONNREFUSED') { // End reconnecting on a specific error and flush all commands with a individual error } else { console.log('๐Ÿšจ', options.error); } } }); const get = client && promisify(client.get, client); const set = client && promisify(client.set, client); // currentVersion ใฎๅˆๆœŸๅ€คใฏ redis ใ‹ใ‚‰ๅ–ๅพ—ใ™ใ‚‹ // ๅˆๆœŸๅ€คใŒๅ–ๅพ—ใงใใ‚‹๏ผˆใ‚ใ‚‹ใ„ใฏๅคฑๆ•—ใ™ใ‚‹๏ผ‰ใพใงใฏ <pending> const VERSION = 'version'; let currentVersion = get(VERSION).catch(err => ''); // version ใ‚’ 1 ใ™ใ™ใ‚ใ‚‹ // e.g. 'v1001' => 'v1002' const advance = version => { if (!version) return 'v1001'; const n = version.substr(1) >> 0; return `v${n + 1}`; }; // CDN ใฎใƒ—ใƒฌใƒ•ใ‚ฃใƒƒใ‚ฏใ‚น const endpoint = 'https://assets.feeles.com/public'; // Interface module.exports = { // ็พๅœจใฎใƒใƒผใ‚ธใƒงใƒณ async currentVersion() { return (await currentVersion) || ''; }, // ็พๅœจใ‹ใ‚‰ 1 ใ™ใ™ใ‚“ใ ใƒใƒผใ‚ธใƒงใƒณ async nextVersion() { return advance(await currentVersion); }, // ็พๅœจใฎใƒใƒผใ‚ธใƒงใƒณใ‚’ๆไพ›ใ™ใ‚‹ CDN URL async currentUrl(pathname = '') { return ( endpoint + require('path').join('/', await this.currentVersion(), pathname) ); }, // ็พๅœจใ‹ใ‚‰ 1 ใ™ใ™ใ‚“ใ ใƒใƒผใ‚ธใƒงใƒณใ‚’ๆไพ›ใ™ใ‚‹ CDN URL async nextUrl(pathname = '') { return ( endpoint + require('path').join('/', await this.nextVersion(), pathname) ); }, // ็พๅœจใฎใƒใƒผใ‚ธใƒงใƒณใ‚’ 1 ใ™ใ™ใ‚ใ‚‹ async advance() { // currentVersion ใซใฏใƒ—ใƒชใƒŸใƒ†ใ‚ฃใƒ–ใชๅ€คใŒๅ…ฅใ‚‹ currentVersion = advance(await currentVersion); await set(VERSION, currentVersion); return currentVersion; }, quit() { client.quit(); } };