123456789101112131415161718192021222324252627282930313233343536373839404142 |
- var os = require('os')
- var path = require('path')
- var homedir = require('os-homedir')
- function posix (id) {
- var cacheHome = process.env.XDG_CACHE_HOME || path.join(homedir(), '.cache')
- return path.join(cacheHome, id)
- }
- function darwin (id) {
- return path.join(homedir(), 'Library', 'Caches', id)
- }
- function win32 (id) {
- var appData = process.env.LOCALAPPDATA || path.join(homedir(), 'AppData', 'Local')
- return path.join(appData, id, 'Cache')
- }
- var implementation = (function () {
- switch (os.platform()) {
- case 'android': return posix
- case 'darwin': return darwin
- case 'freebsd': return posix
- case 'linux': return posix
- case 'win32': return win32
- default: throw new Error('Your OS "' + os.platform() + '" is currently not supported by node-cachedir.')
- }
- }())
- module.exports = function (id) {
- if (typeof id !== 'string') {
- throw new TypeError('id is not a string')
- }
- if (id.length === 0) {
- throw new Error('id cannot be empty')
- }
- if (/[^0-9a-zA-Z-]/.test(id)) {
- throw new Error('id cannot contain special characters')
- }
- return implementation(id)
- }
|