diff --git a/addons/api/LICENSE.md b/addons/api/LICENSE.md deleted file mode 100644 index 7b6573f5e..000000000 --- a/addons/api/LICENSE.md +++ /dev/null @@ -1,9 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2020 - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/addons/auth/.editorconfig b/addons/auth/.editorconfig new file mode 100644 index 000000000..c35a00240 --- /dev/null +++ b/addons/auth/.editorconfig @@ -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 diff --git a/addons/auth/.ember-cli b/addons/auth/.ember-cli new file mode 100644 index 000000000..ee64cfed2 --- /dev/null +++ b/addons/auth/.ember-cli @@ -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 +} diff --git a/addons/auth/.eslintignore b/addons/auth/.eslintignore new file mode 100644 index 000000000..72df37307 --- /dev/null +++ b/addons/auth/.eslintignore @@ -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 diff --git a/addons/auth/.eslintrc.js b/addons/auth/.eslintrc.js new file mode 100644 index 000000000..85a190092 --- /dev/null +++ b/addons/auth/.eslintrc.js @@ -0,0 +1,58 @@ +'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', + 'index.js', + 'testem.js', + 'blueprints/*/index.js', + 'config/**/*.js', + 'tests/dummy/config/**/*.js' + ], + excludedFiles: [ + 'addon/**', + 'addon-test-support/**', + 'app/**', + 'tests/dummy/app/**' + ], + 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 + }) + } + ] +}; diff --git a/addons/auth/.npmignore b/addons/auth/.npmignore new file mode 100644 index 000000000..bd09adff9 --- /dev/null +++ b/addons/auth/.npmignore @@ -0,0 +1,32 @@ +# compiled output +/dist/ +/tmp/ + +# dependencies +/bower_components/ + +# misc +/.bowerrc +/.editorconfig +/.ember-cli +/.env* +/.eslintignore +/.eslintrc.js +/.git/ +/.gitignore +/.template-lintrc.js +/.travis.yml +/.watchmanconfig +/bower.json +/config/ember-try.js +/CONTRIBUTING.md +/ember-cli-build.js +/testem.js +/tests/ +/yarn.lock +.gitkeep + +# ember-try +/.node_modules.ember-try/ +/bower.json.ember-try +/package.json.ember-try diff --git a/addons/auth/.prettierrc b/addons/auth/.prettierrc new file mode 100644 index 000000000..2ddc9656d --- /dev/null +++ b/addons/auth/.prettierrc @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "printWidth": 80 +} diff --git a/addons/auth/.template-lintrc.js b/addons/auth/.template-lintrc.js new file mode 100644 index 000000000..f38737001 --- /dev/null +++ b/addons/auth/.template-lintrc.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + extends: 'octane' +}; diff --git a/addons/auth/.travis.yml b/addons/auth/.travis.yml new file mode 100644 index 000000000..f5df21049 --- /dev/null +++ b/addons/auth/.travis.yml @@ -0,0 +1,66 @@ +--- +language: node_js +node_js: + # we recommend testing addons with the same minimum supported node version as Ember CLI + # so that your addon works for all apps + - "10" + +dist: trusty + +addons: + chrome: stable + +cache: + yarn: true + +env: + global: + # See https://git.io/vdao3 for details. + - JOBS=1 + +branches: + only: + - master + # npm version tags + - /^v\d+\.\d+\.\d+/ + +jobs: + fast_finish: true + allow_failures: + - env: EMBER_TRY_SCENARIO=ember-canary + + include: + # runs linting and tests with current locked deps + - stage: "Tests" + name: "Tests" + script: + - yarn lint:hbs + - yarn lint:js + - yarn test + + - stage: "Additional Tests" + name: "Floating Dependencies" + install: + - yarn install --no-lockfile --non-interactive + script: + - yarn test + + # we recommend new addons test the current and previous LTS + # as well as latest stable release (bonus points to beta/canary) + - env: EMBER_TRY_SCENARIO=ember-lts-3.12 + - env: EMBER_TRY_SCENARIO=ember-lts-3.16 + - env: EMBER_TRY_SCENARIO=ember-release + - env: EMBER_TRY_SCENARIO=ember-beta + - env: EMBER_TRY_SCENARIO=ember-canary + - env: EMBER_TRY_SCENARIO=ember-default-with-jquery + - env: EMBER_TRY_SCENARIO=ember-classic + +before_install: + - curl -o- -L https://yarnpkg.com/install.sh | bash + - export PATH=$HOME/.yarn/bin:$PATH + +install: + - yarn install --non-interactive + +script: + - node_modules/.bin/ember try:one $EMBER_TRY_SCENARIO diff --git a/addons/auth/.watchmanconfig b/addons/auth/.watchmanconfig new file mode 100644 index 000000000..e7834e3e4 --- /dev/null +++ b/addons/auth/.watchmanconfig @@ -0,0 +1,3 @@ +{ + "ignore_dirs": ["tmp", "dist"] +} diff --git a/addons/auth/README.md b/addons/auth/README.md new file mode 100644 index 000000000..02b8ceeb3 --- /dev/null +++ b/addons/auth/README.md @@ -0,0 +1,79 @@ +# Authentication layer Ember Addon for Project Watchtower + +This addon contains the authentication layer for Project Watchtower. + + + +**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* + +- [Add to an App](#add-to-an-app) +- [Installation](#installation) +- [Yarn Commands](#yarn-commands) +- [Linting](#linting) +- [Formatting](#formatting) +- [Running tests](#running-tests) +- [Running the dummy application](#running-the-dummy-application) +- [Contributing](#contributing) + - [Building ToC](#building-toc) + + + +## Add to an App + +Add this addon to an Ember application's `devDependencies` as: +`"auth": "*"`, for applications included in this monorepo. + +## Installation + +See monorepo README for installation instructions. + +## Yarn Commands + +List of available project commands. `yarn run ` + +| Command | Description | +| ------- | ----------- | +| lint | Runs all lint commands. | +| 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. | +| test:all | Runs tests across multiple Ember versions with ember-try. | +| doc:toc | Automatically generates a table of contents for this README file. | + +Additional commands in the monorepo package may affect this projects. + +## Linting + +* `yarn lint:hbs` +* `yarn lint:js` +* `yarn lint:js --fix` + +## Formatting + +Before submitting your work, be sure to run auto-formatters +(see commands above). This helps to ensure consistency among authors. + +* `yarn format` + +## Running tests + +* `yarn test` – Runs the test suite on the current Ember version +* `yarn test --server` – Runs the test suite in "watch mode" +* `yarn test:all` – Runs the test suite against multiple Ember versions + +## Running the dummy application + +* `yarn start` +* Visit the dummy application at [http://localhost:4200](http://localhost:4200). + +## Contributing + +See monorepo README for more contribution instructions. + +### Building ToC + +To autogenerate a ToC (table of contents) for this README, +run `yarn doc:toc`. Please update the ToC whenever editing the structure +of README. diff --git a/addons/auth/addon/.gitkeep b/addons/auth/addon/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/app/.gitkeep b/addons/auth/app/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/config/ember-try.js b/addons/auth/config/ember-try.js new file mode 100644 index 000000000..eaf3d3914 --- /dev/null +++ b/addons/auth/config/ember-try.js @@ -0,0 +1,89 @@ +'use strict'; + +const getChannelURL = require('ember-source-channel-url'); + +module.exports = async function () { + return { + useYarn: true, + scenarios: [ + { + name: 'ember-lts-3.12', + npm: { + devDependencies: { + 'ember-source': '~3.12.0', + }, + }, + }, + { + name: 'ember-lts-3.16', + npm: { + devDependencies: { + 'ember-source': '~3.16.0', + }, + }, + }, + { + name: 'ember-release', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('release'), + }, + }, + }, + { + name: 'ember-beta', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('beta'), + }, + }, + }, + { + name: 'ember-canary', + npm: { + devDependencies: { + 'ember-source': await getChannelURL('canary'), + }, + }, + }, + // The default `.travis.yml` runs this scenario via `yarn test`, + // not via `ember try`. It's still included here so that running + // `ember try:each` manually or from a customized CI config will run it + // along with all the other scenarios. + { + name: 'ember-default', + npm: { + devDependencies: {}, + }, + }, + { + name: 'ember-default-with-jquery', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'jquery-integration': true, + }), + }, + npm: { + devDependencies: { + '@ember/jquery': '^0.5.1', + }, + }, + }, + { + name: 'ember-classic', + env: { + EMBER_OPTIONAL_FEATURES: JSON.stringify({ + 'application-template-wrapper': true, + 'default-async-observers': false, + 'template-only-glimmer-components': false, + }), + }, + npm: { + ember: { + edition: 'classic', + }, + }, + }, + ], + }; +}; diff --git a/addons/auth/config/environment.js b/addons/auth/config/environment.js new file mode 100644 index 000000000..331ab30df --- /dev/null +++ b/addons/auth/config/environment.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = function (/* environment, appConfig */) { + return {}; +}; diff --git a/addons/auth/ember-cli-build.js b/addons/auth/ember-cli-build.js new file mode 100644 index 000000000..ba0649dc9 --- /dev/null +++ b/addons/auth/ember-cli-build.js @@ -0,0 +1,18 @@ +'use strict'; + +const EmberAddon = require('ember-cli/lib/broccoli/ember-addon'); + +module.exports = function (defaults) { + let app = new EmberAddon(defaults, { + // Add options here + }); + + /* + This build file specifies the options for the dummy test app of this + addon, located in `/tests/dummy` + This build file does *not* influence how the addon or the app using it + behave. You most likely want to be modifying `./index.js` or app's build file + */ + + return app.toTree(); +}; diff --git a/addons/auth/index.js b/addons/auth/index.js new file mode 100644 index 000000000..0ca063d42 --- /dev/null +++ b/addons/auth/index.js @@ -0,0 +1,5 @@ +'use strict'; + +module.exports = { + name: require('./package').name, +}; diff --git a/addons/auth/package.json b/addons/auth/package.json new file mode 100644 index 000000000..cdd1f5623 --- /dev/null +++ b/addons/auth/package.json @@ -0,0 +1,64 @@ +{ + "name": "auth", + "version": "0.0.0", + "description": "Authentication layer for Project Watchtower.", + "license": "MPL-2.0", + "author": "HashiCorp", + "keywords": [ + "ember-addon" + ], + "scripts": { + "lint": "yarn lint:js", + "lint:js": "eslint .", + "format": "npm run format:js", + "format:js": "prettier --write '{addon,app,config,stories,tests}/**/*.js' *.js", + "start": "ember serve", + "test": "ember test", + "test:all": "ember try:each", + "doc:toc": "doctoc README.md" + }, + "dependencies": { + "ember-cli-babel": "^7.17.2", + "ember-cli-htmlbars": "^4.2.2" + }, + "devDependencies": { + "@ember/optional-features": "^1.3.0", + "@glimmer/component": "^1.0.0", + "@glimmer/tracking": "^1.0.0", + "babel-eslint": "^10.0.3", + "broccoli-asset-rev": "^3.0.0", + "doctoc": "^1.4.0", + "ember-auto-import": "^1.5.3", + "ember-cli": "~3.16.1", + "ember-cli-dependency-checker": "^3.2.0", + "ember-cli-eslint": "^5.1.0", + "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-disable-prototype-extensions": "^1.1.3", + "ember-export-application-global": "^2.0.1", + "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-source-channel-url": "^2.0.1", + "ember-try": "^1.4.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" + }, + "engines": { + "node": "10.* || >= 12" + }, + "ember": { + "edition": "octane" + }, + "ember-addon": { + "configPath": "tests/dummy/config" + } +} diff --git a/addons/auth/testem.js b/addons/auth/testem.js new file mode 100644 index 000000000..854db8659 --- /dev/null +++ b/addons/auth/testem.js @@ -0,0 +1,25 @@ +'use strict'; + +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'], + }, +}; diff --git a/addons/auth/tests/dummy/app/app.js b/addons/auth/tests/dummy/app/app.js new file mode 100644 index 000000000..d8e2088b6 --- /dev/null +++ b/addons/auth/tests/dummy/app/app.js @@ -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); diff --git a/addons/auth/tests/dummy/app/components/.gitkeep b/addons/auth/tests/dummy/app/components/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/tests/dummy/app/controllers/.gitkeep b/addons/auth/tests/dummy/app/controllers/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/tests/dummy/app/helpers/.gitkeep b/addons/auth/tests/dummy/app/helpers/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/tests/dummy/app/index.html b/addons/auth/tests/dummy/app/index.html new file mode 100644 index 000000000..61400b20f --- /dev/null +++ b/addons/auth/tests/dummy/app/index.html @@ -0,0 +1,25 @@ + + + + + + Dummy + + + + {{content-for "head"}} + + + + + {{content-for "head-footer"}} + + + {{content-for "body"}} + + + + + {{content-for "body-footer"}} + + diff --git a/addons/auth/tests/dummy/app/models/.gitkeep b/addons/auth/tests/dummy/app/models/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/tests/dummy/app/router.js b/addons/auth/tests/dummy/app/router.js new file mode 100644 index 000000000..818c8d496 --- /dev/null +++ b/addons/auth/tests/dummy/app/router.js @@ -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 () {}); diff --git a/addons/auth/tests/dummy/app/routes/.gitkeep b/addons/auth/tests/dummy/app/routes/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/tests/dummy/app/styles/app.css b/addons/auth/tests/dummy/app/styles/app.css new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/tests/dummy/app/templates/application.hbs b/addons/auth/tests/dummy/app/templates/application.hbs new file mode 100644 index 000000000..5230580f8 --- /dev/null +++ b/addons/auth/tests/dummy/app/templates/application.hbs @@ -0,0 +1,3 @@ +

