diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 0000000000000000000000000000000000000000..fadf09dbf5fff23cc750fee5541bcbd2971ad20f --- /dev/null +++ b/.eslintrc @@ -0,0 +1,176 @@ +{ + "parser": "babel-eslint", + "rules": { + "strict": 0 + }, + "env": { + "browser": true, + "node": true, + "es6": true, + "amd": true + }, + "ecmaFeatures": { + "jsx": true, + "superInFunctions": false, + "classes": false, + "modules": [2] + }, + "rules": { + "block-scoped-var": [0], + "brace-style": [2, "1tbs", { "allowSingleLine": true }], + "camelcase": [0], + "comma-dangle": [2, "never"], + "comma-spacing": [2], + "comma-style": [2, "last"], + "complexity": [0, 11], + "consistent-return": [2], + "consistent-this": [0, "that"], + "curly": [2, "multi-line"], + "default-case": [2], + "dot-notation": [2, { "allowKeywords": true }], + "eol-last": [2], + "eqeqeq": [2], + "func-names": [0], + "func-style": [0, "declaration"], + "generator-star-spacing": [2, "after"], + "strict": [2, "always"], + "guard-for-in": [0], + "handle-callback-err": [0], + "key-spacing": [2, { "beforeColon": false, "afterColon": true }], + "quotes": [2, "double", "avoid-escape"], + "max-depth": [0, 4], + "max-len": [0, 80, 4], + "max-nested-callbacks": [0, 2], + "max-params": [0, 3], + "max-statements": [0, 10], + "new-parens": [2], + "new-cap": [2, { "capIsNewExceptions": ["ToInteger", "ToObject", "ToPrimitive", "ToUint32"] }], + "newline-after-var": [0], + "no-alert": [2], + "no-array-constructor": [2], + "no-bitwise": [0], + "no-caller": [2], + "no-catch-shadow": [2], + "no-cond-assign": [2], + "no-console": [0], + "no-constant-condition": [1], + "no-continue": [2], + "no-control-regex": [2], + "no-debugger": [2], + "no-delete-var": [2], + "no-div-regex": [0], + "no-dupe-args": [2], + "no-dupe-keys": [2], + "no-duplicate-case": [2], + "no-else-return": [0], + "no-empty": [2], + "no-empty-character-class": [2], + "no-empty-label": [2], + "no-eq-null": [0], + "no-eval": [2], + "no-ex-assign": [2], + "no-extend-native": [1], + "no-extra-bind": [2], + "no-extra-boolean-cast": [2], + "no-extra-parens": [0], + "no-extra-semi": [1], + "no-fallthrough": [2], + "no-floating-decimal": [2], + "no-func-assign": [2], + "no-implied-eval": [2], + "no-inline-comments": [0], + "no-inner-declarations": [2, "functions"], + "no-invalid-regexp": [2], + "no-irregular-whitespace": [2], + "no-iterator": [2], + "no-label-var": [2], + "no-labels": [2], + "no-lone-blocks": [2], + "no-lonely-if": [2], + "no-loop-func": [2], + "no-mixed-requires": [0, false], + "no-mixed-spaces-and-tabs": [2, false], + "no-multi-spaces": [2], + "no-multi-str": [2], + "no-multiple-empty-lines": [2, { "max": 2 }], + "no-native-reassign": [0], + "no-negated-in-lhs": [2], + "no-nested-ternary": [0], + "no-new": [2], + "no-new-func": [2], + "no-new-object": [2], + "no-new-require": [0], + "no-new-wrappers": [2], + "no-obj-calls": [2], + "no-octal": [2], + "no-octal-escape": [2], + "no-param-reassign": [2], + "no-path-concat": [0], + "no-plusplus": [0], + "no-process-env": [0], + "no-process-exit": [0], + "no-proto": [2], + "no-redeclare": [2], + "no-regex-spaces": [2], + "no-reserved-keys": [0], + "no-restricted-modules": [0], + "no-return-assign": [2], + "no-script-url": [2], + "no-self-compare": [0], + "no-sequences": [2], + "no-shadow": [2], + "no-shadow-restricted-names": [2], + "semi-spacing": [2], + "no-spaced-func": [2], + "no-sparse-arrays": [2], + "no-sync": [0], + "no-ternary": [0], + "no-throw-literal": [2], + "no-trailing-spaces": [2], + "no-undef": [2], + "no-undef-init": [2], + "no-undefined": [0], + "no-underscore-dangle": [0], + "no-unreachable": [2], + "no-unused-expressions": [2], + "no-unused-vars": [1, { "vars": "all", "args": "after-used" }], + "no-use-before-define": [2], + "no-void": [0], + "no-warning-comments": [0, { "terms": ["todo", "fixme", "xxx"], "location": "start" }], + "no-with": [2], + "no-extra-parens": [2], + "one-var": [0], + "operator-assignment": [0, "always"], + "operator-linebreak": [2, "after"], + "padded-blocks": [0], + "quote-props": [0], + "radix": [0], + "semi": [2], + "semi-spacing": [2, { "before": false, "after": true }], + "sort-vars": [0], + "space-after-keywords": [2, "always"], + "space-before-function-paren": [2, { "anonymous": "always", "named": "always" }], + "space-before-blocks": [0, "always"], + "space-in-brackets": [0, "never", { + "singleValue": true, + "arraysInArrays": false, + "arraysInObjects": false, + "objectsInArrays": true, + "objectsInObjects": true, + "propertyName": false + }], + "space-in-parens": [2, "never"], + "space-infix-ops": [2], + "space-return-throw-case": [2], + "space-unary-ops": [2, { "words": true, "nonwords": false }], + "spaced-line-comment": [0, "always"], + "strict": [1], + "use-isnan": [2], + "valid-jsdoc": [0], + "valid-typeof": [2], + "vars-on-top": [0], + "wrap-iife": [2], + "wrap-regex": [2], + "yoda": [2, "never", { "exceptRange": true }] + } +} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 123ae94d052f3fa853fdc228dcabf0c7fb65ce38..9940cd2c75d3428d03f189de5860fdcf35d28623 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,4 @@ build/Release # Dependency directory # https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git node_modules +.idea diff --git a/.npmignore b/.npmignore new file mode 100644 index 0000000000000000000000000000000000000000..b422e464d2734df4e5ddf0f69be9a9691d678662 --- /dev/null +++ b/.npmignore @@ -0,0 +1,9 @@ +/.idea/ +/node_modules/ +/src/ +/test/ +.eslintrc +.git +.gitignore +.travis.yml +Gruntfile.js diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..3ab14ce1ea947511fe8d6cc729933ed1fdfe13bc --- /dev/null +++ b/.travis.yml @@ -0,0 +1,5 @@ +language: node_js +node_js: + - "0.10" + - "0.12" + #- "iojs" \ No newline at end of file diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 0000000000000000000000000000000000000000..b66631ec0f271f02e6fa9722359bd59610897659 --- /dev/null +++ b/Gruntfile.js @@ -0,0 +1,42 @@ +module.exports = function (grunt) { + grunt.initConfig({ + pkg : grunt.file.readJSON("package.json"), + babel: { + options: { + sourceMap: false + }, + dist: { + files: [{ + expand: true, + cwd: "src", + src: ["*.js"], + dest: "lib", + ext: ".js" + }] + } + }, + eslint: { + target: ["src/*.js"] + }, + watch : { + js : { + files : ["src/*.js"], + tasks : "default" + }, + pkg: { + files : "package.json", + tasks : "default" + } + } + }); + + // tasks + grunt.loadNpmTasks("grunt-contrib-watch"); + grunt.loadNpmTasks("grunt-babel"); + grunt.loadNpmTasks("grunt-eslint"); + + // aliases + grunt.registerTask("test", ["eslint"]); + grunt.registerTask("build", ["babel"]); + grunt.registerTask("default", ["build", "test"]); +}; diff --git a/README.md b/README.md index 30df4c9dae9de726573a45460414440fc95f2128..4f7a38091087a1a6290b4029d9563f2081b7d9f2 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,37 @@ # tiny-worker -Tiny WebWorker for the Server +Tiny WebWorker for Server + +[](http://travis-ci.org/avoidwork/tiny-worker) + +## Example +```javascript +var Worker = require('tiny-worker'), + worker; + +worker = new Worker(function () { + onmessage = function (ev) { + postMessage(ev.data); + }; +}); + +worker.onmessage = function (ev) { + console.log(ev.data); +}; + +worker.postMessage("Hello world!"); // "Hello world!" is logged to console after bouncing through the Worker +``` + +## Properties +#### onmessage +Message handler, accepts an `Event` + +#### onerror +Error handler, accepts an `Event` + +## API +#### postMessage() +Broadcasts a message to the `Worker` + +## License +Copyright (c) 2015 Jason Mulligan +Licensed under the BSD-3 license diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000000000000000000000000000000000000..30dc184b9e41c1333360e814085ba006e17d670e --- /dev/null +++ b/lib/index.js @@ -0,0 +1,11 @@ +//const path = require("path"); + +"use strict"; + +function factory(arg) { + var fn = typeof arg === "function"; + + return fn; +} + +module.exports = factory; diff --git a/package.json b/package.json new file mode 100644 index 0000000000000000000000000000000000000000..da984fbc6d05e9039957c1041617c6a509c141d5 --- /dev/null +++ b/package.json @@ -0,0 +1,37 @@ +{ + "name": "tiny-worker", + "version": "0.1.0", + "description": "Tiny WebWorker for Server", + "main": "lib/tiny-worker.js", + "scripts": { + "test": "grunt test" + }, + "repository": { + "type": "git", + "url": "https://github.com/avoidwork/tiny-worker.git" + }, + "keywords": [ + "es6", + "unboxed", + "promise", + "deferred", + "defer" + ], + "author": "Jason Mulligan <jason.mulligan@avoidwork.com>", + "license": "BSD-3-Clause", + "bugs": { + "url": "https://github.com/avoidwork/tiny-worker/issues" + }, + "homepage": "https://github.com/avoidwork/tiny-worker", + "devDependencies": { + "babel-eslint": "^4.1.0", + "grunt": "^0.4.5", + "grunt-babel": "^5.0.0", + "grunt-cli": "^0.1.13", + "grunt-contrib-watch": "^0.6.1", + "grunt-eslint": "^17.1.0" + }, + "dependencies": { + "tiny-defer": "^1.0.2" + } +} diff --git a/src/index.js b/src/index.js new file mode 100644 index 0000000000000000000000000000000000000000..7c9cf2af9b4109f0cf58d80f00aa32a73df14744 --- /dev/null +++ b/src/index.js @@ -0,0 +1,9 @@ +//const path = require("path"); + +function factory (arg) { + let fn = typeof arg === "function"; + + return fn; +} + +module.exports = factory;