UNPKG

799 BJavaScriptView Raw
1'use strict';
2var trimRepeated = require('trim-repeated');
3var filenameReservedRegex = require('filename-reserved-regex');
4var stripOuter = require('strip-outer')
5
6// doesn't make sense to have longer filenames
7var MAX_FILENAME_LENGTH = 100;
8
9module.exports = function (str, opts) {
10 if (typeof str !== 'string') {
11 throw new TypeError('Expected a string');
12 }
13
14 opts = opts || {};
15
16 var replacement = opts.replacement || '!';
17
18 if (filenameReservedRegex().test(replacement)) {
19 throw new Error('Replacement string cannot contain reserved filename characters');
20 }
21
22 str = str.replace(filenameReservedRegex(), replacement);
23
24 if (replacement.length > 0) {
25 str = trimRepeated(str, replacement);
26 str = stripOuter(str, replacement);
27 }
28
29 str = str.slice(0, MAX_FILENAME_LENGTH);
30
31 return str;
32};