Skip to content

Commit

Permalink
Merge pull request #2 from rwu823/0.1.3
Browse files Browse the repository at this point in the history
[0.1.3]
  • Loading branch information
rwu823 committed Dec 31, 2016
2 parents d26589c + 76c587e commit 705aa78
Show file tree
Hide file tree
Showing 8 changed files with 4,852 additions and 130 deletions.
17 changes: 3 additions & 14 deletions .babelrc
Original file line number Diff line number Diff line change
@@ -1,16 +1,5 @@
{
"presets": [
"es2015",
"stage-0"
],
"plugins": [
"transform-strict-mode"
],
"env": {
"production": {
"plugins": [
// "transform-remove-console"
]
}
}
"presets": [["env", {

}]]
}
8 changes: 2 additions & 6 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,8 @@
language: node_js

node_js:
- "v4"
- "v5"
- "v6"

before_install:
- npm install -g npm
- v6
- v7

after_success:
- npm run coveralls
58 changes: 16 additions & 42 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,63 +6,37 @@
"scripts": {
"dev": "webpack-dev-server --inline --hot",
"build": "NODE_ENV=production babel-node ./scripts/build",
"test": "nyc ava -v",
"test.report": "nyc report --reporter=html && open coverage/index.html",
"coveralls": "nyc report --reporter=text-lcov | coveralls"
"test": "jest --coverage",
"coveralls": "cat ./coverage/lcov.info | coveralls"
},
"ava": {
"require": [
"babel-core/register"
],
"files": [
"test/*.spec.js"
]
},
"nyc": {},
"keywords": [
"event",
"delegate",
"delegate-to",
"delegate to",
"to",
"DOM",
"match",
"matchs"
"matches"
],
"author": "Rocky Wu <rocky823@gmail.com>",
"license": "MIT",
"devDependencies": {
"ava": "^0.15.2",
"babel-cli": "^6.8.0",
"babel-core": "^6.8.0",
"babel-eslint": "^6.0.2",
"babel-loader": "^6.2.4",
"babel-polyfill": "^6.8.0",
"babel-preset-es2015": "^6.6.0",
"babel-preset-stage-0": "^6.5.0",
"chalk": "^1.1.3",
"babel-preset-env": "^1.1.4",
"babelrc-rollup": "^3.0.0",
"coveralls": "^2.11.9",
"del": "^2.2.0",
"eslint": "^2.13.0",
"gulp": "^3.9.1",
"gulp-rename": "^1.2.2",
"gulp-uglify": "^1.5.3",
"html-webpack-plugin": "^2.21.0",
"jsdom": "^9.2.1",
"nyc": "^6.4.4",
"webpack": "^1.13.0",
"webpack-dev-server": "^1.14.1"
},
"directories": {
"test": "test"
},
"dependencies": {},
"repository": {
"type": "git",
"url": "git+https://github.com/rwu823/delegate-to.git"
},
"bugs": {
"url": "https://github.com/rwu823/delegate-to/issues"
"gulp-size": "^2.1.0",
"html-webpack-plugin": "^2.24.1",
"jest-cli": "^18.1.0",
"rollup": "^0.39.2",
"rollup-plugin-babel": "^2.7.1",
"rollup-plugin-commonjs": "^7.0.0",
"rollup-plugin-uglify": "^1.0.1",
"shelljs": "^0.7.5",
"webpack": "2.2.0-rc.3",
"webpack-dev-server": "2.2.0-rc.0"
},
"homepage": "https://github.com/rwu823/delegate-to#readme"
"repository": "git@github.com:rwu823/delegate-to.git"
}
76 changes: 53 additions & 23 deletions scripts/build.js
Original file line number Diff line number Diff line change
@@ -1,32 +1,62 @@
import gu from 'gulp'
import rename from 'gulp-rename'
import uglify from 'gulp-uglify'
import pkg from '../package.json'
import del from 'del'
import webpack from 'webpack'
import webpackConf from '../webpack.config'
import fs from 'fs'
import 'shelljs/global'

import babel from 'rollup-plugin-babel'
import commonjs from 'rollup-plugin-commonjs'
import babelrc from 'babelrc-rollup'
import uglify from 'rollup-plugin-uglify'

const rollup = require('rollup')

