Skip to content

Commit 3991f47

Browse files
committed
More robust
1 parent 0aaa76c commit 3991f47

29 files changed

Lines changed: 5190 additions & 176 deletions

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# See http://help.github.com/ignore-files/ for more about ignoring files.
1+
# See https://help.github.com/ignore-files/ for more about ignoring files.
22

33
# compiled output
44
/dist
@@ -13,5 +13,5 @@
1313
/connect.lock
1414
/coverage/*
1515
/libpeerconnection.log
16-
npm-debug.log
16+
npm-debug.log*
1717
testem.log

.jshintrc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,6 @@
2727
"strict": false,
2828
"white": false,
2929
"eqnull": true,
30-
"esnext": true,
30+
"esversion": 6,
3131
"unused": true
3232
}

.travis.yml

Lines changed: 25 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,40 @@
11
---
22
language: node_js
3+
node_js:
4+
- "4"
35

46
sudo: false
57

68
cache:
79
directories:
8-
- node_modules
10+
- $HOME/.npm
11+
- $HOME/.cache # includes bowers cache
12+
13+
env:
14+
# we recommend testing LTS's and latest stable release (bonus points to beta/canary)
15+
- EMBER_TRY_SCENARIO=ember-lts-2.4
16+
- EMBER_TRY_SCENARIO=ember-lts-2.8
17+
- EMBER_TRY_SCENARIO=ember-release
18+
- EMBER_TRY_SCENARIO=ember-beta
19+
- EMBER_TRY_SCENARIO=ember-canary
20+
- EMBER_TRY_SCENARIO=ember-default
21+
22+
matrix:
23+
fast_finish: true
24+
allow_failures:
25+
- env: EMBER_TRY_SCENARIO=ember-canary
926

1027
before_install:
11-
- "npm config set spin false"
12-
- "npm install -g npm@^2"
28+
- npm config set spin false
29+
- npm install -g bower phantomjs-prebuilt
30+
- bower --version
31+
- phantomjs --version
1332

1433
install:
15-
- npm install -g bower
1634
- npm install
1735
- bower install
1836

1937
script:
20-
- npm test
38+
# Usually, it's ok to finish the test scenario without reverting
39+
# to the addon's original dependency state, skipping "cleanup".
40+
- node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO test --skip-cleanup

LICENSE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
The MIT License (MIT)
22

3-
Copyright (c) 2015
3+
Copyright (c) 2017
44

55
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:
66

README.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ npm install --save-dev ember-inject-script
1414

1515
For example, lets configure Typekit.
1616

17-
`loadScript` returns a promise, so we can simply load in the Typekit JS and, when it's ready, call `Typekit.load()`:
17+
`loadScript` returns a promise, so we can simply load in the Typekit JS and, when it's ready, call `Typekit.load()`. If an error occurs fetching the script, we can catch the error and handle it:
1818

1919
```javascript
2020
/* global Typekit */
@@ -24,11 +24,11 @@ import config from 'your-app/config/environment';
2424

