diff --git a/.bowerrc b/.bowerrc deleted file mode 100644 index 959e169..0000000 --- a/.bowerrc +++ /dev/null @@ -1,4 +0,0 @@ -{ - "directory": "bower_components", - "analytics": false -} diff --git a/.editorconfig b/.editorconfig index 47c5438..219985c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,22 +13,8 @@ insert_final_newline = true indent_style = space indent_size = 2 -[*.js] -indent_style = space -indent_size = 2 - [*.hbs] insert_final_newline = false -indent_style = space -indent_size = 2 - -[*.css] -indent_style = space -indent_size = 2 - -[*.html] -indent_style = space -indent_size = 2 [*.{diff,md}] trim_trailing_whitespace = false diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..d9807d3 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,16 @@ +# unconventional js +/blueprints/*/files/ +/vendor/ + +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ + +# misc +/coverage/ + +# ember-try +/.node_modules.ember-try/ diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..aaec459 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,53 @@ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 2017, + sourceType: 'module' + }, + plugins: [ + 'ember' + ], + extends: [ + 'eslint:recommended', + 'plugin:ember/recommended' + ], + env: { + browser: true + }, + globals: { + 'FastClick': true + }, + rules: { + }, + overrides: [ + // node files + { + files: [ + 'ember-cli-build.js', + 'index.js', + 'testem.js', + 'blueprints/*/index.js', + 'config/**/*.js', + 'tests/dummy/config/**/*.js' + ], + excludedFiles: [ + 'addon/**', + 'addon-test-support/**', + 'app/**', + 'tests/dummy/app/**' + ], + parserOptions: { + sourceType: 'script', + ecmaVersion: 2015 + }, + env: { + browser: false, + node: true + }, + plugins: ['node'], + rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, { + // add your custom rules and overrides for node files here + }) + } + ] +}; diff --git a/.gitignore b/.gitignore index 86fceae..29c9bc6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,23 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. +# See https://help.github.com/ignore-files/ for more about ignoring files. # compiled output -/dist -/tmp +/dist/ +/tmp/ # dependencies -/node_modules -/bower_components +/bower_components/ +/node_modules/ # misc /.sass-cache /connect.lock -/coverage/* +/coverage/ /libpeerconnection.log -npm-debug.log -testem.log +/npm-debug.log* +/testem.log +/yarn-error.log + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/.jscsrc b/.jscsrc deleted file mode 100644 index e24512d..0000000 --- a/.jscsrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "preset": "ember-suave" -} diff --git a/.jshintrc b/.jshintrc deleted file mode 100644 index 08096ef..0000000 --- a/.jshintrc +++ /dev/null @@ -1,32 +0,0 @@ -{ - "predef": [ - "document", - "window", - "-Promise" - ], - "browser": true, - "boss": true, - "curly": true, - "debug": false, - "devel": true, - "eqeqeq": true, - "evil": true, - "forin": false, - "immed": false, - "laxbreak": false, - "newcap": true, - "noarg": true, - "noempty": false, - "nonew": false, - "nomen": false, - "onevar": false, - "plusplus": false, - "regexp": false, - "undef": true, - "sub": true, - "strict": false, - "white": false, - "eqnull": true, - "esnext": true, - "unused": true -} diff --git a/.npmignore b/.npmignore index 49996f5..f4a79da 100644 --- a/.npmignore +++ b/.npmignore @@ -1,14 +1,22 @@ -bower_components/ -tests/ -tmp/ -dist/ - +/bower_components +/config/ember-try.js +/dist +/tests +/tmp +**/.gitkeep .bowerrc .editorconfig .ember-cli +.eslintrc.js +.gitignore +.watchmanconfig .travis.yml -.npmignore -**/.gitkeep bower.json -Brocfile.js -testem.json +ember-cli-build.js +testem.js +yarn.lock + +# ember-try +.node_modules.ember-try/ +bower.json.ember-try +package.json.ember-try diff --git a/.travis.yml b/.travis.yml index 8197d31..0207afa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,19 +1,33 @@ --- language: node_js node_js: - - "0.12" + # we recommend testing addons with the same minimum supported node version as Ember CLI + # so that your addon works for all apps + - "6" sudo: false +dist: trusty + +addons: + chrome: stable cache: - directories: - - node_modules + yarn: true env: - - EMBER_TRY_SCENARIO=default - - EMBER_TRY_SCENARIO=ember-release - - EMBER_TRY_SCENARIO=ember-beta - - EMBER_TRY_SCENARIO=ember-canary + global: + # See https://git.io/vdao3 for details. + - JOBS=1 + matrix: + # we recommend new addons test the current and previous LTS + # as well as latest stable release (bonus points to beta/canary) + - EMBER_TRY_SCENARIO=ember-lts-2.12 + - EMBER_TRY_SCENARIO=ember-lts-2.16 + - EMBER_TRY_SCENARIO=ember-lts-2.18 + - EMBER_TRY_SCENARIO=ember-release + - EMBER_TRY_SCENARIO=ember-beta + - EMBER_TRY_SCENARIO=ember-canary + - EMBER_TRY_SCENARIO=ember-default matrix: fast_finish: true @@ -21,14 +35,14 @@ matrix: - env: EMBER_TRY_SCENARIO=ember-canary before_install: - - export PATH=/usr/local/phantomjs-2.0.0/bin:$PATH - - "npm config set spin false" - - "npm install -g npm@^2" + - curl -o- -L https://yarnpkg.com/install.sh | bash + - export PATH=$HOME/.yarn/bin:$PATH install: - - npm install -g bower - - npm install - - bower install + - yarn install --no-lockfile --non-interactive script: - - ember try $EMBER_TRY_SCENARIO test + - yarn lint:js + # Usually, it's ok to finish the test scenario without reverting + # to the addon's original dependency state, skipping "cleanup". + - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO --skip-cleanup diff --git a/LICENSE.md b/LICENSE.md index b6c71bd..198f6da 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2014 +Copyright (c) 2018 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/addon/initializers/fastclick.js b/addon/initializers/fastclick.js new file mode 100644 index 0000000..0664474 --- /dev/null +++ b/addon/initializers/fastclick.js @@ -0,0 +1,13 @@ +import { schedule } from '@ember/runloop'; + +export function initialize() { + if (typeof FastBoot === 'undefined') { + schedule('afterRender', function() { + FastClick.attach('body'); + }); + } +} + +export default { + initialize +}; diff --git a/app/initializers/ember-cli-fastclick.js b/app/initializers/ember-cli-fastclick.js deleted file mode 100644 index fa16ceb..0000000 --- a/app/initializers/ember-cli-fastclick.js +++ /dev/null @@ -1,17 +0,0 @@ -import Ember from 'ember'; - -const { run: { schedule } } = Ember; - -let EmberCliFastclickInitializer = { - name: 'fastclick', - - initialize() { - if (typeof FastBoot === 'undefined') { - schedule('afterRender', function() { - FastClick.attach(document.body); - }); - } - } -}; - -export default EmberCliFastclickInitializer; diff --git a/app/initializers/fastclick.js b/app/initializers/fastclick.js new file mode 100644 index 0000000..90ece4c --- /dev/null +++ b/app/initializers/fastclick.js @@ -0,0 +1 @@ +export { default, initialize } from 'ember-cli-fastclick/initializers/fastclick'; diff --git a/bower.json b/bower.json deleted file mode 100644 index d800401..0000000 --- a/bower.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "name": "ember-cli-fastclick", - "dependencies": { - "ember": "~2.5.1", - "ember-cli-shims": "0.1.1", - "ember-cli-test-loader": "0.2.2", - "ember-qunit-notifications": "0.1.0" - } -} diff --git a/config/ember-try.js b/config/ember-try.js index 3e88bc6..fb22311 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -1,36 +1,71 @@ -/*jshint node:true*/ -module.exports = { - scenarios: [ - { - name: 'default', - dependencies: { } - }, - { - name: 'ember-release', - dependencies: { - 'ember': 'components/ember#release' - }, - resolutions: { - 'ember': 'release' - } - }, - { - name: 'ember-beta', - dependencies: { - 'ember': 'components/ember#beta' - }, - resolutions: { - 'ember': 'beta' - } - }, - { - name: 'ember-canary', - dependencies: { - 'ember': 'components/ember#canary' - }, - resolutions: { - 'ember': 'canary' - } - } - ] +'use strict'; + +const getChannelURL = require('ember-source-channel-url'); + +module.exports = function() { + return Promise.all([ + getChannelURL('release'), + getChannelURL('beta'), + getChannelURL('canary') + ]).then((urls) => { + return { + useYarn: true, + scenarios: [ + { + name: 'ember-lts-2.12', + npm: { + devDependencies: { + 'ember-source': '~2.12.0' + } + } + }, + { + name: 'ember-lts-2.16', + npm: { + devDependencies: { + 'ember-source': '~2.16.0' + } + } + }, + { + name: 'ember-lts-2.18', + npm: { + devDependencies: { + 'ember-source': '~2.18.0' + } + } + }, + { + name: 'ember-release', + npm: { + devDependencies: { + 'ember-source': urls[0] + } + } + }, + { + name: 'ember-beta', + npm: { + devDependencies: { + 'ember-source': urls[1] + } + } + }, + { + name: 'ember-canary', + npm: { + devDependencies: { + 'ember-source': urls[2] + } + } + }, + { + name: 'ember-default', + npm: { + devDependencies: {} + } + } + ] + }; + }); }; diff --git a/config/environment.js b/config/environment.js index 28a787b..0dfaed4 100644 --- a/config/environment.js +++ b/config/environment.js @@ -1,4 +1,3 @@ -/*jshint node:true*/ 'use strict'; module.exports = function(/* environment, appConfig */) { diff --git a/ember-cli-build.js b/ember-cli-build.js index c8c48f8..dc5a39e 100644 --- a/ember-cli-build.js +++ b/ember-cli-build.js @@ -1,14 +1,14 @@ -/*jshint node:true*/ -/* global require, module */ -var EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); +'use strict'; + +const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); module.exports = function(defaults) { - var app = new EmberAddon(defaults, { + let app = new EmberAddon(defaults, { // Add options here }); /* - This build file specifes the options for the dummy test app of this + This build file specifies the options for the dummy test app of this addon, located in `/tests/dummy` This build file does *not* influence how the addon or the app using it behave. You most likely want to be modifying `./index.js` or app's build file diff --git a/index.js b/index.js index 77bc652..d887d55 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,3 @@ -/* jshint node: true */ 'use strict'; var path = require('path'); @@ -9,15 +8,15 @@ var map = require('broccoli-stew').map; module.exports = { name: 'ember-cli-fastclick', - included: function(app) { + included(app) { this._super.included(app); app.import(this.treePaths.vendor + '/fastclick/fastclick.js'); }, - treeForVendor: function(vendorTree) { + treeForVendor(defaultTree) { var trees = []; - if (vendorTree) { - trees.push(vendorTree); + if (defaultTree) { + trees.push(defaultTree); } var libPath = path.dirname(require.resolve('fastclick')); var fastclickLib = new broccoliFunnel(libPath, { diff --git a/package.json b/package.json index ce948c7..77ea5aa 100644 --- a/package.json +++ b/package.json @@ -1,42 +1,7 @@ { "name": "ember-cli-fastclick", - "version": "1.4.1", - "directories": { - "doc": "doc", - "test": "tests" - }, - "scripts": { - "build": "ember build", - "start": "ember server", - "test": "ember try:testall" - }, - "repository": "https://www.github.com/ember-mobile/ember-cli-fastclick", - "engines": { - "node": ">= 0.10.0" - }, - "author": "Moritz Lawitschka", - "license": "MIT", - "devDependencies": { - "broccoli-asset-rev": "^2.4.2", - "ember-ajax": "0.7.1", - "ember-cli": "2.5.0", - "ember-cli-app-version": "^1.0.0", - "ember-cli-dependency-checker": "^1.2.0", - "ember-cli-htmlbars": "^1.0.5", - "ember-cli-htmlbars-inline-precompile": "^0.3.1", - "ember-cli-inject-live-reload": "^1.4.0", - "ember-cli-qunit": "^1.4.1", - "ember-cli-release": "1.0.0-beta.1", - "ember-cli-sri": "^2.1.0", - "ember-cli-uglify": "^1.2.0", - "ember-disable-prototype-extensions": "^1.1.0", - "ember-export-application-global": "^1.0.5", - "ember-load-initializers": "^0.5.1", - "ember-resolver": "^2.0.3", - "ember-suave": "2.0.1", - "loader.js": "^4.0.1" - }, - "description": "Drop-in FastClick support for Ember CLI apps.", + "version": "1.5.0", + "description": "Drop-in FastClick support for Ember CLI apps", "keywords": [ "ember-addon", "ember", @@ -47,13 +12,60 @@ "touch", "delay" ], + "repository": "https://www.github.com/ember-mobile/ember-cli-fastclick", + "license": "MIT", + "author": { + "name": "Moritz Lawitschka", + "email": "me@moritzlawitschka.de" + }, + "directories": { + "doc": "doc", + "test": "tests" + }, + "scripts": { + "build": "ember build", + "lint:js": "eslint .", + "start": "ember serve", + "test": "ember test", + "test:all": "ember try:each" + }, "dependencies": { - "broccoli-funnel": "^1.0.1", - "broccoli-merge-trees": "^1.1.1", - "broccoli-stew": "^1.0.1", - "ember-cli-babel": "^5.1.6", + "broccoli-funnel": "^2.0.1", + "broccoli-merge-trees": "^3.0.1", + "broccoli-stew": "^2.0.0", + "ember-cli-babel": "^6.6.0", "fastclick": "^1.0.6" }, + "devDependencies": { + "broccoli-asset-rev": "^2.7.0", + "ember-ajax": "^3.0.0", + "ember-cli": "~3.3.0", + "ember-cli-dependency-checker": "^2.0.0", + "ember-cli-eslint": "^4.2.1", + "ember-cli-fastboot": "^2.0.0", + "ember-cli-htmlbars": "^2.0.1", + "ember-cli-htmlbars-inline-precompile": "^1.0.0", + "ember-cli-inject-live-reload": "^1.4.1", + "ember-cli-qunit": "^4.3.2", + "ember-cli-shims": "^1.2.0", + "ember-cli-sri": "^2.1.0", + "ember-cli-uglify": "^2.0.0", + "ember-disable-prototype-extensions": "^1.1.2", + "ember-export-application-global": "^2.0.0", + "ember-load-initializers": "^1.1.0", + "ember-maybe-import-regenerator": "^0.1.6", + "ember-resolver": "^4.0.0", + "ember-source": "~3.3.0", + "ember-source-channel-url": "^1.0.1", + "ember-try": "^0.2.23", + "eslint-plugin-ember": "^5.0.0", + "eslint-plugin-node": "^6.0.1", + "loader.js": "^4.2.3", + "qunit-dom": "^0.6.2" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + }, "ember-addon": { "configPath": "tests/dummy/config" } diff --git a/testem.js b/testem.js new file mode 100644 index 0000000..726d187 --- /dev/null +++ b/testem.js @@ -0,0 +1,25 @@ +module.exports = { + test_page: 'tests/index.html?hidepassed', + disable_watching: true, + launch_in_ci: [ + 'Chrome' + ], + launch_in_dev: [ + 'Chrome' + ], + browser_args: { + Chrome: { + ci: [ + // --no-sandbox is needed when running Chrome inside a container + process.env.CI ? '--no-sandbox' : null, + '--headless', + '--disable-gpu', + '--disable-dev-shm-usage', + '--disable-software-rasterizer', + '--mute-audio', + '--remote-debugging-port=0', + '--window-size=1440,900' + ].filter(Boolean) + } + } +}; diff --git a/testem.json b/testem.json deleted file mode 100644 index 0f35392..0000000 --- a/testem.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "framework": "qunit", - "test_page": "tests/index.html?hidepassed", - "disable_watching": true, - "launch_in_ci": [ - "PhantomJS" - ], - "launch_in_dev": [ - "PhantomJS", - "Chrome" - ] -} diff --git a/tests/dummy/app/app.js b/tests/dummy/app/app.js index 8b234d6..b3b2bd6 100644 --- a/tests/dummy/app/app.js +++ b/tests/dummy/app/app.js @@ -1,13 +1,9 @@ -import Ember from 'ember'; -import Resolver from 'ember/resolver'; -import loadInitializers from 'ember/load-initializers'; +import Application from '@ember/application'; +import Resolver from './resolver'; +import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -let App; - -Ember.MODEL_FACTORY_INJECTIONS = true; - -App = Ember.Application.extend({ +const App = Application.extend({ modulePrefix: config.modulePrefix, podModulePrefix: config.podModulePrefix, Resolver diff --git a/tests/dummy/app/index.html b/tests/dummy/app/index.html index 1c49d36..61400b2 100644 --- a/tests/dummy/app/index.html +++ b/tests/dummy/app/index.html @@ -7,19 +7,19 @@ - {{content-for 'head'}} + {{content-for "head"}} - - + + - {{content-for 'head-footer'}} + {{content-for "head-footer"}}
- {{content-for 'body'}} + {{content-for "body"}} - - + + - {{content-for 'body-footer'}} + {{content-for "body-footer"}}