aurelia / framework

The Aurelia 1 framework entry point, bringing together all the required sub-modules of Aurelia.
MIT License
11.75k stars 625 forks source link

@bindable({}); before @bindable name = ''; will misbehave #661

Closed dragoscirjan closed 7 years ago

dragoscirjan commented 7 years ago

I do not know if this is a babel bug or an Aurelia one, so I submitted it to both projects (babel#4887).

Input Code

    @bindable({
        name:'offeringsUrl',
        attribute:'offerings-url',
        changeHandler:'offeringsUrlChanged',
        defaultBindingMode: bindingMode.oneWay,
        defaultValue: {}
    });
    @bindable pcProductView = 'grid';

// in this case `pcProductView` will take the definition of `offeringUrl`

    @bindable({
        name:'offeringsUrl',
        attribute:'offerings-url',
        changeHandler:'offeringsUrlChanged',
        defaultBindingMode: bindingMode.oneWay,
        defaultValue: {}
    }) offeringsUrl = {};
    @bindable pcProductView = 'grid';

// In this case both variables will behave as desired.

Babel Configuration (.babelrc, package.json, cli command)

We're using the default Aurelia Skeleton configuration.

var path = require('path');
var paths = require('./paths');

exports.base = function() {
  return {
    filename: '',
    filenameRelative: '',
    sourceMap: true,
    sourceRoot: '',
    moduleRoot: path.resolve('src').replace(/\\/g, '/'),
    moduleIds: false,
    comments: false,
    compact: false,
    code:true,
    presets: [ 'es2015-loose', 'stage-1'],
    plugins: [
      'syntax-flow',
      'transform-decorators-legacy',
      'transform-flow-strip-types'
    ]
  };
}

exports.commonjs = function() {
  var options = exports.base();
  options.plugins.push('transform-es2015-modules-commonjs');
  return options;
};

exports.amd = function() {
  var options = exports.base();
  options.plugins.push('transform-es2015-modules-amd');
  return options;
};

exports.system = function() {
  var options = exports.base();
  options.plugins.push('transform-es2015-modules-systemjs');
  return options;
};

exports.es2015 = function() {
  var options = exports.base();
  options.presets = ['stage-1']
  return options;
};

Expected Behavior

Should have both variables working.

Current Behavior

Defining an "annotated" variable as @bindable({object}) before another "annodated" variable as @bindable name = 'defaultValue' will cause the second variable to be attributed to the first one.

Your Environment

# node --version
v5.5.0
# npm --version
3.3.12
# npm list
aurelia-skeleton-navigation@1.0.0 C:\Users\dragosc\Workspace\Sabre\Code\sabre-uk-site-client
├─┬ aurelia-bundler@0.4.0
│ ├── bluebird@2.11.0
│ ├─┬ clean-css@3.4.20
│ │ ├─┬ commander@2.8.1
│ │ │ └── graceful-readlink@1.0.1
│ │ └─┬ source-map@0.4.4
│ │   └── amdefine@1.0.0
│ ├─┬ glob@5.0.15
│ │ ├─┬ inflight@1.0.6
│ │ │ └── wrappy@1.0.2
│ │ ├── inherits@2.0.3
│ │ └── once@1.4.0
│ ├─┬ globby@2.1.0
│ │ ├── array-union@1.0.2
│ │ ├── async@1.5.2
│ │ └── glob@5.0.15
│ ├─┬ html-minifier@1.5.0
│ │ ├─┬ change-case@2.3.1
│ │ │ ├── camel-case@1.2.2
│ │ │ ├── constant-case@1.1.2
│ │ │ ├── dot-case@1.1.2
│ │ │ ├── is-lower-case@1.1.3
│ │ │ ├── is-upper-case@1.1.2
│ │ │ ├── lower-case@1.1.3
│ │ │ ├── lower-case-first@1.0.2
│ │ │ ├── param-case@1.1.2
│ │ │ ├── pascal-case@1.1.2
│ │ │ ├── path-case@1.1.2
│ │ │ ├── sentence-case@1.1.3
│ │ │ ├── snake-case@1.1.2
│ │ │ ├── swap-case@1.1.2
│ │ │ ├── title-case@1.1.2
│ │ │ ├── upper-case@1.1.3
│ │ │ └── upper-case-first@1.1.2
│ │ ├── commander@2.9.0
│ │ ├─┬ concat-stream@1.5.0
│ │ │ ├─┬ readable-stream@2.0.6
│ │ │ │ └── isarray@1.0.0
│ │ │ └── typedarray@0.0.6
│ │ ├── he@1.0.0
│ │ ├─┬ ncname@1.0.0
│ │ │ └── xml-char-classes@1.0.0
│ │ └── relateurl@0.2.7
│ ├── lodash@3.10.1
│ ├── rev-hash@1.0.0
│ ├─┬ rev-path@1.0.0
│ │ └── modify-filename@1.1.0
│ ├─┬ systemjs-builder@0.15.32
│ │ ├─┬ babel-plugin-transform-cjs-system-wrapper@0.2.1
│ │ │ └── babel-plugin-transform-cjs-system-require@0.1.1
│ │ ├── babel-plugin-transform-global-system-wrapper@0.0.1
│ │ ├── babel-plugin-transform-system-register@0.0.1
│ │ ├── bluebird@3.4.6
│ │ ├── data-uri-to-buffer@0.0.4
│ │ ├─┬ es6-template-strings@2.0.1
│ │ │ ├── es5-ext@0.10.12
│ │ │ └─┬ esniff@1.1.0
│ │ │   └── d@1.0.0
│ │ ├── mkdirp@0.5.1
│ │ ├── rollup@0.36.1
│ │ └── source-map@0.5.6
│ └─┬ whacko@0.19.1
│   ├─┬ css-select@1.2.0
│   │ ├── boolbase@1.0.0
│   │ ├── css-what@2.1.0
│   │ └── nth-check@1.0.1
│   ├─┬ domutils@1.5.1
│   │ ├─┬ dom-serializer@0.1.0
│   │ │ ├── domelementtype@1.1.3
│   │ │ └── entities@1.1.1
│   │ └── domelementtype@1.3.0
│   ├── lodash@3.10.1
│   └── parse5@1.5.1
├─┬ aurelia-tools@0.2.4
│ ├─┬ breeze-dag@0.1.0
│ │ ├─┬ breeze-queue@0.1.0
│ │ │ └── breeze-nexttick@0.2.1
│ │ └── gaia-tsort@0.1.0
│ └─┬ through2@2.0.1
│   ├─┬ readable-stream@2.0.6
│   │ └── isarray@1.0.0
│   └── xtend@4.0.1
├─┬ babel-core@6.17.0
│ ├─┬ babel-code-frame@6.16.0
│ │ ├── esutils@2.0.2
│ │ └── js-tokens@2.0.0
│ ├─┬ babel-generator@6.17.0
│ │ ├─┬ detect-indent@3.0.1
│ │ │ ├── minimist@1.2.0
│ │ │ └─┬ repeating@1.1.3
│ │ │   └── is-finite@1.0.2
│ │ ├── jsesc@1.3.0
│ │ └── source-map@0.5.6
│ ├── babel-helpers@6.16.0
│ ├── babel-messages@6.8.0
│ ├─┬ babel-register@6.16.3
│ │ ├─┬ home-or-tmp@1.0.0
│ │ │ └── os-tmpdir@1.0.2
│ │ ├── mkdirp@0.5.1
│ │ └─┬ source-map-support@0.4.3
│ │   └── source-map@0.5.6
│ ├─┬ babel-runtime@6.11.6
│ │ └── regenerator-runtime@0.9.5
│ ├── babel-template@6.16.0
│ ├─┬ babel-traverse@6.16.0
│ │ ├── globals@8.18.0
│ │ └─┬ invariant@2.2.1
│ │   └─┬ loose-envify@1.2.0
│ │     └── js-tokens@1.0.3
│ ├─┬ babel-types@6.16.0
│ │ └── to-fast-properties@1.0.2
│ ├── babylon@6.11.4
│ ├── convert-source-map@1.3.0
│ ├─┬ debug@2.2.0
│ │ └── ms@0.7.1
│ ├── json5@0.4.0
│ ├── lodash@4.16.4
│ ├─┬ minimatch@3.0.3
│ │ └─┬ brace-expansion@1.1.6
│ │   ├── balanced-match@0.4.2
│ │   └── concat-map@0.0.1
│ ├── path-exists@1.0.0
│ ├── path-is-absolute@1.0.1
│ ├── private@0.1.6
│ ├── shebang-regex@1.0.0
│ ├── slash@1.0.0
│ └── source-map@0.5.6
├─┬ babel-eslint@6.1.2
│ ├── lodash.assign@4.2.0
│ └── lodash.pickby@4.6.0
├── babel-plugin-syntax-flow@6.13.0
├─┬ babel-plugin-transform-decorators-legacy@1.3.4
│ └── babel-plugin-syntax-decorators@6.13.0
├── babel-plugin-transform-es2015-modules-amd@6.8.0
├─┬ babel-plugin-transform-es2015-modules-commonjs@6.16.0
│ └── babel-plugin-transform-strict-mode@6.11.3
├─┬ babel-plugin-transform-es2015-modules-systemjs@6.14.0
│ └── babel-helper-hoist-variables@6.8.0
├── babel-plugin-transform-flow-strip-types@6.14.0
├─┬ babel-preset-es2015@6.16.0
│ ├── babel-plugin-check-es2015-constants@6.8.0
│ ├── babel-plugin-transform-es2015-arrow-functions@6.8.0
│ ├── babel-plugin-transform-es2015-block-scoped-functions@6.8.0
│ ├── babel-plugin-transform-es2015-block-scoping@6.15.0
│ ├─┬ babel-plugin-transform-es2015-classes@6.14.0
│ │ ├── babel-helper-define-map@6.9.0
│ │ ├── babel-helper-function-name@6.8.0
│ │ ├── babel-helper-optimise-call-expression@6.8.0
│ │ └── babel-helper-replace-supers@6.16.0
│ ├── babel-plugin-transform-es2015-computed-properties@6.8.0
│ ├── babel-plugin-transform-es2015-destructuring@6.16.0
│ ├── babel-plugin-transform-es2015-duplicate-keys@6.8.0
│ ├── babel-plugin-transform-es2015-for-of@6.8.0
│ ├── babel-plugin-transform-es2015-function-name@6.9.0
│ ├── babel-plugin-transform-es2015-literals@6.8.0
│ ├── babel-plugin-transform-es2015-modules-umd@6.12.0
│ ├── babel-plugin-transform-es2015-object-super@6.8.0
│ ├─┬ babel-plugin-transform-es2015-parameters@6.17.0
│ │ ├── babel-helper-call-delegate@6.8.0
│ │ └── babel-helper-get-function-arity@6.8.0
│ ├── babel-plugin-transform-es2015-shorthand-properties@6.8.0
│ ├── babel-plugin-transform-es2015-spread@6.8.0
│ ├─┬ babel-plugin-transform-es2015-sticky-regex@6.8.0
│ │ └── babel-helper-regex@6.9.0
│ ├── babel-plugin-transform-es2015-template-literals@6.8.0
│ ├── babel-plugin-transform-es2015-typeof-symbol@6.8.0
│ ├─┬ babel-plugin-transform-es2015-unicode-regex@6.11.0
│ │ └─┬ regexpu-core@2.0.0
│ │   ├── regenerate@1.3.1
│ │   ├── regjsgen@0.2.0
│ │   └─┬ regjsparser@0.1.5
│ │     └── jsesc@0.5.0
│ └── babel-plugin-transform-regenerator@6.16.1
├─┬ babel-preset-es2015-loose@7.0.0
│ └─┬ modify-babel-preset@1.2.0
│   └── require-relative@0.8.7
├─┬ babel-preset-stage-1@6.16.0
│ ├─┬ babel-plugin-transform-class-constructor-call@6.8.0
│ │ └── babel-plugin-syntax-class-constructor-call@6.13.0
│ ├─┬ babel-plugin-transform-export-extensions@6.8.0
│ │ └── babel-plugin-syntax-export-extensions@6.13.0
│ └─┬ babel-preset-stage-2@6.17.0
│   ├─┬ babel-plugin-transform-class-properties@6.16.0
│   │ └── babel-plugin-syntax-class-properties@6.13.0
│   ├─┬ babel-plugin-transform-decorators@6.13.0
│   │ └─┬ babel-helper-explode-class@6.8.0
│   │   └── babel-helper-bindify-decorators@6.8.0
│   └─┬ babel-preset-stage-3@6.17.0
│     ├── babel-plugin-syntax-trailing-function-commas@6.13.0
│     ├─┬ babel-plugin-transform-async-generator-functions@6.17.0
│     │ ├── babel-helper-remap-async-to-generator@6.16.2
│     │ └── babel-plugin-syntax-async-generators@6.13.0
│     ├─┬ babel-plugin-transform-async-to-generator@6.16.0
│     │ └── babel-plugin-syntax-async-functions@6.13.0
│     ├─┬ babel-plugin-transform-exponentiation-operator@6.8.0
│     │ ├─┬ babel-helper-builder-binary-assignment-operator-visitor@6.15.0
│     │ │ └── babel-helper-explode-assignable-expression@6.8.0
│     │ └── babel-plugin-syntax-exponentiation-operator@6.13.0
│     └─┬ babel-plugin-transform-object-rest-spread@6.16.0
│       └── babel-plugin-syntax-object-rest-spread@6.13.0
├─┬ browser-sync@2.17.0
│ ├─┬ browser-sync-client@2.4.2
│ │ ├── etag@1.7.0
│ │ └── fresh@0.3.0
│ ├─┬ browser-sync-ui@0.6.1
│ │ ├── async-each-series@0.1.1
│ │ ├── connect-history-api-fallback@1.3.0
│ │ ├─┬ stream-throttle@0.1.3
│ │ │ └── limiter@1.1.0
│ │ └─┬ weinre@2.0.0-pre-I0Z7U9OV
│ │   ├─┬ express@2.5.11
│ │   │ ├─┬ connect@1.9.2
│ │   │ │ └── formidable@1.0.17
│ │   │ ├── mime@1.2.4
│ │   │ ├── mkdirp@0.3.0
│ │   │ └── qs@0.4.2
│ │   └── underscore@1.7.0
│ ├── bs-recipes@1.2.3
│ ├─┬ chokidar@1.6.0
│ │ ├── anymatch@1.3.0
│ │ ├── async-each@1.0.1
│ │ ├── UNMET OPTIONAL DEPENDENCY fsevents@^1.0.0
│ │ ├── glob-parent@2.0.0
│ │ ├─┬ is-binary-path@1.0.1
│ │ │ └── binary-extensions@1.7.0
│ │ ├── is-glob@2.0.1
│ │ └─┬ readdirp@2.1.0
│ │   ├─┬ readable-stream@2.1.5
│ │   │ └── isarray@1.0.0
│ │   └── set-immediate-shim@1.0.1
│ ├─┬ connect@3.4.1
│ │ ├─┬ finalhandler@0.4.1
│ │ │ └── unpipe@1.0.0
│ │ ├── parseurl@1.3.1
│ │ └── utils-merge@1.0.0
│ ├── dev-ip@1.0.1
│ ├─┬ easy-extender@2.3.2
│ │ └── lodash@3.10.1
│ ├─┬ eazy-logger@3.0.2
│ │ └─┬ tfunk@3.0.2
│ │   └── object-path@0.9.2
│ ├── emitter-steward@1.0.0
│ ├─┬ fs-extra@0.30.0
│ │ ├── jsonfile@2.4.0
│ │ └── klaw@1.3.0
│ ├─┬ http-proxy@1.14.0
│ │ ├── eventemitter3@1.2.0
│ │ └── requires-port@1.0.0
│ ├── immutable@3.8.1
│ ├─┬ localtunnel@1.8.1
│ │ ├── openurl@1.1.0
│ │ ├─┬ request@2.65.0
│ │ │ ├─┬ bl@1.0.3
│ │ │ │ └─┬ readable-stream@2.0.6
│ │ │ │   └── isarray@1.0.0
│ │ │ ├─┬ form-data@1.0.1
│ │ │ │ └── async@2.1.2
│ │ │ ├─┬ http-signature@0.11.0
│ │ │ │ ├── asn1@0.1.11
│ │ │ │ ├── assert-plus@0.1.5
│ │ │ │ └── ctype@0.5.3
│ │ │ ├── qs@5.2.1
│ │ │ └── tough-cookie@2.2.2
│ │ └─┬ yargs@3.29.0
│ │   ├── camelcase@1.2.1
│ │   ├── cliui@3.2.0
│ │   └── window-size@0.1.4
│ ├─┬ micromatch@2.3.11
│ │ ├─┬ arr-diff@2.0.0
│ │ │ └── arr-flatten@1.0.1
│ │ ├── array-unique@0.2.1
│ │ ├─┬ braces@1.8.5
│ │ │ ├─┬ expand-range@1.8.2
│ │ │ │ └─┬ fill-range@2.2.3
│ │ │ │   ├── is-number@2.1.0
│ │ │ │   ├── randomatic@1.1.5
│ │ │ │   └── repeat-string@1.5.4
│ │ │ ├── preserve@0.2.0
│ │ │ └── repeat-element@1.1.2
│ │ ├─┬ expand-brackets@0.1.5
│ │ │ └── is-posix-bracket@0.1.1
│ │ ├── extglob@0.3.2
│ │ ├── filename-regex@2.0.0
│ │ ├── is-extglob@1.0.0
│ │ ├─┬ kind-of@3.0.4
│ │ │ └── is-buffer@1.1.4
│ │ ├── normalize-path@2.0.1
│ │ ├─┬ object.omit@2.0.0
│ │ │ ├─┬ for-own@0.1.4
│ │ │ │ └── for-in@0.1.6
│ │ │ └── is-extendable@0.1.1
│ │ ├─┬ parse-glob@3.0.4
│ │ │ ├── glob-base@0.3.0
│ │ │ └── is-dotfile@1.0.2
│ │ └─┬ regex-cache@0.4.3
│ │   ├── is-equal-shallow@0.1.3
│ │   └── is-primitive@2.0.0
│ ├─┬ opn@4.0.2
│ │ └── object-assign@4.1.0
│ ├─┬ portscanner@1.0.0
│ │ └── async@0.1.15
│ ├── qs@6.2.1
│ ├── resp-modifier@6.0.2
│ ├── rx@4.1.0
│ ├─┬ serve-index@1.8.0
│ │ ├─┬ accepts@1.3.3
│ │ │ └── negotiator@0.6.1
│ │ ├── escape-html@1.0.3
│ │ ├─┬ http-errors@1.5.0
│ │ │ ├── inherits@2.0.1
│ │ │ ├── setprototypeof@1.0.1
│ │ │ └── statuses@1.3.0
│ │ └─┬ mime-types@2.1.12
│ │   └── mime-db@1.24.0
│ ├─┬ serve-static@1.11.1
│ │ ├── encodeurl@1.0.1
│ │ └─┬ send@0.14.1
│ │   ├── destroy@1.0.4
│ │   ├── mime@1.3.4
│ │   └── range-parser@1.2.0
│ ├── server-destroy@1.0.1
│ ├─┬ socket.io@1.4.8
│ │ ├─┬ engine.io@1.6.11
│ │ │ ├─┬ accepts@1.1.4
│ │ │ │ ├─┬ mime-types@2.0.14
│ │ │ │ │ └── mime-db@1.12.0
│ │ │ │ └── negotiator@0.4.9
│ │ │ ├── base64id@0.1.0
│ │ │ ├─┬ engine.io-parser@1.2.4
│ │ │ │ ├── after@0.8.1
│ │ │ │ ├── arraybuffer.slice@0.0.6
│ │ │ │ ├── base64-arraybuffer@0.1.2
│ │ │ │ ├── blob@0.0.4
│ │ │ │ ├─┬ has-binary@0.1.6
│ │ │ │ │ └── isarray@0.0.1
│ │ │ │ └── utf8@2.1.0
│ │ │ └─┬ ws@1.1.0
│ │ │   ├── options@0.0.6
│ │ │   └── ultron@1.0.2
│ │ ├─┬ has-binary@0.1.7
│ │ │ └── isarray@0.0.1
│ │ ├─┬ socket.io-adapter@0.4.0
│ │ │ └─┬ socket.io-parser@2.2.2
│ │ │   ├── debug@0.7.4
│ │ │   ├── isarray@0.0.1
│ │ │   └── json3@3.2.6
│ │ ├─┬ socket.io-client@1.4.8
│ │ │ ├── backo2@1.0.2
│ │ │ ├── component-bind@1.0.0
│ │ │ ├── component-emitter@1.2.0
│ │ │ ├─┬ engine.io-client@1.6.11
│ │ │ │ ├── component-inherit@0.0.3
│ │ │ │ ├── has-cors@1.1.0
│ │ │ │ ├── parsejson@0.0.1
│ │ │ │ ├── parseqs@0.0.2
│ │ │ │ ├── ws@1.0.1
│ │ │ │ ├── xmlhttprequest-ssl@1.5.1
│ │ │ │ └── yeast@0.1.2
│ │ │ ├── indexof@0.0.1
│ │ │ ├── object-component@0.0.3
│ │ │ ├─┬ parseuri@0.0.4
│ │ │ │ └─┬ better-assert@1.0.2
│ │ │ │   └── callsite@1.0.0
│ │ │ └── to-array@0.1.4
│ │ └─┬ socket.io-parser@2.2.6
│ │   ├── benchmark@1.0.0
│ │   ├── component-emitter@1.1.2
│ │   ├── isarray@0.0.1
│ │   └── json3@3.3.2
│ ├── ua-parser-js@0.7.10
│ └─┬ yargs@5.0.0
│   ├── cliui@3.2.0
│   ├── window-size@0.2.0
│   └─┬ yargs-parser@3.2.0
│     └── camelcase@3.0.0
├─┬ conventional-changelog@1.1.0
│ ├─┬ conventional-changelog-angular@1.3.0
│ │ ├─┬ compare-func@1.3.2
│ │ │ ├── array-ify@1.0.0
│ │ │ └─┬ dot-prop@3.0.0
│ │ │   └── is-obj@1.0.1
│ │ ├── github-url-from-git@1.4.0
│ │ └── q@1.4.1
│ ├── conventional-changelog-atom@0.1.0
│ ├── conventional-changelog-codemirror@0.1.0
│ ├─┬ conventional-changelog-core@1.5.0
│ │ ├─┬ conventional-changelog-writer@1.4.1
│ │ │ ├─┬ conventional-commits-filter@1.0.0
│ │ │ │ ├── is-subset@0.1.1
│ │ │ │ └── modify-values@1.0.0
│ │ │ ├── semver@5.3.0
│ │ │ └── split@1.0.0
│ │ ├─┬ conventional-commits-parser@1.2.3
│ │ │ ├─┬ is-text-path@1.0.1
│ │ │ │ └── text-extensions@1.3.3
│ │ │ ├─┬ JSONStream@1.2.1
│ │ │ │ └── jsonparse@1.2.0
│ │ │ ├── split2@2.1.0
│ │ │ └── trim-off-newlines@1.0.1
│ │ ├─┬ get-pkg-repo@1.3.0
│ │ │ ├── hosted-git-info@2.1.5
│ │ │ └── parse-github-repo-url@1.3.0
│ │ ├─┬ git-raw-commits@1.1.2
│ │ │ └─┬ lodash.template@4.4.0
│ │ │   └── lodash.templatesettings@4.1.0
│ │ ├─┬ git-remote-origin-url@2.0.0
│ │ │ └─┬ gitconfiglocal@1.0.0
│ │ │   └── ini@1.3.4
│ │ ├─┬ git-semver-tags@1.1.2
│ │ │ └── semver@5.3.0
│ │ ├─┬ normalize-package-data@2.3.5
│ │ │ ├─┬ is-builtin-module@1.0.0
│ │ │ │ └── builtin-modules@1.1.1
│ │ │ ├── semver@5.3.0
│ │ │ └─┬ validate-npm-package-license@3.0.1
│ │ │   ├─┬ spdx-correct@1.0.2
│ │ │   │ └── spdx-license-ids@1.2.2
│ │ │   └── spdx-expression-parse@1.0.4
│ │ └─┬ read-pkg@1.1.0
│ │   ├─┬ load-json-file@1.1.0
│ │   │ └─┬ parse-json@2.2.0
│ │   │   └─┬ error-ex@1.3.0
│ │   │     └── is-arrayish@0.2.1
│ │   └── path-type@1.1.0
│ ├── conventional-changelog-ember@0.2.2
│ ├── conventional-changelog-eslint@0.1.0
│ ├── conventional-changelog-express@0.1.0
│ ├── conventional-changelog-jquery@0.1.0
│ ├── conventional-changelog-jscs@0.1.0
│ └── conventional-changelog-jshint@0.1.0
├─┬ dalia@0.0.3-rc3
│ ├── debug-logger@0.4.1
│ ├── extend@3.0.0
│ ├─┬ phantomjs-prebuilt@2.1.13
│ │ ├── es6-promise@4.0.5
│ │ ├─┬ extract-zip@1.5.0
│ │ │ └── debug@0.7.4
│ │ ├─┬ hasha@2.2.0
│ │ │ └── is-stream@1.1.0
│ │ ├── kew@0.7.0
│ │ ├── progress@1.1.8
│ │ ├─┬ request@2.74.0
│ │ │ └── form-data@1.0.1
│ │ └─┬ request-progress@2.0.1
│ │   └── throttleit@1.0.0
│ ├── sitemap@1.8.2
│ └── uuid@2.0.3
├─┬ del@2.2.2
│ ├─┬ globby@5.0.0
│ │ └── arrify@1.0.1
│ ├── is-path-cwd@1.0.0
│ ├─┬ is-path-in-cwd@1.0.0
│ │ └── is-path-inside@1.0.0
│ ├── object-assign@4.1.0
│ ├── pify@2.3.0
│ ├─┬ pinkie-promise@2.0.1
│ │ └── pinkie@2.0.4
│ └── rimraf@2.5.4
├── flow-bin@0.33.0
├─┬ gulp@3.9.1
│ ├── archy@1.0.0
│ ├─┬ chalk@1.1.3
│ │ ├── ansi-styles@2.2.1
│ │ ├── escape-string-regexp@1.0.5
│ │ ├─┬ has-ansi@2.0.0
│ │ │ └── ansi-regex@2.0.0
│ │ ├── strip-ansi@3.0.1
│ │ └── supports-color@2.0.0
│ ├── deprecated@0.0.1
│ ├── interpret@1.0.1
│ ├─┬ liftoff@2.3.0
│ │ ├─┬ findup-sync@0.4.2
│ │ │ ├─┬ detect-file@0.1.0
│ │ │ │ └── fs-exists-sync@0.1.0
│ │ │ └─┬ resolve-dir@0.1.1
│ │ │   └─┬ global-modules@0.2.3
│ │ │     ├─┬ global-prefix@0.1.4
│ │ │     │ └── osenv@0.1.3
│ │ │     └── is-windows@0.2.0
│ │ ├─┬ fined@1.0.1
│ │ │ ├── lodash.assignwith@4.2.0
│ │ │ ├── lodash.isarray@4.0.0
│ │ │ ├── lodash.isempty@4.4.0
│ │ │ ├── lodash.pick@4.4.0
│ │ │ └─┬ parse-filepath@1.0.1
│ │ │   ├─┬ is-absolute@0.2.5
│ │ │   │ ├─┬ is-relative@0.2.1
│ │ │   │ │ └─┬ is-unc-path@0.1.1
│ │ │   │ │   └── unc-path-regex@0.1.2
│ │ │   │ └── is-windows@0.1.1
│ │ │   ├── map-cache@0.2.2
│ │ │   └─┬ path-root@0.1.1
│ │ │     └── path-root-regex@0.1.2
│ │ ├── flagged-respawn@0.3.2
│ │ ├── lodash.isplainobject@4.0.6
│ │ ├── lodash.isstring@4.0.1
│ │ ├── lodash.mapvalues@4.6.0
│ │ ├── rechoir@0.6.2
│ │ └── resolve@1.1.7
│ ├── minimist@1.2.0
│ ├─┬ orchestrator@0.3.7
│ │ ├─┬ end-of-stream@0.1.5
│ │ │ └── once@1.3.3
│ │ ├── sequencify@0.0.7
│ │ └── stream-consume@0.1.0
│ ├── pretty-hrtime@1.0.2
│ ├── semver@4.3.6
│ ├─┬ tildify@1.2.0
│ │ └── os-homedir@1.0.2
│ ├─┬ v8flags@2.0.11
│ │ └── user-home@1.1.1
│ └─┬ vinyl-fs@0.3.14
│   ├── defaults@1.0.3
│   ├─┬ glob-stream@3.1.18
│   │ ├── glob@4.5.3
│   │ ├─┬ glob2base@0.0.12
│   │ │ └── find-index@0.1.1
│   │ ├── minimatch@2.0.10
│   │ ├── ordered-read-streams@0.1.0
│   │ ├─┬ through2@0.6.5
│   │ │ └─┬ readable-stream@1.0.34
│   │ │   └── isarray@0.0.1
│   │ └── unique-stream@1.0.0
│   ├─┬ glob-watcher@0.0.6
│   │ └─┬ gaze@0.5.2
│   │   └─┬ globule@0.1.0
│   │     ├─┬ glob@3.1.21
│   │     │ ├── graceful-fs@1.2.3
│   │     │ └── inherits@1.0.2
│   │     ├── lodash@1.0.2
│   │     └── minimatch@0.2.14
│   ├─┬ graceful-fs@3.0.11
│   │ └── natives@1.1.0
│   ├─┬ strip-bom@1.0.0
│   │ └── first-chunk-stream@1.0.0
│   ├─┬ through2@0.6.5
│   │ └─┬ readable-stream@1.0.34
│   │   └── isarray@0.0.1
│   └─┬ vinyl@0.4.6
│     └── clone@0.2.0
├─┬ gulp-babel@6.1.2
│ ├── object-assign@4.1.0
│ ├── replace-ext@0.0.1
│ └─┬ vinyl-sourcemaps-apply@0.2.1
│   └── source-map@0.5.6
├─┬ gulp-bump@2.4.0
│ ├─┬ bump-regex@2.3.0
│ │ ├── lodash.clone@4.5.0
│ │ └── semver@5.3.0
│ ├─┬ plugin-error@0.1.2
│ │ ├─┬ ansi-cyan@0.1.1
│ │ │ └── ansi-wrap@0.1.0
│ │ ├── ansi-red@0.1.1
│ │ ├── arr-diff@1.1.0
│ │ ├── arr-union@2.1.0
│ │ └─┬ extend-shallow@1.1.4
│ │   └── kind-of@1.1.0
│ ├── plugin-log@0.1.0
│ └── semver@5.3.0
├── gulp-changed@1.3.2
├─┬ gulp-concat@2.6.0
│ ├─┬ concat-with-sourcemaps@1.0.4
│ │ └── source-map@0.5.6
│ └─┬ through2@0.6.5
│   └─┬ readable-stream@1.0.34
│     └── isarray@0.0.1
├─┬ gulp-concat-css@2.3.0
│ ├─┬ lodash.defaults@3.1.2
│ │ ├─┬ lodash.assign@3.2.0
│ │ │ ├── lodash._baseassign@3.2.0
│ │ │ └── lodash._createassigner@3.1.1
│ │ └── lodash.restparam@3.6.1
│ ├─┬ parse-import@2.0.0
│ │ └─┬ get-imports@1.0.0
│ │   └── import-regex@1.1.0
│ ├─┬ rework@1.0.1
│ │ ├── convert-source-map@0.3.5
│ │ └─┬ css@2.2.1
│ │   ├── source-map@0.1.43
│ │   ├─┬ source-map-resolve@0.3.1
│ │   │ ├── atob@1.1.3
│ │   │ ├── resolve-url@0.2.1
│ │   │ └── source-map-url@0.3.0
│ │   └── urix@0.1.0
│ ├─┬ rework-import@2.1.0
│ │ └─┬ url-regex@3.2.0
│ │   └── ip-regex@1.0.3
│ ├─┬ rework-plugin-url@1.1.0
│ │ └─┬ rework-plugin-function@1.0.2
│ │   └── rework-visit@1.0.0
│ └─┬ through2@1.1.1
│   └─┬ readable-stream@1.1.14
│     └── isarray@0.0.1
├── gulp-css-adjust-url-path@1.0.2
├─┬ gulp-cssnano@2.1.2
│ ├─┬ cssnano@3.7.6
│ │ ├── defined@1.0.0
│ │ ├── has@1.0.1
│ │ ├── object-assign@4.1.0
│ │ ├─┬ postcss-calc@5.3.1
│ │ │ ├── postcss-message-helpers@2.0.0
│ │ │ └─┬ reduce-css-calc@1.3.0
│ │ │   ├─┬ math-expression-evaluator@1.2.14
│ │ │   │ └── lodash.indexof@4.0.5
│ │ │   └─┬ reduce-function-call@1.0.1
│ │ │     └── balanced-match@0.1.0
│ │ ├─┬ postcss-colormin@2.2.1
│ │ │ └─┬ colormin@1.1.2
│ │ │   ├─┬ color@0.11.3
│ │ │   │ ├── color-convert@1.5.0
│ │ │   │ └─┬ color-string@0.3.0
│ │ │   │   └── color-name@1.1.1
│ │ │   └── css-color-names@0.0.4
│ │ ├── postcss-convert-values@2.4.1
│ │ ├── postcss-discard-comments@2.0.4
│ │ ├── postcss-discard-duplicates@2.0.1
│ │ ├── postcss-discard-empty@2.1.0
│ │ ├── postcss-discard-overridden@0.1.1
│ │ ├─┬ postcss-discard-unused@2.2.1
│ │ │ ├── flatten@1.0.2
│ │ │ └── uniqs@2.0.0
│ │ ├─┬ postcss-filter-plugins@2.0.2
│ │ │ └─┬ uniqid@4.1.0
│ │ │   └── macaddress@0.2.8
│ │ ├── postcss-merge-idents@2.1.7
│ │ ├── postcss-merge-longhand@2.0.1
│ │ ├─┬ postcss-merge-rules@2.0.10
│ │ │ └── vendors@1.0.1
│ │ ├─┬ postcss-minify-font-values@1.0.5
│ │ │ └── object-assign@4.1.0
│ │ ├── postcss-minify-gradients@1.0.3
│ │ ├─┬ postcss-minify-params@1.0.5
│ │ │ └── alphanum-sort@1.0.2
│ │ ├─┬ postcss-minify-selectors@2.0.5
│ │ │ └─┬ postcss-selector-parser@2.2.1
│ │ │   ├── indexes-of@1.0.1
│ │ │   └── uniq@1.0.1
│ │ ├── postcss-normalize-charset@1.1.0
│ │ ├─┬ postcss-normalize-url@3.0.7
│ │ │ ├── is-absolute-url@2.0.0
│ │ │ └─┬ normalize-url@1.6.1
│ │ │   ├── object-assign@4.1.0
│ │ │   ├── prepend-http@1.0.4
│ │ │   ├─┬ query-string@4.2.3
│ │ │   │ ├── object-assign@4.1.0
│ │ │   │ └── strict-uri-encode@1.1.0
│ │ │   └─┬ sort-keys@1.1.2
│ │ │     └── is-plain-obj@1.1.0
│ │ ├── postcss-ordered-values@2.2.2
│ │ ├── postcss-reduce-idents@2.3.0
│ │ ├── postcss-reduce-initial@1.0.0
│ │ ├── postcss-reduce-transforms@1.0.3
│ │ ├─┬ postcss-svgo@2.1.5
│ │ │ ├─┬ is-svg@2.0.1
│ │ │ │ └── html-comment-regex@1.1.1
│ │ │ └─┬ svgo@0.7.1
│ │ │   ├── coa@1.0.1
│ │ │   ├─┬ csso@2.2.1
│ │ │   │ ├── clap@1.1.1
│ │ │   │ └── source-map@0.5.6
│ │ │   ├── mkdirp@0.5.1
│ │ │   └── whet.extend@0.9.9
│ │ ├── postcss-unique-selectors@2.0.2
│ │ ├── postcss-value-parser@3.3.0
│ │ └── postcss-zindex@2.1.1
│ └── object-assign@4.1.0
├─┬ gulp-eslint@2.1.0
│ ├─┬ bufferstreams@1.1.1
│ │ └─┬ readable-stream@2.1.5
│ │   └── isarray@1.0.0
│ ├─┬ eslint@2.13.1
│ │ ├─┬ doctrine@1.4.0
│ │ │ └── isarray@1.0.0
│ │ ├─┬ es6-map@0.1.4
│ │ │ ├── d@0.1.1
│ │ │ ├── es6-iterator@2.0.0
│ │ │ ├── es6-set@0.1.4
│ │ │ ├── es6-symbol@3.1.0
│ │ │ └── event-emitter@0.3.4
│ │ ├─┬ escope@3.6.0
│ │ │ ├── es6-weak-map@2.0.1
│ │ │ └─┬ esrecurse@4.1.0
│ │ │   ├── estraverse@4.1.1
│ │ │   └── object-assign@4.1.0
│ │ ├─┬ espree@3.3.2
│ │ │ ├── acorn@4.0.3
│ │ │ └─┬ acorn-jsx@3.0.1
│ │ │   └── acorn@3.3.0
│ │ ├── estraverse@4.2.0
│ │ ├─┬ file-entry-cache@1.3.1
│ │ │ ├─┬ flat-cache@1.2.1
│ │ │ │ ├── circular-json@0.3.1
│ │ │ │ └─┬ write@0.2.1
│ │ │ │   └── mkdirp@0.5.1
│ │ │ └── object-assign@4.1.0
│ │ ├── globals@9.10.0
│ │ ├── ignore@3.1.5
│ │ ├── imurmurhash@0.1.4
│ │ ├─┬ inquirer@0.12.0
│ │ │ ├── ansi-escapes@1.4.0
│ │ │ ├─┬ cli-cursor@1.0.2
│ │ │ │ └─┬ restore-cursor@1.0.1
│ │ │ │   ├── exit-hook@1.1.1
│ │ │ │   └── onetime@1.1.0
│ │ │ ├── cli-width@2.1.0
│ │ │ ├─┬ figures@1.7.0
│ │ │ │ └── object-assign@4.1.0
│ │ │ ├─┬ readline2@1.0.1
│ │ │ │ └── mute-stream@0.0.5
│ │ │ ├── run-async@0.1.0
│ │ │ └── rx-lite@3.1.2
│ │ ├─┬ is-my-json-valid@2.15.0
│ │ │ ├── generate-function@2.0.0
│ │ │ ├─┬ generate-object-property@1.2.0
│ │ │ │ └── is-property@1.0.2
│ │ │ └── jsonpointer@4.0.0
│ │ ├─┬ is-resolvable@1.0.0
│ │ │ └── tryit@1.0.2
│ │ ├─┬ json-stable-stringify@1.0.1
│ │ │ └── jsonify@0.0.0
│ │ ├─┬ levn@0.3.0
│ │ │ ├── prelude-ls@1.1.2
│ │ │ └── type-check@0.3.2
│ │ ├─┬ optionator@0.8.2
│ │ │ ├── deep-is@0.1.3
│ │ │ ├── fast-levenshtein@2.0.5
│ │ │ └── wordwrap@1.0.0
│ │ ├── path-is-inside@1.0.2
│ │ ├── pluralize@1.2.1
│ │ ├─┬ require-uncached@1.0.2
│ │ │ ├─┬ caller-path@0.1.0
│ │ │ │ └── callsites@0.2.0
│ │ │ └── resolve-from@1.0.1
│ │ ├── shelljs@0.6.1
│ │ ├── strip-json-comments@1.0.4
│ │ ├─┬ table@3.8.0
│ │ │ ├─┬ ajv@4.7.6
│ │ │ │ └── co@4.6.0
│ │ │ ├── ajv-keywords@1.1.1
│ │ │ └── slice-ansi@0.0.4
│ │ └── user-home@2.0.0
│ └── object-assign@4.1.0
├─┬ gulp-filter@4.0.0
│ ├── multimatch@2.1.0
│ └─┬ streamfilter@1.0.5
│   └─┬ readable-stream@2.1.5
│     └── isarray@1.0.0
├─┬ gulp-less@3.1.0
│ ├─┬ accord@0.23.0
│ │ ├─┬ fobject@0.0.4
│ │ │ └── semver@5.3.0
│ │ ├── glob@7.0.3
│ │ ├── indx@0.2.3
│ │ ├── lodash@4.11.2
│ │ ├── semver@5.3.0
│ │ └── when@3.7.7
│ ├─┬ less@2.7.1
│ │ ├─┬ errno@0.1.4
│ │ │ └── prr@0.0.0
│ │ ├── image-size@0.5.0
│ │ ├── mime@1.3.4
│ │ ├─┬ promise@7.1.1
│ │ │ └── asap@2.0.5
│ │ └── source-map@0.5.6
│ └── object-assign@4.1.0
├─┬ gulp-notify@2.2.0
│ ├─┬ lodash.template@3.6.2
│ │ ├── lodash._basecopy@3.0.1
│ │ ├── lodash._basetostring@3.0.1
│ │ ├── lodash._basevalues@3.0.0
│ │ ├── lodash._isiterateecall@3.0.9
│ │ ├─┬ lodash.escape@3.2.0
│ │ │ └── lodash._root@3.0.1
│ │ ├─┬ lodash.keys@3.1.2
│ │ │ ├── lodash._getnative@3.9.1
│ │ │ ├── lodash.isarguments@3.1.0
│ │ │ └── lodash.isarray@3.0.4
│ │ └── lodash.templatesettings@3.1.1
│ ├─┬ node-notifier@4.6.1
│ │ ├─┬ cli-usage@0.1.4
│ │ │ ├── marked@0.3.6
│ │ │ └─┬ marked-terminal@1.6.2
│ │ │   ├─┬ cardinal@1.0.0
│ │ │   │ ├── ansicolors@0.2.1
│ │ │   │ └── redeyed@1.0.0
│ │ │   ├─┬ cli-table@0.3.1
│ │ │   │ └── colors@1.0.3
│ │ │   └─┬ node-emoji@1.4.1
│ │ │     └── string.prototype.codepointat@0.2.0
│ │ ├── growly@1.3.0
│ │ ├─┬ lodash.clonedeep@3.0.2
│ │ │ ├─┬ lodash._baseclone@3.3.0
│ │ │ │ ├── lodash._arraycopy@3.0.0
│ │ │ │ ├── lodash._arrayeach@3.0.0
│ │ │ │ └── lodash._basefor@3.0.3
│ │ │ └── lodash._bindcallback@3.0.1
│ │ ├── minimist@1.2.0
│ │ ├── semver@5.3.0
│ │ └── shellwords@0.1.0
│ ├─┬ node.extend@1.1.6
│ │ └── is@3.1.0
│ └─┬ through2@0.6.5
│   └─┬ readable-stream@1.0.34
│     └── isarray@0.0.1
├── gulp-plumber@1.1.0
├─┬ gulp-protractor@2.4.0
│ ├── async@1.5.2
│ ├─┬ dargs@4.1.0
│ │ └── number-is-nan@1.0.1
│ ├─┬ event-stream@3.3.4
│ │ ├── duplexer@0.1.1
│ │ ├── from@0.1.3
│ │ ├── map-stream@0.1.0
│ │ ├── pause-stream@0.0.11
│ │ ├── split@0.3.3
│ │ ├── stream-combiner@0.0.4
│ │ └── through@2.3.8
│ └─┬ protractor@3.3.0
│   ├── adm-zip@0.4.7
│   ├── glob@6.0.4
│   ├─┬ jasmine@2.4.1
│   │ ├── exit@0.1.2
│   │ ├─┬ glob@3.2.11
│   │ │ └── minimatch@0.3.0
│   │ └── jasmine-core@2.4.1
│   ├── jasminewd2@0.0.9
│   ├─┬ request@2.67.0
│   │ ├─┬ bl@1.0.3
│   │ │ └─┬ readable-stream@2.0.6
│   │ │   └── isarray@1.0.0
│   │ ├── form-data@1.0.1
│   │ ├── qs@5.2.1
│   │ └── tough-cookie@2.2.2
│   ├─┬ saucelabs@1.0.1
│   │ └─┬ https-proxy-agent@1.0.0
│   │   └─┬ agent-base@2.0.1
│   │     └── semver@5.0.3
│   └─┬ selenium-webdriver@2.52.0
│     ├── adm-zip@0.4.4
│     ├── tmp@0.0.24
│     └─┬ xml2js@0.4.4
│       ├── sax@0.6.1
│       └── xmlbuilder@8.2.2
├── gulp-rename@1.2.2
├─┬ gulp-replace@0.5.4
│ ├─┬ istextorbinary@1.0.2
│ │ ├── binaryextensions@1.0.1
│ │ └── textextensions@1.0.2
│ ├─┬ readable-stream@2.1.5
│ │ ├── buffer-shims@1.0.0
│ │ ├── core-util-is@1.0.2
│ │ ├── isarray@1.0.0
│ │ ├── process-nextick-args@1.0.7
│ │ ├── string_decoder@0.10.31
│ │ └── util-deprecate@1.0.2
│ └─┬ replacestream@4.0.2
│   ├── object-assign@4.1.0
│   └─┬ readable-stream@2.1.5
│     └── isarray@1.0.0
├─┬ gulp-rev-all@0.8.24
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ ├── has-color@0.1.7
│ │ └── strip-ansi@0.1.1
│ ├─┬ gulp-util@2.2.20
│ │ ├─┬ chalk@0.5.1
│ │ │ ├── ansi-styles@1.1.0
│ │ │ ├── has-ansi@0.1.0
│ │ │ ├─┬ strip-ansi@0.3.0
│ │ │ │ └── ansi-regex@0.2.1
│ │ │ └── supports-color@0.2.0
│ │ ├── lodash._reinterpolate@2.4.1
│ │ ├─┬ lodash.template@2.4.1
│ │ │ ├── lodash._escapestringchar@2.4.1
│ │ │ ├─┬ lodash.defaults@2.4.1
│ │ │ │ └── lodash._objecttypes@2.4.1
│ │ │ ├─┬ lodash.escape@2.4.1
│ │ │ │ ├─┬ lodash._escapehtmlchar@2.4.1
│ │ │ │ │ └── lodash._htmlescapes@2.4.1
│ │ │ │ └─┬ lodash._reunescapedhtml@2.4.1
│ │ │ │   └── lodash.keys@2.4.1
│ │ │ ├─┬ lodash.keys@2.4.1
│ │ │ │ ├── lodash._isnative@2.4.1
│ │ │ │ ├── lodash._shimkeys@2.4.1
│ │ │ │ └── lodash.isobject@2.4.1
│ │ │ ├── lodash.templatesettings@2.4.1
│ │ │ └─┬ lodash.values@2.4.1
│ │ │   └── lodash.keys@2.4.1
│ │ ├── minimist@0.2.0
│ │ ├─┬ through2@0.5.1
│ │ │ └── xtend@3.0.0
│ │ └── vinyl@0.2.3
│ ├── merge@1.2.0
│ └─┬ through2@0.4.2
│   ├─┬ readable-stream@1.0.34
│   │ └── isarray@0.0.1
│   └─┬ xtend@2.1.2
│     └── object-keys@0.4.0
├── gulp-rev-replace@0.4.3
├─┬ gulp-shell@0.5.2
│ └── async@1.5.2
├─┬ gulp-sourcemaps@1.6.0
│ ├── graceful-fs@4.1.9
│ ├─┬ strip-bom@2.0.0
│ │ └── is-utf8@0.2.1
│ └─┬ vinyl@1.2.0
│   ├── clone@1.0.2
│   └── clone-stats@0.0.1
├─┬ gulp-uglify@1.5.4
│ ├── deap@1.0.0
│ ├─┬ fancy-log@1.2.0
│ │ └── time-stamp@1.0.1
│ ├─┬ isobject@2.1.0
│ │ └── isarray@1.0.0
│ ├─┬ uglify-js@2.6.4
│ │ ├── async@0.2.10
│ │ ├── source-map@0.5.6
│ │ ├── uglify-to-browserify@1.0.2
│ │ └─┬ yargs@3.10.0
│ │   ├─┬ cliui@2.1.0
│ │   │ ├─┬ center-align@0.1.3
│ │   │ │ ├─┬ align-text@0.1.4
│ │   │ │ │ └── longest@1.0.1
│ │   │ │ └── lazy-cache@1.0.4
│ │   │ └── right-align@0.1.3
│ │   └── window-size@0.1.0
│ └── uglify-save-license@0.4.1
├─┬ gulp-util@3.0.7
│ ├── array-differ@1.0.0
│ ├── array-uniq@1.0.3
│ ├── beeper@1.1.0
│ ├─┬ dateformat@1.0.12
│ │ ├── get-stdin@4.0.1
│ │ └─┬ meow@3.7.0
│ │   ├─┬ camelcase-keys@2.1.0
│ │   │ └── camelcase@2.1.1
│ │   ├─┬ loud-rejection@1.6.0
│ │   │ ├─┬ currently-unhandled@0.4.1
│ │   │ │ └── array-find-index@1.0.2
│ │   │ └── signal-exit@3.0.1
│ │   ├── map-obj@1.0.1
│ │   ├── minimist@1.2.0
│ │   ├── object-assign@4.1.0
│ │   ├─┬ redent@1.0.0
│ │   │ ├─┬ indent-string@2.1.0
│ │   │ │ └── repeating@2.0.1
│ │   │ └── strip-indent@1.0.1
│ │   └── trim-newlines@1.0.0
│ ├─┬ gulplog@1.0.0
│ │ └── glogg@1.0.0
│ ├─┬ has-gulplog@0.1.0
│ │ └── sparkles@1.0.0
│ ├── lodash._reescape@3.0.0
│ ├── lodash._reevaluate@3.0.0
│ ├── lodash._reinterpolate@3.0.0
│ ├─┬ lodash.template@3.6.2
│ │ └── lodash.templatesettings@3.1.1
│ ├── minimist@1.2.0
│ ├─┬ multipipe@0.1.2
│ │ └─┬ duplexer2@0.0.2
│ │   └─┬ readable-stream@1.1.14
│ │     └── isarray@0.0.1
│ ├── object-assign@3.0.0
│ └── vinyl@0.5.3
├─┬ gulp-yuidoc@0.1.2
│ ├─┬ chalk@0.4.0
│ │ ├── ansi-styles@1.0.0
│ │ └── strip-ansi@0.1.1
│ ├─┬ gulp-util@2.2.20
│ │ ├─┬ chalk@0.5.1
│ │ │ ├── ansi-styles@1.1.0
│ │ │ ├── has-ansi@0.1.0
│ │ │ ├─┬ strip-ansi@0.3.0
│ │ │ │ └── ansi-regex@0.2.1
│ │ │ └── supports-color@0.2.0
│ │ ├── lodash._reinterpolate@2.4.1
│ │ ├─┬ lodash.template@2.4.1
│ │ │ ├── lodash.defaults@2.4.1
│ │ │ ├── lodash.escape@2.4.1
│ │ │ ├── lodash.keys@2.4.1
│ │ │ └── lodash.templatesettings@2.4.1
│ │ ├── minimist@0.2.0
│ │ ├─┬ through2@0.5.1
│ │ │ └── xtend@3.0.0
│ │ └── vinyl@0.2.3
│ ├── text-table@0.2.0
│ ├─┬ through2@0.4.1
│ │ ├─┬ readable-stream@1.0.34
│ │ │ └── isarray@0.0.1
│ │ └── xtend@2.1.2
│ ├─┬ vinyl-fs@0.1.4
│ │ ├── graceful-fs@2.0.3
│ │ └── mkdirp@0.3.5
│ └─┬ yuidocjs@0.3.50
│   ├─┬ express@3.1.2
│   │ ├── buffer-crc32@0.2.5
│   │ ├── commander@0.6.1
│   │ ├─┬ connect@2.7.5
│   │ │ ├── buffer-crc32@0.1.1
│   │ │ ├── bytes@0.2.0
│   │ │ ├── formidable@1.0.11
│   │ │ ├── pause@0.0.1
│   │ │ └── qs@0.5.1
│   │ ├── cookie@0.0.5
│   │ ├── cookie-signature@1.0.0
│   │ ├── fresh@0.1.0
│   │ ├── methods@0.0.1
│   │ ├── mkdirp@0.3.5
│   │ ├── range-parser@0.0.4
│   │ └─┬ send@0.1.0
│   │   └── mime@1.2.6
│   ├── graceful-fs@2.0.3
│   ├── marked@0.2.10
│   ├─┬ minimatch@0.2.14
│   │ ├── lru-cache@2.7.3
│   │ └── sigmund@1.0.1
│   └─┬ yui@3.14.1
│     └─┬ request@2.21.0
│       ├── aws-sign@0.3.0
│       ├── cookie-jar@0.3.0
│       ├── forever-agent@0.5.2
│       ├─┬ form-data@0.0.8
│       │ ├── async@0.2.10
│       │ └─┬ combined-stream@0.0.7
│       │   └── delayed-stream@0.0.5
│       ├─┬ hawk@0.13.1
│       │ ├─┬ boom@0.4.2
│       │ │ └── hoek@0.9.1
│       │ ├── cryptiles@0.2.2
│       │ ├── hoek@0.8.5
│       │ └─┬ sntp@0.2.4
│       │   └── hoek@0.9.1
│       ├─┬ http-signature@0.9.11
│       │ ├── asn1@0.1.11
│       │ ├── assert-plus@0.1.2
│       │ └── ctype@0.5.2
│       ├── json-stringify-safe@4.0.0
│       ├── mime@1.2.11
│       ├── oauth-sign@0.3.0
│       ├── qs@0.6.6
│       └── tunnel-agent@0.3.0
├─┬ gutil@1.6.4
│ └── sliced@1.0.1
├─┬ html-snapshots@0.12.3
│ ├── async@1.5.2
│ ├─┬ request@2.75.0
│ │ ├── aws-sign2@0.6.0
│ │ ├── aws4@1.5.0
│ │ ├─┬ bl@1.1.2
│ │ │ └─┬ readable-stream@2.0.6
│ │ │   └── isarray@1.0.0
│ │ ├── caseless@0.11.0
│ │ ├─┬ combined-stream@1.0.5
│ │ │ └── delayed-stream@1.0.0
│ │ ├── forever-agent@0.6.1
│ │ ├─┬ form-data@2.0.0
│ │ │ └── asynckit@0.4.0
│ │ ├── har-validator@2.0.6
│ │ ├─┬ hawk@3.1.3
│ │ │ ├── boom@2.10.1
│ │ │ ├── cryptiles@2.0.5
│ │ │ ├── hoek@2.16.3
│ │ │ └── sntp@1.0.9
│ │ ├─┬ http-signature@1.1.1
│ │ │ ├── assert-plus@0.2.0
│ │ │ ├─┬ jsprim@1.3.1
│ │ │ │ ├── extsprintf@1.0.2
│ │ │ │ ├── json-schema@0.2.3
│ │ │ │ └── verror@1.3.6
│ │ │ └─┬ sshpk@1.10.1
│ │ │   ├── asn1@0.2.3
│ │ │   ├── assert-plus@1.0.0
│ │ │   ├── bcrypt-pbkdf@1.0.0
│ │ │   ├─┬ dashdash@1.14.0
│ │ │   │ └── assert-plus@1.0.0
│ │ │   ├── ecc-jsbn@0.1.1
│ │ │   ├─┬ getpass@0.1.6
│ │ │   │ └── assert-plus@1.0.0
│ │ │   ├── jodid25519@1.0.2
│ │ │   ├── jsbn@0.1.0
│ │ │   └── tweetnacl@0.14.3
│ │ ├── is-typedarray@1.0.0
│ │ ├── isstream@0.1.2
│ │ ├── json-stringify-safe@5.0.1
│ │ ├── node-uuid@1.4.7
│ │ ├── oauth-sign@0.8.2
│ │ ├── stringstream@0.0.5
│ │ ├── tough-cookie@2.3.1
│ │ └── tunnel-agent@0.4.3
│ └─┬ xml2js@0.4.17
│   ├── sax@1.2.1
│   └── xmlbuilder@4.2.1
├─┬ isparta@4.0.0
│ ├─┬ escodegen@1.8.1
│ │ ├── estraverse@1.9.3
│ │ └── source-map@0.2.0
│ ├── esprima@2.7.3
│ ├─┬ istanbul@0.4.5
│ │ ├── async@1.5.2
│ │ ├── glob@5.0.15
│ │ ├─┬ handlebars@4.0.5
│ │ │ └── async@1.5.2
│ │ ├─┬ supports-color@3.1.2
│ │ │ └── has-flag@1.0.0
│ │ └── wordwrap@1.0.0
│ ├─┬ mkdirp@0.5.0
│ │ └── minimist@0.0.8
│ ├─┬ nomnomnomnom@2.0.1
│ │ ├─┬ chalk@0.4.0
│ │ │ ├── ansi-styles@1.0.0
│ │ │ └── strip-ansi@0.1.1
│ │ └── underscore@1.6.0
│ ├── object-assign@4.1.0
│ ├── source-map@0.5.6
│ └─┬ which@1.2.11
│   └── isexe@1.1.2
├─┬ istanbul@1.0.0-alpha.2
│ ├── abbrev@1.0.9
│ ├── async@1.5.2
│ ├─┬ istanbul-api@1.0.0-aplha.10
│ │ ├── async@1.5.2
│ │ ├─┬ fileset@0.2.1
│ │ │ ├── glob@5.0.15
│ │ │ └── minimatch@2.0.10
│ │ ├── istanbul-lib-coverage@1.0.0
│ │ ├─┬ istanbul-lib-hook@1.0.0-alpha.4
│ │ │ └── append-transform@0.3.0
│ │ ├── istanbul-lib-instrument@1.1.3
│ │ ├─┬ istanbul-lib-report@1.0.0-alpha.3
│ │ │ ├── async@1.5.2
│ │ │ ├── mkdirp@0.5.1
│ │ │ ├── path-parse@1.0.5
│ │ │ └── supports-color@3.1.2
│ │ ├─┬ istanbul-lib-source-maps@1.0.2
│ │ │ ├── mkdirp@0.5.1
│ │ │ └── source-map@0.5.6
│ │ └── istanbul-reports@1.0.0-alpha.8
│ ├─┬ js-yaml@3.6.1
│ │ └─┬ argparse@1.0.9
│ │   └── sprintf-js@1.0.3
│ ├── nopt@3.0.6
│ └── wordwrap@1.0.0
├── jasmine-core@2.5.2
├── js-360@0.5.1 extraneous
├─┬ jspm@0.16.46
│ ├── core-js@1.2.7
│ ├── glob@6.0.4
│ ├─┬ jspm-github@0.13.17
│ │ ├── expand-tilde@1.2.2
│ │ ├── mkdirp@0.5.1
│ │ ├── netrc@0.1.4
│ │ ├── semver@5.3.0
│ │ ├─┬ tar@2.2.1
│ │ │ ├── block-stream@0.0.9
│ │ │ └── fstream@1.0.10
│ │ └─┬ yauzl@2.4.1
│ │   └─┬ fd-slicer@1.0.1
│ │     └── pend@1.2.0
│ ├─┬ jspm-npm@0.26.12
│ │ ├── buffer-peek-stream@1.0.1
│ │ ├── glob@5.0.15
│ │ ├── mkdirp@0.5.1
│ │ ├─┬ rmdir@1.2.0
│ │ │ └─┬ node.flow@1.2.3
│ │ │   └─┬ node.extend@1.0.8
│ │ │     └── is@0.2.7
│ │ ├── semver@5.3.0
│ │ └── tar@1.0.3
│ ├─┬ jspm-registry@0.4.1
│ │ └── semver@4.3.6
│ ├── mkdirp@0.5.1
│ ├── ncp@2.0.0
│ ├─┬ proper-lockfile@1.2.0
│ │ ├── err-code@1.1.1
│ │ └── retry@0.10.0
│ ├── rsvp@3.3.3
│ ├── semver@5.3.0
│ ├── systemjs@0.19.39
│ └─┬ traceur@0.0.105
│   ├── glob@5.0.15
│   ├── semver@4.3.6
│   └─┬ source-map-support@0.2.10
│     └── source-map@0.1.32
├─┬ karma@0.13.22
│ ├── batch@0.5.3
│ ├─┬ body-parser@1.15.2
│ │ ├── bytes@2.4.0
│ │ ├── content-type@1.0.2
│ │ ├── depd@1.1.0
│ │ ├── iconv-lite@0.4.13
│ │ ├─┬ on-finished@2.3.0
│ │ │ └── ee-first@1.1.1
│ │ ├── qs@6.2.0
│ │ ├─┬ raw-body@2.1.7
│ │ │ └── bytes@2.4.0
│ │ └─┬ type-is@1.6.13
│ │   └── media-typer@0.3.0
│ ├── colors@1.1.2
│ ├── core-js@2.4.1
│ ├── di@0.0.1
│ ├─┬ dom-serialize@2.2.1
│ │ ├── custom-event@1.0.0
│ │ ├── ent@2.2.0
│ │ └── void-elements@2.0.1
│ ├─┬ expand-braces@0.1.2
│ │ ├── array-slice@0.2.3
│ │ └─┬ braces@0.1.5
│ │   └─┬ expand-range@0.1.1
│ │     ├── is-number@0.1.1
│ │     └── repeat-string@0.2.2
│ ├─┬ glob@7.1.1
│ │ └── fs.realpath@1.0.0
│ ├── isbinaryfile@3.0.1
│ ├── lodash@3.10.1
│ ├─┬ log4js@0.6.38
│ │ ├─┬ readable-stream@1.0.34
│ │ │ └── isarray@0.0.1
│ │ └── semver@4.3.6
│ ├── mime@1.3.4
│ ├─┬ optimist@0.6.1
│ │ └── wordwrap@0.0.2
│ ├── source-map@0.5.6
│ └─┬ useragent@2.1.9
│   └── lru-cache@2.2.4
├── karma-babel-preprocessor@6.0.1
├─┬ karma-chrome-launcher@1.0.1
│ └─┬ fs-access@1.0.1
│   └── null-check@1.0.0
├─┬ karma-coverage@1.1.1
│ ├─┬ istanbul@0.4.5
│ │ ├── async@1.5.2
│ │ ├── glob@5.0.15
│ │ ├── supports-color@3.1.2
│ │ └── wordwrap@1.0.0
│ ├── lodash@3.10.1
│ └── source-map@0.5.6
├── karma-jasmine@1.0.2
├─┬ karma-jspm@2.1.1
│ └─┬ glob@3.2.11
│   └── minimatch@0.3.0
├─┬ less-plugin-autoprefix@1.5.1
│ ├─┬ autoprefixer@6.5.0
│ │ ├── browserslist@1.4.0
│ │ ├── caniuse-db@1.0.30000544
│ │ ├── normalize-range@0.1.2
│ │ └── num2fraction@1.2.2
│ └─┬ postcss@5.2.4
│   ├── js-base64@2.1.9
│   ├── source-map@0.5.6
│   └── supports-color@3.1.2
├── mkdir-recursive@0.2.3
├─┬ object.assign@4.0.4
│ ├─┬ define-properties@1.1.2
│ │ ├── foreach@2.0.5
│ │ └── object-keys@1.0.11
│ ├── function-bind@1.1.0
│ └── object-keys@1.0.11
├── require-dir@0.3.0
├── run-sequence@1.2.2
├─┬ sitemap@1.8.2
│ ├── underscore@1.8.3
│ └── url-join@1.1.0
├── spin-360@0.0.3 extraneous
├── superagent@2.3.0 extraneous
├── vinyl-paths@2.1.0
└─┬ yargs@4.8.1
  ├─┬ cliui@3.2.0
  │ └── wrap-ansi@2.0.0
  ├── decamelize@1.2.0
  ├── get-caller-file@1.0.2
  ├─┬ os-locale@1.4.0
  │ └─┬ lcid@1.0.0
  │   └── invert-kv@1.0.0
  ├─┬ read-pkg-up@1.0.1
  │ └─┬ find-up@1.1.2
  │   └── path-exists@2.1.0
  ├── require-directory@2.1.1
  ├── require-main-filename@1.0.1
  ├── set-blocking@2.0.0
  ├─┬ string-width@1.0.2
  │ ├── code-point-at@1.0.1
  │ └── is-fullwidth-code-point@1.0.0
  ├── which-module@1.0.0
  ├── window-size@0.2.0
  ├── y18n@3.2.1
  └─┬ yargs-parser@2.4.1
    └── camelcase@3.0.0
AshleyGrant commented 7 years ago
  @bindable({
        name:'offeringsUrl',
        attribute:'offerings-url',
        changeHandler:'offeringsUrlChanged',
        defaultBindingMode: bindingMode.oneWay,
        defaultValue: {}
    })
export class Foo {
    @bindable pcProductView = 'grid';
}

When using the bindable decorator and passing the name property, you decorate the class. This tells Aurelia to add a bindable property to the class. As you have seen, if you use the bindable decorator inside the class, it will receive as its target the class property that comes next. So use the syntax I show above when you want to specify the name in the options to the decorator.

The first usage you posted isn't a valid use of the bindable decorator, so this isn't a bug in babel or Aurelia.