diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index dea6d0b6f0..0000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,5 +0,0 @@ -* @ionic-team/cli - -/packages/@ionic @dwieeb -/packages/@ionic/discover @manucorporat -/packages/ionic @dwieeb diff --git a/package.json b/package.json index a47772e109..5456c7805e 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,9 @@ "chokidar-cli": "^1.2.0", "husky": "^1.1.0", "lerna": "^2.9.1", - "tslint-ionic-rules": "0.0.19" + "tslint": "^5.9.1", + "tslint-ionic-rules": "0.0.21", + "typescript": "~3.2.1" }, "husky": { "hooks": { diff --git a/packages/@ionic/cli-framework/CHANGELOG.md b/packages/@ionic/cli-framework/CHANGELOG.md index e55fc7249d..89a3374440 100644 --- a/packages/@ionic/cli-framework/CHANGELOG.md +++ b/packages/@ionic/cli-framework/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.5.1](https://github.com/ionic-team/ionic-cli/compare/@ionic/cli-framework@1.5.0...@ionic/cli-framework@1.5.1) (2018-12-19) + + + + +**Note:** Version bump only for package @ionic/cli-framework + # [1.5.0](https://github.com/ionic-team/ionic-cli/compare/@ionic/cli-framework@1.4.0...@ionic/cli-framework@1.5.0) (2018-11-27) diff --git a/packages/@ionic/cli-framework/package.json b/packages/@ionic/cli-framework/package.json index 5c6fb604a9..d82b5eb489 100644 --- a/packages/@ionic/cli-framework/package.json +++ b/packages/@ionic/cli-framework/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/cli-framework", - "version": "1.5.0", + "version": "1.5.1", "description": "The foundation framework of the Ionic CLI", "homepage": "https://ionicframework.com/", "author": "Ionic Team (https://ionicframework.com) ", @@ -11,7 +11,7 @@ }, "scripts": { "clean": "rimraf index.* definitions.* errors.* guards.* lib utils", - "lint": "tslint --config tslint.js --project tsconfig.json", + "lint": "tslint --project tsconfig.json", "build": "npm run clean && tsc", "watch": "tsc -w --preserveWatchOutput", "test": "jest --maxWorkers=4", @@ -27,7 +27,7 @@ }, "license": "MIT", "dependencies": { - "@ionic/utils-fs": "0.0.5", + "@ionic/utils-fs": "0.0.6", "chalk": "^2.3.0", "debug": "^4.0.0", "inquirer": "^6.0.0", @@ -37,7 +37,7 @@ "rimraf": "^2.6.2", "slice-ansi": "^2.0.0", "stream-combiner2": "^1.1.1", - "string-width": "^2.1.1", + "string-width": "^3.0.0", "strip-ansi": "^5.0.0", "tree-kill": "1.2.1", "tslib": "^1.9.0", @@ -65,6 +65,6 @@ "lint-staged": "^8.0.0", "ts-jest": "^23.10.1", "tslint": "^5.9.1", - "typescript": "~3.1.1" + "typescript": "~3.2.1" } } diff --git a/packages/@ionic/cli-framework/tslint.js b/packages/@ionic/cli-framework/tslint.js deleted file mode 100644 index 922c453b48..0000000000 --- a/packages/@ionic/cli-framework/tslint.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "extends": "../../../tslint.base", -}; diff --git a/packages/@ionic/cli-framework/tslint.json b/packages/@ionic/cli-framework/tslint.json new file mode 100644 index 0000000000..fd69973875 --- /dev/null +++ b/packages/@ionic/cli-framework/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tslint.base.json" +} diff --git a/packages/@ionic/discover/CHANGELOG.md b/packages/@ionic/discover/CHANGELOG.md index 8127589029..3675deeaee 100644 --- a/packages/@ionic/discover/CHANGELOG.md +++ b/packages/@ionic/discover/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.9](https://github.com/ionic-team/ionic-cli/compare/@ionic/discover@1.0.8...@ionic/discover@1.0.9) (2018-12-19) + + + + +**Note:** Version bump only for package @ionic/discover + ## [1.0.8](https://github.com/ionic-team/ionic-cli/compare/@ionic/discover@1.0.7...@ionic/discover@1.0.8) (2018-11-20) diff --git a/packages/@ionic/discover/package.json b/packages/@ionic/discover/package.json index d30bc5b966..a06afa78c8 100644 --- a/packages/@ionic/discover/package.json +++ b/packages/@ionic/discover/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/discover", - "version": "1.0.8", + "version": "1.0.9", "description": "Simple UDP based protocol for service discovery implemented in pure JS.", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -21,7 +21,7 @@ }, "scripts": { "clean": "rimraf dist", - "lint": "tslint --config tslint.js --project tsconfig.json", + "lint": "tslint --project tsconfig.json", "build": "npm run clean && tsc", "watch": "tsc -w --preserveWatchOutput", "test": "jest --maxWorkers=4", @@ -53,6 +53,6 @@ "rimraf": "^2.6.2", "ts-jest": "^23.10.1", "tslint": "^5.9.1", - "typescript": "~3.1.1" + "typescript": "~3.2.1" } } diff --git a/packages/@ionic/discover/tslint.js b/packages/@ionic/discover/tslint.js deleted file mode 100644 index 922c453b48..0000000000 --- a/packages/@ionic/discover/tslint.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "extends": "../../../tslint.base", -}; diff --git a/packages/@ionic/discover/tslint.json b/packages/@ionic/discover/tslint.json new file mode 100644 index 0000000000..fd69973875 --- /dev/null +++ b/packages/@ionic/discover/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tslint.base.json" +} diff --git a/packages/@ionic/lab/CHANGELOG.md b/packages/@ionic/lab/CHANGELOG.md index 26b2bf3972..15836d6a77 100644 --- a/packages/@ionic/lab/CHANGELOG.md +++ b/packages/@ionic/lab/CHANGELOG.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.16](https://github.com/ionic-team/ionic-cli/compare/@ionic/lab@1.0.15...@ionic/lab@1.0.16) (2018-12-19) + + +### Bug Fixes + +* **lab:** correct statusbar position ([#3766](https://github.com/ionic-team/ionic-cli/issues/3766)) ([b37fa03](https://github.com/ionic-team/ionic-cli/commit/b37fa03)) +* **lab:** default cursor for platform titles ([b215beb](https://github.com/ionic-team/ionic-cli/commit/b215beb)) +* **lab:** improve dev experience on smaller screens ([45a6c58](https://github.com/ionic-team/ionic-cli/commit/45a6c58)) +* **lab:** statusbar padding for all versions ([4fa13a3](https://github.com/ionic-team/ionic-cli/commit/4fa13a3)) + + + + ## [1.0.15](https://github.com/ionic-team/ionic-cli/compare/@ionic/lab@1.0.14...@ionic/lab@1.0.15) (2018-11-27) diff --git a/packages/@ionic/lab/package.json b/packages/@ionic/lab/package.json index cd8091a898..42fb3296d6 100644 --- a/packages/@ionic/lab/package.json +++ b/packages/@ionic/lab/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/lab", - "version": "1.0.15", + "version": "1.0.16", "description": "Ionic Lab utility for developing Ionic apps, used by Ionic CLI", "bin": { "ionic-lab": "./bin/ionic-lab" @@ -28,12 +28,12 @@ "clean": "npm run clean.tsc", "clean.tsc": "rimraf dist", "clean.stencil": "rimraf www", - "lint": "tslint --config tslint.js --project tsconfig.json", + "lint": "tslint --project tsconfig.json", "build": "npm run build.tsc && npm run build.stencil", "build.stencil": "npm run clean.stencil && stencil build", "build.tsc": "npm run clean.tsc && tsc", "watch": "npm run watch.tsc", - "watch.stencil": "npm run clean.stencil && concurrently \"stencil build --dev --watch\" \"stencil-dev-server --address localhost --httpPort 8900 --no-open\"", + "watch.stencil": "npm run clean.stencil && stencil build --dev --watch --serve --address localhost --port 8900 --no-open", "watch.tsc": "tsc -w --preserveWatchOutput", "prepublishOnly": "npm run build" }, @@ -42,25 +42,24 @@ "*.{ts,tsx}": "npm run lint" }, "ignore": [ + "src/stencil/**", "**/__tests__/*.{ts,tsx}" ] }, "dependencies": { - "@ionic/cli-framework": "1.5.0", - "@ionic/utils-fs": "0.0.5", + "@ionic/cli-framework": "1.5.1", + "@ionic/utils-fs": "0.0.6", "chalk": "^2.3.0", "express": "^4.16.2", "tslib": "^1.9.0" }, "devDependencies": { - "@stencil/core": "^0.15.0", - "@stencil/dev-server": "0.0.18", + "@stencil/core": "^0.16.0", "@types/express": "^4.11.0", "@types/node": "^6.0.101", - "concurrently": "^4.0.1", "lint-staged": "^8.0.0", "rimraf": "^2.6.2", "tslint": "^5.9.1", - "typescript": "~3.1.1" + "typescript": "~3.2.1" } } diff --git a/packages/@ionic/lab/src/stencil/assets/app.css b/packages/@ionic/lab/src/stencil/assets/app.css index f2e3dcaf1d..620a151685 100644 --- a/packages/@ionic/lab/src/stencil/assets/app.css +++ b/packages/@ionic/lab/src/stencil/assets/app.css @@ -46,9 +46,6 @@ header .icon { margin-top: -3px; font-size: 22px; color: var(--icon-color); -} - -.icon { cursor: pointer; } diff --git a/packages/@ionic/lab/src/stencil/assets/variables.css b/packages/@ionic/lab/src/stencil/assets/variables.css index 2884b67c04..8eacff28ee 100644 --- a/packages/@ionic/lab/src/stencil/assets/variables.css +++ b/packages/@ionic/lab/src/stencil/assets/variables.css @@ -32,4 +32,8 @@ --main-bg: var(--body-bg); --section-bg: #151a21; --font-color: #a2a9b4; + + --frame-ratio: .562; /* width/height */ + --frame-default-width: 375px; + --frame-default-height: calc(var(--frame-default-width) / var(--frame-ratio)); } diff --git a/packages/@ionic/lab/src/stencil/components/ionlab-device-frame/ionlab-device-frame.css b/packages/@ionic/lab/src/stencil/components/ionlab-device-frame/ionlab-device-frame.css index a9fcf42c09..dc7016920d 100644 --- a/packages/@ionic/lab/src/stencil/components/ionlab-device-frame/ionlab-device-frame.css +++ b/packages/@ionic/lab/src/stencil/components/ionlab-device-frame/ionlab-device-frame.css @@ -70,21 +70,17 @@ ionlab-device-frame .frame-container iframe { background-image: url('/assets/ios-statusbar.png'); } -#device-android .frame-container iframe { - margin-top: 20px; - height: calc(var(--frame-height) - 20px); -} - #device-android .frame-container .statusbar { background-image: url('/assets/android-statusbar.png'); } -#device-windows .frame-container iframe { - margin-top: 20px; - height: calc(var(--frame-height) - 20px); -} - #device-windows .frame-container .statusbar { background-image: url('/assets/wp-statusbar.png'); background-color: #fff; } + +@media only screen and (max-height: 850px) { + ionlab-device-frame h2 { + display: none; + } +} diff --git a/packages/@ionic/lab/src/stencil/components/ionlab-preview/ionlab-preview.css b/packages/@ionic/lab/src/stencil/components/ionlab-preview/ionlab-preview.css index fbb5113c41..05acf61224 100644 --- a/packages/@ionic/lab/src/stencil/components/ionlab-preview/ionlab-preview.css +++ b/packages/@ionic/lab/src/stencil/components/ionlab-preview/ionlab-preview.css @@ -3,8 +3,8 @@ ionlab-preview { flex: 1; overflow: scroll; - --frame-width: 375px; - --frame-height: 667px; + --frame-width: var(--frame-default-width); + --frame-height: var(--frame-default-height); } ionlab-preview > div { @@ -17,3 +17,16 @@ ionlab-preview > div { padding-bottom: 60px; min-height: 100%; } + +@media only screen and (max-height: 850px) { + ionlab-preview { + overflow: hidden; + + --frame-width: 300px; + --frame-height: calc(var(--frame-width) / var(--frame-ratio)); + } + + ionlab-preview > div { + padding-bottom: 0; + } +} diff --git a/packages/@ionic/lab/src/stencil/components/ionlab-preview/ionlab-preview.tsx b/packages/@ionic/lab/src/stencil/components/ionlab-preview/ionlab-preview.tsx index 9238530ca9..5965bc0526 100644 --- a/packages/@ionic/lab/src/stencil/components/ionlab-preview/ionlab-preview.tsx +++ b/packages/@ionic/lab/src/stencil/components/ionlab-preview/ionlab-preview.tsx @@ -21,16 +21,10 @@ export class Preview { if (this.projectType === 'angular') { qp['ionic:mode'] = platformMode(platform); qp['ionic:persistConfig'] = 'true'; - - if (platform === PLATFORM_IOS) { - qp['ionic:_forceStatusbarPadding'] = 'true'; - } + qp['ionic:_forceStatusbarPadding'] = 'true'; } else if (this.projectType === 'ionic-angular') { qp['ionicplatform'] = platform; - - if (platform === PLATFORM_IOS) { - qp['ionicstatusbarpadding'] = 'true'; - } + qp['ionicstatusbarpadding'] = 'true'; } return `${this.url}?${Object.keys(qp).map(k => `${encodeURIComponent(k)}=${encodeURIComponent(qp[k])}`).join('&')}`; diff --git a/packages/@ionic/lab/src/stencil/components/ionlab-sidebar/ionlab-sidebar.css b/packages/@ionic/lab/src/stencil/components/ionlab-sidebar/ionlab-sidebar.css index 64d732f8f1..17189bff7a 100644 --- a/packages/@ionic/lab/src/stencil/components/ionlab-sidebar/ionlab-sidebar.css +++ b/packages/@ionic/lab/src/stencil/components/ionlab-sidebar/ionlab-sidebar.css @@ -21,6 +21,7 @@ ionlab-sidebar h3 .icon { font-size: 24px; color: var(--font-color); margin-top: -5px; + cursor: pointer; } ionlab-sidebar .menu { diff --git a/packages/@ionic/lab/src/stencil/index.html b/packages/@ionic/lab/src/stencil/index.html index ecc4cc602b..5f2b9aee51 100644 --- a/packages/@ionic/lab/src/stencil/index.html +++ b/packages/@ionic/lab/src/stencil/index.html @@ -6,7 +6,7 @@ - + diff --git a/packages/@ionic/lab/stencil.config.js b/packages/@ionic/lab/stencil.config.js index 647db6cb3b..1659408598 100644 --- a/packages/@ionic/lab/stencil.config.js +++ b/packages/@ionic/lab/stencil.config.js @@ -1,5 +1,4 @@ exports.config = { - namespace: 'ionlab', srcDir: 'src/stencil', outputTargets: [ { @@ -7,9 +6,6 @@ exports.config = { serviceWorker: false, }, ], - bundles: [ - { components: ['ionlab-app', 'ionlab-platform-dropdown'] } - ], copy: [ { src: 'assets' }, ], diff --git a/packages/@ionic/lab/tslint.js b/packages/@ionic/lab/tslint.js deleted file mode 100644 index 922c453b48..0000000000 --- a/packages/@ionic/lab/tslint.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "extends": "../../../tslint.base", -}; diff --git a/packages/@ionic/lab/tslint.json b/packages/@ionic/lab/tslint.json new file mode 100644 index 0000000000..fd69973875 --- /dev/null +++ b/packages/@ionic/lab/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tslint.base.json" +} diff --git a/packages/@ionic/utils-fs/CHANGELOG.md b/packages/@ionic/utils-fs/CHANGELOG.md index 0aa858d6af..cf4d3f4579 100644 --- a/packages/@ionic/utils-fs/CHANGELOG.md +++ b/packages/@ionic/utils-fs/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.0.6](https://github.com/ionic-team/ionic-cli/compare/@ionic/utils-fs@0.0.5...@ionic/utils-fs@0.0.6) (2018-12-19) + + + + +**Note:** Version bump only for package @ionic/utils-fs + ## [0.0.5](https://github.com/ionic-team/ionic-cli/compare/@ionic/utils-fs@0.0.4...@ionic/utils-fs@0.0.5) (2018-11-20) diff --git a/packages/@ionic/utils-fs/package.json b/packages/@ionic/utils-fs/package.json index df91f59afa..522f688e51 100644 --- a/packages/@ionic/utils-fs/package.json +++ b/packages/@ionic/utils-fs/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/utils-fs", - "version": "0.0.5", + "version": "0.0.6", "description": "Filesystem utils for Node", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -21,7 +21,7 @@ }, "scripts": { "clean": "rimraf dist", - "lint": "tslint --config tslint.js --project tsconfig.json", + "lint": "tslint --project tsconfig.json", "build": "npm run clean && tsc", "watch": "tsc -w --preserveWatchOutput", "test": "jest --maxWorkers=4", @@ -53,6 +53,6 @@ "rimraf": "^2.6.2", "ts-jest": "^23.10.1", "tslint": "^5.9.1", - "typescript": "~3.1.1" + "typescript": "~3.2.1" } } diff --git a/packages/@ionic/utils-fs/tslint.js b/packages/@ionic/utils-fs/tslint.js deleted file mode 100644 index 922c453b48..0000000000 --- a/packages/@ionic/utils-fs/tslint.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "extends": "../../../tslint.base", -}; diff --git a/packages/@ionic/utils-fs/tslint.json b/packages/@ionic/utils-fs/tslint.json new file mode 100644 index 0000000000..fd69973875 --- /dev/null +++ b/packages/@ionic/utils-fs/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tslint.base.json" +} diff --git a/packages/@ionic/utils-network/CHANGELOG.md b/packages/@ionic/utils-network/CHANGELOG.md index 9f5777a285..851d8fafdf 100644 --- a/packages/@ionic/utils-network/CHANGELOG.md +++ b/packages/@ionic/utils-network/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.0.5](https://github.com/ionic-team/ionic-cli/compare/@ionic/utils-network@0.0.4...@ionic/utils-network@0.0.5) (2018-12-19) + + + + +**Note:** Version bump only for package @ionic/utils-network + ## [0.0.4](https://github.com/ionic-team/ionic-cli/compare/@ionic/utils-network@0.0.3...@ionic/utils-network@0.0.4) (2018-10-31) diff --git a/packages/@ionic/utils-network/package.json b/packages/@ionic/utils-network/package.json index b42fc68ebc..b2e081e35c 100644 --- a/packages/@ionic/utils-network/package.json +++ b/packages/@ionic/utils-network/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/utils-network", - "version": "0.0.4", + "version": "0.0.5", "description": "Network utils for Node", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -21,7 +21,7 @@ }, "scripts": { "clean": "rimraf dist", - "lint": "tslint --config tslint.js --project tsconfig.json", + "lint": "tslint --project tsconfig.json", "build": "npm run clean && tsc", "watch": "tsc -w --preserveWatchOutput", "test": "jest --maxWorkers=4", @@ -49,6 +49,6 @@ "rimraf": "^2.6.2", "ts-jest": "^23.10.1", "tslint": "^5.9.1", - "typescript": "~3.1.1" + "typescript": "~3.2.1" } } diff --git a/packages/@ionic/utils-network/tslint.js b/packages/@ionic/utils-network/tslint.js deleted file mode 100644 index 922c453b48..0000000000 --- a/packages/@ionic/utils-network/tslint.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "extends": "../../../tslint.base", -}; diff --git a/packages/@ionic/utils-network/tslint.json b/packages/@ionic/utils-network/tslint.json new file mode 100644 index 0000000000..fd69973875 --- /dev/null +++ b/packages/@ionic/utils-network/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tslint.base.json" +} diff --git a/packages/@ionic/v1-toolkit/CHANGELOG.md b/packages/@ionic/v1-toolkit/CHANGELOG.md index 815a900df3..c8c7b88fa0 100644 --- a/packages/@ionic/v1-toolkit/CHANGELOG.md +++ b/packages/@ionic/v1-toolkit/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [1.0.15](https://github.com/ionic-team/ionic-cli/compare/@ionic/v1-toolkit@1.0.14...@ionic/v1-toolkit@1.0.15) (2018-12-19) + + + + +**Note:** Version bump only for package @ionic/v1-toolkit + ## [1.0.14](https://github.com/ionic-team/ionic-cli/compare/@ionic/v1-toolkit@1.0.13...@ionic/v1-toolkit@1.0.14) (2018-11-27) diff --git a/packages/@ionic/v1-toolkit/package.json b/packages/@ionic/v1-toolkit/package.json index 88a2f7652f..c8dc8fbc53 100644 --- a/packages/@ionic/v1-toolkit/package.json +++ b/packages/@ionic/v1-toolkit/package.json @@ -1,6 +1,6 @@ { "name": "@ionic/v1-toolkit", - "version": "1.0.14", + "version": "1.0.15", "description": "Utility CLI for Ionic 1.x apps, used by Ionic CLI", "bin": { "ionic-v1": "./bin/ionic-v1" @@ -26,7 +26,7 @@ }, "scripts": { "clean": "rimraf dist", - "lint": "tslint --config tslint.js --project tsconfig.json", + "lint": "tslint --project tsconfig.json", "build": "npm run clean && tsc", "watch": "tsc -w --preserveWatchOutput", "test": "jest --maxWorkers=4", @@ -41,8 +41,8 @@ ] }, "dependencies": { - "@ionic/cli-framework": "1.5.0", - "@ionic/utils-fs": "0.0.5", + "@ionic/cli-framework": "1.5.1", + "@ionic/utils-fs": "0.0.6", "chalk": "^2.3.0", "chokidar": "^2.0.0", "debug": "^4.0.0", @@ -68,6 +68,6 @@ "rimraf": "^2.6.2", "ts-jest": "^23.10.1", "tslint": "^5.9.1", - "typescript": "~3.1.1" + "typescript": "~3.2.1" } } diff --git a/packages/@ionic/v1-toolkit/src/lib/gulp.ts b/packages/@ionic/v1-toolkit/src/lib/gulp.ts index c4ee1d9e16..bc83da15e5 100644 --- a/packages/@ionic/v1-toolkit/src/lib/gulp.ts +++ b/packages/@ionic/v1-toolkit/src/lib/gulp.ts @@ -69,7 +69,8 @@ export async function runTask(name: string): Promise { try { const gulp = await loadGulp(); - const gulpStart = promisify(gulp.start.bind(gulp)); + const boundStart = gulp.start.bind(gulp); + const gulpStart = promisify(boundStart as any); process.stdout.write(`${timestamp()} Invoking ${chalk.cyan(name)} gulp task.\n`); await gulpStart(name); diff --git a/packages/@ionic/v1-toolkit/tslint.js b/packages/@ionic/v1-toolkit/tslint.js deleted file mode 100644 index 922c453b48..0000000000 --- a/packages/@ionic/v1-toolkit/tslint.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "extends": "../../../tslint.base", -}; diff --git a/packages/@ionic/v1-toolkit/tslint.json b/packages/@ionic/v1-toolkit/tslint.json new file mode 100644 index 0000000000..fd69973875 --- /dev/null +++ b/packages/@ionic/v1-toolkit/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../../tslint.base.json" +} diff --git a/packages/cli-scripts/CHANGELOG.md b/packages/cli-scripts/CHANGELOG.md index 099ddb46f5..08a01040c2 100644 --- a/packages/cli-scripts/CHANGELOG.md +++ b/packages/cli-scripts/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +## [0.0.25](https://github.com/ionic-team/ionic-cli/compare/cli-scripts@0.0.24...cli-scripts@0.0.25) (2018-12-19) + + + + +**Note:** Version bump only for package cli-scripts + ## [0.0.24](https://github.com/ionic-team/ionic-cli/compare/cli-scripts@0.0.23...cli-scripts@0.0.24) (2018-11-27) diff --git a/packages/cli-scripts/package.json b/packages/cli-scripts/package.json index 6d8301b8b3..f8351f69ac 100644 --- a/packages/cli-scripts/package.json +++ b/packages/cli-scripts/package.json @@ -1,13 +1,13 @@ { "private": true, "name": "cli-scripts", - "version": "0.0.24", + "version": "0.0.25", "bin": { "ionic-cli-scripts": "./bin/ionic-cli-scripts" }, "scripts": { "clean": "rimraf dist", - "lint": "tslint --config tslint.js --project tsconfig.json", + "lint": "tslint --project tsconfig.json", "build": "npm run clean && tsc", "watch": "tsc -w --preserveWatchOutput", "test": "jest --maxWorkers=4", @@ -24,12 +24,12 @@ "main": "./dist/index.js", "types": "./dist/index.d.ts", "dependencies": { - "@ionic/cli-framework": "1.5.0", - "@ionic/utils-fs": "0.0.5", + "@ionic/cli-framework": "1.5.1", + "@ionic/utils-fs": "0.0.6", "ansi-styles": "^3.2.0", "chalk": "^2.3.0", "escape-string-regexp": "^1.0.5", - "ionic": "4.5.0", + "ionic": "4.6.0", "strip-ansi": "^5.0.0", "tslib": "^1.9.0" }, @@ -45,6 +45,6 @@ "rimraf": "^2.6.2", "ts-jest": "^23.10.1", "tslint": "^5.9.1", - "typescript": "~3.1.1" + "typescript": "~3.2.1" } } diff --git a/packages/cli-scripts/tslint.js b/packages/cli-scripts/tslint.js deleted file mode 100644 index f4c265d6bf..0000000000 --- a/packages/cli-scripts/tslint.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "extends": "../../tslint.base", -}; diff --git a/packages/cli-scripts/tslint.json b/packages/cli-scripts/tslint.json new file mode 100644 index 0000000000..a6e3c32c8f --- /dev/null +++ b/packages/cli-scripts/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tslint.base.json" +} diff --git a/packages/ionic/CHANGELOG.md b/packages/ionic/CHANGELOG.md index 353a7d8d5b..759a2401a4 100644 --- a/packages/ionic/CHANGELOG.md +++ b/packages/ionic/CHANGELOG.md @@ -3,6 +3,23 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. + +# [4.6.0](https://github.com/ionic-team/ionic-cli/compare/ionic@4.5.0...ionic@4.6.0) (2018-12-19) + + +### Bug Fixes + +* **cordova:** warn for prepare w/o platforms ([385bdf2](https://github.com/ionic-team/ionic-cli/commit/385bdf2)) + + +### Features + +* **serve:** collapse numbered chunk output and summarize ([5ac6834](https://github.com/ionic-team/ionic-cli/commit/5ac6834)) +* **start:** update for Ionic Framework 4.0 RC ([7e943cc](https://github.com/ionic-team/ionic-cli/commit/7e943cc)) + + + + # [4.5.0](https://github.com/ionic-team/ionic-cli/compare/ionic@4.4.0...ionic@4.5.0) (2018-11-27) diff --git a/packages/ionic/package.json b/packages/ionic/package.json index b17392a8dd..30f5ae6454 100644 --- a/packages/ionic/package.json +++ b/packages/ionic/package.json @@ -1,6 +1,6 @@ { "name": "ionic", - "version": "4.5.0", + "version": "4.6.0", "description": "A tool for creating and developing Ionic Framework mobile apps.", "homepage": "https://ionicframework.com", "author": "Ionic Team (https://ionicframework.com) ", @@ -14,7 +14,7 @@ "types": "./index.d.ts", "scripts": { "clean": "rimraf index.* bootstrap.* constants.* definitions.* guards.* lib commands", - "lint": "tslint --config tslint.js --project tsconfig.json", + "lint": "tslint --project tsconfig.json", "build": "npm run clean && tsc", "watch": "tsc -w --preserveWatchOutput", "test": "jest --maxWorkers=4", @@ -48,10 +48,10 @@ }, "license": "MIT", "dependencies": { - "@ionic/cli-framework": "1.5.0", - "@ionic/discover": "1.0.8", - "@ionic/utils-fs": "0.0.5", - "@ionic/utils-network": "0.0.4", + "@ionic/cli-framework": "1.5.1", + "@ionic/discover": "1.0.9", + "@ionic/utils-fs": "0.0.6", + "@ionic/utils-network": "0.0.5", "chalk": "^2.3.0", "debug": "^4.0.0", "diff": "^3.4.0", @@ -96,6 +96,6 @@ "source-map": "^0.7.0", "ts-jest": "^23.10.1", "tslint": "^5.9.1", - "typescript": "~3.1.1" + "typescript": "~3.2.1" } } diff --git a/packages/ionic/src/commands/cordova/prepare.ts b/packages/ionic/src/commands/cordova/prepare.ts index 2516dfd531..32e0000569 100644 --- a/packages/ionic/src/commands/cordova/prepare.ts +++ b/packages/ionic/src/commands/cordova/prepare.ts @@ -57,19 +57,33 @@ You may wish to use ${chalk.green('ionic cordova prepare')} if you run your proj } async run(inputs: CommandLineInputs, options: CommandLineOptions): Promise { + const { getPlatforms } = await import('../../lib/integrations/cordova/project'); const [ platform ] = inputs; if (!this.project) { throw new FatalException(`Cannot run ${chalk.green('ionic cordova prepare')} outside a project directory.`); } - await this.checkForPlatformInstallation(platform, { - promptToInstall: true, - promptToInstallRefusalMsg: ( - `Can't prepare for ${chalk.green(platform)} unless the platform is installed.\n` + - `Did you mean just ${chalk.green('ionic cordova prepare')}?\n` - ), - }); + if (platform) { + await this.checkForPlatformInstallation(platform, { + promptToInstall: true, + promptToInstallRefusalMsg: ( + `Cannot prepare for ${chalk.green(platform)} unless the platform is installed.\n` + + `Did you mean just ${chalk.green('ionic cordova prepare')}?\n` + ), + }); + } else { + const platforms = await getPlatforms(this.integration.root); + + if (platforms.length === 0) { + this.env.log.warn( + `No platforms added to this project. Cannot prepare native platforms without any installed.\n` + + `Run ${chalk.green('ionic cordova platform add ')} to add native platforms.` + ); + + throw new FatalException('', 0); + } + } const metadata = await this.getMetadata(); diff --git a/packages/ionic/src/commands/serve.ts b/packages/ionic/src/commands/serve.ts index ee2a069ad7..daff4e0099 100644 --- a/packages/ionic/src/commands/serve.ts +++ b/packages/ionic/src/commands/serve.ts @@ -68,7 +68,7 @@ export class ServeCommand extends Command implements CommandPreRun { }, ]; - const exampleCommands = ['', '-c', '--local', '--lab']; + const exampleCommands = ['', '--local', '--lab']; let description = ` Easily spin up a development server which launches in your browser. It watches for changes in your source files and automatically reloads with the updated build. diff --git a/packages/ionic/src/commands/start.ts b/packages/ionic/src/commands/start.ts index c82a1bb4cd..834c8bc459 100644 --- a/packages/ionic/src/commands/start.ts +++ b/packages/ionic/src/commands/start.ts @@ -228,9 +228,9 @@ ${chalk.cyan('[1]')}: ${chalk.bold('https://ionicframework.com/docs/cli/starters if (!options['type']) { if (this.env.flags.interactive) { this.env.log.info( - `You are about to create an Ionic 3 app. Would you like to try Ionic 4 ${chalk.red.bold('(beta)')}?\n` + + `You are about to create an Ionic 3 app. Would you like to try the release candidate for Ionic 4?\n` + `Ionic 4 uses the power of the modern Web and embraces the Angular CLI and Angular Router to bring you the best version of Ionic ever. See our blog announcement${chalk.cyan('[1]')} and documentation${chalk.cyan('[2]')} for more information. We'd love to hear your feedback on our latest version!\n\n` + - `${chalk.cyan('[1]')}: ${chalk.bold('https://blog.ionicframework.com/announcing-ionic-4-beta/')}\n` + + `${chalk.cyan('[1]')}: ${chalk.bold('https://blog.ionicframework.com/ionic-framework-4-0-rc-shipped-paving-way-for-final')}\n` + `${chalk.cyan('[2]')}: ${chalk.bold('https://beta.ionicframework.com/docs/')}\n` ); } @@ -690,6 +690,8 @@ ${chalk.cyan('[1]')}: ${chalk.bold('https://ionicframework.com/docs/cli/starters async showNextSteps(projectDir: string, cloned: boolean, linkConfirmed: boolean) { const steps = [ `Go to your ${cloned ? 'cloned' : 'newly created'} project: ${chalk.green(`cd ${prettyPath(projectDir)}`)}`, + `Run ${chalk.green('ionic serve')} within the app directory to see your app`, + `Build features and components: ${chalk.bold('https://beta.ionicframework.com/docs/building/scaffolding')}`, `Get Ionic DevApp for easy device testing: ${chalk.bold('https://bit.ly/ionic-dev-app')}`, ]; diff --git a/packages/ionic/src/lib/integrations/cordova/__tests__/project.ts b/packages/ionic/src/lib/integrations/cordova/__tests__/project.ts index 8229e79ce3..7d3a201d68 100644 --- a/packages/ionic/src/lib/integrations/cordova/__tests__/project.ts +++ b/packages/ionic/src/lib/integrations/cordova/__tests__/project.ts @@ -7,14 +7,22 @@ describe('ionic', () => { describe('getPlatforms', () => { - it('should filter out platforms.json and empty string', async () => { - spyOn(fsSpy, 'readDir').and.callFake(async () => ['.DS_Store', 'android', 'ios', 'platforms.json', '']); + it('should filter out files and hidden files/folders', async () => { + const files = [['.DS_Store', false], ['.dir', true], ['android', true], ['ios', true], ['platforms.json', false]]; + spyOn(fsSpy, 'readDirSafe').and.callFake(async () => files.map(([f]) => f)); + spyOn(fsSpy, 'statSafe').and.callFake(async (p) => ({ + isDirectory: () => { + const file = files.find(([f]) => p.endsWith(f)); + return typeof file !== 'undefined' && file[1]; + }, + })); + const platforms = await project.getPlatforms('/path/to/proj'); expect(platforms).toEqual(['android', 'ios']); }); it('should not error if directory empty', async () => { - spyOn(fsSpy, 'readDir').and.callFake(async () => []); + spyOn(fsSpy, 'readDirSafe').and.callFake(async () => []); const platforms = await project.getPlatforms('/path/to/proj'); expect(platforms).toEqual([]); }); diff --git a/packages/ionic/src/lib/integrations/cordova/project.ts b/packages/ionic/src/lib/integrations/cordova/project.ts index cdb4736c38..3e9edba757 100644 --- a/packages/ionic/src/lib/integrations/cordova/project.ts +++ b/packages/ionic/src/lib/integrations/cordova/project.ts @@ -1,9 +1,15 @@ import * as path from 'path'; -import { readDirSafe } from '@ionic/utils-fs'; +import { filter } from '@ionic/cli-framework/utils/array'; +import { readDirSafe, statSafe } from '@ionic/utils-fs'; export async function getPlatforms(projectDir: string): Promise { const platformsDir = path.resolve(projectDir, 'platforms'); - const dirContents = await readDirSafe(platformsDir); - return dirContents.filter(f => f && f !== 'platforms.json' && !f.startsWith('.')); + const contents = await readDirSafe(platformsDir); + const platforms = await filter(contents, async file => { + const stat = await statSafe(path.join(platformsDir, file)); + return !file.startsWith('.') && typeof stat !== 'undefined' && stat.isDirectory(); + }); + + return platforms; } diff --git a/packages/ionic/src/lib/project/angular/build.ts b/packages/ionic/src/lib/project/angular/build.ts index f36a0fb82f..5b8b608f1f 100644 --- a/packages/ionic/src/lib/project/angular/build.ts +++ b/packages/ionic/src/lib/project/angular/build.ts @@ -33,7 +33,7 @@ export class AngularBuildRunner extends BuildRunner { description: ` ${chalk.green('ionic build')} uses the Angular CLI. Use ${chalk.green('ng build --help')} to list all Angular CLI options for building your app. See the ${chalk.green('ng build')} docs${chalk.cyan('[1]')} for explanations. Options not listed below are considered advanced and can be passed to the ${chalk.green('ng')} CLI using the ${chalk.green('--')} separator after the Ionic CLI arguments. See the examples. -${chalk.cyan('[1]')}: ${chalk.bold('https://github.com/angular/angular-cli/wiki/build')}`, +${chalk.cyan('[1]')}: ${chalk.bold('https://angular.io/cli/build')}`, options: [ { name: 'prod', diff --git a/packages/ionic/src/lib/project/angular/serve.ts b/packages/ionic/src/lib/project/angular/serve.ts index cb89e4d205..0bb6890f05 100644 --- a/packages/ionic/src/lib/project/angular/serve.ts +++ b/packages/ionic/src/lib/project/angular/serve.ts @@ -1,6 +1,7 @@ import chalk from 'chalk'; import { CommandGroup, OptionGroup, ParsedArgs, unparseArgs } from '@ionic/cli-framework'; +import { stripAnsi } from '@ionic/cli-framework/utils/format'; import { findClosestOpenPort } from '@ionic/utils-network'; import { AngularServeOptions, CommandLineInputs, CommandLineOptions, CommandMetadata, ServeDetails } from '../../../definitions'; @@ -25,7 +26,7 @@ ${chalk.green('ionic serve')} uses the Angular CLI. Use ${chalk.green('ng serve The dev server can use HTTPS via the ${chalk.green('--ssl')} option ${chalk.bold.red('(experimental)')}. There are several known issues with HTTPS. See issue #3305${chalk.cyan('[2]')}. -${chalk.cyan('[1]')}: ${chalk.bold('https://github.com/angular/angular-cli/wiki/serve')} +${chalk.cyan('[1]')}: ${chalk.bold('https://angular.io/cli/serve')} ${chalk.cyan('[2]')}: ${chalk.bold('https://github.com/ionic-team/ionic-cli/issues/3305')}`, options: [ { @@ -116,17 +117,40 @@ export class AngularServeCLI extends ServeCLI { readonly program = 'ng'; readonly prefix = 'ng'; readonly script = SERVE_SCRIPT; + protected chunks = 0; + + async serve(options: AngularServeOptions): Promise { + this.on('compile', chunks => { + if (chunks > 0) { + this.e.log.info(`... and ${chalk.bold(chunks.toString())} additional chunks`); + } + }); + + return super.serve(options); + } protected stdoutFilter(line: string): boolean { if (this.resolvedProgram !== this.program) { return super.stdoutFilter(line); } - if (line.includes('Development Server is listening')) { + const strippedLine = stripAnsi(line); + + if (strippedLine.includes('Development Server is listening')) { this.emit('ready'); return false; } + if (strippedLine.match(/.*chunk\s{\d+}.+/)) { + this.chunks++; + return false; + } + + if (strippedLine.includes('Compiled successfully')) { + this.emit('compile', this.chunks); + this.chunks = 0; + } + return true; } diff --git a/packages/ionic/src/lib/project/ionic-angular/serve.ts b/packages/ionic/src/lib/project/ionic-angular/serve.ts index e560577e42..562018c6c2 100644 --- a/packages/ionic/src/lib/project/ionic-angular/serve.ts +++ b/packages/ionic/src/lib/project/ionic-angular/serve.ts @@ -78,7 +78,7 @@ export class IonicAngularServeRunner extends ServeRunner { // TODO: Adding 'x' to aliases here has some weird behavior with minimist. }, ], + exampleCommands: [ + '-c', + ], }; } diff --git a/packages/ionic/src/lib/serve.ts b/packages/ionic/src/lib/serve.ts index 1628b94b88..a213197d9c 100644 --- a/packages/ionic/src/lib/serve.ts +++ b/packages/ionic/src/lib/serve.ts @@ -386,9 +386,12 @@ export interface ServeCLIOptions { } export interface ServeCLI { + emit(event: 'compile', chunks: number): boolean; + emit(event: 'ready'): boolean; + on(event: 'compile', handler: (chunks: number) => void): this; on(event: 'ready', handler: () => void): this; + once(event: 'compile', handler: (chunks: number) => void): this; once(event: 'ready', handler: () => void): this; - emit(event: 'ready'): boolean; } export abstract class ServeCLI extends EventEmitter { diff --git a/packages/ionic/tslint.js b/packages/ionic/tslint.js deleted file mode 100644 index f4c265d6bf..0000000000 --- a/packages/ionic/tslint.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "extends": "../../tslint.base", -}; diff --git a/packages/ionic/tslint.json b/packages/ionic/tslint.json new file mode 100644 index 0000000000..a6e3c32c8f --- /dev/null +++ b/packages/ionic/tslint.json @@ -0,0 +1,3 @@ +{ + "extends": "../../tslint.base.json" +} diff --git a/tslint.base.js b/tslint.base.js deleted file mode 100644 index 658c51f89f..0000000000 --- a/tslint.base.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - "extends": "tslint-ionic-rules/strict", - "rules": { - "forin": false, // TODO - "no-empty-interface": false, // TODO - "strict-boolean-conditions": false, - }, -}; diff --git a/tslint.base.json b/tslint.base.json new file mode 100644 index 0000000000..5331d517e6 --- /dev/null +++ b/tslint.base.json @@ -0,0 +1,8 @@ +{ + "extends": "tslint-ionic-rules/strict", + "rules": { + "forin": false, + "no-empty-interface": false, + "strict-boolean-conditions": false + } +}