From cd1de2faa98a2a4d48318e9e26b2795365981b41 Mon Sep 17 00:00:00 2001
From: Jason Mulligan <jason.mulligan@avoidwork.com>
Date: Mon, 3 Oct 2016 07:56:31 -0400
Subject: [PATCH] Adding `__filename` & `__dirname` variables to worker
 context, fixes #5

---
 lib/worker.js       |  2 ++
 package.json        |  2 +-
 src/worker.js       |  2 ++
 test/worker_test.js | 58 ++++++++++++++++++++++++++++++++++++++++++++-
 4 files changed, 62 insertions(+), 2 deletions(-)

diff --git a/lib/worker.js b/lib/worker.js
index 38028c3..c1cf153 100644
--- a/lib/worker.js
+++ b/lib/worker.js
@@ -41,6 +41,8 @@ process.once("message", function (obj) {
 		}
 	};
 
+	global.__dirname = __dirname;
+	global.__filename = __filename;
 	global.require = require;
 
 	global.importScripts = function () {
diff --git a/package.json b/package.json
index cbac201..5e83914 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "tiny-worker",
-  "version": "1.1.5",
+  "version": "1.1.6",
   "description": "Tiny WebWorker for Server",
   "main": "lib/index.js",
   "scripts": {
diff --git a/src/worker.js b/src/worker.js
index 74e598d..bba70e5 100644
--- a/src/worker.js
+++ b/src/worker.js
@@ -39,6 +39,8 @@ process.once("message", obj => {
 		}
 	};
 
+	global.__dirname = __dirname;
+	global.__filename = __filename;
 	global.require = require;
 
 	global.importScripts = (...files) => {
diff --git a/test/worker_test.js b/test/worker_test.js
index 171fdd9..b793bc6 100644
--- a/test/worker_test.js
+++ b/test/worker_test.js
@@ -56,7 +56,7 @@ exports["inline script"] = {
 exports["inline script - require"] = {
 	setUp: function (done) {
 		this.worker = new Worker(function () {
-			self.onmessage = function (ev) {
+			self.onmessage = function () {
 				postMessage(typeof require);
 			};
 		});
@@ -80,3 +80,59 @@ exports["inline script - require"] = {
 		this.worker.postMessage(this.msg);
 	}
 };
+
+exports["inline script - __dirname"] = {
+	setUp: function (done) {
+		this.worker = new Worker(function () {
+			self.onmessage = function () {
+				postMessage(typeof __dirname);
+			};
+		});
+		this.msg = "What is __dirname?";
+		this.expected = "string";
+		done();
+	},
+	test: function (test) {
+		var self = this;
+
+		test.expect(2);
+		test.notEqual(this.msg, this.response, "Should not match");
+
+		this.worker.onmessage = function (ev) {
+			self.response = ev.data;
+			self.worker.terminate();
+			test.equal(self.expected, self.response, "Should be a match");
+			test.done();
+		};
+
+		this.worker.postMessage(this.msg);
+	}
+};
+
+exports["inline script - __filename"] = {
+	setUp: function (done) {
+		this.worker = new Worker(function () {
+			self.onmessage = function () {
+				postMessage(typeof __filename);
+			};
+		});
+		this.msg = "What is __filename?";
+		this.expected = "string";
+		done();
+	},
+	test: function (test) {
+		var self = this;
+
+		test.expect(2);
+		test.notEqual(this.msg, this.response, "Should not match");
+
+		this.worker.onmessage = function (ev) {
+			self.response = ev.data;
+			self.worker.terminate();
+			test.equal(self.expected, self.response, "Should be a match");
+			test.done();
+		};
+
+		this.worker.postMessage(this.msg);
+	}
+};
-- 
GitLab