utils.js 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. const fs = require('fs-extra');
  2. const path = require('path');
  3. function sleep(ms) {
  4. return new Promise(resolve => setTimeout(resolve, ms));
  5. }
  6. function versionText(config) {
  7. return `${config.name} v${config.version}, Node.js ${process.version}`;
  8. }
  9. async function findFiles(callback, dir, recursive = true) {
  10. if (!(callback && dir))
  11. return;
  12. const files = await fs.readdir(dir, { withFileTypes: true });
  13. for (const file of files) {
  14. const found = path.resolve(dir, file.name);
  15. if (file.isDirectory()) {
  16. if (recursive)
  17. await findFiles(callback, found);
  18. } else {
  19. await callback(found);
  20. }
  21. }
  22. }
  23. async function touchFile(filename) {
  24. await fs.utimes(filename, Date.now()/1000, Date.now()/1000);
  25. }
  26. function hasProp(obj, prop) {
  27. return Object.prototype.hasOwnProperty.call(obj, prop);
  28. }
  29. function freeMemory() {
  30. if (global.gc) {
  31. global.gc();
  32. global.gc();
  33. global.gc();
  34. }
  35. }
  36. module.exports = {
  37. sleep,
  38. versionText,
  39. findFiles,
  40. touchFile,
  41. hasProp,
  42. freeMemory,
  43. };