UNPKG

feeles-ide

Version:

The hackable and serializable IDE to make learning material

67 lines (62 loc) โ€ข 1.97 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() } }