diff --git a/.babelrc b/.babelrc new file mode 100644 index 000000000..287b76b83 --- /dev/null +++ b/.babelrc @@ -0,0 +1,10 @@ +{ + "plugins": ["@babel/plugin-proposal-class-properties"], + "presets": [ + ["@babel/preset-env", { + "targets": { + "node": "12" + } + }] + ] +} diff --git a/.gitattributes b/.gitattributes index 176a458f9..f49b99cfa 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,7 @@ -* text=auto +* text eol=lf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.gif binary +*.jpg binary +*.jpeg binary diff --git a/.gitbook/assets/angular-fullstack-logo.svg b/.gitbook/assets/angular-fullstack-logo.svg new file mode 100644 index 000000000..bf40810ac --- /dev/null +++ b/.gitbook/assets/angular-fullstack-logo.svg @@ -0,0 +1,9045 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png new file mode 100644 index 000000000..8079c8294 Binary files /dev/null and b/.gitbook/assets/image (1).png differ diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png new file mode 100644 index 000000000..467d4479a Binary files /dev/null and b/.gitbook/assets/image (2).png differ diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png new file mode 100644 index 000000000..feed1d2cc Binary files /dev/null and b/.gitbook/assets/image (3).png differ diff --git a/.gitbook/assets/image (4).png b/.gitbook/assets/image (4).png new file mode 100644 index 000000000..faab366dc Binary files /dev/null and b/.gitbook/assets/image (4).png differ diff --git a/.gitbook/assets/image (5).png b/.gitbook/assets/image (5).png new file mode 100644 index 000000000..20a98b6b2 Binary files /dev/null and b/.gitbook/assets/image (5).png differ diff --git a/.gitbook/assets/image (6).png b/.gitbook/assets/image (6).png new file mode 100644 index 000000000..dfc1ea68c Binary files /dev/null and b/.gitbook/assets/image (6).png differ diff --git a/.gitbook/assets/image (7).png b/.gitbook/assets/image (7).png new file mode 100644 index 000000000..a3f223f39 Binary files /dev/null and b/.gitbook/assets/image (7).png differ diff --git a/.gitbook/assets/image.png b/.gitbook/assets/image.png new file mode 100644 index 000000000..a3f223f39 Binary files /dev/null and b/.gitbook/assets/image.png differ diff --git a/.gitignore b/.gitignore index 0c774b062..88c5c584e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,9 @@ node_modules -test/temp -test/UpperCaseBug +bower_components +/generators/* +/test/* +demo .idea -release.txt \ No newline at end of file +.DS_Store +release.txt +static diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 000000000..ff287e31c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "angular-fullstack-deps"] + path = angular-fullstack-deps + url = git@github.com:angular-fullstack/angular-fullstack-deps.git diff --git a/.npmignore b/.npmignore new file mode 100644 index 000000000..5106adfe8 --- /dev/null +++ b/.npmignore @@ -0,0 +1,18 @@ +angular-fullstack-deps +test +.idea +src +scripts +ISSUE_TEMPLATE.md +PULL_REQUEST_TEMPLATE.md +/.travis.yml +gulpfile.js +Gruntfile.js +.jshintrc +/mocha.conf.js +/media +/docs +/task-utils +/.git* +/circle.yml +/.editorconfig diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 59f6446a0..000000000 --- a/.travis.yml +++ /dev/null @@ -1,8 +0,0 @@ -language: node_js -node_js: - - '0.10' - - '0.8' -before_install: - - currentfolder=${PWD##*/} - - if [ "$currentfolder" != 'generator-angular-fullstack' ]; then cd .. && eval "mv $currentfolder generator-angular-fullstack" && cd generator-angular-fullstack; fi - diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a2fa969e..80fb3e1ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,1206 @@ + +# [5.0.0-rc.4](https://github.com/angular-fullstack/generator-angular-fullstack/compare/5.0.0-rc.1...v5.0.0-rc.4) (2018-08-11) + + +### Bug Fixes + +* **auth:** fix change password form ([4b147a4](https://github.com/angular-fullstack/generator-angular-fullstack/commit/4b147a4)), closes [#2747](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2747) +* **client:** hotfix for Babel bug ([73d1e29](https://github.com/angular-fullstack/generator-angular-fullstack/commit/73d1e29)) +* **css:** refactor CSS handling ([68c6e39](https://github.com/angular-fullstack/generator-angular-fullstack/commit/68c6e39)) +* **express:** use cors in dev ([cf3c5e5](https://github.com/angular-fullstack/generator-angular-fullstack/commit/cf3c5e5)) +* **gen:test:** refactor gen to fix tests w/ pug ([2080421](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2080421)) +* **package:** pin uws ([ed3b775](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ed3b775)) +* **server:** + * fix CSRF for Angular ([9c816ca](https://github.com/angular-fullstack/generator-angular-fullstack/commit/9c816ca)) + * SequelizeStore requires object with db ([e3cae48](https://github.com/angular-fullstack/generator-angular-fullstack/commit/e3cae48)), closes [#2732](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2732) + * wsInitPromise should be passed into then in a function ([ce46519](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ce46519)), closes [#2751](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2751) +* **webpack:** remove old plugins ([f1d3a7c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f1d3a7c)) + + +### Features + +* **app:** + * generate and serve pre-gzipped client files ([8f22699](https://github.com/angular-fullstack/generator-angular-fullstack/commit/8f22699)) + * use mini-css plugin ([3ac870a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3ac870a)) +* **gen:** add new route subgenerator ([91a13ff](https://github.com/angular-fullstack/generator-angular-fullstack/commit/91a13ff)) +* **package:** + * add 'gulp build' as build script ([f572635](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f572635)) + * add build:server script ([b98d8a8](https://github.com/angular-fullstack/generator-angular-fullstack/commit/b98d8a8)) + * reload server on changes ([6166123](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6166123)) +* **server:** allow mongo uri env var in dev ([a46a002](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a46a002)) + + +### Performance Improvements + +* **client:** comment out core-js imports\n\nas most people won't need them ([11decfe](https://github.com/angular-fullstack/generator-angular-fullstack/commit/11decfe)) + + + + +# [5.0.0-rc.2](https://github.com/angular-fullstack/generator-angular-fullstack/compare/5.0.0-rc.1...v5.0.0-rc.2) (2018-06-02) + + +### Bug Fixes + +* **css:** refactor CSS handling ([68c6e39](https://github.com/angular-fullstack/generator-angular-fullstack/commit/68c6e39)) +* **gen:test:** refactor gen to fix tests w/ pug ([2080421](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2080421)) + + +### Features + +* **gen:** add new route subgenerator ([91a13ff](https://github.com/angular-fullstack/generator-angular-fullstack/commit/91a13ff)) + + + + +# [5.0.0-rc.1](https://github.com/angular-fullstack/generator-angular-fullstack/compare/5.0.0-beta.1...v5.0.0-rc.1) (2018-03-15) + + +### Bug Fixes + +* **gen:** fix .npmignore ([c3bf61f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c3bf61f)) + + + + +# [5.0.0-rc.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/5.0.0-beta.1...v5.0.0-rc.0) (2018-03-08) + + +### Bug Fixes + +* **client:** fix some outstanding client bugs ([f4c5471](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f4c5471)) +* **client:auth:guard:** declare `authService` on class ([afc725f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/afc725f)) +* **gen:** + * canary cleanup ([96364a7](https://github.com/angular-fullstack/generator-angular-fullstack/commit/96364a7)) + * don't convert main html file ([8d37569](https://github.com/angular-fullstack/generator-angular-fullstack/commit/8d37569)) +* **package:** add missing comma ([b2a745b](https://github.com/angular-fullstack/generator-angular-fullstack/commit/b2a745b)) +* **seed:** rename index.html to app.html to fix CRSF and token issues ([2e784bf](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2e784bf)) +* **server:** fix express router usage ([542337e](https://github.com/angular-fullstack/generator-angular-fullstack/commit/542337e)) +* **server:auth:** specify digest for pbkdf2 ([689c3fc](https://github.com/angular-fullstack/generator-angular-fullstack/commit/689c3fc)), closes [#2628](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2628) +* **server:test:** resolve primus in non-dev ([7bed185](https://github.com/angular-fullstack/generator-angular-fullstack/commit/7bed185)) +* **test:** + * only save new primus.js in dev ([483dda0](https://github.com/angular-fullstack/generator-angular-fullstack/commit/483dda0)) + * use babel in `protractor.conf.js` ([ffb16cb](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ffb16cb)) +* misc cleanup ([a1619e6](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a1619e6)) + + +### Features + +* **client:** add auth-guard service ([a5cbada](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a5cbada)) +* **package:** + * add separate client lint script for TS ([d426be7](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d426be7)) + * add test:server script ([24b6144](https://github.com/angular-fullstack/generator-angular-fullstack/commit/24b6144)) + + +# [5.0.0-beta.3](https://github.com/angular-fullstack/generator-angular-fullstack/compare/5.0.0-beta.1...v5.0.0-beta.3) (2017-11-30) + + +### Bug Fixes + +* **client:auth:guard:** declare `authService` on class ([afc725f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/afc725f)) + + + + +# [5.0.0-beta.2](https://github.com/angular-fullstack/generator-angular-fullstack/compare/5.0.0-beta.1...v5.0.0-beta.2) (2017-11-12) + + +### Bug Fixes + +* **package:** add missing comma ([b2a745b](https://github.com/angular-fullstack/generator-angular-fullstack/commit/b2a745b)) +* **server:test:** resolve primus in non-dev ([7bed185](https://github.com/angular-fullstack/generator-angular-fullstack/commit/7bed185)) +* **test:** + * only save new primus.js in dev ([483dda0](https://github.com/angular-fullstack/generator-angular-fullstack/commit/483dda0)) + * use babel in `protractor.conf.js` ([ffb16cb](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ffb16cb)) + + +### Features + +* Upgraded to Angular 5.0.1 +* **client:** add auth-guard service ([a5cbada](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a5cbada)) + + + + +# [5.0.0-beta.1](https://github.com/angular-fullstack/generator-angular-fullstack/compare/5.0.0-beta.0...v5.0.0-beta.1) (2017-10-17) + + +### Bug Fixes + +* **client:** fix thing redirect ([6e1b254](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6e1b254)) +* **client:auth:** fix session re-establish ([31a6ecf](https://github.com/angular-fullstack/generator-angular-fullstack/commit/31a6ecf)), closes [#2625](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2625) +* **client:test:** fixes for TS ([47b9d3e](https://github.com/angular-fullstack/generator-angular-fullstack/commit/47b9d3e)) +* **gen:** + * fix gen issue with flow on ([4f9618a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/4f9618a)) + * remedy test failure ([f226df9](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f226df9)) +* **server:** swap shrink-ray back out for compression ([e225a67](https://github.com/angular-fullstack/generator-angular-fullstack/commit/e225a67)) +* **test:** disable `main.component.spec.js` ([c5e6db9](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c5e6db9)) +* **ts:** exclude typescript specs files from generating error on transpilling ([46f762e](https://github.com/angular-fullstack/generator-angular-fullstack/commit/46f762e)) +* **webpack:** use a mock for primus in test ([689d0b2](https://github.com/angular-fullstack/generator-angular-fullstack/commit/689d0b2)) + + +### Features + +* **client:auth:** don't submit forms if invalid ([d967554](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d967554)) +* **gen:** default Flow on ([804a917](https://github.com/angular-fullstack/generator-angular-fullstack/commit/804a917)) +* **package:** + * add `start:mongo` convenience script ([101f567](https://github.com/angular-fullstack/generator-angular-fullstack/commit/101f567)) + * add linting scripts ([8cfe32e](https://github.com/angular-fullstack/generator-angular-fullstack/commit/8cfe32e)) + * add start scripts ([e2bfff8](https://github.com/angular-fullstack/generator-angular-fullstack/commit/e2bfff8)) + * add test:client script ([9be904d](https://github.com/angular-fullstack/generator-angular-fullstack/commit/9be904d)) + + + + +# [5.0.0-alpha.5](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.1.0...v5.0.0-alpha.5) (2017-05-14) + + +### Bug Fixes + +* **client:** + * fix a few client code errors ([5535fe3](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5535fe3)) + * fix loading css ([5d780fe](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5d780fe)) + * fix upgrade stuff ([01e1054](https://github.com/angular-fullstack/generator-angular-fullstack/commit/01e1054)) +* **client:footer:** fix hardcoded template & style extentions ([c638fb6](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c638fb6)), closes [#2421](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2421) +* **client:main:** fix add/delete things ([91b920b](https://github.com/angular-fullstack/generator-angular-fullstack/commit/91b920b)) +* **client:navbar:** fix hardcoded template ext ([5e999b2](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5e999b2)), closes [#2469](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2469) +* **client:userService:** use `id` or `_id` property ([4be3191](https://github.com/angular-fullstack/generator-angular-fullstack/commit/4be3191)) +* **events:** mongoose event registration ([79bdeed](https://github.com/angular-fullstack/generator-angular-fullstack/commit/79bdeed)), closes [#2479](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2479) +* **gen:** + * comment out ngCompnent stuff ([ab1bf13](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ab1bf13)), closes [#2403](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2403) + * fix another type stripping; also TS doesn't like default exports ([a55691a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a55691a)) +* **gen:factory:** fix factory subgen location ([b09cfe5](https://github.com/angular-fullstack/generator-angular-fullstack/commit/b09cfe5)), closes [#2381](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2381) +* **mocha:** fix server not closing ([2ba3dd8](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2ba3dd8)) +* **package:** move syntax plugins to deps ([c016979](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c016979)), closes [#2405](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2405) +* **server:** + * fix new shared default export ([d4e4a7a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d4e4a7a)) + * fix some bluebird warnings ([a84ff90](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a84ff90)), closes [#2412](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2412) [#2363](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2363) +* **webpack:** fix CSS loader options ([3f7e2b4](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3f7e2b4)) + + +### Features + +* **app:** convert to Angular 2 ([6c3b307](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6c3b307)) +* **gen:** + * add functions for adding TS public/private keywords ([17fea6c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/17fea6c)) + * consolidate templates, convert html to pug during write ([f6deb25](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f6deb25)) + * generate js with jscodeshift instead of babel ([bf8f9fc](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bf8f9fc)) + * replace socket.io w/ primus + uws ([ccea1f3](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ccea1f3)) + * use new base classes ([3debe1c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3debe1c)) + + + + +## [4.2.3](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.2.2...v4.2.3) (2017-11-29) + +This version reverts using shrink-ray by default (for Brotli compression) b/c so many users have has issues installing it. + + +### Bug Fixes + +* **seed:** rename index.html to app.html to fix CRSF and token issues ([2e784bf](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2e784bf)) +* **server:auth:** specify digest for pbkdf2 ([689c3fc](https://github.com/angular-fullstack/generator-angular-fullstack/commit/689c3fc)), closes [#2628](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2628) + + + + +## [4.2.2](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.2.0...v4.2.2) (2017-05-25) + + +### Bug Fixes + +* **seed:** fix unexpected token ([65a2438](https://github.com/angular-fullstack/generator-angular-fullstack/commit/65a2438)), closes [#2580](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2580) + + + + +## [4.2.1](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.2.0...v4.2.1) (2017-05-22) + + +### Bug Fixes + +* **client:auth:** fix isAdmin call ([8ac8821](https://github.com/angular-fullstack/generator-angular-fullstack/commit/8ac8821)), closes [#2561](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2561) +* **client:auth.service:** fix lodash import ([2dde95d](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2dde95d)), closes [#2549](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2549) +* **gen:** fix yarn check command ([9ea681c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/9ea681c)) + + + + +# [4.2.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.1.4...v4.2.0) (2017-04-19) + +## Notable Changes + +* `node-inspector` has been taken out in favor of Node's integrated `--inspect` flag. +* @benmarten has taken care of a lot of the lint issues we've seen polluting the console +* @benmarten also enabled the use of [Yarn](https://yarnpkg.com) if you have it installed. Thanks Ben! +* Various other fixes. See the [comparison](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.1.4...4.2.0) for the full list. + +### Bug Fixes + +* **angular-validation-match:** Integration with Babel & Typescript ([#2517](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2517)) ([9db9918](https://github.com/angular-fullstack/generator-angular-fullstack/commit/9db9918)) + + + + +## [4.1.4](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.1.2...v4.1.4) (2017-03-01) + + +### Bug Fixes + +* **client:footer:** + * fix docs link (html) ([8d69c7a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/8d69c7a)), closes [#2501](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2501) + * fix docs link (pug) ([190a121](https://github.com/angular-fullstack/generator-angular-fullstack/commit/190a121)) +* **events:** mongoose event registration ([e3ed67f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/e3ed67f)), closes [#2479](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2479) +* **webpack:** + * don't use html-plugin in test ([959c31c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/959c31c)), closes [#2374](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2374) + * use raw-loader for pug files ([a212236](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a212236)) + + +### Performance Improvements + +* **test:endpoint:** + * reduce number of eslint commands run ([6faa7f0](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6faa7f0)) + * remove unused imports ([95a5aab](https://github.com/angular-fullstack/generator-angular-fullstack/commit/95a5aab)) +* **test:main:** reduce number of app generations ([d42d0b6](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d42d0b6)) + + + + +## [4.1.3](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.1.2...v4.1.3) (2017-02-11) + + +### Bug Fixes + +* **events:** mongoose event registration ([e3ed67f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/e3ed67f)), closes [#2479](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2479) +* **webpack:** don't use html-plugin in test ([959c31c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/959c31c)), closes [#2374](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2374) + + +### Performance Improvements + +* **test:endpoint:** + * reduce number of eslint commands run ([6faa7f0](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6faa7f0)) + * remove unused imports ([95a5aab](https://github.com/angular-fullstack/generator-angular-fullstack/commit/95a5aab)) +* **test:main:** reduce number of app generations ([d42d0b6](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d42d0b6)) + + + + +## [4.1.2](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.1.1...v4.1.2) (2017-01-09) + + +### Bug Fixes + +* **css:** fix stylus-loader options ([641646c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/641646c)) +* **eslint:** hides global variable warnings ([#2448](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2448)) ([6aae4f5](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6aae4f5)) +* **sql:** Fix form field not displaying sequalize error ([d2cc15a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d2cc15a)), closes [#2400](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2400) +* **webpack:css:** disable css-loader sourceMap option ([d48f0b0](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d48f0b0)), closes [#2188](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2188) + + + + +## [4.1.1](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.1.0...v4.1.1) (2016-12-08) + + +## Notable Changes + +* Upgraded to Angular 1.6 + + +### Bug Fixes + +* **gen:factory:** fix factory subgen location ([b09cfe5](https://github.com/angular-fullstack/generator-angular-fullstack/commit/b09cfe5)), closes [#2381](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2381) + + + + +# [4.1.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.0.5...v4.1.0) (2016-09-30) + + +## Notable Changes + +* We've bumped some of the Babel deps to `^6.16.0`. This should fix the issues everyone's been seeing with class properties being stripped when using the default settings of Babel without Flow types. + + +### Bug Fixes + +* **client:modal:** Fix unknown provider error ([68b7b69](https://github.com/angular-fullstack/generator-angular-fullstack/commit/68b7b69)), closes [#2247](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2247) + + +### Features + +* **client:footer:** + * add documentation link ([ad44ee2](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ad44ee2)) + * modify footer ([3ca3cd5](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3ca3cd5)) +* **gen:gulp:** port changelog code to gulp ([045abfb](https://github.com/angular-fullstack/generator-angular-fullstack/commit/045abfb)) + + + + +## [4.0.5](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.0.4...v4.0.5) (2016-09-15) + + +### Bug Fixes + +* **client:auth:** fix hasOwnProperty instances, fix User usage ([#2232](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2232)) ([f41e420](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f41e420)), closes [#2232](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2232) [#2212](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2212) +* **client:oauthButtons:** add ngInject ([#2209](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2209)) ([9ce58e8](https://github.com/angular-fullstack/generator-angular-fullstack/commit/9ce58e8)), closes [#2206](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2206) +* **endpoint:controller:** fix findOneAndUpdate syntax ([1c2a219](https://github.com/angular-fullstack/generator-angular-fullstack/commit/1c2a219)), closes [#2221](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2221) +* **heroku:** Changed port variable to capital letters so heroku recognize it ([44dccba](https://github.com/angular-fullstack/generator-angular-fullstack/commit/44dccba)), closes [#2185](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2185) +* **karma:** remove extra `require` ([c188229](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c188229)), closes [#2219](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2219) +* **server:twitter:** make sure IDs are strings ([5991a72](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5991a72)), closes [#1997](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1997) +* **socket:** add ngInject ([#2208](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2208)) ([b530695](https://github.com/angular-fullstack/generator-angular-fullstack/commit/b530695)), closes [#2203](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2203) + + + + +## [4.0.4](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.0.3...v4.0.4) (2016-09-01) + + +### Bug Fixes + +* **webpack:** + * conditionally exclude ui-bootstrap ([dd131d9](https://github.com/angular-fullstack/generator-angular-fullstack/commit/dd131d9)) + * fix webpack vendor import ([#2177](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2177)) ([aa32054](https://github.com/angular-fullstack/generator-angular-fullstack/commit/aa32054)), closes [#2177](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2177) + + + + +## [4.0.3](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.0.2...v4.0.3) (2016-09-01) + + +### Bug Fixes + +* **gen:** fix doc img generation\n\nAdd gulp task to copy images to gh-pages ([5bb43be](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5bb43be)) +* **gen:heroku:** fix module export, gen base ([8e50326](https://github.com/angular-fullstack/generator-angular-fullstack/commit/8e50326)), closes [#2148](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2148) +* **webpack:** fix bootstrap-sass import path ([bae1c86](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bae1c86)) + + + + +## [4.0.2](https://github.com/angular-fullstack/generator-angular-fullstack/compare/4.0.1...v4.0.2) (2016-09-01) + + +### Bug Fixes + +* **client:socket.service:** import lodash named exports ([231e500](https://github.com/angular-fullstack/generator-angular-fullstack/commit/231e500)) +* **gulp:build:** remove protractor typings ([#2144](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2144)) ([b9abc58](https://github.com/angular-fullstack/generator-angular-fullstack/commit/b9abc58)) + + +### Features + +* **docs:** add daux.io docs ([f1e7a87](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f1e7a87)) +* **gen:app:** + * add eslint to the yo write stream ([85921be](https://github.com/angular-fullstack/generator-angular-fullstack/commit/85921be)), closes [#2157](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2157) + * run eslint w/ fix on both client & server ([c5ab431](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c5ab431)) +* **gen:gulp:** add TODO tasks in gulpfile. rm 2 old grunt tasks ([1e25de7](https://github.com/angular-fullstack/generator-angular-fullstack/commit/1e25de7)) + + + + +## [4.0.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.7.6...v4.0.0) (2016-08-08) + + +## Notable Changes + +### [Webpack](http://webpack.github.io/) +* No more Bower +* Webpack is a Module Bundler for the front-end. +* Everything starts in `client/app.js`. It imports (using CommonJS / ES2015 imports) everything else needed from there. +* Whenever we create a new Angular 1 module, we export its name, and import that name in another module up the tree, all the way to `client/app.js`. This design pattern allows for easy lazy-loading. + +### Gulp v Grunt +Grunt has been removed. +* Gulp is significantly faster to run +* Gulp focuses on programmatic configuration, which makes it a breeze to configure compared to Grunt's JSON-config-focused configuration. +* Gulp development is much more active, with Gulp 4.0.0 hopefully being released soon. + +### ESLint +JSHint + JSCS have been replaced with ESLint. ESLint provides a gigantic amount of rules, and is easily pluggable with many plugins. It uses Espree. Also, JSCS has merged with ESLint. + +### Types +Flow support has been added. TypeScript type errors have been fixed. + +### Async/Sync Auth methods +The following methods from the client Auth service have been split into two: `getCurrentUser`, `isLoggedIn`, `hasRole`, `isAdmin`. The reason that these methods could be both synchronous and asynchronous depending on how many arguments were passed is because they were called from Angular templates. Now, the Angular templates call the sync form of these methods (e.x. `getCurrentUserSync`), and the original functions are now only async. + +### Constants +The task runner no longer takes care of creating an Angular module for config constants. It is taken care of by webpack now (the `shared.js` files is now just `require`d) + +### Endpoint PUT/PATCH +PUT now defaults to an upsert. PATCH now actually does an HTTP PATCH. + +### -Livereload +Browsersync +Livereload has been removed in favor of [Browsersync](https://www.browsersync.io/) + + + + +# [3.8.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.7.6...v3.8.0) (2016-09-15) + + +### Bug Fixes + +* **authorization:** header workaround for IE11 ([2362103](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2362103)), closes [#2051](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2051) +* **endpoint:controller:** wrap saveUpdates in an if(entity) statement ([31c0a79](https://github.com/angular-fullstack/generator-angular-fullstack/commit/31c0a79)), closes [#2052](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2052) [#2059](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2059) +* **grunt:** + * add comma ([485c44b](https://github.com/angular-fullstack/generator-angular-fullstack/commit/485c44b)) + * run express:prod on production port ([aac61b2](https://github.com/angular-fullstack/generator-angular-fullstack/commit/aac61b2)), closes [#1814](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1814) +* **gulp:** fix plain css generation ([#2013](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2013)) ([54479fc](https://github.com/angular-fullstack/generator-angular-fullstack/commit/54479fc)), closes [#2013](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2013) +* **gulpfile:** gulp-filter[@4](https://github.com/4).0.0 need "dot:true" option ([1fbf24b](https://github.com/angular-fullstack/generator-angular-fullstack/commit/1fbf24b)), closes [#2146](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2146) [#2151](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2151) +* **server:** return express stuff ([81ea8fa](https://github.com/angular-fullstack/generator-angular-fullstack/commit/81ea8fa)) + + +### Features + +* **gen:** add configurable ports ([#2005](https://github.com/angular-fullstack/generator-angular-fullstack/issues/2005)) ([50e6d0c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/50e6d0c)) + + + + +## [3.7.6](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.7.5...v3.7.6) (2016-06-21) + + +### Notable Changes + +* Add deprecation warning about Grunt +* Bumped a few generator dependencies + + + +## [3.7.5](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.7.4...v3.7.5) (2016-06-02) + + +### Bug Fixes + +* **build:** fix templateCache generation on gulpfile ([#1936](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1936)) ([#1942](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1942)) ([0286817](https://github.com/angular-fullstack/generator-angular-fullstack/commit/0286817)), closes [#1936](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1936) [#1942](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1942) [#1936](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1936) + + +### Features + +* **genBase:** show raw stdout for yo check ([#1944](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1944)) ([7ae3829](https://github.com/angular-fullstack/generator-angular-fullstack/commit/7ae3829)) + + + + +## [3.7.4](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.7.3...v3.7.4) (2016-05-25) + + +### Bug Fixes + +* **build:** fix up PR 1896 ([3113a3e](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3113a3e)) +* **ie:** IE11 log in works for ports 80 and 443 ([414b80a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/414b80a)), closes [#1880](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1880) [#1896](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1896) + + + + +## [3.7.2](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.7.1...v3.7.2) (2016-05-15) + + +### Bug Fixes + +* **gen:app:** fix insight askPermission ([f6f1fb6](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f6f1fb6)), closes [#1889](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1889) + + + + +## [3.7.1](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.7.0...v3.7.1) (2016-05-15) + + +### Bug Fixes + +* **gen:** move bluebird to dependencies ([7d87697](https://github.com/angular-fullstack/generator-angular-fullstack/commit/7d87697)), closes [#1888](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1888) + + + + +# [3.7.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.6.1...v3.7.0) (2016-05-15) + + +### Notable Changes +* The Angular component sub-generator from generator-ng-component was added +* The generator no longer uses the babel require hook at runtime +* The generator's template files are now passed through Babel at scaffold time. This allows for things like removing type annotations if the user so chooses. +* TypeScript uses typings instead of tsd + + +### Bug Fixes + +* **client:** remove no-empty from tslint.json ([eafc4e0](https://github.com/angular-fullstack/generator-angular-fullstack/commit/eafc4e0)) +* **client:navbar.controller:** refactor EJS, exclude constructor if empty ([a75b1d4](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a75b1d4)) +* **e2e:main:** fix yeoman.png regex ([4b4db99](https://github.com/angular-fullstack/generator-angular-fullstack/commit/4b4db99)) +* **express:** import `connect-mongo/es5` if node < 4 ([63fb77f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/63fb77f)), closes [#1844](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1844) +* **gen:app:** only include `typings.json` with TS ([6f82220](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6f82220)) +* **gen:endpoint:** + * return promise ([6b30ef7](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6b30ef7)) + * typo ([0787039](https://github.com/angular-fullstack/generator-angular-fullstack/commit/0787039)) +* **gen:grunt:** update paths ([104efc6](https://github.com/angular-fullstack/generator-angular-fullstack/commit/104efc6)) +* **gen:gulp:babel:** return the two merged streams ([3748953](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3748953)) +* **gen:gulp:clean:** also clean test dir ([aedb37e](https://github.com/angular-fullstack/generator-angular-fullstack/commit/aedb37e)) +* **gen:gulp:updateFixtures:** fix saving as private/public ([a2cecab](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a2cecab)) +* **gen:test:endpoint:** `jshint` function also checks that the file exists ([17d9985](https://github.com/angular-fullstack/generator-angular-fullstack/commit/17d9985)) +* **gen:test:main:** fix sql e2e ([a9d238c](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a9d238c)) +* **grunt:** exclude jshint config if using TypeScript ([54d4ebd](https://github.com/angular-fullstack/generator-angular-fullstack/commit/54d4ebd)) +* **gulp:** fix racing condition for copy:constant ([f07b451](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f07b451)), closes [#1830](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1830) +* **package:** + * always make html2js a dependency ([bdf1e4a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bdf1e4a)), closes [#1722](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1722) + * grunt-injector 1.0.0 is broken ([3391299](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3391299)) + * include gulp devDependency ([c857b27](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c857b27)) +* **server:** + * MONGOLAB_URI -> MONGODB_URI ([ae313df](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ae313df)), closes [#1838](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1838) +* **server:oauth:** + * fix mongoose validation when re-login using twitter oauth ([5f8805d](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5f8805d)) + + +### Features + +* **client:auth:** add first type definition (`callback: Function`) ([7ed2585](https://github.com/angular-fullstack/generator-angular-fullstack/commit/7ed2585)) +* **gen:** + * add component generator ([bf649ab](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bf649ab)), closes [#1711](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1711) + * also build test dir (just like generators dir) ([e09fb76](https://github.com/angular-fullstack/generator-angular-fullstack/commit/e09fb76)) + * default to gulp, mocha ([4cc2da6](https://github.com/angular-fullstack/generator-angular-fullstack/commit/4cc2da6)) +* **gen:app:** run all client files through Babel & JS Beautifier ([1d4ce11](https://github.com/angular-fullstack/generator-angular-fullstack/commit/1d4ce11)) +* **gen:gulp:** + * add installFixtures task ([04a7878](https://github.com/angular-fullstack/generator-angular-fullstack/commit/04a7878)) + * add mocha ([ead201a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/ead201a)) + * port updateFixtures to Gulp (hot damn is it faster :fire:) ([94d69da](https://github.com/angular-fullstack/generator-angular-fullstack/commit/94d69da)) +* **gen:test:** + * add endpoint path name test ([0b36375](https://github.com/angular-fullstack/generator-angular-fullstack/commit/0b36375)) + * add endpoint-specific tests ([887476f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/887476f)) +* **grunt:less:** add sourcemap options ([#1868](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1868)) ([55c9a18](https://github.com/angular-fullstack/generator-angular-fullstack/commit/55c9a18)), closes [#1765](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1765) +* **gulp:ts:** inject client .ts test files automatically into config file. ([17cb4e4](https://github.com/angular-fullstack/generator-angular-fullstack/commit/17cb4e4)), closes [#1828](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1828) + + + + +# [3.6.1](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.6.0...v3.6.1) (2016-04-23) + + +### Bug Fixes + +* **package:** revert to Grunt 0.4.5 if user chooses Grunt ([1cc91a3](https://github.com/angular-fullstack/generator-angular-fullstack/commit/1cc91a3)), closes [#1815](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1815) + + + + +# [3.6.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.5.0...v3.6.0) (2016-04-21) + + +### Bug Fixes + +* **gen:heroku:** allow for grunt or gulp ([954baa4](https://github.com/angular-fullstack/generator-angular-fullstack/commit/954baa4)) +* **gen:openshift:** allow for grunt or gulp ([2f1a229](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2f1a229)) +* **gulp:** build images before rev-replace ([4139694](https://github.com/angular-fullstack/generator-angular-fullstack/commit/4139694)) +* **gulp:copy:constant:** fix output dir ([a5e31cf](https://github.com/angular-fullstack/generator-angular-fullstack/commit/a5e31cf)), closes [#1748](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1748) +* **gulp:inject:** prevent `'inject:css'` from showing up twice ([09b4f01](https://github.com/angular-fullstack/generator-angular-fullstack/commit/09b4f01)) +* **gulp:inject:css:** remove leading `/` ([6de6272](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6de6272)) +* **gulp:jshint:** include jshint alongside gulp-jshint ([978f6ba](https://github.com/angular-fullstack/generator-angular-fullstack/commit/978f6ba)) +* **gulp:serve:** + * add `env:all` ([27531fb](https://github.com/angular-fullstack/generator-angular-fullstack/commit/27531fb)), closes [#1779](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1779) + * remove extra comma ([d9d9f62](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d9d9f62)) +* **gulp:styles:** fix styles task for plain CSS ([dc72c33](https://github.com/angular-fullstack/generator-angular-fullstack/commit/dc72c33)), closes [#1747](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1747) +* **gulp:test:client:** move around some `'tsd'` tasks ([86c7510](https://github.com/angular-fullstack/generator-angular-fullstack/commit/86c7510)) +* **gulp:wiredep:** copy `exclude` array code from Grunt ([2997e34](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2997e34)), closes [#1739](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1739) +* **livereload:** ignore api routes and specific non-html files ([c6a396b](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c6a396b)), closes [#1636](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1636) [#1764](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1764) +* **server:user:spec:** replace `context` with `describe` ([5716660](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5716660)) +* **ts:** + * exclude ui-router.mock.ts from tsconfig.client.test.json if using ngroute ([3e40776](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3e40776)) + * fix typo of gulp's typescript test configuration file ([023b261](https://github.com/angular-fullstack/generator-angular-fullstack/commit/023b261)) +* **user:** fix email and password validation ([474a3a1](https://github.com/angular-fullstack/generator-angular-fullstack/commit/474a3a1)) + +### Features + +* **GitHub:** add issue and PR templates ([79b1db7](https://github.com/angular-fullstack/generator-angular-fullstack/commit/79b1db7)) +* **gulp:** + * add serve:debug, add gulp-node-inspector ([f6eb26d](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f6eb26d)) + * port `grunt buildcontrol` tasks over to gulp ([3221678](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3221678)) + + + + +## [3.5.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.4.2...v3.5.0) (2016-03-20) + + +### Notable Changes + +A lot of various dependencies were updated + + +### Bug Fixes + +* **gen:** + * import exec ([4f3f9dc](https://github.com/angular-fullstack/generator-angular-fullstack/commit/4f3f9dc)) + * move some insight code ([7be23bd](https://github.com/angular-fullstack/generator-angular-fullstack/commit/7be23bd)) + * shim determineAppname, use name argument if provided ([bdaeb5a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bdaeb5a)), closes [#1682](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1682) +* **grunt:** update rev-ed images in css as well as js ([5a24b83](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5a24b83)), closes [#977](https://github.com/angular-fullstack/generator-angular-fullstack/issues/977) +* **grunt:filerev:** don't rev assets/fonts/ ([5228536](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5228536)) +* **gulp:** add inject:tsconfig to inject task ([bb045c5](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bb045c5)) +* **gulp:build:** exclude local.env.sample.js ([429d5f3](https://github.com/angular-fullstack/generator-angular-fullstack/commit/429d5f3)), closes [#1570](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1570) +* **jshint:** capitalize MongoStore ([310cb22](https://github.com/angular-fullstack/generator-angular-fullstack/commit/310cb22)) +* **model:user:** add missing `return` statements ([f6ca289](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f6ca289)) + + +## [3.4.2](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.4.1...v3.4.2) (2016-03-12) + + +### Features + +* **gen:** add Insight stat tracker ([fdf35b3](https://github.com/angular-fullstack/generator-angular-fullstack/commit/fdf35b3)) + + + +## [3.4.1](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.4.0...v3.4.1) (2016-03-11) + + +### Bug Fixes + +* **gen:** shim determineAppname, use name argument if provided ([bdaeb5a](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bdaeb5a)), closes [#1682](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1682) +* **grunt:** update rev-ed images in css as well as js ([5a24b83](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5a24b83)), closes [#977](https://github.com/angular-fullstack/generator-angular-fullstack/issues/977) +* **grunt:filerev:** don't rev assets/fonts/ ([5228536](https://github.com/angular-fullstack/generator-angular-fullstack/commit/5228536)) +* **gulp:** add inject:tsconfig to inject task ([bb045c5](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bb045c5)) +* **gulp:build:** exclude local.env.sample.js ([429d5f3](https://github.com/angular-fullstack/generator-angular-fullstack/commit/429d5f3)), closes [#1570](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1570) + + + +# [3.4.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.3.0...v3.4.0) (2016-03-09) + + +### Notable Changes + +* Updated Angular to 1.5 (the main page now uses an Angular 1.5 component) +* Updated generator-ng-component to ~0.2.1. Angular subgenerators will now generate ES6 code and TypeScript code. +* Updated angular-bootstrap to ~1.1.2 +* Updated bluebird to ^3.3.3, and set mongoose to use bluebird instead of mpromise. This allows us to remove promisification of mongoose APIs. +* Updated PhantomJS to ^2.1.4 + +### Bug Fixes + +* **deps:** + * always include grunt-babel if grunt chosen ([7ba7d1f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/7ba7d1f)) + * include tslint ([543d784](https://github.com/angular-fullstack/generator-angular-fullstack/commit/543d784)) +* **gen:** fix Stylus & Sass extensions ([37d6c46](https://github.com/angular-fullstack/generator-angular-fullstack/commit/37d6c46)), closes [#1609](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1609) +* **grunt:babel:** exclude local.env.sample.js ([3e0518b](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3e0518b)) +* **grunt:injector:** sort js/ts modules ([fe6aba2](https://github.com/angular-fullstack/generator-angular-fullstack/commit/fe6aba2)) +* **gulp:** add inject:tsconfig, change script watcher ([978e07e](https://github.com/angular-fullstack/generator-angular-fullstack/commit/978e07e)) +* **gulp:build:** + * add copy:fonts task ([27f1cc8](https://github.com/angular-fullstack/generator-angular-fullstack/commit/27f1cc8)) + * fix building when using Jade ([687cd09](https://github.com/angular-fullstack/generator-angular-fullstack/commit/687cd09)) +* **gulp:ts:** fix gulp not using latest typescript config after changed ([6a6afd9](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6a6afd9)) +* **gulp:tslint:** exclude both typings and test_typings ([2e83bd1](https://github.com/angular-fullstack/generator-angular-fullstack/commit/2e83bd1)) +* **gulp:watch:** re-compile jade to .tmp ([18412a7](https://github.com/angular-fullstack/generator-angular-fullstack/commit/18412a7)) +* **server:oauth:** fix sequelize syntax ([221f7a4](https://github.com/angular-fullstack/generator-angular-fullstack/commit/221f7a4)), closes [#1654](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1654) +* **tslint:** fix no-trailing-comma ([d7cd347](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d7cd347)) + +### Features + +* **gen:** add 'es6' to generator-ng-component filters ([65530b3](https://github.com/angular-fullstack/generator-angular-fullstack/commit/65530b3)) + + + +# [3.3.0](https://github.com/angular-fullstack/generator-angular-fullstack/compare/3.2.0...v3.3.0) (2016-02-02) + + +### Notable Changes + +* TypeScript support +* Gulp support + +### Features + +* **client:** move navbar and footer directive usage to around the router view directive in index.html ([c429adb](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c429adb)) + +### Bug Fixes + +* **gulp:** + * make coverage tests work ([d3fd0c0](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d3fd0c0)) + * exclude constant file from lint:scripts:client ([103db11](https://github.com/angular-fullstack/generator-angular-fullstack/commit/103db11)), closes [#1587](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1587) +* **grunt:** + * fix wrong tslint vs jshint ([15f60db](https://github.com/angular-fullstack/generator-angular-fullstack/commit/15f60db)) + * exclude constant file from jshint:all ([f4e590f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f4e590f)) + * **babel:** don't try to transpile JSON files ([885438f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/885438f)), closes [#1561](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1561) + * **build:** don't copy local.env.sample ([be5a1f4](https://github.com/angular-fullstack/generator-angular-fullstack/commit/be5a1f4)), closes [#1570](https://github.com/angular-fullstack/generator-angular-fullstack/issues/1570) +* **gen:test:** make sure we overwrite conflicts, add missing options from mock prompt options ([d6aeacf](https://github.com/angular-fullstack/generator-angular-fullstack/commit/d6aeacf)) +* **npm:** make sure to include mocha for server tests ([6c4e926](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6c4e926)) + + + +# [3.3.0-beta.0](https://github.com/DaftMonk/generator-angular-fullstack/compare/3.2.0...v3.3.0-beta.0) (2016-01-06) + + +### Bug Fixes + +* **client:util.urlParse:** special treatment for IE ([869b45b](https://github.com/DaftMonk/generator-angular-fullstack/commit/869b45b)) +* **gulp:** + * **mocha:** have tests clean up once complete ([93dec12](https://github.com/DaftMonk/generator-angular-fullstack/commit/93dec12)) + * **test:** fix gulp test dependencies ([7bc99fb](https://github.com/DaftMonk/generator-angular-fullstack/commit/7bc99fb)) + +### Features + +* **client:** Add initial TypeScript support ([22d46d5](https://github.com/DaftMonk/generator-angular-fullstack/commit/22d46d5)) + + + +# [3.2.0](https://github.com/DaftMonk/generator-angular-fullstack/compare/3.1.1...v3.2.0) (2016-01-03) + + +### Features + +* **app**: fix .gitattributes ([6b17ef7](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6b17ef719424cbe4025a7abb3bdc7466853f700c)) +* **gulp** + * add missing tasks ([4d0e2ba](https://github.com/angular-fullstack/generator-angular-fullstack/commit/4d0e2ba32ddaa8c0f4a9a78cbce362843b522894)) + * update useref to latest version ([f21a388](https://github.com/angular-fullstack/generator-angular-fullstack/commit/f21a388f9e724b34cdd92f5a704782c2035e677d)) + * add file revisioning for images ([3bf29b2](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3bf29b27e4a3c61bc932af11dd3ea9a27c8fd48c)) + +### Bug Fixes + +* **e2e**: force e2e tests to wait for angular ([842ab55](https://github.com/angular-fullstack/generator-angular-fullstack/commit/842ab558c721f114b27d9dae8d3b6e436db71af8)) +* **gen**: fix styleExt being `sass` instead of `scss` ([8f99a8f](https://github.com/angular-fullstack/generator-angular-fullstack/commit/8f99a8ffb89e2c98b06b025bcdeb2374c839e81f)) +* **gen**: set scriptExt, templateExt, & styleExt when re-using a .yo-rc.json ([6e59229](https://github.com/angular-fullstack/generator-angular-fullstack/commit/6e59229afde8c3590da9d8f83bdd96c556fadfd6)) +* **gulp:** + * inject angular modules before other scripts ([c0d5a14](https://github.com/angular-fullstack/generator-angular-fullstack/commit/c0d5a146fd18e9953ece8e180cfd4c33f8fac63f)) + * clean .tmp folder in build task ([9596ba4](https://github.com/angular-fullstack/generator-angular-fullstack/commit/9596ba47a1e817605eb9ccdb600f4aa62d718e3f)) + * add missing gulp-env package ([cf017de](https://github.com/angular-fullstack/generator-angular-fullstack/commit/cf017debb7f2715896bf93003b576a0242a270b5)) + * get client tests working ([0cb4a4b](https://github.com/angular-fullstack/generator-angular-fullstack/commit/0cb4a4b9494a564508d6f2ec256374224465808b)) + * use different transpile options for server and client ([bb67961](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bb679618d6bca2d84b7bc8adf1886f0171a5d005)) + * make sure tests and main app file are not injected ([0171112](https://github.com/angular-fullstack/generator-angular-fullstack/commit/017111297968f3fcfb604273fa37d162ad01a714)) + * make sure `.htaccess` is copied on build ([3602406](https://github.com/angular-fullstack/generator-angular-fullstack/commit/3602406631d4f5e73d51bab6d11c1d975b25bd00)) + * call `wiredep:test` before running tests ([103adb2](https://github.com/angular-fullstack/generator-angular-fullstack/commit/103adb2e19feda6bdb3487b3cde69afd12feb48d)) + * **inject:css**: fix string that should be template string ([bb92502](https://github.com/angular-fullstack/generator-angular-fullstack/commit/bb92502593a27045a05d6d8789f54f05fa9125f5)) + + +## [3.1.1](https://github.com/DaftMonk/generator-angular-fullstack/compare/3.1.0...v3.1.1) (2015-12-15) + + +### Bug Fixes + +* **client:auth.decorator**: fix Auth.isLoggedIn not having a noop arg ([0e9f302](https://github.com/angular-fullstack/generator-angular-fullstack/commit/0e9f3025fbe69c8613435e59d028cf6ce9b0e9e4)) + + + +## [3.1.0](https://github.com/DaftMonk/generator-angular-fullstack/compare/3.0.2...v3.1.0) (2015-12-13) + + +### Bug Fixes + +* **client:auth:** fix auth 'decorator' ([56d12fc](https://github.com/DaftMonk/generator-angular-fullstack/commit/56d12fc)), closes [#1492](https://github.com/DaftMonk/generator-angular-fullstack/issues/1492) +* **gulp:** + * add babel runtime options ([0a9afa1](https://github.com/DaftMonk/generator-angular-fullstack/commit/0a9afa1)) + * update gulp.src in build:client ([6f4d3b0](https://github.com/DaftMonk/generator-angular-fullstack/commit/6f4d3b0)) +* **navbar:** fix controller constructor with ng-route + auth ([4b59e1f](https://github.com/DaftMonk/generator-angular-fullstack/commit/4b59e1f)), closes [#1462](https://github.com/DaftMonk/generator-angular-fullstack/issues/1462) + +### Features + +* **admin:** spruce up the look of the user list ([38bb6b8](https://github.com/DaftMonk/generator-angular-fullstack/commit/38bb6b8)) +* **gulp:** add experimental Gulp support ([c70fd47](https://github.com/DaftMonk/generator-angular-fullstack/commit/c70fd47)) `yo angular-fullstack --gulp` + + + +## [3.0.2](https://github.com/DaftMonk/generator-angular-fullstack/compare/3.0.1...3.0.2) (2015-12-05) + + +### Bug Fixes + +* **api:user:** remove `password` before sending user objects instead of `hashedPassword` ([c08bd95](https://github.com/DaftMonk/generator-angular-fullstack/commit/c08bd95)), closes [#1459](https://github.com/DaftMonk/generator-angular-fullstack/issues/1459) +* **client:auth:** remove decorator logic ([3229acd](https://github.com/DaftMonk/generator-angular-fullstack/commit/3229acd)), closes [#1455](https://github.com/DaftMonk/generator-angular-fullstack/issues/1455) + + +## [3.0.1](https://github.com/DaftMonk/generator-angular-fullstack/compare/3.0.0...3.0.1) (2015-12-04) + + +This version just changes the recommended Node version to ^4.2.3, since it fixes some vulnerabilities. Also, the Travis-CI config has been changed to loosely test Node 5.1.1 instead of 5.0.0. + + + +# [3.0.0](https://github.com/DaftMonk/generator-angular-fullstack/compare/2.1.1...3.0.0) (2015-12-06) + +### New Features + + * **Sequelize** - You can now choose between MongoDB + Mongoose or SQLite3 + Sequelize + * **Babel** - We now include Babel transpiler support, with plans to add TypeScript in the future + * **Lusca** - Lusca Security Middleware is included by default + * **Angular Modules** - A few components of the front-end have been broken out into their own Angular modules, such as `auth`, `admin`, and a new `util` module + * **Modern Angular Best-Practices** - We have moved a lot of the code to take advantage of the `controllerAs` syntax, as well as ES6/ES7 Classes + * Mongoose Bluebird Promises + +### Breaking Changes + + * **Node >= 4.2.2** - We now support versions of Node 4.2.2 and up. Since this is a generator for scaffolding out a new project, it makes sense to move support to the 4.2.2 Long Term Support (LTS) version of Node, since it is the most supported release by Node. It is likely that the generator will work with earlier versions of Node, but it is not recommended. + * **~~CoffeeScript~~, ~~Vanilla JS~~** - Removed CoffeeScript and vanilla JS support. CoffeeScript has served its purpose and been replaced by much better transpilers. Vanilla JS doesn't provide a lot of the features that enable good, modern code. We now only support Babel 5.8.x, and plan to add TypeScript support in the future. + * Removed some backwards-compatibility support code + +To see the full list of changes, click the '3.0.0' title to view the GitHub compare between 3.0.0 and 2.1.1 + + +## [2.1.1](https://github.com/DaftMonk/generator-angular-fullstack/compare/2.1.0...2.1.1) (2015-07-29) + + +### Bug Fixes + +* **app:** + * correct grunt clean glob ([8e8ae96](https://github.com/DaftMonk/generator-angular-fullstack/commit/8e8ae96)) + * ensure all files end with a newline ([8511260](https://github.com/DaftMonk/generator-angular-fullstack/commit/8511260)) + * fix folder depth in rev and usemin globs ([18f8d31](https://github.com/DaftMonk/generator-angular-fullstack/commit/18f8d31)) + * update sequelize syntax in seed.js ([a9372a1](https://github.com/DaftMonk/generator-angular-fullstack/commit/a9372a1)) + * use 0.0.0.0 for default IP ([2cd1c24](https://github.com/DaftMonk/generator-angular-fullstack/commit/2cd1c24)), closes [DaftMonk/generator-angular-fullstack#1071](https://github.com/DaftMonk/generator-angular-fullstack/issues/1071) +* **app:test:** include `client/components` in babel preprocessing ([6b575d1](https://github.com/DaftMonk/generator-angular-fullstack/commit/6b575d1)), closes [DaftMonk/generator-angular-fullstack#1081](https://github.com/DaftMonk/generator-angular-fullstack/issues/1081) +* **build:** exclued `bower_components` from the grunt rev and usemin blocks ([7ae43ae](https://github.com/DaftMonk/generator-angular-fullstack/commit/7ae43ae)), closes [#522](https://github.com/DaftMonk/generator-angular-fullstack/issues/522) +* **test:** + * update protractor test for angular 1.4 ([f5acad0](https://github.com/DaftMonk/generator-angular-fullstack/commit/f5acad0)) + * use proper controlFlow in protractor tests ([8dce663](https://github.com/DaftMonk/generator-angular-fullstack/commit/8dce663)) + +### Features + +* **app:** + * improve `Gruntfile.js` file globbing ([5874dfd](https://github.com/DaftMonk/generator-angular-fullstack/commit/5874dfd)) + * merge H5BP updates to index.html ([4a88551](https://github.com/DaftMonk/generator-angular-fullstack/commit/4a88551)) + * watch integration tests for changes ([a81aeb1](https://github.com/DaftMonk/generator-angular-fullstack/commit/a81aeb1)) +* **build:** switch to grunt-filerev ([cd28298](https://github.com/DaftMonk/generator-angular-fullstack/commit/cd28298)) +* **test:** add jasmine-spec-reporter ([f34e8f3](https://github.com/DaftMonk/generator-angular-fullstack/commit/f34e8f3)) + + + + +# [2.1.0](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.13...2.1.0) (2015-07-15) + + +### Bug Fixes + +* **app:** missing event.preventDefault ([c90d762](https://github.com/DaftMonk/generator-angular-fullstack/commit/c90d762)) +* **app-logout:** add blank templates to logout route/state ([650d244](https://github.com/DaftMonk/generator-angular-fullstack/commit/650d244)), closes [#570](https://github.com/DaftMonk/generator-angular-fullstack/issues/570) +* **app-signup:** switch button classes ([5898e0c](https://github.com/DaftMonk/generator-angular-fullstack/commit/5898e0c)) +* **demo:** include bootstrap in demo ([19e2133](https://github.com/DaftMonk/generator-angular-fullstack/commit/19e2133)) +* **deps:** use angular ~1.2 before migrated to 1.3 ([6a196e2](https://github.com/DaftMonk/generator-angular-fullstack/commit/6a196e2)), closes [#654](https://github.com/DaftMonk/generator-angular-fullstack/issues/654) +* **endpoint:** + * fully support sequelize models ([df82d17](https://github.com/DaftMonk/generator-angular-fullstack/commit/df82d17)) + * refactor handleError for promise use ([0af7c3e](https://github.com/DaftMonk/generator-angular-fullstack/commit/0af7c3e)) +* **endpoint:thing:** use Express 4 syntax ([c7b48a5](https://github.com/DaftMonk/generator-angular-fullstack/commit/c7b48a5)) +* **endpoint:user:** refactor validationError for promise use ([c98cb5d](https://github.com/DaftMonk/generator-angular-fullstack/commit/c98cb5d)) +* **express:** support new options of updated connect-mongo ([727d661](https://github.com/DaftMonk/generator-angular-fullstack/commit/727d661)) +* **gen:** + * camelCase endpoint name when used in variable name ([7362080](https://github.com/DaftMonk/generator-angular-fullstack/commit/7362080)), closes [#540](https://github.com/DaftMonk/generator-angular-fullstack/issues/540) + * Check that answers.odms exists ([342606c](https://github.com/DaftMonk/generator-angular-fullstack/commit/342606c)) + * filter `client/components/socket` js files ([49d5bbd](https://github.com/DaftMonk/generator-angular-fullstack/commit/49d5bbd)), closes [#530](https://github.com/DaftMonk/generator-angular-fullstack/issues/530) +* **gen:build:** Adds missing slash ([bb4d92e](https://github.com/DaftMonk/generator-angular-fullstack/commit/bb4d92e)) +* **gen:endpoint:** Fix JSCS stuff and use Express 4 syntax ([1bcffd6](https://github.com/DaftMonk/generator-angular-fullstack/commit/1bcffd6)) +* **git:** Remove old text=auto ([e0350cc](https://github.com/DaftMonk/generator-angular-fullstack/commit/e0350cc)) +* **jshint:** Removed 'regexp' from server and client jshintrc (I couldn't find it in the docs ([e02f094](https://github.com/DaftMonk/generator-angular-fullstack/commit/e02f094)) +* **model:** fix update bugs with mongoose and sequelize ([1805975](https://github.com/DaftMonk/generator-angular-fullstack/commit/1805975)) +* **npm:** Remove git diff comment ([349b6d3](https://github.com/DaftMonk/generator-angular-fullstack/commit/349b6d3)) +* **oauth:** + * Facebook API updated ([f6e7a12](https://github.com/DaftMonk/generator-angular-fullstack/commit/f6e7a12)) + * Google scopes deprecated ([136f15e](https://github.com/DaftMonk/generator-angular-fullstack/commit/136f15e)) +* return a 404 when no user is found fixes #711 ([38c0d7c](https://github.com/DaftMonk/generator-angular-fullstack/commit/38c0d7c)), closes [#711](https://github.com/DaftMonk/generator-angular-fullstack/issues/711) +* **openshift:** fix processing of rhc app show output ([dedf46c](https://github.com/DaftMonk/generator-angular-fullstack/commit/dedf46c)) +* **server:** server should launch in dev mode if production env var is not specified ([9cdcc90](https://github.com/DaftMonk/generator-angular-fullstack/commit/9cdcc90)), closes [#590](https://github.com/DaftMonk/generator-angular-fullstack/issues/590) +* **server-tests:** `test:coverage` task ([5198685](https://github.com/DaftMonk/generator-angular-fullstack/commit/5198685)) +* **test:** + * change `protractor.getInstance` to `browser` ([c7f6c36](https://github.com/DaftMonk/generator-angular-fullstack/commit/c7f6c36)) + * remove package.json and bower.json ([0ec2e18](https://github.com/DaftMonk/generator-angular-fullstack/commit/0ec2e18)) + * update sequelize destroy usage ([8df9992](https://github.com/DaftMonk/generator-angular-fullstack/commit/8df9992)) +* **travis:** + * Add nodejs 12 to travis.yml ([acecde9](https://github.com/DaftMonk/generator-angular-fullstack/commit/acecde9)) + * remove node v0.11 from testing ([dae69cf](https://github.com/DaftMonk/generator-angular-fullstack/commit/dae69cf)) + * Remove unicode stuff from file creation test expectations, and add nodejs 0.12 t ([bf9a973](https://github.com/DaftMonk/generator-angular-fullstack/commit/bf9a973)) + +### Features + +* **app:** + * add grunt jscs task for maintaining consistent code style ([8a1a245](https://github.com/DaftMonk/generator-angular-fullstack/commit/8a1a245)) + * add mongodb error handling to quit app if unable to connect with mongodb server ([31bee73](https://github.com/DaftMonk/generator-angular-fullstack/commit/31bee73)) + * additional app generator option for ES6 preprocessing using babel ([bc03aba](https://github.com/DaftMonk/generator-angular-fullstack/commit/bc03aba)) + * additional app generator option for ES6 preprocessing using babel ([cbb06a4](https://github.com/DaftMonk/generator-angular-fullstack/commit/cbb06a4)) + * implement footer as directive ([cf298a7](https://github.com/DaftMonk/generator-angular-fullstack/commit/cf298a7)) + * implement navbar as directive ([24171aa](https://github.com/DaftMonk/generator-angular-fullstack/commit/24171aa)) +* **app-auth:** Improve client-side Auth service ([65d03fc](https://github.com/DaftMonk/generator-angular-fullstack/commit/65d03fc)), closes [#456](https://github.com/DaftMonk/generator-angular-fullstack/issues/456) +* **app-routing:** improve app routing ([6aadee6](https://github.com/DaftMonk/generator-angular-fullstack/commit/6aadee6)), closes [#331](https://github.com/DaftMonk/generator-angular-fullstack/issues/331) +* **build:** add gitter webhook for travis ([6b88efd](https://github.com/DaftMonk/generator-angular-fullstack/commit/6b88efd)) +* **gen:** + * add README.md ([f07b09c](https://github.com/DaftMonk/generator-angular-fullstack/commit/f07b09c)) + * Remove global jQuery dependency ([a9230ca](https://github.com/DaftMonk/generator-angular-fullstack/commit/a9230ca)), closes [#547](https://github.com/DaftMonk/generator-angular-fullstack/issues/547) + * unify testing framework ([654de87](https://github.com/DaftMonk/generator-angular-fullstack/commit/654de87)) + * use common endpoint templates for thing route ([6dc8130](https://github.com/DaftMonk/generator-angular-fullstack/commit/6dc8130)) +* **generator:** use sauce labs for running e2e tests with travis CI ([50ca41d](https://github.com/DaftMonk/generator-angular-fullstack/commit/50ca41d)), closes [#572](https://github.com/DaftMonk/generator-angular-fullstack/issues/572) +* **model:** abstract model events to a standard EventEmitter ([91657d7](https://github.com/DaftMonk/generator-angular-fullstack/commit/91657d7)), closes [#857](https://github.com/DaftMonk/generator-angular-fullstack/issues/857) [#490](https://github.com/DaftMonk/generator-angular-fullstack/issues/490) +* **readme:** add david-dm badge & move badges to new line ([f8f32f4](https://github.com/DaftMonk/generator-angular-fullstack/commit/f8f32f4)) +* **server:** + * add support for sequelize ([943120e](https://github.com/DaftMonk/generator-angular-fullstack/commit/943120e)), closes [#414](https://github.com/DaftMonk/generator-angular-fullstack/issues/414) + * implement server-side ES6 via babel ([60334a8](https://github.com/DaftMonk/generator-angular-fullstack/commit/60334a8)) +* **server-tests:** code coverage and e2e ([dbbaa20](https://github.com/DaftMonk/generator-angular-fullstack/commit/dbbaa20)) +* **travis-ci:** enable container builds and caching ([00317a8](https://github.com/DaftMonk/generator-angular-fullstack/commit/00317a8)) + + + + +## [2.0.13](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.12...v2.0.13) (2014-08-29) + + +### Bug Fixes + +* **gen:** + * fix build when not selecting socket.io ([fdf063c](https://github.com/DaftMonk/generator-angular-fullstack/commit/fdf063c)) + * use bool for bootstrap filters ([a5decbc](https://github.com/DaftMonk/generator-angular-fullstack/commit/a5decbc)), closes [#496](https://github.com/DaftMonk/generator-angular-fullstack/issues/496) + +### Features + +* **auth:** make crypto async ([6aecdf7](https://github.com/DaftMonk/generator-angular-fullstack/commit/6aecdf7)) + + + + +## [2.0.11](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.10...v2.0.11) (2014-08-26) + + +### Bug Fixes + +* **app-config:** Use parentheses to fix string concat in config ([c6a50ce](https://github.com/DaftMonk/generator-angular-fullstack/commit/c6a50ce)), closes [#466](https://github.com/DaftMonk/generator-angular-fullstack/issues/466) +* **app-jshint:** improve jshint usage ([35fcf49](https://github.com/DaftMonk/generator-angular-fullstack/commit/35fcf49)), closes [#463](https://github.com/DaftMonk/generator-angular-fullstack/issues/463) [#486](https://github.com/DaftMonk/generator-angular-fullstack/issues/486) +* **gen:** use more restrictive version range for ng-component ([1969897](https://github.com/DaftMonk/generator-angular-fullstack/commit/1969897)) + +### Features + +* **app-socket.io:** build socket.io into vendor.js ([06f2e46](https://github.com/DaftMonk/generator-angular-fullstack/commit/06f2e46)) +* **docs:** Inform users/developers of the `canary` branch ([7469362](https://github.com/DaftMonk/generator-angular-fullstack/commit/7469362)) +* **gen:** make generator tests faster, and easier to run ([84acb74](https://github.com/DaftMonk/generator-angular-fullstack/commit/84acb74)) +* **gen-travis:** add additional node version to travis.yml ([e4f00b0](https://github.com/DaftMonk/generator-angular-fullstack/commit/e4f00b0)) + + + + +## [2.0.10](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.9...v2.0.10) (2014-08-16) + + +### Bug Fixes + +* **server:** undefined domain env variable causing issues ([cb683dd](https://github.com/DaftMonk/generator-angular-fullstack/commit/cb683dd)) + + + + +## [2.0.9](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.8...v2.0.9) (2014-08-16) + + +### Bug Fixes + +* **app:** + * add .idea folder to gitignore ([2e1f118](https://github.com/DaftMonk/generator-angular-fullstack/commit/2e1f118)) + * save the version of the generator that was used ([2b76b17](https://github.com/DaftMonk/generator-angular-fullstack/commit/2b76b17)) +* **app:api:user:** Missing user response code ([c176660](https://github.com/DaftMonk/generator-angular-fullstack/commit/c176660)), closes [#438](https://github.com/DaftMonk/generator-angular-fullstack/issues/438) +* **gen:app:socket:** use `''` instead `null` as URL to open ioSocket ([0f0d0fd](https://github.com/DaftMonk/generator-angular-fullstack/commit/0f0d0fd)) +* **gruntfile:** incorrect path to index.html for cdnify ([0ad646c](https://github.com/DaftMonk/generator-angular-fullstack/commit/0ad646c)) +* **openshift:** fix issues with openshift deployment ([ace0723](https://github.com/DaftMonk/generator-angular-fullstack/commit/ace0723)) + +### Features + +* **gen:** add automatic demo releases with grunt task ([4485223](https://github.com/DaftMonk/generator-angular-fullstack/commit/4485223)) +* **server:** add sample env config file that can be tracked by git ([c9f80bc](https://github.com/DaftMonk/generator-angular-fullstack/commit/c9f80bc)) +* **uibootstrap-modal:** add basic modal service and template when using uibootstrap ([7c14bed](https://github.com/DaftMonk/generator-angular-fullstack/commit/7c14bed)) + + + + +## [2.0.8](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.7...v2.0.8) (2014-07-31) + + +### Bug Fixes + +* **coffee:** update socket service to match javascript version ([c27cefe](https://github.com/DaftMonk/generator-angular-fullstack/commit/c27cefe)) +* **gen:** Fixed missing `oauth` property in `.yo-rc.json` after 2.0.5 update ([11d324b](https://github.com/DaftMonk/generator-angular-fullstack/commit/11d324b)) +* **travis:** install sass gem if sass is enabled ([ceeac27](https://github.com/DaftMonk/generator-angular-fullstack/commit/ceeac27)) +* **twitter:** revert mongoose connection change ([8675a00](https://github.com/DaftMonk/generator-angular-fullstack/commit/8675a00)) + +### Features + +* **user-management:** use the User $resource to populate users for the admin page ([708f072](https://github.com/DaftMonk/generator-angular-fullstack/commit/708f072)) + + + + +## [2.0.7](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.6...v2.0.7) (2014-07-28) + + +### Bug Fixes + +* **gruntfile:** grunt tasks should run if no local config exists ([422d6bc](https://github.com/DaftMonk/generator-angular-fullstack/commit/422d6bc)) +* **server:** fix setting TTL index on collection : sessions error ([0581ed0](https://github.com/DaftMonk/generator-angular-fullstack/commit/0581ed0)) + + + + +## [2.0.6](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.5...v2.0.6) (2014-07-27) + + +### Bug Fixes + +* **app-dependency:** change ngmin to ng-annotate ([dd023fa](https://github.com/DaftMonk/generator-angular-fullstack/commit/dd023fa)) +* **bootstrap:** removed styles breaking responsiveness for high-res screens ([053fedb](https://github.com/DaftMonk/generator-angular-fullstack/commit/053fedb)) +* **responsive:** `things` made a little bit more responsive ([58aa7a4](https://github.com/DaftMonk/generator-angular-fullstack/commit/58aa7a4)) +* **socketio:** fallback for servers where `socket.handshake.address` is not provided ([f6a1934](https://github.com/DaftMonk/generator-angular-fullstack/commit/f6a1934)) +* **stylus:** remove bootstrap css import in stylus when bootstrap is not selected ([f7c3d0a](https://github.com/DaftMonk/generator-angular-fullstack/commit/f7c3d0a)), closes [#368](https://github.com/DaftMonk/generator-angular-fullstack/issues/368) + +### Features + +* **heroku:** provide prompt to set the deployment region ([13cd5e7](https://github.com/DaftMonk/generator-angular-fullstack/commit/13cd5e7)) +* **oauth:** multiple strategies per account; changeable email ([ef06272](https://github.com/DaftMonk/generator-angular-fullstack/commit/ef06272)) + + + + +## [2.0.5](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.4...v2.0.5) (2014-07-18) + + +### Bug Fixes + +* **account:** add authentication requirement for settings view ([9105c0f](https://github.com/DaftMonk/generator-angular-fullstack/commit/9105c0f)), closes [#327](https://github.com/DaftMonk/generator-angular-fullstack/issues/327) +* **app:** + * bootstrap glyphicons not correctly linked on grunt build ([53d193d](https://github.com/DaftMonk/generator-angular-fullstack/commit/53d193d)), closes [#333](https://github.com/DaftMonk/generator-angular-fullstack/issues/333) + * wait for currentUser to resolve before checking if logged in on route changes ([6d6090d](https://github.com/DaftMonk/generator-angular-fullstack/commit/6d6090d)), closes [#306](https://github.com/DaftMonk/generator-angular-fullstack/issues/306) [#294](https://github.com/DaftMonk/generator-angular-fullstack/issues/294) +* **app:server:thing.controller:** missing `res` param for handleError added ([eb7d50c](https://github.com/DaftMonk/generator-angular-fullstack/commit/eb7d50c)) +* **app:styles:** use correct path for font awesome and glyphicons ([1917ba3](https://github.com/DaftMonk/generator-angular-fullstack/commit/1917ba3)) +* **dependencies:** include certain dependencies only when answering yes to their respective prompts ([040c57d](https://github.com/DaftMonk/generator-angular-fullstack/commit/040c57d)) +* **server:** + * fix seeding of db in test mode causing tests to randomly fail ([05f7f43](https://github.com/DaftMonk/generator-angular-fullstack/commit/05f7f43)), closes [#352](https://github.com/DaftMonk/generator-angular-fullstack/issues/352) + * make user tests run more consistently ([addb506](https://github.com/DaftMonk/generator-angular-fullstack/commit/addb506)), closes [#346](https://github.com/DaftMonk/generator-angular-fullstack/issues/346) + +### Features + +* **app:** added oath buttons to signup page ([a408f58](https://github.com/DaftMonk/generator-angular-fullstack/commit/a408f58)) +* **gen:** + * Generate CSS from Stylus ([1b90c44](https://github.com/DaftMonk/generator-angular-fullstack/commit/1b90c44)) + * Generate CSS from Stylus ([9d87a2c](https://github.com/DaftMonk/generator-angular-fullstack/commit/9d87a2c)) +* **oauth:** remove code according to user prompts ([316bd9d](https://github.com/DaftMonk/generator-angular-fullstack/commit/316bd9d)) + + + + +## [2.0.4](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.3...v2.0.4) (2014-07-09) + + +### Bug Fixes + +* **app:** fix dependency injection minsafe problem in auth service ([03742a8](https://github.com/DaftMonk/generator-angular-fullstack/commit/03742a8)) +* **gen:** heroku and openshift generators requiring .yo-rc file to work ([88ebfc8](https://github.com/DaftMonk/generator-angular-fullstack/commit/88ebfc8)), closes [#318](https://github.com/DaftMonk/generator-angular-fullstack/issues/318) + + + + +## [2.0.3](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.2...v2.0.3) (2014-07-04) + + +### Bug Fixes + +* **server:** only enable sessions if twitter oauth was selected ([bcd00dc](https://github.com/DaftMonk/generator-angular-fullstack/commit/bcd00dc)) + +### Features + +* **gen:** make bootstrap and bootstrap ui optional ([f50d094](https://github.com/DaftMonk/generator-angular-fullstack/commit/f50d094)) + + + + +## [2.0.2](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.1...v2.0.2) (2014-07-03) + + +### Bug Fixes + +* **gen:endpoint:** + * fix endpoint spec not adjusting from route url ([163cacf](https://github.com/DaftMonk/generator-angular-fullstack/commit/163cacf)), closes [#298](https://github.com/DaftMonk/generator-angular-fullstack/issues/298) + * fix some urls failing for api creation ([3fe80bd](https://github.com/DaftMonk/generator-angular-fullstack/commit/3fe80bd)) + + + + +## [2.0.1](https://github.com/DaftMonk/generator-angular-fullstack/compare/v2.0.0...v2.0.1) (2014-07-02) + + +### Bug Fixes + +* **server:** local env not being copied ([f65b393](https://github.com/DaftMonk/generator-angular-fullstack/commit/f65b393)) + + + + +## v2.0.0 (2014-07-02) + +#### Features + +* **app:** + * Follow googles AngularJS project recommendations to make a very modular app structure. + * New look for generated app + * Add basic crud interface to app + * Support for UI Router + * Support for LESS + * Built in support for protractor e2e tests + * Add angular-bootstrap and lodash to default app + * More consistent and understandable naming conventions for files +* **server:** + * Modular project structure for express server + * Support for social auths with facebook/twitter/google + * Role based authentication + * Replace session based authentication with JWT authentication + * Optional integration with socket.io + * Added config file, ignored by git, for setting local environment variables, api keys, secrets.. etc. +* **gruntfile:** + * Optimizations to the gruntfile + * Automate injection of new scripts into index file with grunt + * Use ng-templates to concatenate all the html/jade views into the javascript payload +* **gen:** + * Abstract client-side generators into generator-ng-component, use new composition feature of yeoman to keep them available in the generator. + * Add useful tests to the generator, start using travis CI + * use .yo-rc file to keep track of generated configurations + * Add endpoint generator to angular-fullstack, generates model / route / controller / test / socket updates + +#### Breaking Changes + * New project structure + * Deprecated value and constant sub generators + * Sub-generators generate components in a single directory and don't inject themselves into the index file (this is done by a grunt task now) + + +### v1.4.3 (2014-05-25) + + +#### Bug Fixes + +* **config:** fix issue where `config.ip` is undefined in non-production environments ([087f5bca](http://github.com/DaftMonk/generator-angular-fullstack/commit/087f5bca1610e8250de50ce11a16e879908e3177)) +* **package:** update connect-mongo to correct version +* **app:** add require attribute to login.html inputs so it validates on client side +* **gen:** use lowercase filenames for scripts + + +### v1.4.2 (2014-04-16) + + +#### Bug Fixes + +* **gen:** typo in heroku generator was preventing it from working on unix based systems ([9d3b5738](http://github.com/DaftMonk/generator-angular-fullstack/commit/9d3b5738528497f74d37d22c304b0d46cd5007fa)) + + +### v1.4.1 (2014-04-15) + + +#### Bug Fixes + +* **server:** + * grunt test was incorrectly using dev config, fixes #179 ([62d8492f](http://github.com/DaftMonk/generator-angular-fullstack/commit/62d8492fd9fcfde653bab0f65b46f9961b8016bc)) + * emails are no longer case sensitive ([dafd8db1](https://github.com/DaftMonk/generator-angular-fullstack/commit/dafd8db1f529b86322ef60f65897761cef92841a)) + + +## v1.4.0 (2014-04-13) + +#### Features + +* **server:** updated Express to v4.x +* **app:** matching angular dependencies to the latest verison, now that bower excludes pre-releases ([94c0c636](http://github.com/DaftMonk/generator-angular-fullstack/commit/94c0c63691976eaf7136c33365f611b465ba7f61)) +* **gen:** + * Added `angular-fullstack:openshift` generator, for deploying your app to OpenShift + * Added `angular-fullstack:heroku` generator, which improves upon the former `:deploy` generator for deploying to Heroku + +#### Bug Fixes + +* **server:** fixed possible DB flushing when mochaTest is called by watch, first call 'env:test' task before 'mochaTest' +([2f0320fe](http://github.com/DaftMonk/generator-angular-fullstack/commit/2f0320feb89f3a5f1757f8adcae4b8c0d5599c95)) + +#### Breaking Changes + +* The `angular-fullstack:deploy` generator is deprecated. Instead use `angular-fullstack:heroku` or `angular-fullstack:openshift`. + ### v1.3.3 (2014-03-29) @@ -303,4 +1506,4 @@ Closes #18, #17 #### Features -* **gen:** include MongoDB as an option When selected, sets up database with Mongoose. Repl ([280cc84d](http://github.com/DaftMonk/generator-angular-fullstack/commit/280cc84d735c60b1c261540dceda34dd7f91c93c), closes [#2](http://github.com/DaftMonk/generator-angular-fullstack/issues/2)) \ No newline at end of file +* **gen:** include MongoDB as an option When selected, sets up database with Mongoose. Repl ([280cc84d](http://github.com/DaftMonk/generator-angular-fullstack/commit/280cc84d735c60b1c261540dceda34dd7f91c93c), closes [#2](http://github.com/DaftMonk/generator-angular-fullstack/issues/2)) diff --git a/Gruntfile.js b/Gruntfile.js index 23ab17759..2dfe12118 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -1,60 +1,190 @@ -'use strict'; -var markdown = require('marked'); -var semver = require('semver'); +var shell = require('shelljs'); +var child_process = require('child_process'); +var Q = require('q'); +var helpers = require('yeoman-test'); +var fs = require('fs'); +var path = require('path'); module.exports = function (grunt) { - require('load-grunt-tasks')(grunt); + var gruntUtils = require('./task-utils/grunt')(grunt); + var gitCmd = gruntUtils.gitCmd; + var gitCmdAsync = gruntUtils.gitCmdAsync; grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - changelog: { - options: { - dest: 'CHANGELOG.md', - versionFile: 'package.json' - } + config: { + demo: 'demo' }, + pkg: grunt.file.readJSON('package.json'), release: { options: { commitMessage: '<%= version %>', - tagName: 'v<%= version %>', - bump: false, // we have our own bump - file: 'package.json' + tagName: '<%= version %>', + file: 'package.json', + beforeBump: ['updateSubmodules'], + afterBump: ['updateFixtures:deps', 'commitNgFullstackDeps'], + beforeRelease: ['stage'], + push: false, + pushTags: false, + npm: false } }, stage: { options: { - files: ['CHANGELOG.md'] + files: ['CHANGELOG.md', 'angular-fullstack-deps'] + } + }, + buildcontrol: { + options: { + dir: 'demo', + commit: true, + push: true, + connectCommits: false, + message: 'Built using Angular Fullstack v<%= pkg.version %> from commit %sourceCommit%' + }, + release: { + options: { + remote: 'origin', + branch: 'master' + } + } + }, + david: { + gen: { + options: {} + }, + app: { + options: { + package: 'test/fixtures/package.json' + } } } }); - grunt.registerTask('bump', 'bump manifest version', function (type) { - var options = this.options({ - file: grunt.config('pkgFile') || 'package.json' - }); - - function setup(file, type) { - var pkg = grunt.file.readJSON(file); - var newVersion = pkg.version = semver.inc(pkg.version, type || 'patch'); - return { - file: file, - pkg: pkg, - newVersion: newVersion + grunt.registerTask('stage', 'git add files before running the release task', function () { + var files = grunt.config('stage.options').files; + gitCmd(['add'].concat(files), {}, this.async()); + }); + + grunt.registerTask('commitNgFullstackDeps', function() { + grunt.config.requires( + 'commitNgFullstackDeps.options.files', + 'commitNgFullstackDeps.options.cwd' + ); + var ops = grunt.config.get('commitNgFullstackDeps').options; + var version = require('./package.json').version || 'NO VERSION SET'; + if (Array.isArray(ops.files) && ops.files.length > 0) { + gitCmd(['commit', '-m', version].concat(ops.files), { + cwd: path.resolve(__dirname, ops.cwd) + }, this.async()); + } else { + grunt.log.writeln('No files were commited'); + } + }); + + grunt.registerTask('generateDemo', 'generate demo', function () { + var done = this.async(); + + shell.mkdir(grunt.config('config').demo); + shell.cd(grunt.config('config').demo); + + Q() + .then(generateDemo) + .then(function() { + shell.cd('../'); + }) + .catch(function(msg){ + grunt.fail.warn(msg || 'failed to generate demo') + }) + .finally(done); + + function generateDemo() { + var deferred = Q.defer(); + var options = { + script: 'js', + markup: 'html', + stylesheet: 'sass', + router: 'uirouter', + bootstrap: true, + uibootstrap: true, + mongoose: true, + testing: 'jasmine', + auth: true, + oauth: ['googleAuth', 'twitterAuth'], + ws: true }; + + var deps = [ + '../app', + [ + helpers.createDummyGenerator(), + 'ng-component:app' + ] + ]; + + var gen = helpers.createGenerator('angular-fullstack:app', deps); + + helpers.mockPrompt(gen, options); + gen.run({}, function () { + deferred.resolve(); + }); + + return deferred.promise; } + }); + + grunt.registerTask('releaseDemoBuild', 'builds and releases demo', function () { + var done = this.async(); + + shell.cd(grunt.config('config').demo); + + Q() + .then(gruntBuild) + .then(gruntRelease) + .then(function() { + shell.cd('../'); + }) + .catch(function(msg){ + grunt.fail.warn(msg || 'failed to release demo') + }) + .finally(done); + + function run(cmd) { + var deferred = Q.defer(); + var generator = shell.exec(cmd, {async:true}); + generator.stdout.on('data', function (data) { + grunt.verbose.writeln(data); + }); + generator.on('exit', function (code) { + deferred.resolve(); + }); - var config = setup(options.file, type); - grunt.file.write(config.file, JSON.stringify(config.pkg, null, ' ') + '\n'); - grunt.log.ok('Version bumped to ' + config.newVersion); + return deferred.promise; + } + + function gruntBuild() { + return run('grunt'); + } + + function gruntRelease() { + return run('grunt buildcontrol:heroku'); + } }); - grunt.registerTask('stage', 'git add files before running the release task', function () { - var files = this.options().files; - grunt.util.spawn({ - cmd: process.platform === 'win32' ? 'git.cmd' : 'git', - args: ['add'].concat(files) - }, grunt.task.current.async()); + grunt.registerTask('deps', function(target) { + if (!target || target === 'app') grunt.task.run(['updateFixtures']); + grunt.task.run(['david:' + (target || '')]); }); - grunt.registerTask('default', ['bump', 'changelog', 'stage', 'release']); + grunt.registerTask('demo', [ + 'clean:demo', + 'generateDemo' + ]); + + grunt.registerTask('releaseDemo', [ + 'demo', + 'releaseDemoBuild', + 'buildcontrol:release' + ]); + + //grunt.registerTask('default', ['bump', 'changelog', 'stage', 'release']); }; diff --git a/ISSUE_TEMPLATE.md b/ISSUE_TEMPLATE.md new file mode 100644 index 000000000..cf31e70c0 --- /dev/null +++ b/ISSUE_TEMPLATE.md @@ -0,0 +1,20 @@ + - [ ] I understand that GitHub issues are not for tech support, but for questions specific to this generator, bug reports, and feature requests. + +Item | Version +----- | ----- +generator-angular-fullstack | x.x.x +Node | x.x.x +npm | x.x.x +Operating System | OS X 10 / Windows 10 / Ubuntu 15.10 / etc +etc | etc + +Item | Answer +----- | ----- +Transpiler | Babel / TypeScript +Markup | HTML / Pug +CSS | CSS / LESS / SCSS / Stylus +Router | ngRoute / ui-router +Client Tests | Jasmine / Mocha +DB | MongoDB / SQL +Auth | Y / N +etc | etc diff --git a/PULL_REQUEST_TEMPLATE.md b/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..c6b7b868e --- /dev/null +++ b/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,3 @@ +- [ ] I have read the [Contributing Documents](https://github.com/DaftMonk/generator-angular-fullstack/blob/master/contributing.md) +- [ ] My commit(s) follow the [AngularJS commit message guidelines](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/) +- [ ] The generator's tests pass (`generator-angular-fullstack$ npm test`) diff --git a/README.md b/README.md new file mode 100644 index 000000000..3d77289bc --- /dev/null +++ b/README.md @@ -0,0 +1,120 @@ +# The Angular Full-Stack Generator + +![](.gitbook/assets/angular-fullstack-logo.svg) + +![Build Status](https://img.shields.io/circleci/project/angular-fullstack/generator-angular-fullstack/master.svg) [![npm version](https://img.shields.io/npm/v/generator-angular-fullstack.svg)](https://www.npmjs.com/package/generator-angular-fullstack) [![Dependency Status](https://img.shields.io/david/angular-fullstack/generator-angular-fullstack.svg)](https://david-dm.org/angular-fullstack/generator-angular-fullstack) [![Dev-Dependency Status](https://img.shields.io/david/dev/angular-fullstack/generator-angular-fullstack.svg)](https://david-dm.org/angular-fullstack/generator-angular-fullstack#type=dev) [![Gitter chat](https://img.shields.io/gitter/room/angular-fullstack/generator-angular-fullstack.svg)](https://gitter.im/angular-fullstack/generator-angular-fullstack) + +> Yeoman generator for creating MEAN/SEAN stack applications, using ES2017, MongoDB/SQL, Express, Angular, and Node - lets you quickly set up a project following best practices. + +### Generated project: + +[![Dependency Status](https://img.shields.io/david/angular-fullstack/angular-fullstack-deps.svg)](https://david-dm.org/angular-fullstack/angular-fullstack-deps) [![Dev-Dependency Status](https://img.shields.io/david/dev/angular-fullstack/angular-fullstack-deps.svg)](https://david-dm.org/angular-fullstack/angular-fullstack-deps?type=dev) [![Known Vulnerabilities](https://snyk.io/package/npm/angular-fullstack-deps/badge.svg)](https://snyk.io/package/npm/angular-fullstack-deps) + +## Usage + +Install `yo`, `gulp-cli`, and `generator-angular-fullstack`: + +```text +npm install -g yo gulp-cli generator-angular-fullstack +``` + +**Please note**: If you run into trouble compiling native add-ons during the installation, follow [`node-gyp`](https://github.com/nodejs/node-gyp)'s short guide on [required compilation tools](https://github.com/nodejs/node-gyp#installation). + +Then, to run your app \(make sure the MongoDB daemon is running if you selected Mongo\), run the following to start your server: + +```bash +npm run start:server +``` + +and the following to start the Webpack dev server for the front-end: + +```bash +npm run start:client +``` + +The Webpack server will tell you which port to access the app at \(usually [http://localhost:8080/](http://localhost:8080/)\). + +Run `yo angular-fullstack` + +```text +yo angular-fullstack +``` + +**See the** [**Getting Started**](https://angular-fullstack.github.io/get-started/) **guide for more information.** + +## Prerequisites + +* MongoDB - Download and Install [MongoDB](https://www.mongodb.com/download-center#community) - If you plan on scaffolding your project with mongoose, you'll need mongoDB to be installed and have the `mongod` process running. + * If you have [Docker](https://www.docker.com/) installed, you can easily run a test database with `docker run -p 27017:27017 --name afs-mongo -d mongo` +* The project's JavaScript is written in ECMAScript 2015. If you're unfamiliar with the latest changes to the specification for JavaScript, check out [http://es6-features.org/](http://es6-features.org/) + +## Supported Configurations + +**General** + +* Build Systems: `Gulp` +* Testing: + * `Jasmine` + * `Mocha + Chai + Sinon` + * Chai assertions: + * `Expect` + * `Should` + +**Client** + +* Scripts: `JavaScript (Babel)`, `TypeScript` +* Module Systems: `Webpack` +* Markup: `HTML`, `Pug` +* Stylesheets: `CSS`, `Stylus`, `Sass`, `Less` +* CSS Frameworks: `Bootstrap` + * Option to include `UI Bootstrap` + +**Server** + +* Scripts: `JavaScript (Babel)`, `TypeScript` \(planned\) +* Database: + * `None`, + * `MongoDB`, `SQL` + * Authentication boilerplate: `Yes`, `No` + * oAuth integrations: `Facebook`, `Twitter`, `Google` + * Socket.io integration: `Yes`, `No` + +## Generators + +Available generators: + +* App + * [angular-fullstack](https://angular-fullstack.github.io/generators/app/) \(aka [angular-fullstack:app](https://angular-fullstack.github.io/generators/app/)\) +* Server Side + * [angular-fullstack:endpoint](https://angular-fullstack.github.io/generators/endpoint) +* Client Side \(via [generator-angular-fullstack-component](https://github.com/angular-fullstack/generator-angular-fullstack-component)\) + * [angular-fullstack:route](https://angular-fullstack.github.io/generators/route) +* To be re-updated: + * [angular-fullstack:component](https://angular-fullstack.github.io/generators/component) + * [angular-fullstack:controller](https://angular-fullstack.github.io/generators/controller) + * [angular-fullstack:filter](https://angular-fullstack.github.io/generators/filter) + * [angular-fullstack:directive](https://angular-fullstack.github.io/generators/directive) + * [angular-fullstack:service](https://angular-fullstack.github.io/generators/service) + * [angular-fullstack:provider](https://angular-fullstack.github.io/generators/service) + * [angular-fullstack:factory](https://angular-fullstack.github.io/generators/service) + * [angular-fullstack:decorator](https://angular-fullstack.github.io/generators/decorator) +* Deployment + * [angular-fullstack:openshift](https://angular-fullstack.github.io/generators/openshift) + * [angular-fullstack:heroku](https://angular-fullstack.github.io/generators/heroku) + +## Documentation + +Check out our [documentation home page](https://awk34.gitbook.io/generator-angular-fullstack). + +## Contribute + +See the [contributing docs](https://github.com/angular-fullstack/generator-angular-fullstack/blob/master/contributing.md) + +When submitting an issue, please follow the [Yeoman issue guidelines](https://github.com/yeoman/yeoman/blob/master/contributing.md#issue-submission). Especially important is to make sure Yeoman is up-to-date, and providing the command or commands that cause the issue, as well as any stack traces. + +## License + +[BSD license](http://opensource.org/licenses/bsd-license.php) + +[![generator-angular-fullstack](https://angular-fullstack.github.io/assets/angular-fullstack-boxes.svg)](https://awk34.gitbook.io/generator-angular-fullstack) + diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 000000000..f7897f126 --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,32 @@ +# Table of contents + +* [The Angular Full-Stack Generator](README.md) + +## Getting Started + +* [Pre-Requisites](getting-started/pre-requisites.md) +* [Installation](getting-started/installation.md) +* [Running](getting-started/running.md) +* [Project Overview](getting-started/project-overview.md) + +## Developing + +* [Overview](developing/overview.md) +* [Adding a Route](developing/adding-a-route.md) + +## Deployment + +* [Manual Deployment](deployment/manual-deployment.md) +* [Google Cloud Deployment](deployment/untitled-1.md) +* [index](deployment/untitled.md) + +## Generators + +* [App](generators/app.md) +* [Endpoint](generators/endpoint.md) + +## Contributing + +* [Releasing a New Version](contributing/releasing-a-new-version.md) +* [Commit Style](contributing/untitled-1.md) + diff --git a/angular-fullstack-deps b/angular-fullstack-deps new file mode 160000 index 000000000..d0b7c8633 --- /dev/null +++ b/angular-fullstack-deps @@ -0,0 +1 @@ +Subproject commit d0b7c86332f3ea3091332f307b10141ff90e4ad7 diff --git a/app/USAGE b/app/USAGE deleted file mode 100644 index dc0ee84f7..000000000 --- a/app/USAGE +++ /dev/null @@ -1,20 +0,0 @@ -Description: - Creates a default AngularJS app - -Example: - yo angular-fullstack [--coffee] [--minsafe] - - This will create: - Gruntfile.js - bower.json - server.js - - app/index.html - app/scripts/your-app-name-here.js - app/scripts/controllers/main.js - app/bower_components/angular/angular.js - app/styles/main.css - app/views/main.html - - test/lib/angular-mocks.js - test/spec/controllers/main.js diff --git a/app/index.js b/app/index.js deleted file mode 100644 index 6dc1f23a3..000000000 --- a/app/index.js +++ /dev/null @@ -1,525 +0,0 @@ -'use strict'; -var fs = require('fs'); -var path = require('path'); -var util = require('util'); -var angularUtils = require('../util.js'); -var yeoman = require('yeoman-generator'); -var chalk = require('chalk'); -var wiredep = require('wiredep'); - - -var Generator = module.exports = function Generator(args, options) { - yeoman.generators.Base.apply(this, arguments); - this.argument('appname', { type: String, required: false }); - this.appname = this.appname || path.basename(process.cwd()); - this.appname = this._.camelize(this._.slugify(this._.humanize(this.appname))); - - this.option('app-suffix', { - desc: 'Allow a custom suffix to be added to the module name', - type: String, - required: 'false' - }); - this.scriptAppName = this.appname + angularUtils.appName(this); - - args = ['main']; - - if (typeof this.env.options.appPath === 'undefined') { - try { - this.env.options.appPath = require(path.join(process.cwd(), 'bower.json')).appPath; - } catch (e) {} - this.env.options.appPath = this.env.options.appPath || 'app'; - } - - this.appPath = this.env.options.appPath; - - if (typeof this.env.options.coffee === 'undefined') { - this.option('coffee', { - desc: 'Generate CoffeeScript instead of JavaScript' - }); - - // attempt to detect if user is using CS or not - // if cml arg provided, use that; else look for the existence of cs - if (!this.options.coffee && - this.expandFiles(path.join(this.appPath, '/scripts/**/*.coffee'), {}).length > 0) { - this.options.coffee = true; - } - - this.env.options.coffee = this.options.coffee; - } - - if (typeof this.env.options.minsafe === 'undefined') { - this.option('minsafe', { - desc: 'Generate AngularJS minification safe code' - }); - this.env.options.minsafe = this.options.minsafe; - args.push('--minsafe'); - } - - if (typeof this.env.options.jade === 'undefined') { - this.option('jade', { - desc: 'Generate views using Jade templates' - }); - - // attempt to detect if user is using jade or not - // if cml arg provided, use that; else look for the existence of cs - if (!this.options.coffee && - this.expandFiles(path.join(this.appPath, '/views/**/*.jade'), {}).length > 0) { - this.options.jade = true; - } - - this.env.options.jade = this.options.jade; - } - - this.hookFor('angular-fullstack:common', { - args: args - }); - - this.hookFor('angular-fullstack:main', { - args: args - }); - - this.hookFor('angular-fullstack:controller', { - args: args - }); - - this.on('end', function () { - this.installDependencies({ - skipInstall: this.options['skip-install'], - callback: this._injectDependencies.bind(this) - }); - - var enabledComponents = []; - - if (this.resourceModule) { - enabledComponents.push('angular-resource/angular-resource.js'); - } - - if (this.cookiesModule) { - enabledComponents.push('angular-cookies/angular-cookies.js'); - } - - if (this.sanitizeModule) { - enabledComponents.push('angular-sanitize/angular-sanitize.js'); - } - - if (this.routeModule) { - enabledComponents.push('angular-route/angular-route.js'); - } - - this.invoke('karma:app', { - options: { - coffee: this.options.coffee, - testPath: 'test/client', - travis: true, - 'skip-install': true, - components: [ - 'angular/angular.js', - 'angular-mocks/angular-mocks.js' - ].concat(enabledComponents) - } - }); - - }); - - this.pkg = require('../package.json'); -}; - -util.inherits(Generator, yeoman.generators.Base); - -Generator.prototype.welcome = function welcome() { - // welcome message - if (!this.options['skip-welcome-message']) { - console.log(this.yeoman); - console.log( - 'Out of the box I include Bootstrap and some AngularJS recommended modules.\n' - ); - - // Deprecation notice for minsafe - if (this.options.minsafe) { - console.warn( - '\n** The --minsafe flag is being deprecated in 0.7.0 and removed in ' + - '0.8.0. For more information, see ' + - 'https://github.com/yeoman/generator-angular#minification-safe.%20**\n' - ); - } - } -}; - -Generator.prototype.askForCompass = function askForCompass() { - var cb = this.async(); - - this.prompt([{ - type: 'confirm', - name: 'compass', - message: 'Would you like to use Sass (with Compass)?', - default: true - }], function (props) { - this.compass = props.compass; - - cb(); - }.bind(this)); -}; - -Generator.prototype.askForBootstrap = function askForBootstrap() { - var compass = this.compass; - var cb = this.async(); - - this.prompt([{ - type: 'confirm', - name: 'bootstrap', - message: 'Would you like to include Twitter Bootstrap?', - default: true - }, { - type: 'confirm', - name: 'compassBootstrap', - message: 'Would you like to use the Sass version of Twitter Bootstrap?', - default: true, - when: function (props) { - return props.bootstrap && compass; - } - }], function (props) { - this.bootstrap = props.bootstrap; - this.compassBootstrap = props.compassBootstrap; - - cb(); - }.bind(this)); -}; - -Generator.prototype.askForModules = function askForModules() { - var cb = this.async(); - - var prompts = [{ - type: 'checkbox', - name: 'modules', - message: 'Which modules would you like to include?', - choices: [{ - value: 'resourceModule', - name: 'angular-resource.js', - checked: true - }, { - value: 'cookiesModule', - name: 'angular-cookies.js', - checked: true - }, { - value: 'sanitizeModule', - name: 'angular-sanitize.js', - checked: true - }, { - value: 'routeModule', - name: 'angular-route.js', - checked: true - }] - }]; - - this.prompt(prompts, function (props) { - var hasMod = function (mod) { return props.modules.indexOf(mod) !== -1; }; - this.resourceModule = hasMod('resourceModule'); - this.cookiesModule = hasMod('cookiesModule'); - this.sanitizeModule = hasMod('sanitizeModule'); - this.routeModule = hasMod('routeModule'); - - var angMods = []; - - if (this.cookiesModule) { - angMods.push("'ngCookies'"); - } - - if (this.resourceModule) { - angMods.push("'ngResource'"); - } - if (this.sanitizeModule) { - angMods.push("'ngSanitize'"); - } - if (this.routeModule) { - angMods.push("'ngRoute'"); - this.env.options.ngRoute = true; - } - - if (angMods.length) { - this.env.options.angularDeps = "\n " + angMods.join(",\n ") +"\n"; - } - - cb(); - }.bind(this)); -}; - -Generator.prototype.askForMongo = function askForMongo() { - var cb = this.async(); - - this.prompt([{ - type: 'confirm', - name: 'mongo', - message: 'Would you like to include MongoDB with Mongoose?', - default: false - }, { - type: 'confirm', - name: 'mongoPassportUser', - message: 'Would you like to include a Passport authentication boilerplate?', - default: false, - when: function (props) { - return props.mongo; - } - }], function (props) { - this.mongo = props.mongo; - this.mongoPassportUser = props.mongoPassportUser; - - cb(); - }.bind(this)); -}; - -Generator.prototype.readIndex = function readIndex() { - this.ngRoute = this.env.options.ngRoute; - this.jade = this.env.options.jade; - - if(this.jade) { - this.indexFile = this.engine(this.read('../../templates/views/jade/index.jade'), this); - } else { - this.indexFile = this.engine(this.read('../../templates/views/html/index.html'), this); - } -}; - -Generator.prototype.bootstrapFiles = function bootstrapFiles() { - var sass = this.compass; - var mainFile = 'main.' + (sass ? 's' : '') + 'css'; - - if (this.bootstrap && !sass) { - this.copy('fonts/glyphicons-halflings-regular.eot', 'app/fonts/glyphicons-halflings-regular.eot'); - this.copy('fonts/glyphicons-halflings-regular.ttf', 'app/fonts/glyphicons-halflings-regular.ttf'); - this.copy('fonts/glyphicons-halflings-regular.svg', 'app/fonts/glyphicons-halflings-regular.svg'); - this.copy('fonts/glyphicons-halflings-regular.woff', 'app/fonts/glyphicons-halflings-regular.woff'); - } - - this.copy('styles/' + mainFile, 'app/styles/' + mainFile); -}; - -function generateJadeBlock(blockType, optimizedPath, filesBlock, searchPath, prefix) { - var blockStart, blockEnd; - var blockSearchPath = ''; - - if (searchPath !== undefined) { - if (util.isArray(searchPath)) { - searchPath = '{' + searchPath.join(',') + '}'; - } - blockSearchPath = '(' + searchPath + ')'; - } - - blockStart = '\n' + prefix + '\n'; - blockEnd = prefix + '\n' + prefix; - return blockStart + filesBlock + blockEnd; -} - -function appendJade(jade, tag, blocks){ - var mark = "//- build:" + tag, - position = jade.indexOf(mark); - return [jade.slice(0, position), blocks, jade.slice(position)].join(''); -} - -function appendFilesToJade(jadeOrOptions, fileType, optimizedPath, sourceFileList, attrs, searchPath) { - var blocks, updatedContent, - jade = jadeOrOptions, - prefix = ' ', - files = ''; - - if (typeof jadeOrOptions === 'object') { - jade = jadeOrOptions.html; - fileType = jadeOrOptions.fileType; - optimizedPath = jadeOrOptions.optimizedPath; - sourceFileList = jadeOrOptions.sourceFileList; - attrs = jadeOrOptions.attrs; - searchPath = jadeOrOptions.searchPath; - } - - if (fileType === 'js') { - sourceFileList.forEach(function (el) { - files += prefix + '\n'; - }); - blocks = generateJadeBlock('js', optimizedPath, files, searchPath, prefix); - updatedContent = appendJade(jade, 'body', blocks); - } else if (fileType === 'css') { - sourceFileList.forEach(function (el) { - files += prefix + '\n'; - }); - blocks = generateJadeBlock('css', optimizedPath, files, searchPath, prefix); - updatedContent = appendJade(jade, 'head', blocks); - } - return updatedContent; -} - -var copyScriptWithEnvOptions = function copyScriptWithEnvOptions(that, fileToCopy, destinationFolder) { - var ext = 'js', - minsafe = '', - sourceFolder = 'javascript'; - - if(that.env.options.coffee) { - ext = 'coffee'; - sourceFolder = 'coffeescript'; - } - - if(that.env.options.minsafe) { - minsafe = '-min'; - } - that.copy('../../templates/' + sourceFolder + minsafe + '/' + fileToCopy + '.' + ext, destinationFolder + fileToCopy + '.' + ext); -}; - -Generator.prototype.navBarScript = function navBarScript() { - copyScriptWithEnvOptions(this, 'controllers/navbar', 'app/scripts/'); -}; - -Generator.prototype.appJs = function appJs() { - var appendOptions = { - html: this.indexFile, - fileType: 'js', - optimizedPath: 'scripts/scripts.js', - sourceFileList: ['scripts/app.js', 'scripts/controllers/main.js', 'scripts/controllers/navbar.js'], - searchPath: ['.tmp', 'app'] - }; - - // only reference authentication controllers when required - if (this.mongoPassportUser) { - appendOptions.sourceFileList.push('scripts/controllers/login.js'); - appendOptions.sourceFileList.push('scripts/controllers/signup.js'); - appendOptions.sourceFileList.push('scripts/controllers/settings.js'); - appendOptions.sourceFileList.push('scripts/services/auth.js'); - appendOptions.sourceFileList.push('scripts/services/session.js'); - appendOptions.sourceFileList.push('scripts/services/user.js'); - appendOptions.sourceFileList.push('scripts/directives/mongooseError.js'); - } - - if (this.jade) { - this.indexFile = appendFilesToJade(appendOptions); - } else { - this.indexFile = this.appendFiles(appendOptions); - } -}; - -Generator.prototype.createIndex = function createIndex() { - this.indexFile = this.indexFile.replace(/'/g, "'"); - if (this.jade) { - this.write(path.join(this.appPath, 'views', 'index.jade'), this.indexFile); - } else { - this.write(path.join(this.appPath, 'views', 'index.html'), this.indexFile); - } -}; - -Generator.prototype.addJadeViews = function addHtmlJade() { - if(this.jade) { - this.copy('../../templates/views/jade/partials/main.jade', 'app/views/partials/main.jade'); - this.copy('../../templates/views/jade/partials/navbar.jade', 'app/views/partials/navbar.jade'); - if(this.mongoPassportUser) { - this.copy('../../templates/views/jade/partials/login.jade', 'app/views/partials/login.jade'); - this.copy('../../templates/views/jade/partials/signup.jade', 'app/views/partials/signup.jade'); - this.copy('../../templates/views/jade/partials/settings.jade', 'app/views/partials/settings.jade'); - } - this.copy('../../templates/views/jade/404.jade', 'app/views/404.jade'); - } -}; - -Generator.prototype.addHtmlViews = function addHtmlViews() { - if(!this.jade) { - this.copy('../../templates/views/html/partials/main.html', 'app/views/partials/main.html'); - this.copy('../../templates/views/html/partials/navbar.html', 'app/views/partials/navbar.html'); - if(this.mongoPassportUser) { - this.copy('../../templates/views/html/partials/login.html', 'app/views/partials/login.html'); - this.copy('../../templates/views/html/partials/signup.html', 'app/views/partials/signup.html'); - this.copy('../../templates/views/html/partials/settings.html', 'app/views/partials/settings.html'); - } - this.copy('../../templates/views/html/404.html', 'app/views/404.html'); - } -}; - -Generator.prototype.packageFiles = function () { - this.coffee = this.env.options.coffee; - this.template('../../templates/common/_bower.json', 'bower.json'); - this.template('../../templates/common/_package.json', 'package.json'); - this.template('../../templates/common/Gruntfile.js', 'Gruntfile.js'); -}; - -Generator.prototype.imageFiles = function () { - this.sourceRoot(path.join(__dirname, 'templates')); - this.directory('images', 'app/images', true); -}; - -Generator.prototype._injectDependencies = function _injectDependencies() { - var howToInstall = - '\nAfter running `npm install & bower install`, inject your front end dependencies into' + - '\nyour HTML by running:' + - '\n' + - chalk.yellow.bold('\n grunt bower-install'); - - var wireDepConfig = { - directory: 'app/bower_components', - bowerJson: JSON.parse(fs.readFileSync('./bower.json')), - ignorePath: 'app/', - htmlFile: 'app/views/index.html', - cssPattern: '' - }; - - if (this.jade) { - wireDepConfig.htmlFile = 'app/views/index.jade'; - } - - if (this.compass && this.bootstrap) { - wireDepConfig.exclude = ['sass-bootstrap']; - } - - if (this.options['skip-install']) { - console.log(howToInstall); - } else { - wiredep(wireDepConfig); - } -}; - -Generator.prototype.serverFiles = function () { - this.template('../../templates/express/server.js', 'server.js'); - this.copy('../../templates/express/jshintrc', 'lib/.jshintrc'); - this.template('../../templates/express/controllers/api.js', 'lib/controllers/api.js'); - this.template('../../templates/express/controllers/index.js', 'lib/controllers/index.js'); - this.template('../../templates/express/routes.js', 'lib/routes.js'); - this.template('../../templates/express/test/thing/api.js', 'test/server/thing/api.js'); - - this.template('../../templates/express/config/express.js', 'lib/config/express.js'); - this.template('../../templates/express/config/config.js', 'lib/config/config.js'); - this.template('../../templates/express/config/env/all.js', 'lib/config/env/all.js'); - this.template('../../templates/express/config/env/development.js', 'lib/config/env/development.js'); - this.template('../../templates/express/config/env/production.js', 'lib/config/env/production.js'); - this.template('../../templates/express/config/env/test.js', 'lib/config/env/test.js'); -}; - -Generator.prototype.mongoFiles = function () { - - if (!this.mongo) { - return; // Skip if disabled. - } - this.env.options.mongo = this.mongo; - - this.template('../../templates/express/config/dummydata.js', 'lib/config/dummydata.js'); - this.template('../../templates/express/models/thing.js', 'lib/models/thing.js'); - - if(!this.mongoPassportUser) { - return; // Skip if disabled. - } - this.env.options.mongoPassportUser = this.mongoPassportUser; - - // frontend - copyScriptWithEnvOptions(this, 'controllers/login', 'app/scripts/'); - copyScriptWithEnvOptions(this, 'controllers/signup', 'app/scripts/'); - copyScriptWithEnvOptions(this, 'controllers/settings', 'app/scripts/'); - - copyScriptWithEnvOptions(this, 'services/auth', 'app/scripts/'); - copyScriptWithEnvOptions(this, 'services/session', 'app/scripts/'); - copyScriptWithEnvOptions(this, 'services/user', 'app/scripts/'); - - copyScriptWithEnvOptions(this, 'directives/mongooseError', 'app/scripts/'); - - // middleware - this.template('../../templates/express/middleware.js', 'lib/middleware.js'); - // config - this.template('../../templates/express/config/passport.js', 'lib/config/passport.js'); - // models - this.template('../../templates/express/models/user.js', 'lib/models/user.js'); - // controllers - this.template('../../templates/express/controllers/session.js', 'lib/controllers/session.js'); - this.template('../../templates/express/controllers/users.js', 'lib/controllers/users.js'); - // tests - this.template('../../templates/express/test/user/model.js', 'test/server/user/model.js'); -}; diff --git a/app/templates/fonts/glyphicons-halflings-regular.eot b/app/templates/fonts/glyphicons-halflings-regular.eot deleted file mode 100644 index 423bd5d3a..000000000 Binary files a/app/templates/fonts/glyphicons-halflings-regular.eot and /dev/null differ diff --git a/app/templates/fonts/glyphicons-halflings-regular.svg b/app/templates/fonts/glyphicons-halflings-regular.svg deleted file mode 100644 index 446948874..000000000 --- a/app/templates/fonts/glyphicons-halflings-regular.svg +++ /dev/null @@ -1,229 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/templates/fonts/glyphicons-halflings-regular.ttf b/app/templates/fonts/glyphicons-halflings-regular.ttf deleted file mode 100644 index a498ef4e7..000000000 Binary files a/app/templates/fonts/glyphicons-halflings-regular.ttf and /dev/null differ diff --git a/app/templates/fonts/glyphicons-halflings-regular.woff b/app/templates/fonts/glyphicons-halflings-regular.woff deleted file mode 100644 index d83c539b8..000000000 Binary files a/app/templates/fonts/glyphicons-halflings-regular.woff and /dev/null differ diff --git a/app/templates/images/yeoman.png b/app/templates/images/yeoman.png deleted file mode 100644 index 92497addf..000000000 Binary files a/app/templates/images/yeoman.png and /dev/null differ diff --git a/app/templates/styles/main.css b/app/templates/styles/main.css deleted file mode 100644 index ae7a83f32..000000000 --- a/app/templates/styles/main.css +++ /dev/null @@ -1,79 +0,0 @@ -/* Space out content a bit */ -body { - padding-top: 20px; - padding-bottom: 20px; -} - -/* Everything but the jumbotron gets side spacing for mobile first views */ -.header, -.marketing, -.footer { - padding-left: 15px; - padding-right: 15px; -} - -/* Custom page header */ -.header { - border-bottom: 1px solid #e5e5e5; -} -/* Make the masthead heading the same height as the navigation */ -.header h3 { - margin-top: 0; - margin-bottom: 0; - line-height: 40px; - padding-bottom: 19px; -} - -/* Custom page footer */ -.footer { - padding-top: 19px; - color: #777; - border-top: 1px solid #e5e5e5; -} - -/* Customize container */ -@media (min-width: 768px) { - .container { - max-width: 730px; - } -} -.container-narrow > hr { - margin: 30px 0; -} - -/* Main marketing message and sign up button */ -.jumbotron { - text-align: center; - border-bottom: 1px solid #e5e5e5; -} -.jumbotron .btn { - font-size: 21px; - padding: 14px 24px; -} - -/* Supporting marketing content */ -.marketing { - margin: 40px 0; -} -.marketing p + h4 { - margin-top: 28px; -} - -/* Responsive: Portrait tablets and up */ -@media screen and (min-width: 768px) { - /* Remove the padding we set earlier */ - .header, - .marketing, - .footer { - padding-left: 0; - padding-right: 0; - } - /* Space out the masthead */ - .header { - margin-bottom: 30px; - } - /* Remove the bottom border on the jumbotron for visual effect */ - .jumbotron { - border-bottom: 0; - } -} diff --git a/app/templates/styles/main.scss b/app/templates/styles/main.scss deleted file mode 100644 index a95189131..000000000 --- a/app/templates/styles/main.scss +++ /dev/null @@ -1,91 +0,0 @@ -<% if (compassBootstrap) { %>$icon-font-path: "/bower_components/bootstrap-sass-official/vendor/assets/fonts/bootstrap/"; - -@import 'https://github.com/bootstrap-sass-official/vendor/assets/stylesheets/bootstrap'; - -<% } %>.browsehappy { - margin: 0.2em 0; - background: #ccc; - color: #000; - padding: 0.2em 0; -} - -/* Space out content a bit */ -body { - padding-top: 20px; - padding-bottom: 20px; -} - -/* Everything but the jumbotron gets side spacing for mobile first views */ -.header, -.marketing, -.footer { - padding-left: 15px; - padding-right: 15px; -} - -/* Custom page header */ -.header { - border-bottom: 1px solid #e5e5e5; -} - -/* Make the masthead heading the same height as the navigation */ -.header h3 { - margin-top: 0; - margin-bottom: 0; - line-height: 40px; - padding-bottom: 19px; -} - -/* Custom page footer */ -.footer { - padding-top: 19px; - color: #777; - border-top: 1px solid #e5e5e5; -} - -.container-narrow > hr { - margin: 30px 0; -} - -/* Main marketing message and sign up button */ -.jumbotron { - text-align: center; - border-bottom: 1px solid #e5e5e5; -} - -.jumbotron .btn { - font-size: 21px; - padding: 14px 24px; -} - -/* Supporting marketing content */ -.marketing { - margin: 40px 0; -} - -.marketing p + h4 { - margin-top: 28px; -} - -/* Responsive: Portrait tablets and up */ -@media screen and (min-width: 768px) { - .container { - max-width: 730px; - } - - /* Remove the padding we set earlier */ - .header, - .marketing, - .footer { - padding-left: 0; - padding-right: 0; - } - /* Space out the masthead */ - .header { - margin-bottom: 30px; - } - /* Remove the bottom border on the jumbotron for visual effect */ - .jumbotron { - border-bottom: 0; - } -} diff --git a/circle.yml b/circle.yml new file mode 100644 index 000000000..5feecc9a2 --- /dev/null +++ b/circle.yml @@ -0,0 +1,56 @@ +version: 2 +jobs: + build: + docker: + - image: circleci/node:12-browsers + - image: mongo + command: mongod + + working_directory: ~/generator-angular-fullstack + + environment: + NODE_ENV: test + + branches: + ignore: + - gh-pages + + steps: + - checkout + - run: git submodule sync && git submodule update --init + + # Generator npm dependencies + - restore_cache: + keys: + - generator-angular-fullstack-npm-{{ .Branch }}-{{ checksum "package.json" }} + - generator-angular-fullstack-npm-{{ .Branch }} + - generator-angular-fullstack-npm- + - run: npm install --quiet + - save_cache: + key: generator-angular-fullstack-npm-{{ .Branch }}-{{ checksum "package.json" }} + paths: + - ~/generator-angular-fullstack/node_modules + + # Test fixtures + - run: npx gulp updateFixtures:test + - restore_cache: + keys: + - generator-angular-fullstack-npm-fixtures-{{ .Branch }}-{{ checksum "templates/app/_package.json" }} + - generator-angular-fullstack-npm-fixtures-{{ .Branch }} + - generator-angular-fullstack-npm-fixtures- + - run: npx gulp installFixtures + - save_cache: + key: generator-angular-fullstack-npm-fixtures-{{ .Branch }}-{{ checksum "templates/app/_package.json" }} + paths: + - ~/generator-angular-fullstack/test/fixtures/node_modules + + - run: npx gulp build + - run: npm test + +# - deploy: +# command: | +# if [ "${CIRCLE_BRANCH}" == "master" ]; then +# git config --global user.email "circleci@circleci.com" +# git config --global user.name "CircleCI" +# cd docs && npm install && npm run build && npm run deploy +# fi diff --git a/common/index.js b/common/index.js deleted file mode 100644 index ff76074d6..000000000 --- a/common/index.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; -var path = require('path'); -var util = require('util'); -var yeoman = require('yeoman-generator'); - - -var Generator = module.exports = function Generator() { - yeoman.generators.Base.apply(this, arguments); -}; - -util.inherits(Generator, yeoman.generators.Base); - -Generator.prototype.setupEnv = function setupEnv() { - // Copies the contents of the generator `templates` - // directory into your users new application path - this.sourceRoot(path.join(__dirname, '../templates/common')); - this.directory('root', '.', true); - this.copy('gitignore', '.gitignore'); -}; diff --git a/constant/USAGE b/constant/USAGE deleted file mode 100644 index e5b7a7be0..000000000 --- a/constant/USAGE +++ /dev/null @@ -1,9 +0,0 @@ -Description: - Creates a new AngularJS constant. - Docs: http://docs.angularjs.org/guide/dev_guide.services.creating_services - -Example: - yo angular-fullstack:constant thing [--coffee] [--minsafe] - - This will create: - app/scripts/services/thing.js diff --git a/constant/index.js b/constant/index.js deleted file mode 100644 index aeed7d6ec..000000000 --- a/constant/index.js +++ /dev/null @@ -1,19 +0,0 @@ -'use strict'; -var util = require('util'); -var ScriptBase = require('../script-base.js'); - - -var Generator = module.exports = function Generator() { - ScriptBase.apply(this, arguments); -}; - -util.inherits(Generator, ScriptBase); - -Generator.prototype.createServiceFiles = function createServiceFiles() { - this.generateSourceAndTest( - 'service/constant', - 'spec/service', - 'services', - this.options['skip-add'] || false - ); -}; diff --git a/contributing.md b/contributing.md index d676ea56f..78170f758 100644 --- a/contributing.md +++ b/contributing.md @@ -1,13 +1,32 @@ # Contributing -See the [contributing docs](https://github.com/yeoman/yeoman/blob/master/contributing.md) +See the [Yeoman contributing docs](https://github.com/yeoman/yeoman/blob/master/contributing.md) Additionally for this generator: +* Please submit bug fix PRs to the `master` branch. Please submit large feature PRs to the `canary` branch; it is the main development branch for this generator. * When submitting an issue, please follow the [guidelines](https://github.com/yeoman/yeoman/blob/master/contributing.md#issue-submission). Especially important is to make sure Yeoman is up-to-date, and providing the command or commands that cause the issue. * When submitting a PR, make sure that the commit messages match the [AngularJS conventions][commit-message-format] (see below). * When submitting a bugfix, write a test that exposes the bug and fails before applying your fix. Submit the test alongside the fix. * When submitting a new feature, add tests that cover the feature. +* Open Issues marked with the [EASY](https://github.com/angular-fullstack/generator-angular-fullstack/issues?q=is%3Aopen+is%3Aissue+label%3AEasy) label are believed to be easy changes, and would be good Issues to tackle for new contributors. + +This project has 2 main branches: `master` and `canary`. The `master` branch is where the current stable code lives and should be used for production setups. The `canary` branch is the main development branch, this is where PRs should be submitted to (backport fixes may be applied to `master`). + +By separating the current stable code from the cutting-edge development we hope to provide a stable and efficient workflow for users and developers alike. + +When submitting a PR, make sure that the commit messages match the [AngularJS conventions](https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y/). + +When submitting a bugfix, try to write a test that exposes the bug and fails before applying your fix. Submit the test alongside the fix. + +When submitting a new feature, add tests that cover the feature. + +To run the generator: + +1. Clone it and `cd` to its root +2. `npm install` +3. `npm link` (tells npm to look to your own version) +4. `yo angular-fullstack` as normal. It should run from your cloned version rather than the one downloaded from npm. ## Git Commit Guidelines @@ -63,3 +82,23 @@ reference GitHub issues that this commit **Closes**. A detailed explanation can be found in this [document][commit-message-format]. [commit-message-format]: https://docs.google.com/document/d/1QrDFcIiPjSLDn3EL15IJygNPiHORgU1_OOAqWjiDU5Y + +# Releasing +*(for contributors with push access)* + +The `grunt release` task will do most of the work for you, see [`grunt-release`](https://github.com/geddski/grunt-release#using-grunt-release) for valid release targets. + +* Run the release task `grunt release:RELEASE_TARGET`. + +* Push and publish the `angular-fullstack-deps` submodule. +```bash +$ cd angular-fullstack-deps +$ git push && npm publish +$ cd .. +``` + +* Push and publish `generator-angular-fullstack`. +```bash +$ git push && git push --tags +$ npm publish +``` diff --git a/contributing/releasing-a-new-version.md b/contributing/releasing-a-new-version.md new file mode 100644 index 000000000..1c63f3966 --- /dev/null +++ b/contributing/releasing-a-new-version.md @@ -0,0 +1,26 @@ +# Releasing a New Version + +## Contributing + +## Releasing a new version + +* Bump `package.json` version +* \[ + * `grunt conventionalChangelog` + * `cd angular-fullstack-deps` + * `git checkout master` + * `git pull` + * `cd ..` + * `gulp updateFixtures:deps` + * `cd angular-fullstack-deps` + * `git add .` + * `git commit -m $VERSION` + * `git push` + * `# npm publish` + + \] +* `git add ./{CHANGELOG.md,angular-fullstack-deps,package.json}` +* `git commit -m $VERSION` +* `git push` +* `# npm publish` + diff --git a/contributing/untitled-1.md b/contributing/untitled-1.md new file mode 100644 index 000000000..543774ac4 --- /dev/null +++ b/contributing/untitled-1.md @@ -0,0 +1,55 @@ +# Commit Style + +## Commit Message Format + +Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes a **type**, a **scope** and a **subject**: + +```text +(): + + + +