summaryrefslogtreecommitdiffstats
path: root/node_modules/tapable/lib/Tapable.js
diff options
context:
space:
mode:
authorGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
committerGravatar Piotr Russ <mail@pruss.it> 2020-11-16 00:10:28 +0100
commite06ec920f7a5d784e674c4c4b4e6d1da3dc7391d (patch)
tree55713f725f77b44ebfec86e4eec3ce33e71458ca /node_modules/tapable/lib/Tapable.js
downloadwebsite_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.gz
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.tar.bz2
website_creator-e06ec920f7a5d784e674c4c4b4e6d1da3dc7391d.zip
api, login, auth
Diffstat (limited to 'node_modules/tapable/lib/Tapable.js')
-rw-r--r--node_modules/tapable/lib/Tapable.js81
1 files changed, 81 insertions, 0 deletions
diff --git a/node_modules/tapable/lib/Tapable.js b/node_modules/tapable/lib/Tapable.js
new file mode 100644
index 0000000..530fea3
--- /dev/null
+++ b/node_modules/tapable/lib/Tapable.js
@@ -0,0 +1,81 @@
+/*
+ MIT License http://www.opensource.org/licenses/mit-license.php
+ Author Tobias Koppers @sokra
+*/
+"use strict";
+
+const util = require("util");
+const SyncBailHook = require("./SyncBailHook");
+
+function Tapable() {
+ this._pluginCompat = new SyncBailHook(["options"]);
+ this._pluginCompat.tap(
+ {
+ name: "Tapable camelCase",
+ stage: 100
+ },
+ options => {
+ options.names.add(
+ options.name.replace(/[- ]([a-z])/g, (str, ch) => ch.toUpperCase())
+ );
+ }
+ );
+ this._pluginCompat.tap(
+ {
+ name: "Tapable this.hooks",
+ stage: 200
+ },
+ options => {
+ let hook;
+ for (const name of options.names) {
+ hook = this.hooks[name];
+ if (hook !== undefined) {
+ break;
+ }
+ }
+ if (hook !== undefined) {
+ const tapOpt = {
+ name: options.fn.name || "unnamed compat plugin",
+ stage: options.stage || 0
+ };
+ if (options.async) hook.tapAsync(tapOpt, options.fn);
+ else hook.tap(tapOpt, options.fn);
+ return true;
+ }
+ }
+ );
+}
+module.exports = Tapable;
+
+Tapable.addCompatLayer = function addCompatLayer(instance) {
+ Tapable.call(instance);
+ instance.plugin = Tapable.prototype.plugin;
+ instance.apply = Tapable.prototype.apply;
+};
+
+Tapable.prototype.plugin = util.deprecate(function plugin(name, fn) {
+ if (Array.isArray(name)) {
+ name.forEach(function(name) {
+ this.plugin(name, fn);
+ }, this);
+ return;
+ }
+ const result = this._pluginCompat.call({
+ name: name,
+ fn: fn,
+ names: new Set([name])
+ });
+ if (!result) {
+ throw new Error(
+ `Plugin could not be registered at '${name}'. Hook was not found.\n` +
+ "BREAKING CHANGE: There need to exist a hook at 'this.hooks'. " +
+ "To create a compatibility layer for this hook, hook into 'this._pluginCompat'."
+ );
+ }
+}, "Tapable.plugin is deprecated. Use new API on `.hooks` instead");
+
+Tapable.prototype.apply = util.deprecate(function apply() {
+ for (var i = 0; i < arguments.length; i++) {
+ arguments[i].apply(this);
+ }
+}, "Tapable.apply is deprecated. Call apply on the plugin directly instead");