1 | 'use strict';
|
2 | var trimRepeated = require('trim-repeated');
|
3 | var filenameReservedRegex = require('filename-reserved-regex');
|
4 | var stripOuter = require('strip-outer')
|
5 |
|
6 |
|
7 | var MAX_FILENAME_LENGTH = 100;
|
8 |
|
9 | module.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 | };
|