options.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.getWriteFileOptions = exports.writeFileDefaults = exports.getRealpathOptsAndCb = exports.getRealpathOptions = exports.getStatfsOptsAndCb = exports.getStatfsOptions = exports.getStatOptsAndCb = exports.getStatOptions = exports.getAppendFileOptsAndCb = exports.getAppendFileOpts = exports.getOpendirOptsAndCb = exports.getOpendirOptions = exports.getReaddirOptsAndCb = exports.getReaddirOptions = exports.getReadFileOptions = exports.getRmOptsAndCb = exports.getRmdirOptions = exports.getDefaultOptsAndCb = exports.getDefaultOpts = exports.optsDefaults = exports.getMkdirOptions = void 0;
  4. exports.getOptions = getOptions;
  5. exports.optsGenerator = optsGenerator;
  6. exports.optsAndCbGenerator = optsAndCbGenerator;
  7. const fs_node_utils_1 = require("@jsonjoy.com/fs-node-utils");
  8. const util_1 = require("./util");
  9. const mkdirDefaults = {
  10. mode: 511 /* MODE.DIR */,
  11. recursive: false,
  12. };
  13. const getMkdirOptions = (options) => {
  14. if (typeof options === 'number')
  15. return Object.assign({}, mkdirDefaults, { mode: options });
  16. return Object.assign({}, mkdirDefaults, options);
  17. };
  18. exports.getMkdirOptions = getMkdirOptions;
  19. const ERRSTR_OPTS = tipeof => `Expected options to be either an object or a string, but got ${tipeof} instead`;
  20. function getOptions(defaults, options) {
  21. let opts;
  22. if (!options)
  23. return defaults;
  24. else {
  25. const tipeof = typeof options;
  26. switch (tipeof) {
  27. case 'string':
  28. opts = Object.assign({}, defaults, { encoding: options });
  29. break;
  30. case 'object':
  31. opts = Object.assign({}, defaults, options);
  32. break;
  33. default:
  34. throw TypeError(ERRSTR_OPTS(tipeof));
  35. }
  36. }
  37. if (opts.encoding !== 'buffer')
  38. (0, fs_node_utils_1.assertEncoding)(opts.encoding);
  39. return opts;
  40. }
  41. function optsGenerator(defaults) {
  42. return options => getOptions(defaults, options);
  43. }
  44. function optsAndCbGenerator(getOpts) {
  45. return (options, callback) => typeof options === 'function' ? [getOpts(), options] : [getOpts(options), (0, util_1.validateCallback)(callback)];
  46. }
  47. exports.optsDefaults = {
  48. encoding: 'utf8',
  49. };
  50. exports.getDefaultOpts = optsGenerator(exports.optsDefaults);
  51. exports.getDefaultOptsAndCb = optsAndCbGenerator(exports.getDefaultOpts);
  52. const rmdirDefaults = {
  53. recursive: false,
  54. };
  55. const getRmdirOptions = (options) => {
  56. return Object.assign({}, rmdirDefaults, options);
  57. };
  58. exports.getRmdirOptions = getRmdirOptions;
  59. const getRmOpts = optsGenerator(exports.optsDefaults);
  60. exports.getRmOptsAndCb = optsAndCbGenerator(getRmOpts);
  61. const readFileOptsDefaults = {
  62. flag: 'r',
  63. };
  64. exports.getReadFileOptions = optsGenerator(readFileOptsDefaults);
  65. const readdirDefaults = {
  66. encoding: 'utf8',
  67. recursive: false,
  68. withFileTypes: false,
  69. };
  70. exports.getReaddirOptions = optsGenerator(readdirDefaults);
  71. exports.getReaddirOptsAndCb = optsAndCbGenerator(exports.getReaddirOptions);
  72. const opendirDefaults = {
  73. encoding: 'utf8',
  74. bufferSize: 32,
  75. recursive: false,
  76. };
  77. exports.getOpendirOptions = optsGenerator(opendirDefaults);
  78. exports.getOpendirOptsAndCb = optsAndCbGenerator(exports.getOpendirOptions);
  79. const appendFileDefaults = {
  80. encoding: 'utf8',
  81. mode: 438 /* MODE.DEFAULT */,
  82. flag: fs_node_utils_1.FLAGS[fs_node_utils_1.FLAGS.a],
  83. };
  84. exports.getAppendFileOpts = optsGenerator(appendFileDefaults);
  85. exports.getAppendFileOptsAndCb = optsAndCbGenerator(exports.getAppendFileOpts);
  86. const statDefaults = {
  87. bigint: false,
  88. };
  89. const getStatOptions = (options = {}) => Object.assign({}, statDefaults, options);
  90. exports.getStatOptions = getStatOptions;
  91. const getStatOptsAndCb = (options, callback) => typeof options === 'function' ? [(0, exports.getStatOptions)(), options] : [(0, exports.getStatOptions)(options), (0, util_1.validateCallback)(callback)];
  92. exports.getStatOptsAndCb = getStatOptsAndCb;
  93. const statfsDefaults = {
  94. bigint: false,
  95. };
  96. const getStatfsOptions = (options = {}) => Object.assign({}, statfsDefaults, options);
  97. exports.getStatfsOptions = getStatfsOptions;
  98. const getStatfsOptsAndCb = (options, callback) => typeof options === 'function'
  99. ? [(0, exports.getStatfsOptions)(), options]
  100. : [(0, exports.getStatfsOptions)(options), (0, util_1.validateCallback)(callback)];
  101. exports.getStatfsOptsAndCb = getStatfsOptsAndCb;
  102. const realpathDefaults = exports.optsDefaults;
  103. exports.getRealpathOptions = optsGenerator(realpathDefaults);
  104. exports.getRealpathOptsAndCb = optsAndCbGenerator(exports.getRealpathOptions);
  105. exports.writeFileDefaults = {
  106. encoding: 'utf8',
  107. mode: 438 /* MODE.DEFAULT */,
  108. flag: fs_node_utils_1.FLAGS[fs_node_utils_1.FLAGS.w],
  109. };
  110. exports.getWriteFileOptions = optsGenerator(exports.writeFileDefaults);
  111. //# sourceMappingURL=options.js.map