2020-08-10 17:29:12 -04:00
# API data layer Ember Addon for Boundary
2020-05-12 14:30:38 -04:00
2020-08-10 17:29:12 -04:00
This addon contains the API data access layer for Boundary.
2020-05-12 14:30:38 -04:00
<!-- 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)*
- [Add API to an App ](#add-api-to-an-app )
- [Installation ](#installation )
2025-06-03 12:55:12 -04:00
- [Pnpm Commands ](#pnpm-commands )
2020-05-12 14:30:38 -04:00
- [Linting ](#linting )
- [Formatting ](#formatting )
- [Running tests ](#running-tests )
- [Running the dummy application ](#running-the-dummy-application )
- [Contributing ](#contributing )
- [Building ToC ](#building-toc )
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
## Add API to an App
Add this addon to an Ember application's `devDependencies` as:
2026-02-03 13:54:32 -05:00
`"api": "workspace:*"` , for applications included in this monorepo.
2020-05-12 14:30:38 -04:00
2026-02-03 13:54:32 -05:00
This addon also includes Mirage mocks. To include the `miragejs` dependency and this addon's mirage handlers configure the consuming app's `config/environment.js`
2020-11-19 11:47:51 -05:00
```js
2026-02-03 13:54:32 -05:00
mirage : {
enabled : true
2020-11-19 11:47:51 -05:00
}
```
2026-02-03 13:54:32 -05:00
Include `miragejs` and any api addon `peerDependencies` used by the mirage as dev dependencies in the consuming app,
eg: `@faker-js/faker` , otherwise mirage handler code might fail with an error.
To have mirage start and intercept requests when the application starts:
1. Add the `@embroider/macros` dependency to your application
2. Configure `@embroider/macros` with `startMirageWithApp` based on app's config within `ember-cli-build.js` :
```js
// ember-cli-build.js
module . exports = async function ( defaults ) {
// load the app's config
const { EMBER_ENV } = process . env ;
var config = require ( './config/environment' )( EMBER_ENV );
const app = new EmberApp ( defaults , {
'@embroider/macros' : {
setOwnConfig : {
startMirageWithApp : config . mirage ? . enabled ?? false
},
},
});
}
```
3. Finally, use the `@embroider/macros` config value for `startMirageWithApp` in `app/app.js` to conditionally start mirage:
```js
import { macroCondition , importSync , getOwnConfig , isTesting } from '@embroider/macros' ;
if ( macroCondition ( getOwnConfig (). startMirageWithApp && ! isTesting ())) {
const startServer = importSync ( '[name of host app]/mirage/config' ). default ;
startServer ({});
}
```
2020-05-12 14:30:38 -04:00
## Installation
See monorepo README for installation instructions.
2020-11-09 18:05:29 -05:00
When manually installing addon, ensure `ember-data-fragments@5.0.0-beta.*` is installed to use api models with data fragments.
2025-06-03 12:55:12 -04:00
## Pnpm Commands
2020-05-12 14:30:38 -04:00
2025-06-03 12:55:12 -04:00
List of available project commands. `pnpm run <command-name>`
2020-05-12 14:30:38 -04:00
| Command | Description |
| ------- | ----------- |
2020-06-29 18:07:43 -04:00
| build:development | Builds the dummy app in development mode. |
| build | Builds the dummy app for production. |
2020-05-12 14:30:38 -04:00
| lint | Runs all lint commands. |
2022-06-08 14:05:56 -07:00
| lint:fix | Runs automatic lint fixes for all type of file. |
| lint:hbs | Runs lint for `hbs` template files. |
| lint:hbs:fix | Runs automatic lint fixes for `hbs` template files. |
2020-05-12 14:30:38 -04:00
| lint:js | Lints `js` files. |
2022-06-08 14:05:56 -07:00
| lint:js:fix | Runs automatic lint fixes for `js` files. |
2020-05-12 14:30:38 -04:00
| format | Runs all auto-formatters. |
| format:js | Auto-formats `js` files using Prettier. |
| start | Runs the dummy app local server. |
| test | Runs all tests. |
2022-06-08 14:05:56 -07:00
| test:ember-compatibility | Runs tests across multiple Ember versions with ember-try. |
| precommit | Runs all lint and format. |
2020-05-12 14:30:38 -04:00
| doc:toc | Automatically generates a table of contents for this README file. |
Additional commands in the monorepo package may affect this projects.
## Linting
2025-06-03 12:55:12 -04:00
* `pnpm lint:fix`
* `pnpm lint:hbs`
* `pnpm lint:hbs:fix`
* `pnpm lint:js`
* `pnpm lint:js:fix`
2020-05-12 14:30:38 -04:00
## Formatting
Before submitting your work, be sure to run auto-formatters
(see commands above). This helps to ensure consistency among authors.
2025-06-03 12:55:12 -04:00
* `pnpm format`
2020-05-12 14:30:38 -04:00
## Running tests
2025-06-03 12:55:12 -04:00
* `pnpm test` – Runs the test suite on the current Ember version
* `pnpm test --server` – Runs the test suite in "watch mode"
* `pnpm test:all` – Runs the test suite against multiple Ember versions
2020-05-12 14:30:38 -04:00
## Running the dummy application
2025-06-03 12:55:12 -04:00
* `pnpm start`
2020-05-12 14:30:38 -04:00
* 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,
2025-06-03 12:55:12 -04:00
run `pnpm doc:toc` . Please update the ToC whenever editing the structure
2020-05-12 14:30:38 -04:00
of README.