2525
export default {
2626
name: 'typekit',
27-
initialize: function() {
28-
var url = "//use.typekit.net/"+config.typekitID+".js";
29-
injectScript(url).then(function() {
30-
Typekit.load();
31-
});
27+
initialize() {
28+
let url = "//use.typekit.net/"+config.typekitID+".js";
29+
injectScript(url)
30+
.then(() => Typekit.load())
31+
.catch((error) => this.handleError(error));
3232
}
3333
};
3434
```

addon/utils/inject-script.js

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,26 @@
11
import Ember from 'ember';
22

3-
export default function injectScript(src) {
4-
return new Ember.RSVP.Promise(function(resolve) {
5-
var script = document.createElement('script');
6-
script.type = 'text/javascript';
7-
script.async = true;
8-
script.src = src;
9-
script.onload = function() { resolve(); };
10-
document.getElementsByTagName('head')[0].appendChild(script);
3+
let removeListenersAndElement = function(element) {
4+
Ember.$(element).off('load');
5+
Ember.$(element).off('error');
6+
element.parentNode.removeChild(element);
7+
};
8+
9+
export default function(url) {
10+
return new Ember.RSVP.Promise((resolve, reject) => {
11+
let script = document.createElement('script');
12+
document.head.appendChild(script);
13+
Ember.$(script).on('load', () => {
14+
removeListenersAndElement(script);
15+
resolve();
16+
});
17+
Ember.$(script).on('error', (error) => {
18+
removeListenersAndElement(script);
19+
reject(error);
20+
});
21+
script.asnyc = true;
22+
script.type = 'text/javascript';
23+
script.classList.add('test__promise-script');
24+
script.src = url;
1125
});
12-
}
26+
}

bower.json

Lines changed: 2 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,6 @@
11
{
22
"name": "ember-inject-script",
33
"dependencies": {
4-
"handlebars": "~1.3.0",
5-
"jquery": "^1.11.1",
6-
"ember": "1.8.1",
7-
"ember-data": "1.0.0-beta.12",
8-
"ember-resolver": "~0.1.11",
9-
"loader.js": "stefanpenner/loader.js#1.0.1",
10-
"ember-cli-shims": "stefanpenner/ember-cli-shims#0.0.3",
11-
"ember-cli-test-loader": "rwjblue/ember-cli-test-loader#0.0.4",
12-
"ember-load-initializers": "stefanpenner/ember-load-initializers#0.0.2",
13-
"ember-qunit": "0.1.8",
14-
"ember-qunit-notifications": "0.0.4",
15-
"qunit": "~1.15.0"
4+
"ember": "2.11.0"
165
}
17-
}
6+
}

config/ember-try.js

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
/*jshint node:true*/
2+
module.exports = {
3+
scenarios: [
4+
{
5+
name: 'ember-lts-2.4',
6+
bower: {
7+
dependencies: {
8+
'ember': 'components/ember#lts-2-4'
9+
},
10+
resolutions: {
11+
'ember': 'lts-2-4'
12+
}
13+
},
14+
npm: {
15+
devDependencies: {
16+
'ember-source': null
17+
}
18+
}
19+
},
20+
{
21+
name: 'ember-lts-2.8',
22+
bower: {
23+
dependencies: {
24+
'ember': 'components/ember#lts-2-8'
25+
},
26+
resolutions: {
27+
'ember': 'lts-2-8'
28+
}
29+
},
30+
npm: {
31+
devDependencies: {
32+
'ember-source': null
33+
}
34+
}
35+
},
36+
{
37+
name: 'ember-release',
38+
bower: {
39+
dependencies: {
40+
'ember': 'components/ember#release'
41+
},
42+
resolutions: {
43+
'ember': 'release'
44+
}
45+
},
46+
npm: {
47+
devDependencies: {
48+
'ember-source': null
49+
}
50+
}
51+
},
52+
{
53+
name: 'ember-beta',
54+
bower: {
55+
dependencies: {
56+
'ember': 'components/ember#beta'
57+
},
58+
resolutions: {
59+
'ember': 'beta'
60+
}
61+
},
62+
npm: {
63+
devDependencies: {
64+
'ember-source': null
65+
}
66+
}
67+
},
68+
{
69+
name: 'ember-canary',
70+
bower: {
71+
dependencies: {
72+
'ember': 'components/ember#canary'
73+
},
74+
resolutions: {
75+
'ember': 'canary'
76+
}
77+
},
78+
npm: {
79+
devDependencies: {
80+
'ember-source': null
81+
}
82+
}
83+
},
84+
{
85+
name: 'ember-default',
86+
npm: {
87+
devDependencies: {}
88+
}
89+
}
90+
]
91+
};

config/environment.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
/*jshint node:true*/
12
'use strict';
23

34
module.exports = function(/* environment, appConfig */) {

ember-cli-build.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*jshint node:true*/
2+
/* global require, module */
3+
var EmberAddon = require('ember-cli/lib/broccoli/ember-addon');
4+
5+
module.exports = function(defaults) {
6+
var app = new EmberAddon(defaults, {
7+
// Add options here
8+
});
9+
10+
/*
11+
This build file specifies the options for the dummy test app of this
12+
addon, located in `/tests/dummy`
13+
This build file does *not* influence how the addon or the app using it
14+
behave. You most likely want to be modifying `./index.js` or app's build file
15+
*/
16+
17+
return app.toTree();
18+
};

0 commit comments

Comments
 (0)