aboutsummaryrefslogtreecommitdiff
path: root/node_modules/nodemon/lib/rules/add.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2022-06-04 08:51:01 +0200
committerMinteck <contact@minteck.org>2022-06-04 08:51:01 +0200
commit383285ecd5292bf9a825e05904955b937de84cc9 (patch)
tree0a53b6f02c1604b078044567c03dc1b6c944c8c2 /node_modules/nodemon/lib/rules/add.js
downloadequestriadb-383285ecd5292bf9a825e05904955b937de84cc9.tar.gz
equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.tar.bz2
equestriadb-383285ecd5292bf9a825e05904955b937de84cc9.zip
Initial commit
Diffstat (limited to 'node_modules/nodemon/lib/rules/add.js')
-rw-r--r--node_modules/nodemon/lib/rules/add.js89
1 files changed, 89 insertions, 0 deletions
diff --git a/node_modules/nodemon/lib/rules/add.js b/node_modules/nodemon/lib/rules/add.js
new file mode 100644
index 0000000..de85bb7
--- /dev/null
+++ b/node_modules/nodemon/lib/rules/add.js
@@ -0,0 +1,89 @@
+'use strict';
+
+var utils = require('../utils');
+
+// internal
+var reEscComments = /\\#/g;
+// note that '^^' is used in place of escaped comments
+var reUnescapeComments = /\^\^/g;
+var reComments = /#.*$/;
+var reEscapeChars = /[.|\-[\]()\\]/g;
+var reAsterisk = /\*/g;
+
+module.exports = add;
+
+/**
+ * Converts file patterns or regular expressions to nodemon
+ * compatible RegExp matching rules. Note: the `rules` argument
+ * object is modified to include the new rule and new RegExp
+ *
+ * ### Example:
+ *
+ * var rules = { watch: [], ignore: [] };
+ * add(rules, 'watch', '*.js');
+ * add(rules, 'ignore', '/public/');
+ * add(rules, 'watch', ':(\d)*\.js'); // note: string based regexp
+ * add(rules, 'watch', /\d*\.js/);
+ *
+ * @param {Object} rules containing `watch` and `ignore`. Also updated during
+ * execution
+ * @param {String} which must be either "watch" or "ignore"
+ * @param {String|RegExp} the actual rule.
+ */
+function add(rules, which, rule) {
+ if (!{ ignore: 1, watch: 1}[which]) {
+ throw new Error('rules/index.js#add requires "ignore" or "watch" as the ' +
+ 'first argument');
+ }
+
+ if (Array.isArray(rule)) {
+ rule.forEach(function (rule) {
+ add(rules, which, rule);
+ });
+ return;
+ }
+
+ // support the rule being a RegExp, but reformat it to
+ // the custom :<regexp> format that we're working with.
+ if (rule instanceof RegExp) {
+ // rule = ':' + rule.toString().replace(/^\/(.*?)\/$/g, '$1');
+ utils.log.error('RegExp format no longer supported, but globs are.');
+ return;
+ }
+
+ // remove comments and trim lines
+ // this mess of replace methods is escaping "\#" to allow for emacs temp files
+
+ // first up strip comments and remove blank head or tails
+ rule = (rule || '').replace(reEscComments, '^^')
+ .replace(reComments, '')
+ .replace(reUnescapeComments, '#').trim();
+
+ var regexp = false;
+
+ if (typeof rule === 'string' && rule.substring(0, 1) === ':') {
+ rule = rule.substring(1);
+ utils.log.error('RegExp no longer supported: ' + rule);
+ regexp = true;
+ } else if (rule.length === 0) {
+ // blank line (or it was a comment)
+ return;
+ }
+
+ if (regexp) {
+ // rules[which].push(rule);
+ } else {
+ // rule = rule.replace(reEscapeChars, '\\$&')
+ // .replace(reAsterisk, '.*');
+
+ rules[which].push(rule);
+ // compile a regexp of all the rules for this ignore or watch
+ var re = rules[which].map(function (rule) {
+ return rule.replace(reEscapeChars, '\\$&')
+ .replace(reAsterisk, '.*');
+ }).join('|');
+
+ // used for the directory matching
+ rules[which].re = new RegExp(re);
+ }
+}