diff --git a/.editorconfig b/.editorconfig index 5d5dea4..219985c 100644 --- a/.editorconfig +++ b/.editorconfig @@ -13,21 +13,8 @@ insert_final_newline = true indent_style = space indent_size = 2 -[*.js] -indent_style = space -indent_size = 2 - [*.hbs] -indent_style = space -indent_size = 2 - -[*.css] -indent_style = space -indent_size = 2 - -[*.html] -indent_style = space -indent_size = 2 +insert_final_newline = false -[*.md] +[*.{diff,md}] trim_trailing_whitespace = false diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..2873e2f --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,13 @@ +module.exports = { + root: true, + parserOptions: { + ecmaVersion: 2017, + sourceType: 'module' + }, + extends: 'eslint:recommended', + env: { + browser: true + }, + rules: { + } +}; diff --git a/.gitignore b/.gitignore index 2319a3a..8fa39a6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# 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 @@ -6,12 +6,18 @@ # dependencies /node_modules -/bower_components/* +/bower_components # misc /.sass-cache /connect.lock /coverage/* /libpeerconnection.log -npm-debug.log -testem.log \ No newline at end of file +npm-debug.log* +yarn-error.log +testem.log + +# ember-try +.node_modules.ember-try/ +bower.json.ember-try +package.json.ember-try 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..889b2bf 100644 --- a/.npmignore +++ b/.npmignore @@ -1,14 +1,16 @@ -bower_components/ -tests/ -tmp/ -dist/ - +/bower_components +/config/ember-try.js +/dist +/tests +/tmp +**/.gitkeep .bowerrc .editorconfig .ember-cli +.gitignore +.eslintrc.js +.watchmanconfig .travis.yml -.npmignore -**/.gitkeep bower.json -Brocfile.js -testem.json +ember-cli-build.js +testem.js diff --git a/.travis.yml b/.travis.yml index 5d44f72..d04ff8a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,41 @@ --- 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 + - "4" sudo: false +dist: trusty + +addons: + chrome: stable cache: directories: - - node_modules + - $HOME/.npm + +env: + # 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.8 + - EMBER_TRY_SCENARIO=ember-lts-2.12 + - EMBER_TRY_SCENARIO=ember-release + - EMBER_TRY_SCENARIO=ember-beta + - EMBER_TRY_SCENARIO=ember-canary + - EMBER_TRY_SCENARIO=ember-default matrix: fast_finish: true + allow_failures: + - 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" - -install: - - npm install -g bower - - npm install - - bower install + - npm config set spin false + - npm install -g npm@4 + - npm --version script: - - npm test + # 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/.watchmanconfig b/.watchmanconfig new file mode 100644 index 0000000..e7834e3 --- /dev/null +++ b/.watchmanconfig @@ -0,0 +1,3 @@ +{ + "ignore_dirs": ["tmp", "dist"] +} diff --git a/Brocfile.js b/Brocfile.js deleted file mode 100644 index 042a64d..0000000 --- a/Brocfile.js +++ /dev/null @@ -1,21 +0,0 @@ -/* jshint node: true */ -/* global require, module */ - -var EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); - -var app = new EmberAddon(); - -// Use `app.import` to add additional libraries to the generated -// output files. -// -// If you need to use different assets in different -// environments, specify an object as the first parameter. That -// object's keys should be the environment name and the values -// should be the asset to use in that environment. -// -// If the library that you are including contains AMD or ES6 -// modules that you would like to import into your application -// please specify an object with the list of modules as keys -// along with the exports of each module as its value. - -module.exports = app.toTree(); diff --git a/bower.json b/bower.json index 194c3e4..d2bbd10 100644 --- a/bower.json +++ b/bower.json @@ -1,19 +1,5 @@ { "name": "ember-cli-remote-inspector", "dependencies": { - "ember": "components/ember#canary", - "ember-cli-shims": "ember-cli/ember-cli-shims#0.0.3", - "ember-cli-test-loader": "ember-cli-test-loader#0.1.3", - "ember-data": "1.0.0-beta.17", - "ember-load-initializers": "ember-cli/ember-load-initializers#0.1.4", - "ember-qunit": "0.3.3", - "ember-qunit-notifications": "0.0.7", - "ember-resolver": "~0.1.15", - "jquery": "^1.11.1", - "loader.js": "ember-cli/loader.js#3.2.0", - "qunit": "~1.17.1" - }, - "resolutions": { - "ember": "canary" } -} \ No newline at end of file +} diff --git a/config/ember-try.js b/config/ember-try.js index 83dab0f..21f6079 100644 --- a/config/ember-try.js +++ b/config/ember-try.js @@ -1,34 +1,82 @@ +/* eslint-env node */ module.exports = { scenarios: [ { - name: 'default', - dependencies: { } + name: 'ember-lts-2.8', + bower: { + dependencies: { + 'ember': 'components/ember#lts-2-8' + }, + resolutions: { + 'ember': 'lts-2-8' + } + }, + npm: { + devDependencies: { + 'ember-source': null + } + } + }, + { + name: 'ember-lts-2.12', + npm: { + devDependencies: { + 'ember-source': '~2.12.0' + } + } }, { name: 'ember-release', - dependencies: { - 'ember': 'components/ember#release' + bower: { + dependencies: { + 'ember': 'components/ember#release' + }, + resolutions: { + 'ember': 'release' + } }, - resolutions: { - 'ember': 'release' + npm: { + devDependencies: { + 'ember-source': null + } } }, { name: 'ember-beta', - dependencies: { - 'ember': 'components/ember#beta' + bower: { + dependencies: { + 'ember': 'components/ember#beta' + }, + resolutions: { + 'ember': 'beta' + } }, - resolutions: { - 'ember': 'beta' + npm: { + devDependencies: { + 'ember-source': null + } } }, { name: 'ember-canary', - dependencies: { - 'ember': 'components/ember#canary' + bower: { + dependencies: { + 'ember': 'components/ember#canary' + }, + resolutions: { + 'ember': 'canary' + } }, - resolutions: { - 'ember': 'canary' + npm: { + devDependencies: { + 'ember-source': null + } + } + }, + { + name: 'ember-default', + npm: { + devDependencies: {} } } ] diff --git a/config/environment.js b/config/environment.js index 0dfaed4..012a412 100644 --- a/config/environment.js +++ b/config/environment.js @@ -1,3 +1,4 @@ +/* eslint-env node */ 'use strict'; module.exports = function(/* environment, appConfig */) { diff --git a/ember-cli-build.js b/ember-cli-build.js new file mode 100644 index 0000000..156e23f --- /dev/null +++ b/ember-cli-build.js @@ -0,0 +1,19 @@ +/* eslint-env node */ +'use strict'; + +const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); + +module.exports = function(defaults) { + let app = new EmberAddon(defaults, { + // Add options here + }); + + /* + 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 + */ + + return app.toTree(); +}; diff --git a/index.js b/index.js index 9c871ef..9b2cb96 100644 --- a/index.js +++ b/index.js @@ -1,4 +1,4 @@ -var remoteDebugServer = require('./addon/debug-server'); +var remoteDebugServer = require('./lib/debug-server'); module.exports = { name: 'ember-cli-remote-inspector', @@ -10,7 +10,7 @@ module.exports = { remoteDebugScheme: '', remoteDebugPort: 30820, remoteConsole: false - } + }; return ENV; }, @@ -19,7 +19,7 @@ module.exports = { return '' + ''; }, @@ -83,4 +83,4 @@ module.exports = { return this.getRemoteDebugSocketScript(port, host, scheme) + this.getEmberDebugScript(port, host, scheme); } } -}; \ No newline at end of file +}; diff --git a/addon/debug-server.js b/lib/debug-server.js similarity index 83% rename from addon/debug-server.js rename to lib/debug-server.js index 7da6bdd..9e0717c 100644 --- a/addon/debug-server.js +++ b/lib/debug-server.js @@ -1,8 +1,9 @@ -/* jshint node: true */ +// /* jshint node: true */ // Websocket server which handles data to/from the inspector var fs = require('fs'); var express = require('express'); var remoteDebugger = express(); +var path = require('path'); var remoteDebugServer = require('http').Server(remoteDebugger); var remoteDebugSocket = require('socket.io')(remoteDebugServer); @@ -10,13 +11,14 @@ var inspectorSocket = null; // Load the inspector html from the node_modules folder // (it should be there because we list it as a dependency) -var inspectorPath = __dirname + '/../node_modules/ember-inspector/dist_websocket/'; +var inspectorPackagePath = path.dirname(require.resolve('ember-inspector/package.json')); +var inspectorPath = path.resolve(inspectorPackagePath, 'dist', 'websocket'); // Server static files for the inspector remoteDebugger.use('/', express.static(inspectorPath, {index:false})); // Serve the inspector itself -var inspectorHtml = fs.readFileSync(inspectorPath + 'index.html').toString(); +var inspectorHtml = fs.readFileSync(path.resolve(inspectorPath, 'index.html')).toString(); remoteDebugger.get('/', function(req, res) { res.end(inspectorHtml); }); @@ -34,7 +36,7 @@ module.exports = { */ start: function(port, host) { remoteDebugServer.listen(port, host, function(){ - console.log('Ember inspector available on http://' + host + ':' + port + '.'); + console.log('Ember inspector available on http://' + host + ':' + port); }); remoteDebugSocket.on('connect', function(socket){ diff --git a/package.json b/package.json index fa6efbf..1f3f5d3 100644 --- a/package.json +++ b/package.json @@ -2,45 +2,56 @@ "name": "ember-cli-remote-inspector", "version": "0.1.0", "description": "Use Ember Inspector on apps running on mobile devices.", + "keywords": [ + "ember-addon" + ], + "license": "MIT", + "author": "", "directories": { "doc": "doc", "test": "tests" }, + "repository": "https://github.com/joostdevries/ember-cli-remote-inspector", "scripts": { - "start": "ember server", "build": "ember build", - "test": "node_modules/mocha/bin/mocha tests/acceptance.js" - }, - "repository": "https://github.com/joostdevries/ember-cli-remote-inspector", - "engines": { - "node": ">= 0.10.0" + "start": "ember server", + "test": "node_modules/mocha/bin/mocha spec/acceptance.js" }, - "author": "Joost de Vries", - "license": "MIT", "dependencies": { - "socket.io":"1.3.5", - "ember-inspector": "1.8.0", - "express": "^4.8.5" + "ember-cli-babel": "^6.3.0", + "ember-inspector": "^2.1.1", + "express": "^4.8.5", + "socket.io": "1.3.5" }, "devDependencies": { - "broccoli-asset-rev": "^2.0.2", - "ember-cli": "0.2.5", - "ember-cli-app-version": "0.3.3", - "ember-cli-content-security-policy": "0.4.0", - "ember-cli-dependency-checker": "^1.0.0", - "ember-cli-htmlbars": "0.7.6", - "ember-cli-ic-ajax": "0.1.1", - "ember-cli-inject-live-reload": "^1.3.0", - "ember-cli-qunit": "0.3.13", - "ember-cli-uglify": "^1.0.1", + "broccoli-asset-rev": "^2.4.5", + "ember-ajax": "^3.0.0", + "ember-cli": "~2.15.1", + "ember-cli-dependency-checker": "^2.0.0", + "ember-cli-eslint": "^4.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.0.0", + "ember-cli-shims": "^1.1.0", + "ember-cli-sri": "^2.1.0", + "ember-cli-uglify": "^1.2.0", + "ember-disable-prototype-extensions": "^1.1.2", + "ember-export-application-global": "^2.0.0", + "ember-load-initializers": "^1.0.0", + "ember-resolver": "^4.0.0", + "ember-source": "~2.15.0", + "ember-welcome-page": "^3.0.0", + "loader.js": "^4.2.3", "rsvp": "latest", "mocha": "latest", "request": "latest" }, - "keywords": [ - "ember-addon" - ], + "engines": { + "node": "^4.5 || 6.* || >= 7.*" + }, "ember-addon": { + "configPath": "tests/dummy/config", "before": "serve-files-middleware" } -} \ No newline at end of file +} diff --git a/tests/acceptance.js b/spec/acceptance.js similarity index 99% rename from tests/acceptance.js rename to spec/acceptance.js index b9a6229..fa1f9c8 100644 --- a/tests/acceptance.js +++ b/spec/acceptance.js @@ -81,4 +81,4 @@ describe('ember inspector', function(){ done(); }); }); -}); \ No newline at end of file +}); diff --git a/tests/helpers/ember-cli.js b/spec/helpers/ember-cli.js similarity index 100% rename from tests/helpers/ember-cli.js rename to spec/helpers/ember-cli.js diff --git a/testem.js b/testem.js new file mode 100644 index 0000000..a40a530 --- /dev/null +++ b/testem.js @@ -0,0 +1,19 @@ +/* eslint-env node */ +module.exports = { + test_page: 'tests/index.html?hidepassed', + disable_watching: true, + launch_in_ci: [ + 'Chrome' + ], + launch_in_dev: [ + 'Chrome' + ], + browser_args: { + Chrome: [ + '--disable-gpu', + '--headless', + '--remote-debugging-port=9222', + '--window-size=1440,900' + ] + } +}; 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/.eslintrc.js b/tests/.eslintrc.js new file mode 100644 index 0000000..fbf2555 --- /dev/null +++ b/tests/.eslintrc.js @@ -0,0 +1,5 @@ +module.exports = { + env: { + embertest: true + } +}; diff --git a/tests/.jshintrc b/tests/.jshintrc deleted file mode 100644 index 29a9477..0000000 --- a/tests/.jshintrc +++ /dev/null @@ -1,55 +0,0 @@ -{ - "predef": [ - "document", - "window", - "location", - "setTimeout", - "$", - "-Promise", - "define", - "describe", - "before", - "after", - "it", - "console", - "visit", - "exists", - "fillIn", - "click", - "keyEvent", - "triggerEvent", - "find", - "findWithAssert", - "wait", - "DS", - "andThen", - "currentURL", - "currentPath", - "currentRouteName" - ], - "node": false, - "browser": false, - "boss": true, - "curly": false, - "debug": false, - "devel": false, - "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 -} diff --git a/tests/dummy/app/app.js b/tests/dummy/app/app.js index 037963b..c15f935 100644 --- a/tests/dummy/app/app.js +++ b/tests/dummy/app/app.js @@ -1,15 +1,12 @@ import Ember from 'ember'; -import Resolver from 'ember/resolver'; -import loadInitializers from 'ember/load-initializers'; +import Resolver from './resolver'; +import loadInitializers from 'ember-load-initializers'; import config from './config/environment'; -var App; - -Ember.MODEL_FACTORY_INJECTIONS = true; - -App = Ember.Application.extend({ +const App = Ember.Application.extend({ modulePrefix: config.modulePrefix, - Resolver: Resolver + podModulePrefix: config.podModulePrefix, + Resolver }); loadInitializers(App, config.modulePrefix); 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"}} diff --git a/tests/dummy/app/resolver.js b/tests/dummy/app/resolver.js new file mode 100644 index 0000000..2fb563d --- /dev/null +++ b/tests/dummy/app/resolver.js @@ -0,0 +1,3 @@ +import Resolver from 'ember-resolver'; + +export default Resolver; diff --git a/tests/dummy/app/router.js b/tests/dummy/app/router.js index cef554b..cdc2578 100644 --- a/tests/dummy/app/router.js +++ b/tests/dummy/app/router.js @@ -1,8 +1,9 @@ import Ember from 'ember'; import config from './config/environment'; -var Router = Ember.Router.extend({ - location: config.locationType +const Router = Ember.Router.extend({ + location: config.locationType, + rootURL: config.rootURL }); Router.map(function() { diff --git a/tests/dummy/config/environment.js b/tests/dummy/config/environment.js index c59bcd5..251bdcb 100644 --- a/tests/dummy/config/environment.js +++ b/tests/dummy/config/environment.js @@ -1,15 +1,20 @@ -/* jshint node: true */ +/* eslint-env node */ +'use strict'; module.exports = function(environment) { - var ENV = { + let ENV = { modulePrefix: 'dummy', - environment: environment, - baseURL: '/', + environment, + rootURL: '/', locationType: 'auto', EmberENV: { FEATURES: { // Here you can enable experimental features on an ember canary build // e.g. 'with-controller': true + }, + EXTEND_PROTOTYPES: { + // Prevent Ember Data from overriding Date.parse. + Date: false } }, @@ -29,7 +34,6 @@ module.exports = function(environment) { if (environment === 'test') { // Testem prefers this... - ENV.baseURL = '/'; ENV.locationType = 'none'; // keep test console output quieter diff --git a/tests/dummy/config/targets.js b/tests/dummy/config/targets.js new file mode 100644 index 0000000..df7664c --- /dev/null +++ b/tests/dummy/config/targets.js @@ -0,0 +1,9 @@ +/* eslint-env node */ +module.exports = { + browsers: [ + 'ie 9', + 'last 1 Chrome versions', + 'last 1 Firefox versions', + 'last 1 Safari versions' + ] +}; diff --git a/tests/helpers/destroy-app.js b/tests/helpers/destroy-app.js new file mode 100644 index 0000000..c3d4d1a --- /dev/null +++ b/tests/helpers/destroy-app.js @@ -0,0 +1,5 @@ +import Ember from 'ember'; + +export default function destroyApp(application) { + Ember.run(application, 'destroy'); +} diff --git a/tests/helpers/module-for-acceptance.js b/tests/helpers/module-for-acceptance.js new file mode 100644 index 0000000..5a1a583 --- /dev/null +++ b/tests/helpers/module-for-acceptance.js @@ -0,0 +1,23 @@ +import { module } from 'qunit'; +import Ember from 'ember'; +import startApp from '../helpers/start-app'; +import destroyApp from '../helpers/destroy-app'; + +const { RSVP: { resolve } } = Ember; + +export default function(name, options = {}) { + module(name, { + beforeEach() { + this.application = startApp(); + + if (options.beforeEach) { + return options.beforeEach.apply(this, arguments); + } + }, + + afterEach() { + let afterEach = options.afterEach && options.afterEach.apply(this, arguments); + return resolve(afterEach).then(() => destroyApp(this.application)); + } + }); +} diff --git a/tests/helpers/resolver.js b/tests/helpers/resolver.js index 28f4ece..b208d38 100644 --- a/tests/helpers/resolver.js +++ b/tests/helpers/resolver.js @@ -1,7 +1,7 @@ -import Resolver from 'ember/resolver'; +import Resolver from '../../resolver'; import config from '../../config/environment'; -var resolver = Resolver.create(); +const resolver = Resolver.create(); resolver.namespace = { modulePrefix: config.modulePrefix, diff --git a/tests/helpers/start-app.js b/tests/helpers/start-app.js index 16cc7c3..9a605eb 100644 --- a/tests/helpers/start-app.js +++ b/tests/helpers/start-app.js @@ -1,19 +1,15 @@ import Ember from 'ember'; import Application from '../../app'; -import Router from '../../router'; import config from '../../config/environment'; export default function startApp(attrs) { - var application; - - var attributes = Ember.merge({}, config.APP); + let attributes = Ember.merge({}, config.APP); attributes = Ember.merge(attributes, attrs); // use defaults, but you can override; - Ember.run(function() { - application = Application.create(attributes); + return Ember.run(() => { + let application = Application.create(attributes); application.setupForTesting(); application.injectTestHelpers(); + return application; }); - - return application; } diff --git a/tests/index.html b/tests/index.html index 8fea6fe..5209b85 100644 --- a/tests/index.html +++ b/tests/index.html @@ -7,27 +7,27 @@ - {{content-for 'head'}} - {{content-for 'test-head'}} + {{content-for "head"}} + {{content-for "test-head"}} - - - + + + - {{content-for 'head-footer'}} - {{content-for 'test-head-footer'}} + {{content-for "head-footer"}} + {{content-for "test-head-footer"}} + {{content-for "body"}} + {{content-for "test-body"}} - {{content-for 'body'}} - {{content-for 'test-body'}} - - - - - + + + + + - {{content-for 'body-footer'}} - {{content-for 'test-body-footer'}} + {{content-for "body-footer"}} + {{content-for "test-body-footer"}} diff --git a/tests/test-helper.js b/tests/test-helper.js index e6cfb70..f219659 100644 --- a/tests/test-helper.js +++ b/tests/test-helper.js @@ -2,5 +2,7 @@ import resolver from './helpers/resolver'; import { setResolver } from 'ember-qunit'; +import { start } from 'ember-cli-qunit'; setResolver(resolver); +start();