* chore: 🤖 remove packageManager field from package.json
* chore: 🤖 migrate yarn resolutions to pnpm overrides
* chore: 🤖 generate pnpm-lock.yml by using: pnpm import yarn.lock
* chore: 🤖 remove yarn.lock file
* chore: 🤖 migrate workspace configuration
* chore: 🤖 remove .yarn and .yarnrc.yml config
* chore: 🤖 update .copyright.hcl to ignore root pnpm files
* chore: 🤖 migrate husky pre-commit hook from yarn to pnpm
* chore: 🤖 migrate package.json scripts from yarn to pnpm
* chore: 🤖 update rose package.json & build to use explicit deps
* chore: 🤖 remove unused cp metadata.json command in pjson script
The cp metadata.json to dist was added in:
d19a251
The addons/rose/metadata.json no longer exists so it can't be copied
* chore: 🤖 migrate electron-app package.json scripts to pnpm
* chore: 🤖 create pnpm workspace for electron-app w/ hoisted deps
* chore: 🤖 migrate electron-app yarn lockfile to pnpm lockfile
Used "pnpm import yarn.lock"
* chore: 🤖 migrate electron-app overrides
node-gyp isn't needed since the fork is used via @electron/node-gyp
see: https://github.com/electron/node-gyp?tab=readme-ov-file#node-gyp---nodejs-native-addon-build-tool
* chore: 🤖 add trusted deps to be built to onlyBuiltDependencies
This is a pnpm feature that increases security. By defining these
dependencies they are being trusted to allow install hooks,
including postinstall. See:
https://pnpm.io/settings#onlybuiltdependencies
* chore: 🤖 add electron-app pnpm files to copyright header ignore
* chore: 🤖 remove yarn references from .*ignore files
* chore: 🤖 migrate --yarn to --pnpm for ember-cli-update.json
This isn't clearly documented but something that is supported
and can be found in other ember apps:
https://github.com/search?q=--pnpm+ember-cli-update.json&type=code
* chore: 🤖 migrate ci and related scripts to use pnpm
The cache is migrated to use the cache supported by
actions/setup-node@v4, an action we are already using. This is the
recommended way by pnpm:
https://pnpm.io/continuous-integration#github-actions
This commit also ensures that all github actions are using
consistent versions of actions/setup-node and pnpm/action-setup
* docs: ✏️ update documentation to use pnpm instead of yarn
* chore: 🤖 use explicit asciinema-player dependency
Because we override styles on asciinema-player we depend on their
styles. What might be a minor non-breaking change in their version could
(and did) break our style expectations in our overrides.
* chore: 🤖 run pnpm install and commit lockfile changes
* chore: 🤖 Remove ember-inflector from being overidden
https://github.com/hashicorp/boundary-ui/pull/2828#discussion_r2110380711
* chore: 🤖 remove highlight.js from pnpm overrides
https://github.com/hashicorp/boundary-ui/pull/2828#discussion_r2109847938
* chore: 🤖 remove additional unnecessary files from ignore files
* docs: ✏️ fix pnpm doc links
* chore: 🤖 use corepack to specify packageManager in package.json
* chore: 🤖 let pnpm action in ci use packageManager for version
https://github.com/pnpm/action-setup?tab=readme-ov-file#version
* docs: ✏️ fix broken pnpm website links
Core Features Addon for Boundary
This addon contains core features used by Boundary UIs, such as i18n and helpers.
- Add core to an App
- Installation
- I18n
- Notifications
- Confirmations
- App and Company Names
- Documentation URLs
- Loading Helper
- Scope Service
- Pnpm Commands
- Linting
- Formatting
- Running tests
- Running the dummy application
- Contributing
Add core to an App
Add this addon to an Ember application's devDependencies as:
"core": "workspace:*", for applications included in this monorepo.
Installation
See monorepo README for installation instructions.
I18n
To access translations within a template, see ember-intl docs.
Notifications
Use notificaiton decorators to notify the user when a function or action succeeds or fails. For example:
import { notifySuccess, notifyError } from 'core/decorators/notify';
export default class ExampleRoute extends Route {
@notifyError(({ message }) => message, { catch: true })
@notifySuccess('notifications.delete-success')
async myAction() {
// do something
}
}
Confirmations
This addon exposes a service to request confirmations and the component used to expose them to users. A decorator is exposed for convenience.
To guard an action on a confirmation, decorate it with @confirm. In this
example, the confirmation looks up the translation under a
questions.delete-confirm key.
import { confirm } from 'core/decorators/confirm';
export default class ExampleRoute extends Route {
@confirm('questions.delete-confirm')
async myAction() {
// do something
}
}
In the application template, iterate over confirmations, yielding the confirmation instance as well as accept and deny functions which, when called, update the confirmation status.
<PendingConfirmations as |confirmation accept deny|>
{{!-- your confirmation dialog component here --}}
</PendingConfirmations
App and Company Names
To make use of the app-name, company-name, and company-copyright helpers,
add appName an companyName keys to your Ember config
(see admin for example).
Documentation URLs
To render doc links in your application, be sure to configure the links in your Ember config (see admin). Then reference doc links by keys:
<DocLink @doc="account" @iconSize="24" />
Loading Helper
See admin and desktop routes and templates for examples of how to use the loading subsystem. For example, to annotate that an async action should present a loading indicator to a user:
@action
@loading
async myAction() {
// ...do potentially time-consuming task
}
Scope Service
This addon exposes a service to hold all active scopes (org and project where available).
To make use of the service, import it and initialize it using service injection.
import { service } from '@ember/service';
export default class ExampleRoute extends Route {
@service scope;
async myAction() {
// do something
}
}
Pnpm Commands
List of available project commands. pnpm run <command-name>
| Command | Description |
|---|---|
| build:development | Builds the dummy app in development mode. |
| build | Builds the dummy app for production. |
| lint | Runs all lint commands. |
| lint:js | Lints js files. |
| lint:js:fix | Runs automatic lint fixes for js files. |
| lint:hbs | Runs lint for hbs template files. |
| lint:hbs:fix | Runs automatic lint fixes for hbs template files. |
| format | Runs all auto-formatters. |
| format:js | Auto-formats js files using Prettier. |
| format:hbs | Auto-formats hbs files using Prettier. |
| start | Runs the dummy app local server. |
| test | Runs all tests. |
| test:ember-compatibility | Runs tests across multiple Ember versions with ember-try. |
| precommit | Runs all lint, format and tests. |
| doc:toc | Automatically generates a table of contents for this README file. |
Additional commands in the monorepo package may affect this projects.
Linting
pnpm lint:hbspnpm lint:hbs --fixpnpm lint:jspnpm lint:js --fix
Formatting
Before submitting your work, be sure to run auto-formatters (see commands above). This helps to ensure consistency among authors.
pnpm format
Running tests
pnpm test– Runs the test suite on the current Ember versionpnpm test --server– Runs the test suite in "watch mode"pnpm test:all– Runs the test suite against multiple Ember versions
Running the dummy application
pnpm start- Visit the dummy application at http://localhost:4200.
Contributing
See monorepo README for more contribution instructions.
Building ToC
To autogenerate a ToC (table of contents) for this README,
run pnpm doc:toc. Please update the ToC whenever editing the structure
of README.