Welcome to Ember

+ +{{outlet}} \ No newline at end of file diff --git a/addons/auth/tests/dummy/config/environment.js b/addons/auth/tests/dummy/config/environment.js new file mode 100644 index 000000000..ba4e8cb76 --- /dev/null +++ b/addons/auth/tests/dummy/config/environment.js @@ -0,0 +1,51 @@ +'use strict'; + +module.exports = function (environment) { + let ENV = { + modulePrefix: 'dummy', + 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: { + // 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; +}; diff --git a/addons/auth/tests/dummy/config/optional-features.json b/addons/auth/tests/dummy/config/optional-features.json new file mode 100644 index 000000000..b26286e2e --- /dev/null +++ b/addons/auth/tests/dummy/config/optional-features.json @@ -0,0 +1,6 @@ +{ + "application-template-wrapper": false, + "default-async-observers": true, + "jquery-integration": false, + "template-only-glimmer-components": true +} diff --git a/addons/auth/tests/dummy/config/targets.js b/addons/auth/tests/dummy/config/targets.js new file mode 100644 index 000000000..cc5539285 --- /dev/null +++ b/addons/auth/tests/dummy/config/targets.js @@ -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, +}; diff --git a/addons/auth/tests/dummy/public/robots.txt b/addons/auth/tests/dummy/public/robots.txt new file mode 100644 index 000000000..f5916452e --- /dev/null +++ b/addons/auth/tests/dummy/public/robots.txt @@ -0,0 +1,3 @@ +# http://www.robotstxt.org +User-agent: * +Disallow: diff --git a/addons/auth/tests/helpers/.gitkeep b/addons/auth/tests/helpers/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/tests/index.html b/addons/auth/tests/index.html new file mode 100644 index 000000000..5209b8523 --- /dev/null +++ b/addons/auth/tests/index.html @@ -0,0 +1,33 @@ + + + + + + Dummy Tests + + + + {{content-for "head"}} + {{content-for "test-head"}} + + + + + + {{content-for "head-footer"}} + {{content-for "test-head-footer"}} + + + {{content-for "body"}} + {{content-for "test-body"}} + + + + + + + + {{content-for "body-footer"}} + {{content-for "test-body-footer"}} + + diff --git a/addons/auth/tests/integration/.gitkeep b/addons/auth/tests/integration/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/tests/test-helper.js b/addons/auth/tests/test-helper.js new file mode 100644 index 000000000..0382a848d --- /dev/null +++ b/addons/auth/tests/test-helper.js @@ -0,0 +1,8 @@ +import Application from '../app'; +import config from '../config/environment'; +import { setApplication } from '@ember/test-helpers'; +import { start } from 'ember-qunit'; + +setApplication(Application.create(config.APP)); + +start(); diff --git a/addons/auth/tests/unit/.gitkeep b/addons/auth/tests/unit/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/addons/auth/vendor/.gitkeep b/addons/auth/vendor/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/package.json b/package.json index bf67daa31..b76871d38 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,13 @@ "ui/*" ], "scripts": { - "lint": "yarn lint:addons:api && yarn lint:addons:rose", + "lint": "yarn lint:addons:api && yarn lint:addons:auth && yarn lint:addons:rose", "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:rose", + "test": "yarn test:addons:api && yarn test:addons:auth && yarn test:addons:rose", "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", "precommit": "yarn compliance:licenses && yarn audit && yarn lint && yarn test", "commit": "git-cz",