cloudcmd/server/columns.js
2024-03-20 13:12:45 +02:00

41 lines
1 KiB
JavaScript

'use strict';
const fullstore = require('fullstore');
const process = require('node:process');
const path = require('node:path');
const fs = require('node:fs');
const {nanomemoize} = require('nano-memoize');
const readFilesSync = require('@cloudcmd/read-files-sync');
const isMap = (a) => /\.map$/.test(a);
const not = (fn) => (a) => !fn(a);
const defaultColumns = {
'': '',
'name-size-date-owner-mode': '',
};
const _isDev = fullstore(process.env.NODE_ENV === 'development');
const getDist = (isDev) => isDev ? 'dist-dev' : 'dist';
module.exports.isDev = _isDev;
module.exports.getColumns = ({isDev = _isDev()} = {}) => {
const columns = readFilesSyncMemo(isDev);
return {
...columns,
...defaultColumns,
};
};
const readFilesSyncMemo = nanomemoize((isDev) => {
const dist = getDist(isDev);
const columnsDir = path.join(__dirname, '..', dist, 'columns');
const names = fs
.readdirSync(columnsDir)
.filter(not(isMap));
return readFilesSync(columnsDir, names, 'utf8');
});