del.sync('npm')
webpack(webpackConf, (er, stats)=> {
console.log(stats.toString({
colors: true,
}))
import gu from 'gulp'
import size from 'gulp-size'

gu.src('npm/dist/*.js')
.pipe(uglify())
.pipe(rename({
suffix: '.min'
}))
.pipe(gu.dest('npm/dist'))
rm('-rf', 'npm')
mkdir('-p', 'npm/dist/')
cp('-R', 'README.md', 'npm')

;(()=> {
const {devDependencies, ava, nyc, scripts, ...pkgJSON} = pkg
rollup.rollup({
entry: 'src/index.js',
plugins: [
babel(babelrc({
addExternalHelpersPlugin: false,
})),
commonjs(),
],
}).then((bundle) => {
const dest = `npm/dist/${pkg.name}.js`
bundle.write({
dest,
format: 'umd',
moduleName: 'DelegateTo',
})

fs.writeFile(`npm/package.json`, JSON.stringify(pkgJSON, null, 2))
})()
return dest
})
.then((entry) => {
delete pkg.devDependencies
delete pkg.scripts

fs.writeFile(`npm/package.json`, JSON.stringify(pkg, null, 2))

gu.src('README.md')
.pipe(gu.dest('npm'))
rollup.rollup({
entry,
plugins: [
uglify()
],
}).then((bundle) => {
bundle.write({
dest: `npm/${pkg.main}`,
format: 'umd',
moduleName: 'DelegateTo',
})

gu.src('npm/**')
.pipe(size({
pretty: true,
showFiles: true,
gzip: true,
}))
})
})
1 change: 0 additions & 1 deletion src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,4 @@ function delegate (selector, dispatchEvent) {
}
}


module.exports = delegate
62 changes: 27 additions & 35 deletions test/delegate-to.spec.js
Original file line number Diff line number Diff line change
@@ -1,59 +1,51 @@
import test from 'ava'
import jsdom from 'jsdom'
import delegate from '../src'

function setup() {
return new Promise((resolve, reject) => {
jsdom.env(`
<body>
<div id="click-me">
<h1 id="h1">Click me</h1>
<ul>
<li id="li1">item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
</div>
</body>`, (er, window) =>{
resolve(window)
})
})
}

let win, click, text
test.before(async ()=> {
win = await setup()

click = win.document.createEvent('HTMLEvents')
click.initEvent('click', true, false)
const win = window
const click = document.createEvent('HTMLEvents')
click.initEvent('click', true, false)

beforeEach(() => {
document.body.innerHTML = `
<div id="click-me">
<h1 id="h1">Click me</h1>
<ul>
<li id="li1">item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
</div>
`
})

test('delegate li, should output nothing', assert => {
it('delegate li, should output nothing', () => {
let text
win['click-me'].addEventListener('click', delegate('li', e=> {
text = e.target.textContent.trim()
}), false)

win['click-me'].dispatchEvent(click)
assert.is(text, undefined)
expect(text).toBe(undefined)

win['h1'].dispatchEvent(click)
assert.is(text, undefined)
window.h1.dispatchEvent(click)
expect(text).toBe(undefined)
})

test('delegate li, should output `item 1`', assert => {
win['click-me'].addEventListener('click', delegate('#li', e=> {
it('delegate li, should output `item 1`', () => {
let text
win['click-me'].addEventListener('click', delegate('#li1', e=> {
text = e.delegateTarget.textContent.trim()
}), false)

win['li1'].dispatchEvent(click)
assert.is(text, 'item 1')
expect(text).toBe('item 1')
})

test('delegate li with custom condition, should output `item 1`', assert => {
test('delegate li with custom condition, should output `item 1`', () => {
let text
win['click-me'].addEventListener('click', delegate(target => target.id === 'li1', e=> {
text = e.delegateTarget.textContent.trim()
}), false)

win['li1'].dispatchEvent(click)
assert.is(text, 'item 1')
expect(text).toBe('item 1')
})
24 changes: 15 additions & 9 deletions webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,16 @@

const webpack = require('webpack')
const pkg = require('./package.json')
const isDev = process.env.NODE_ENV !== 'production'
const { NODE_ENV } = process.env
const isDev = !NODE_ENV
const isProd = NODE_ENV === 'production'
const HtmlWebpackPlugin = require('html-webpack-plugin')

module.exports = {
entry: {
[pkg.name]: isDev
? ['babel-polyfill', './dev/client.js']
: ['./src/index.js'],
? ['./dev/client']
: ['./src'],
},
output: {
path: `${__dirname}/npm/dist`,
Expand All @@ -21,15 +23,19 @@ module.exports = {
loaders: [
{
test: /\.jsx?$/,
exclude: /(node_modules|bower_components)/,
loader: 'babel',
loader: 'babel-loader',
}
]
},
plugins: isDev ? [new HtmlWebpackPlugin({
title: pkg.name,
template: './dev/index.html',
})] : [],
plugins: [
...isDev ? [
new HtmlWebpackPlugin({
title: pkg.name,
template: './dev/index.html',
})
] : [
],
],
watch: isDev ,
devtool: isDev ? 'eval' : ''
}

0 comments on commit 705aa78

Please sign in to comment.