Files

Return to Package Diff Home.
Brought to you by Intrinsic.

Package Diff: ember-composable-helpers @ 2.2.0 .. 2.3.1

addon/index.js

@@ -9,32 +9,33 @@
export { default as FilterByHelper } from './helpers/filter-by';
export { default as FilterHelper } from './helpers/filter';
export { default as FindByHelper } from './helpers/find-by';
+export { default as FlattenHelper } from './helpers/flatten';
export { default as GroupByHelper } from './helpers/group-by';
+export { default as HasNextHelper } from './helpers/has-next';
+export { default as HasPreviousHelper } from './helpers/has-previous';
export { default as IncHelper } from './helpers/inc';
export { default as IntersectHelper } from './helpers/intersect';
export { default as InvokeHelper } from './helpers/invoke';
export { default as JoinHelper } from './helpers/join';
export { default as MapByHelper } from './helpers/map-by';
export { default as MapHelper } from './helpers/map';
+export { default as NextHelper } from './helpers/next';
+export { default as ObjectAtHelper } from './helpers/object-at';
export { default as OptionalHelper } from './helpers/optional';
-export { default as PipeHelper } from './helpers/pipe';
export { default as PipeActionHelper } from './helpers/pipe-action';
+export { default as PipeHelper } from './helpers/pipe';
+export { default as PreviousHelper } from './helpers/previous';
+export { default as QueueHelper } from './helpers/queue';
export { default as RangeHelper } from './helpers/range';
export { default as ReduceHelper } from './helpers/reduce';
export { default as RejectByHelper } from './helpers/reject-by';
export { default as RepeatHelper } from './helpers/repeat';
+export { default as ReverseHelper } from './helpers/reverse';
export { default as ShuffleHelper } from './helpers/shuffle';
+export { default as SliceHelper } from './helpers/slice';
export { default as SortByHelper } from './helpers/sort-by';
export { default as TakeHelper } from './helpers/take';
-export { default as ToggleHelper } from './helpers/toggle';
export { default as ToggleActionHelper } from './helpers/toggle-action';
+export { default as ToggleHelper } from './helpers/toggle';
export { default as UnionHelper } from './helpers/union';
export { default as WithoutHelper } from './helpers/without';
-export { default as FlattenHelper } from './helpers/flatten';
-export { default as ObjectAtHelper } from './helpers/object-at';
-export { default as SliceHelper } from './helpers/slice';
-export { default as NextHelper } from './helpers/next';
-export { default as PreviousHelper } from './helpers/previous';
-export { default as HasNextHelper } from './helpers/has-next';
-export { default as HasPreviousHelper } from './helpers/has-previous';
-export { default as QueueHelper } from './helpers/queue';

index.js

@@ -4,6 +4,7 @@
var path = require('path');
var intersection = require('./lib/intersection');
var difference = require('./lib/difference');
+var StripBadReexports = require('./lib/strip-bad-reexports');
module.exports = {
name: require('./package').name,
@@ -24,11 +25,15 @@
this.blacklist = this.generateBlacklist(config);
},
- treeForAddon: function() {
- // see: https://github.com/ember-cli/ember-cli/issues/4463
- var tree = this._super.treeForAddon.apply(this, arguments);
- var moduleRegexp = '(^modules\/)?' + this.name + '\/helpers\/';
- return this.filterHelpers(tree, new RegExp(moduleRegexp, 'i'));
+ treeForAddon: function(tree) {
+ tree = this.filterHelpers(tree, new RegExp(/^helpers\//, 'i'));
+ tree = new StripBadReexports(tree, [`index.js`]);
+ return this._super.treeForAddon.call(this, tree);
+ },
+
+ treeForApp: function(tree) {
+ tree = this.filterHelpers(tree, new RegExp(/^helpers\//, 'i'));
+ return this._super.treeForApp.call(this, tree);
},
filterHelpers: function(tree, regex) {
@@ -38,7 +43,7 @@
// exit early if no opts defined
if ((!whitelist || whitelist.length === 0) && (!blacklist || blacklist.length === 0)) {
- return new Funnel(tree);
+ return tree;
}
return new Funnel(tree, {

lib/strip-bad-reexports.js

@@ -0,0 +1,53 @@
+/* eslint-env node */
+const resolve = require('resolve');
+const { transform } = require('@babel/core');
+const Funnel = require('broccoli-funnel');
+const { writeFileSync, readFileSync, existsSync, unlinkSync } = require('fs');
+const { join } = require('path');
+
+
+module.exports = class StripBadReexports extends Funnel {
+ constructor(tree, files) {
+ super(tree);
+ this.filesToStrip = files;
+ }
+ build() {
+ super.build();
+ for (let file of this.filesToStrip) {
+ let srcFile = join(this.inputPaths[0], file);
+ if (!existsSync(srcFile)) {
+ continue;
+ }
+ let src = readFileSync(srcFile, 'utf8');
+ let plugins = [[stripBadReexportsTransform, { resolveBase: this.outputPath }]];
+ let destFile = join(this.outputPath, file);
+ unlinkSync(destFile);
+ writeFileSync(destFile, transform(src, { plugins }).code);
+ }
+ }
+ shouldLinkRoots() {
+ // We want to force funnel to copy things rather than just linking the whole
+ // directory, because we're planning to mutate it.
+ return false;
+ }
+}
+
+function stripBadReexportsTransform() {
+ return {
+ visitor: {
+ ExportNamedDeclaration(path, state) {
+ if (
+ path.node.source &&
+ path.node.source.type === 'StringLiteral'
+ ) {
+ try {
+ resolve.sync(path.node.source.value, { basedir: state.opts.resolveBase });
+ } catch (err) {
+ path.remove();
+ }
+ }
+ },
+ },
+ };
+}
+

package.json

@@ -1,6 +1,6 @@
{
"name": "ember-composable-helpers",
- "version": "2.2.0",
+ "version": "2.3.1",
"description": "Composable helpers for Ember",
"scripts": {
"build": "ember build",
@@ -75,8 +75,10 @@
"test": "tests"
},
"dependencies": {
- "broccoli-funnel": "^1.0.1",
- "ember-cli-babel": "^7.1.0"
+ "@babel/core": "^7.0.0",
+ "broccoli-funnel": "2.0.1",
+ "ember-cli-babel": "^7.1.0",
+ "resolve": "^1.10.0"
},
"ember-addon": {
"configPath": "tests/dummy/config"