chore: 🤖 initialize core ui

This commit is contained in:
Randall Morey committed 2020-05-18 17:02:09 -04:00
1 parent 675b9afd8d
commit 2fae695d11
37 files changed
+1160 -46

No files matched your search

+1
View File
@@ -14,6 +14,7 @@ node_modules
.DS_Store
connect.lock
coverage
coverage_*
coverage-*
libpeerconnection.log
npm-debug.log*
+5 -3
View File
@@ -8,17 +8,19 @@
"ui/*"
],
"scripts": {
"lint": "yarn lint:addons:api && yarn lint:addons:auth && yarn lint:addons:rose",
"lint": "yarn lint:addons:api && yarn lint:addons:auth && yarn lint:addons:rose && yarn lint:ui:core",
"lint:addons:api": "echo \"\n\nlint: addons/api\n\" && cd addons/api && yarn lint",
"lint:addons:auth": "echo \"\n\nlint: addons/auth\n\" && cd addons/auth && yarn lint",
"lint:addons:rose": "echo \"\n\nlint: addons/rose\n\" && cd addons/rose && yarn lint",
"test": "yarn test:addons:api && yarn test:addons:auth && yarn test:addons:rose",
"lint:ui:core": "echo \"\n\nlint: ui/core\n\" && cd ui/core && yarn lint",
"test": "yarn test:addons:api && yarn test:addons:auth && yarn test:addons:rose && yarn test:ui:core",
"test:addons:api": "echo \"\n\ntest: addons/api\n\" && cd addons/api && yarn test",
"test:addons:auth": "echo \"\n\ntest: addons/auth\n\" && cd addons/auth && yarn test",
"test:addons:rose": "echo \"\n\ntest: addons/rose\n\" && cd addons/rose && yarn test",
"test:ui:core": "echo \"\n\ntest: ui/core\n\" && cd ui/core && yarn test",
"precommit": "yarn compliance:licenses && yarn audit && yarn lint && yarn test",
"commit": "git-cz",
"compliance:licenses": "license-checker --onlyAllow 'Apache*;Apache License, Version 2.0;Apache-2.0;BSD;BSD-3-Clause;CC-BY-3.0;CC-BY-4.0;CC0-1.0;ISC;MIT;MPL-2.0;Public Domain;Unicode-TOU;Unlicense;WTFPL' --excludePackages 'watchtower-ui;base64-js@0.0.2'",
"compliance:licenses": "license-checker --onlyAllow 'Apache*;Apache License, Version 2.0;Apache-2.0;BSD;BSD-3-Clause;CC-BY-3.0;CC-BY-4.0;CC0-1.0;ISC;MIT;MPL-2.0;Public Domain;Unicode-TOU;Unlicense;WTFPL' --excludePackages 'watchtower-ui;core@0.0.0;base64-js@0.0.2'",
"doc:toc": "doctoc README.md"
},
"devDependencies": {
+19
View File
@@ -0,0 +1,19 @@
# EditorConfig helps developers define and maintain consistent
# coding styles between different editors and IDEs
# editorconfig.org
root = true
[*]
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
indent_style = space
indent_size = 2
[*.hbs]
insert_final_newline = false
[*.{diff,md}]
trim_trailing_whitespace = false
+9
View File
@@ -0,0 +1,9 @@
{
/**
Ember CLI sends analytics information by default. The data is completely
anonymous, but there are times when you might want to disable this behavior.
Setting `disableAnalytics` to true will prevent any data from being sent.
*/
"disableAnalytics": false
}
+20
View File
@@ -0,0 +1,20 @@
# unconventional js
/blueprints/*/files/
/vendor/
# compiled output
/dist/
/tmp/
# dependencies
/bower_components/
/node_modules/
# misc
/coverage/
!.*
# ember-try
/.node_modules.ember-try/
/bower.json.ember-try
/package.json.ember-try
+56
View File
@@ -0,0 +1,56 @@
'use strict';
module.exports = {
root: true,
parser: 'babel-eslint',
parserOptions: {
ecmaVersion: 2018,
sourceType: 'module',
ecmaFeatures: {
legacyDecorators: true
}
},
plugins: [
'ember'
],
extends: [
'eslint:recommended',
'plugin:ember/recommended'
],
env: {
browser: true
},
rules: {
'ember/no-jquery': 'error'
},
overrides: [
// node files
{
files: [
'.eslintrc.js',
'.template-lintrc.js',
'ember-cli-build.js',
'testem.js',
'blueprints/*/index.js',
'config/**/*.js',
'lib/*/index.js',
'server/**/*.js'
],
parserOptions: {
sourceType: 'script'
},
env: {
browser: false,
node: true
},
plugins: ['node'],
rules: Object.assign({}, require('eslint-plugin-node').configs.recommended.rules, {
// add your custom rules and overrides for node files here
// this can be removed once the following is fixed
// https://github.com/mysticatea/eslint-plugin-node/issues/77
'node/no-unpublished-require': 'off'
})
}
]
};
+4
View File
@@ -0,0 +1,4 @@
{
"singleQuote": true,
"printWidth": 80
}
+5
View File
@@ -0,0 +1,5 @@
'use strict';
module.exports = {
extends: 'octane'
};
+33
View File
@@ -0,0 +1,33 @@
---
language: node_js
node_js:
- "10"
dist: trusty
addons:
chrome: stable
cache:
yarn: true
env:
global:
# See https://git.io/vdao3 for details.
- JOBS=1
branches:
only:
- master
before_install:
- curl -o- -L https://yarnpkg.com/install.sh | bash
- export PATH=$HOME/.yarn/bin:$PATH
install:
- yarn install --non-interactive
script:
- yarn lint:hbs
- yarn lint:js
- yarn test
+3
View File
@@ -0,0 +1,3 @@
{
"ignore_dirs": ["tmp", "dist"]
}
+92
View File
@@ -0,0 +1,92 @@
# Core UI
The core UI for Project Watchtower.
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)*
- [Prerequisites](#prerequisites)
- [Installation](#installation)
- [Running / Development](#running--development)
- [Code Generators](#code-generators)
- [Running Tests](#running-tests)
- [Linting](#linting)
- [Building](#building)
- [Deploying](#deploying)
- [Further Reading / Useful Links](#further-reading--useful-links)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## Prerequisites
You will need the following things properly installed on your computer.
* [Git](https://git-scm.com/)
* [Node.js](https://nodejs.org/)
* [Yarn](https://yarnpkg.com/)
* [Ember CLI](https://ember-cli.com/)
* [Google Chrome](https://google.com/chrome/)
* [Firefox](https://www.mozilla.org/firefox)
## Installation
See monorepo README for installation instructions.
## Yarn Commands
List of available project commands. `yarn run <command-name>`
| Command | Description |
| ------- | ----------- |
| build | Builds the UI in development mode. |
| build:production | Builds the UI for production. |
| lint | Runs all lint commands. |
| lint:hbs | Lints `hbs` template files. |
| lint:js | Lints `js` files. |
| format | Runs all auto-formatters. |
| format:js | Auto-formats `js` files using Prettier. |
| start | Runs the dummy app local server. |
| test | Runs all tests in random order, with coverage reporting. |
| doc:toc | Automatically generates a table of contents for this README file. |
## Running / Development
* `ember serve`
* Visit your app at [http://localhost:4200](http://localhost:4200).
* Visit your tests at [http://localhost:4200/tests](http://localhost:4200/tests).
### Building
To build the project, without running it, execute one of the following commands:
* `yarn run build` (development)
* `yarn run build:production` (production)
### Running Tests
* `npm test` runs full tests in random order with coverage
* `ember test --server`
Keep in mind that tests are executed in random order. This is intentional
and helps to prevent hard-to-debug order dependencies among tests.
Please also note that we report test coverage. We strive for "the right amount
of testing". Use test coverage as a guide to help you identify untested
high-value code.
We rely on `ember-a11y-testing` to validate accessibility in acceptance tests.
If you write acceptance tests, please ensure at least one validation per
route using `await a11yAudit();`.
### Deploying
Specify what it takes to deploy your app.
## Further Reading / Useful Links
* [ember.js](https://emberjs.com/)
* [ember-cli](https://ember-cli.com/)
* Development Browser Extensions
* [ember inspector for chrome](https://chrome.google.com/webstore/detail/ember-inspector/bmdblncegkenkacieihfhpjfppoconhi)
* [ember inspector for firefox](https://addons.mozilla.org/en-US/firefox/addon/ember-inspector/)
+12
View File
@@ -0,0 +1,12 @@
import Application from '@ember/application';
import Resolver from 'ember-resolver';
import loadInitializers from 'ember-load-initializers';
import config from './config/environment';
export default class App extends Application {
modulePrefix = config.modulePrefix;
podModulePrefix = config.podModulePrefix;
Resolver = Resolver;
}
loadInitializers(App, config.modulePrefix);
View File
Whitespace-only changes.
View File
Whitespace-only changes.
View File
Whitespace-only changes.
+25
View File
@@ -0,0 +1,25 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Core</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{content-for "head"}}
<link integrity="" rel="stylesheet" href="{{rootURL}}assets/vendor.css">
<link integrity="" rel="stylesheet" href="{{rootURL}}assets/core.css">
{{content-for "head-footer"}}
</head>
<body>
{{content-for "body"}}
<script src="{{rootURL}}assets/vendor.js"></script>
<script src="{{rootURL}}assets/core.js"></script>
{{content-for "body-footer"}}
</body>
</html>
View File
Whitespace-only changes.
+9
View File
@@ -0,0 +1,9 @@
import EmberRouter from '@ember/routing/router';
import config from './config/environment';
export default class Router extends EmberRouter {
location = config.locationType;
rootURL = config.rootURL;
}
Router.map(function () {});
View File
Whitespace-only changes.
View File
Whitespace-only changes.
+3
View File
@@ -0,0 +1,3 @@
<h1>Core UI</h1>
{{outlet}}
+7
View File
@@ -0,0 +1,7 @@
'use strict';
module.exports = {
useBabelInstrumenter: true,
parallel: true,
reporters: ['lcov', 'html', 'text-summary'],
};
+52
View File
@@ -0,0 +1,52 @@
'use strict';
module.exports = function (environment) {
let ENV = {
modulePrefix: 'core',
environment,
rootURL: '/',
locationType: 'auto',
EmberENV: {
FEATURES: {
// Here you can enable experimental features on an ember canary build
// e.g. EMBER_NATIVE_DECORATOR_SUPPORT: true
},
EXTEND_PROTOTYPES: false,
/*{
// Prevent Ember Data from overriding Date.parse.
Date: false
}*/
},
APP: {
// Here you can pass flags/options to your application instance
// when it is created
},
};
if (environment === 'development') {
// ENV.APP.LOG_RESOLVER = true;
// ENV.APP.LOG_ACTIVE_GENERATION = true;
// ENV.APP.LOG_TRANSITIONS = true;
// ENV.APP.LOG_TRANSITIONS_INTERNAL = true;
// ENV.APP.LOG_VIEW_LOOKUPS = true;
}
if (environment === 'test') {
// Testem prefers this...
ENV.locationType = 'none';
// keep test console output quieter
ENV.APP.LOG_ACTIVE_GENERATION = false;
ENV.APP.LOG_VIEW_LOOKUPS = false;
ENV.APP.rootElement = '#ember-testing';
ENV.APP.autoboot = false;
}
if (environment === 'production') {
// here you can enable a production-specific feature
}
return ENV;
};
+6
View File
@@ -0,0 +1,6 @@
{
"application-template-wrapper": false,
"default-async-observers": true,
"jquery-integration": false,
"template-only-glimmer-components": true
}
+18
View File
@@ -0,0 +1,18 @@
'use strict';
const browsers = [
'last 1 Chrome versions',
'last 1 Firefox versions',
'last 1 Safari versions',
];
const isCI = !!process.env.CI;
const isProduction = process.env.EMBER_ENV === 'production';
if (isCI || isProduction) {
browsers.push('ie 11');
}
module.exports = {
browsers,
};
+30
View File
@@ -0,0 +1,30 @@
'use strict';
const EmberApp = require('ember-cli/lib/broccoli/ember-app');
module.exports = function (defaults) {
let app = new EmberApp(defaults, {
babel: {
sourceMaps: 'inline',
},
sourcemaps: {
enabled: true,
extensions: ['js'],
},
});
// Use `app.import` to add additional libraries to the generated
// output files.
//
// If you need to use different assets in different
// environments, specify an object as the first parameter. That
// object's keys should be the environment name and the values
// should be the asset to use in that environment.
//
// If the library that you are including contains AMD or ES6
// modules that you would like to import into your application
// please specify an object with the list of modules as keys
// along with the exports of each module as its value.
return app.toTree();
};
+75
View File
@@ -0,0 +1,75 @@
{
"name": "core",
"version": "0.0.0",
"private": true,
"description": "Core UI for Project Watchtower.",
"license": "MPL-2.0",
"author": "HashiCorp",
"directories": {
"doc": "doc",
"test": "tests"
},
"scripts": {
"doc:toc": "doctoc README.md",
"build": "ember build",
"build:production": "ember build --environment=production",
"lint": "yarn lint:hbs && yarn lint:js",
"lint:hbs": "ember-template-lint .",
"lint:js": "eslint .",
"format": "yarn format:js",
"format:js": "prettier --write '{addon,app,config,stories,tests}/**/*.js' *.js",
"start": "ember serve",
"clean:coverage": "rm -rf coverage_*",
"pretest": "yarn clean:coverage && yarn lint",
"test": "COVERAGE=true ember exam --random",
"posttest": "ember coverage-merge && yarn clean:coverage"
},
"devDependencies": {
"@babel/core": "^7.9.6",
"@ember/optional-features": "^1.3.0",
"@glimmer/component": "^1.0.0",
"@glimmer/tracking": "^1.0.0",
"api": "*",
"babel-eslint": "^10.0.3",
"babel-loader": "^8.1.0",
"broccoli-asset-rev": "^3.0.0",
"doctoc": "^1.4.0",
"ember-a11y-testing": "^3.0.0",
"ember-auto-import": "^1.5.3",
"ember-cli": "~3.16.1",
"ember-cli-app-version": "^3.2.0",
"ember-cli-babel": "^7.17.2",
"ember-cli-code-coverage": "^1.0.0-beta.9",
"ember-cli-dependency-checker": "^3.2.0",
"ember-cli-eslint": "^5.1.0",
"ember-cli-htmlbars": "^4.2.2",
"ember-cli-inject-live-reload": "^2.0.2",
"ember-cli-sri": "^2.1.1",
"ember-cli-template-lint": "^1.0.0-beta.3",
"ember-cli-uglify": "^3.0.0",
"ember-data": "~3.16.0",
"ember-exam": "^5.0.1",
"ember-export-application-global": "^2.0.1",
"ember-fetch": "^7.0.0",
"ember-inline-svg": "^1.0.0",
"ember-load-initializers": "^2.1.1",
"ember-maybe-import-regenerator": "^0.1.6",
"ember-qunit": "^4.6.0",
"ember-resolver": "^7.0.0",
"ember-source": "~3.16.0",
"ember-welcome-page": "^4.0.0",
"eslint-plugin-ember": "^7.7.2",
"eslint-plugin-node": "^11.0.0",
"loader.js": "^4.7.0",
"prettier": "^2.0.5",
"qunit-dom": "^1.0.0",
"emberx-select": "github:adopted-ember-addons/emberx-select#bc5f774",
"rose": "*"
},
"engines": {
"node": "10.* || >= 12"
},
"ember": {
"edition": "octane"
}
}
+3
View File
@@ -0,0 +1,3 @@
# http://www.robotstxt.org
User-agent: *
Disallow:
+23
View File
@@ -0,0 +1,23 @@
module.exports = {
test_page: 'tests/index.html?hidepassed',
disable_watching: true,
launch_in_ci: ['Chrome', 'Firefox'],
launch_in_dev: ['Chrome', 'Firefox'],
browser_start_timeout: 120,
browser_args: {
Chrome: {
ci: [
// --no-sandbox is needed when running Chrome inside a container
process.env.CI ? '--no-sandbox' : null,
'--headless',
'--disable-dev-shm-usage',
'--disable-gpu',
//'--disable-software-rasterizer',
'--mute-audio',
'--remote-debugging-port=0',
'--window-size=1440,900',
].filter(Boolean),
},
Firefox: ['-headless', '--window-size=1440,900'],
},
};
+15
View File
@@ -0,0 +1,15 @@
import { module, test } from 'qunit';
import { visit, currentURL } from '@ember/test-helpers';
import { setupApplicationTest } from 'ember-qunit';
import a11yAudit from 'ember-a11y-testing/test-support/audit';
module('Acceptance | index', function(hooks) {
setupApplicationTest(hooks);
test('visiting /', async function(assert) {
assert.expect(1);
await visit('/');
await a11yAudit();
assert.equal(currentURL(), '/');
});
});
View File
Whitespace-only changes.
+33
View File
@@ -0,0 +1,33 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Core Tests</title>
<meta name="description" content="">
<meta name="viewport" content="width=device-width, initial-scale=1">
{{content-for "head"}}
{{content-for "test-head"}}
<link rel="stylesheet" href="{{rootURL}}assets/vendor.css">
<link rel="stylesheet" href="{{rootURL}}assets/core.css">
<link rel="stylesheet" href="{{rootURL}}assets/test-support.css">
{{content-for "head-footer"}}
{{content-for "test-head-footer"}}
</head>
<body>
{{content-for "body"}}
{{content-for "test-body"}}
<script src="/testem.js" integrity=""></script>
<script src="{{rootURL}}assets/vendor.js"></script>
<script src="{{rootURL}}assets/test-support.js"></script>
<script src="{{rootURL}}assets/core.js"></script>
<script src="{{rootURL}}assets/tests.js"></script>
{{content-for "body-footer"}}
{{content-for "test-body-footer"}}
</body>
</html>
View File
Whitespace-only changes.
+9
View File
@@ -0,0 +1,9 @@
import Application from '../app';
import config from '../config/environment';
import { setApplication } from '@ember/test-helpers';
//import { start } from 'ember-qunit';
import start from 'ember-exam/test-support/start';
setApplication(Application.create(config.APP));
start();
View File
Whitespace-only changes.
View File
Whitespace-only changes.
+593 -43
View File
File diff suppressed because it is too large. Load diff