UNPKG

node-xattr

Version:

[![npm version](https://badge.fury.io/js/node-xattr.svg)](https://badge.fury.io/js/node-xattr)

60 lines (52 loc) 1.3 kB
const { getXattrSync: __getXattrSync, getXattr: __getXattr, setXattr: __setXattr, listXattr: __listXattr, removeXattr: __removeXattr, setCustomIcon: __setCustomIcon, setCustomIconSync, serializeArrayOfString, deserializeArrayOfString, ...rest } = require('bindings')('node-xattr'); const { promisify } = require('util'); function getXattrSync(path, name, encoding) { const buffer = __getXattrSync(path, name); if (typeof encoding !== 'undefined') { return buffer.toString(encoding); } return buffer; } function promisifyGetXattr(path, name, encoding) { return new Promise((resolve, reject) => { __getXattr(path, name, function (err, data) { if (err) { return reject(err); } if (typeof encoding === 'string') { return resolve(data.toString(encoding)); } return resolve(data); }); }); } const getXattr = promisifyGetXattr; const setXattr = promisify(__setXattr); const listXattr = promisify(__listXattr); const removeXattr = promisify(__removeXattr); const macUtils = { setCustomIconSync, setCustomIcon: promisify(__setCustomIcon), serializeArrayOfString, deserializeArrayOfString, }; module.exports = { getXattrSync, getXattr, setXattr, listXattr, removeXattr, macUtils, ...rest, }