ember-cli 3.5.0 → 3.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.travis.yml CHANGED
@@ -10,11 +10,14 @@ node_js:
10
10
 
11
11
  branches:
12
12
  only:
13
+ - auto
13
14
  - master
14
15
  - beta
15
16
  - release
16
- - auto
17
- - /^greenkeeper.*$/
17
+ # release branches
18
+ - /^(?:release|lts)-\d+-\d+$/
19
+ # npm version tags
20
+ - /^v\d+\.\d+\.\d+/
18
21
 
19
22
  cache:
20
23
  yarn: true
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # ember-cli Changelog
2
2
 
3
+ ## v3.5.1
4
+
5
+ #### Blueprint Changes
6
+
7
+ - [`ember new` diff](https://github.com/ember-cli/ember-new-output/compare/v3.5.0...v3.5.1)
8
+ - [`ember addon` diff](https://github.com/ember-cli/ember-addon-output/compare/v3.5.0...v3.5.1)
9
+
10
+ #### Community Contributions
11
+
12
+ - [#8127](https://github.com/ember-cli/ember-cli/pull/8127) Fix eslint errors in new app [@Gaurav0](https://github.com/Gaurav0)
13
+ - [#8130](https://github.com/ember-cli/ember-cli/pull/8130) Use regex to parse /livereload urls [@rwjblue](https://github.com/rwjblue)
14
+ - [#8141](https://github.com/ember-cli/ember-cli/pull/8141) Use `debug` for `package-info-cache` messages [@stefanpenner](https://github.com/stefanpenner)
15
+ - [#8150](https://github.com/ember-cli/ember-cli/pull/8150) Fix `toTree()` with custom paths [@wagenet](https://github.com/wagenet)
16
+
17
+ Thank you to all who took the time to contribute!
18
+
19
+
3
20
  ## v3.5.0
4
21
 
5
22
  The following changes are required if you are upgrading from the previous
@@ -14,7 +14,7 @@ module.exports = function() {
14
14
  {
15
15
  name: 'ember-lts-2.16',
16
16
  env: {
17
- EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true }),
17
+ EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true })
18
18
  },
19
19
  npm: {
20
20
  devDependencies: {
@@ -26,7 +26,7 @@ module.exports = function() {
26
26
  {
27
27
  name: 'ember-lts-2.18',
28
28
  env: {
29
- EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true }),
29
+ EMBER_OPTIONAL_FEATURES: JSON.stringify({ 'jquery-integration': true })
30
30
  },
31
31
  npm: {
32
32
  devDependencies: {
@@ -8,6 +8,7 @@
8
8
 
9
9
  # dependencies
10
10
  /bower_components/
11
+ /node_modules/
11
12
 
12
13
  # misc
13
14
  /coverage/
@@ -20,6 +20,7 @@ module.exports = {
20
20
  // node files
21
21
  {
22
22
  files: [
23
+ '.eslintrc.js',
23
24
  '.template-lintrc.js',
24
25
  'ember-cli-build.js',<% if (blueprint !== 'app') { %>
25
26
  'index.js',<% } %>
@@ -39,7 +39,7 @@
39
39
  "ember-maybe-import-regenerator": "^0.1.6",
40
40
  "ember-qunit": "^3.4.1",
41
41
  "ember-resolver": "^5.0.1",
42
- "ember-source": "~3.5.0<% if (welcome) { %>",
42
+ "ember-source": "~3.5.1<% if (welcome) { %>",
43
43
  "ember-welcome-page": "^3.2.0<% } %>",
44
44
  "eslint-plugin-ember": "^5.2.0",
45
45
  "loader.js": "^4.7.0",
@@ -8,6 +8,7 @@
8
8
 
9
9
  # dependencies
10
10
  /bower_components/
11
+ /node_modules/
11
12
 
12
13
  # misc
13
14
  /coverage/
@@ -20,6 +20,7 @@ module.exports = {
20
20
  // node files
21
21
  {
22
22
  files: [
23
+ '.eslintrc.js',
23
24
  '.template-lintrc.js',
24
25
  'ember-cli-build.js',
25
26
  'index.js',
@@ -50,7 +50,7 @@ module.exports = function(environment) {
50
50
  }
51
51
 
52
52
  if (environment === 'production') {
53
-
53
+ // here you can enable a production-specific feature
54
54
  }
55
55
 
56
56
  return ENV;
@@ -26,6 +26,7 @@ const ConfigReplace = require('broccoli-config-replace');
26
26
  const mergeTrees = require('./merge-trees');
27
27
  const WatchedDir = require('broccoli-source').WatchedDir;
28
28
  const UnwatchedDir = require('broccoli-source').UnwatchedDir;
29
+ const BroccoliMergeTrees = require('broccoli-merge-trees');
29
30
 
30
31
  const merge = require('ember-cli-lodash-subset').merge;
31
32
  const defaultsDeep = require('ember-cli-lodash-subset').defaultsDeep;
@@ -1744,10 +1745,9 @@ class EmberApp {
1744
1745
  */
1745
1746
  toTree(additionalTrees) {
1746
1747
  let packagedTree;
1747
- let trees = this.toArray().concat(additionalTrees || []);
1748
1748
  let packageFn = this.options.package;
1749
1749
 
1750
- let fullTree = mergeTrees(trees, {
1750
+ let fullTree = mergeTrees(this.toArray(), {
1751
1751
  overwrite: true,
1752
1752
  annotation: 'Full Application',
1753
1753
  });
@@ -1762,7 +1762,14 @@ class EmberApp {
1762
1762
  }
1763
1763
  }
1764
1764
 
1765
- return this.addonPostprocessTree('all', packagedTree || this._legacyPackage(fullTree));
1765
+ if (!packagedTree) {
1766
+ packagedTree = this._legacyPackage(fullTree);
1767
+ }
1768
+
1769
+ let trees = [].concat(packagedTree, additionalTrees).filter(Boolean);
1770
+ let combinedPackageTree = new BroccoliMergeTrees(trees);
1771
+
1772
+ return this.addonPostprocessTree('all', combinedPackageTree);
1766
1773
  }
1767
1774
  }
1768
1775
 
@@ -11,6 +11,7 @@ const ErrorList = require('./error-list');
11
11
  const Errors = require('./errors');
12
12
  const PackageInfo = require('./package-info');
13
13
  const NodeModulesList = require('./node-modules-list');
14
+ const logger = require('heimdalljs-logger')('ember-cli:package-info-cache');
14
15
 
15
16
  let realFilePathCache;
16
17
  let realDirectoryPathCache;
@@ -178,29 +179,29 @@ class PackageInfoCache {
178
179
  return;
179
180
  }
180
181
 
181
- this.ui.writeWarnLine('');
182
+ logger.info('');
182
183
  let rootPath;
183
184
 
184
185
  if (obj instanceof PackageInfoCache) {
185
- this.ui.writeWarnLine('Top level errors:');
186
+ logger.info('Top level errors:');
186
187
  rootPath = this.realPath || '';
187
188
  } else {
188
189
  let typeName = (obj.project ? 'project' : 'addon');
189
190
 
190
- this.ui.writeWarnLine(`The 'package.json' file for the ${typeName} at ${obj.realPath}`);
191
+ logger.info(`The 'package.json' file for the ${typeName} at ${obj.realPath}`);
191
192
  rootPath = obj.realPath;
192
193
  }
193
194
 
194
195
  errorEntries.forEach(errorEntry => {
195
196
  switch (errorEntry.type) {
196
197
  case Errors.ERROR_PACKAGE_JSON_MISSING:
197
- this.ui.writeWarnLine(` does not exist`);
198
+ logger.info(` does not exist`);
198
199
  break;
199
200
  case Errors.ERROR_PACKAGE_JSON_PARSE:
200
- this.ui.writeWarnLine(` could not be parsed`);
201
+ logger.info(` could not be parsed`);
201
202
  break;
202
203
  case Errors.ERROR_EMBER_ADDON_MAIN_MISSING:
203
- this.ui.writeWarnLine(
204
+ logger.info(
204
205
  ` specifies a missing ember-addon 'main' file at relative path '${path.relative(
205
206
  rootPath,
206
207
  errorEntry.data
@@ -209,18 +210,18 @@ class PackageInfoCache {
209
210
  break;
210
211
  case Errors.ERROR_DEPENDENCIES_MISSING:
211
212
  if (errorEntry.data.length === 1) {
212
- this.ui.writeWarnLine(
213
+ logger.info(
213
214
  ` specifies a missing dependency '${errorEntry.data[0]}'`
214
215
  );
215
216
  } else {
216
- this.ui.writeWarnLine(` specifies some missing dependencies:`);
217
+ logger.info(` specifies some missing dependencies:`);
217
218
  errorEntry.data.forEach(dependencyName => {
218
- this.ui.writeWarnLine(` ${dependencyName}`);
219
+ logger.info(` ${dependencyName}`);
219
220
  });
220
221
  }
221
222
  break;
222
223
  case Errors.ERROR_NODEMODULES_ENTRY_MISSING:
223
- this.ui.writeWarnLine(` specifies a missing 'node_modules/${errorEntry.data}' directory`);
224
+ logger.info(` specifies a missing 'node_modules/${errorEntry.data}' directory`);
224
225
  break;
225
226
  }
226
227
  });
@@ -5,6 +5,7 @@ const ErrorList = require('./error-list');
5
5
  const Errors = require('./errors');
6
6
  const AddonInfo = require('../addon-info');
7
7
  const isAddon = require('../../utilities/is-addon');
8
+ const logger = require('heimdalljs-logger')('ember-cli:package-info-cache:package-info');
8
9
 
9
10
  function lexicographically(a, b) {
10
11
  const aIsString = typeof a.name === 'string';
@@ -336,24 +337,22 @@ class PackageInfo {
336
337
 
337
338
  let invalidPackages = this.getInvalidPackages(addonPackageList);
338
339
 
339
- let ui = this.cache.ui;
340
-
341
- if (invalidPackages.length > 0 && ui && ui.writeWarnLine) {
340
+ if (invalidPackages.length > 0) {
342
341
  let typeName = (this.project ? 'project' : 'addon');
343
342
 
344
- ui.writeWarnLine('');
345
- ui.writeWarnLine(`The 'package.json' file for the ${typeName} at ${this.realPath}`);
343
+ logger.info('');
344
+ logger.info(`The 'package.json' file for the ${typeName} at ${this.realPath}`);
346
345
 
347
346
  let relativePath;
348
347
 
349
348
  if (invalidPackages.length === 1) {
350
349
  relativePath = path.relative(this.realPath, invalidPackages[0].realPath);
351
- ui.writeWarnLine(` specifies an invalid, malformed or missing addon at relative path '${relativePath}'`);
350
+ logger.info(` specifies an invalid, malformed or missing addon at relative path '${relativePath}'`);
352
351
  } else {
353
- ui.writeWarnLine(' specifies invalid, malformed or missing addons at relative paths');
352
+ logger.info(' specifies invalid, malformed or missing addons at relative paths');
354
353
  invalidPackages.forEach(packageInfo => {
355
354
  let relativePath = path.relative(this.realPath, packageInfo.realPath);
356
- ui.writeWarnLine(` '${relativePath}'`);
355
+ logger.info(` '${relativePath}'`);
357
356
  });
358
357
  }
359
358
  }
@@ -8,6 +8,7 @@ const logger = require('heimdalljs-logger')('ember-cli:live-reload:');
8
8
  const fs = require('fs');
9
9
  const Promise = require('rsvp').Promise;
10
10
  const cleanBaseUrl = require('clean-base-url');
11
+ const isLiveReloadRequest = require('../../utilities/is-live-reload-request');
11
12
 
12
13
  function isNotRemoved(entryTuple) {
13
14
  let operation = entryTuple[0];
@@ -102,7 +103,7 @@ module.exports = class LiveReloadServer {
102
103
  // Reload on express server restarts
103
104
  this.app.on('restart', this.didRestart.bind(this));
104
105
  this.httpServer.on('upgrade', (req, socket, head) => {
105
- if (req.url.indexOf('/livereload') === 0) {
106
+ if (isLiveReloadRequest(req.url, this.liveReloadPrefix)) {
106
107
  this.liveReloadServer.websocketify(req, socket, head);
107
108
  }
108
109
  });
@@ -1,5 +1,8 @@
1
1
  'use strict';
2
2
 
3
+ // eslint-disable-next-line
4
+ const isLiveReloadRequest = require('../../../../utilities/is-live-reload-request');
5
+
3
6
  class ProxyServerAddon {
4
7
  constructor(project) {
5
8
  this.project = project;
@@ -32,7 +35,7 @@ class ProxyServerAddon {
32
35
  options.ui.writeLine(`Proxying to ${options.proxy}`);
33
36
 
34
37
  server.on('upgrade', (req, socket, head) => {
35
- this.handleProxiedRequest(req, socket, head, options, proxy);
38
+ this.handleProxiedRequest({ req, socket, head, options, proxy });
36
39
  });
37
40
 
38
41
  app.use(morgan('dev'));
@@ -40,8 +43,8 @@ class ProxyServerAddon {
40
43
  }
41
44
  }
42
45
 
43
- handleProxiedRequest(req, socket, head, options, proxy) {
44
- if (req.url.indexOf('/livereload') === -1) {
46
+ handleProxiedRequest({ req, socket, head, options, proxy }) {
47
+ if (!isLiveReloadRequest(req.url, options.liveReloadPrefix)) {
45
48
  options.ui.writeLine(`Proxying websocket to ${req.url}`);
46
49
  proxy.ws(req, socket, head);
47
50
  }
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ const cleanBaseUrl = require('clean-base-url');
4
+ const deprecate = require('./deprecate');
5
+
6
+ module.exports = function isLiveReloadRequest(url, liveReloadPrefix) {
7
+ let regex = /\/livereload$/gi;
8
+ if (url === `${cleanBaseUrl(liveReloadPrefix)}livereload`) {
9
+ return true;
10
+ } else if (regex.test(url)) {
11
+ //version needs to be updated according to the this PR (https://github.com/ember-cli/ember-cli-inject-live-reload/pull/55)
12
+ //in master of ember-cli-inject-live-reload.
13
+ deprecate(`Upgrade ember-cli-inject-live-reload version to 1.10.0 or above`, true);
14
+ return true;
15
+ }
16
+ return false;
17
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ember-cli",
3
- "version": "3.5.0",
3
+ "version": "3.5.1",
4
4
  "description": "Command line tool for developing ambitious ember.js apps",
5
5
  "keywords": [
6
6
  "app",