npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

ember-watson

v0.9.2

Published

A young Ember Doctor to help you fix your code.

Downloads

3,094

Readme

ember-watson

A young Ember Doctor.

Build Status

Getting Started

ember-watson can be used as an Ember CLI addon, it will extend the available list of commands.

To install, run ember install ember-watson and you are good to go.

Commands

Prototype Extensions

ember watson:convert-prototype-extensions

Convert computed properties and observers to not use prototype extensions. You can specify appPath (defaults to app/) in case you want to convert code somewhere different to app/.

For more info about this please refer to the following PR Encourage decorator-style Ember.computed/Ember.observer

Resource Router Mapping

ember watson:convert-resource-router-mapping <routerPath>

Converts this.resource('user') to this.route('user', {resetNamespace: true }) in app/router.js.

Helps with the deprecation added in ember.js/11517.

Methodify (ES2015)

ember watson:methodify <path>

Converts methods in file to ES6 method syntax.

Find Overloaded CPS

ember watson:find-overloaded-cps <path>

Helps you locate all the places where your source may trigger the "Using the same function as getter and setter" deprecation.

Replace Needs with Injection

ember watson:replace-needs-with-injection <path>

Convert needs declarations the individual properties using the new Ember.inject.controller() feature. Also convert any uses of the controllers hash to use the newly defined properties.

Remove usages of Ember.K

ember watson:remove-ember-k <mode>

Replaces all usages of Ember.K with just plain functions. The <mode> argument is mandatory and can be --empty or --return-this. Invoked with --empty it will replace Ember.K with an empty function, which is more idiomatic JS. Invoked with --return-empty it will replace it by a function that returns this so allows chaining. This command runs automatically in all folders that might contain ember code, so no <path> or --dry-run options are available.

Tests: Upgrade QUnit Tests

ember watson:upgrade-qunit-tests

This command will traverse your tests directory fixing your QUnit test to use the 2.0 compatible output (see ember-cli#3197).

The following are some of the changes:

  • Add import { module, test } from 'qunit' if ember-qunit is not used. You need to use ember-cli-qunit-v0.3.8 which includes QUnit's shims. See ember-cli#3245
  • Import skip if used in tests: import { module,test, skip } from 'qunit'
  • Add assert to callback function in test.
  • Use assert inside test, e.g. ok becomes assert.ok.
  • Use beforeEach and afterEach instead of setup and teardown inside module.

Tests: Use Destroy App Helper

ember watson:use-destroy-app-helper <path>

Convert (qunit or mocha flavored) acceptance tests to utilize the destroyApp helper introduced in Ember CLI 1.13.9.

Tests: Convert andThen style async tests to async/await

ember watson:convert-tests-to-async-await <path>

Convert (qunit or mocha flavored) acceptance tests to utilize async/await

// before:
it('can visit subroutes', function(done) {
  visit('/');

  andThen(function() {
    expect(find('h2').text()).to.be.empty;
  });

  visit('/foo');

  andThen(function() {
    expect(find('h2').text()).to.be.equal('this is an acceptance test');
    done();
  });
});

// after:
it('can visit subroutes', async function() {
  await visit('/');

  expect(find('h2').text()).to.be.empty;

  await visit('/foo');

  expect(find('h2').text()).to.be.equal('this is an acceptance test');
});

Ember Data: Async Relationships Default

ember watson:convert-ember-data-async-false-relationships

In Ember Data 2.0 relationships will be asynchronous by default. Sync relationships will still be supported but you will need to manually opt into them by setting { async: false } on your relationships. This task adds an explicit async: false options to all belongsTo and hasMany that either have no options or its options does not contain an explicit async value.

For more information, read ember-data 1.13 release notes

Ember Data: Model Lookups

ember watson:convert-ember-data-model-lookups

This changes the way model lookups happen when working with Ember Data. When using hasMany or belongsTo, the first argument will become a dasherized string. Here's some examples:

// before, using a camelCase string
export default DS.Model.extend({
  postComments: DS.hasMany('postComment', {async: true})
});

// after
export default DS.Model.extend({
  postComments: DS.hasMany('post-comment', {async: true})
});

// before, using a variable or looking up on App.
export default DS.Model.extend({
  postComments: DS.hasMany(PostComment, {async: true})
});

// after
export default DS.Model.extend({
  postComments: DS.hasMany('post-comment', {async: true})
});

Ember Data: Remove isNewSerializerAPI

ember watson:remove-ember-data-is-new-serializer-api

Removes isNewSerializerAPI literals in your serializer code. You should use this after you make sure all your serializers are compatible with the new serializer API in 1.13. You can find more information on how to upgrade serializers here.

// before
export default DS.RESTSerializer.extend({
  isNewSerializerAPI: true
});

// after
export default DS.RESTSerializer.extend({});

Specifying a file or path

You can run any of the commands passing as argument the path, file or regular expression of the files that you want to transform.

ember watson:upgrade-qunit-tests tests/unit*
ember watson:upgrade-qunit-tests tests/unit/model-test.js
ember watson:upgrade-qunit-tests tests

The same is possible with ember watson:convert-prototype-extensions and ember watson:convert-ember-data-model-lookups.

Using without Ember CLI

ember-watson can be used without Ember CLI too, just do npm install -g ember-watson.

Then you can use the commands from above, just with the altered syntax.

ember watson:upgrade-qunit-tests becomes ember-watson upgrade-qunit-tests

For additional help use ember-watson -h.

License

ember-watson is MIT Licensed.