Files
threshold-ui/addons/api/README.md
T
hashiccandZhihe Li 63b810d53f Migrate from ember-cli-mirage to miragejs (#3088)
* chore: 🤖 import explicit mirage references

* chore: 🤖 add mirage setupMirage helper

* chore: 🤖 working example with application adapter test

* chore: 🤖 use internal setupMirage test helper from api addon

* chore: 🤖 conditionally load mirage

* chore: 🤖 filter mirage folder inclusion in production builds

* chore: 🤖 drop ember-mirage and use our own test helpers

* chore: 🤖 collapse reference to import declaration

* docs: ✏️ add comment better explaining the mirage test env

* chore: 🤖 update configuration and manage mirage-related deps

* fix: 🐛 restore ipc mock and add missing checkOS handler

* chore: 🤖 add comment explaining omitting mirage deps in build

* chore: 🤖 allow mirage.enabled to include deps and handlers

* chore: 🤖 re-enable mirage for core dummy app

* Add missing copyright headers

* chore: 🤖 use embroider macros to conditionally start mirage

* docs: ✏️ update api readme for mirage changes

* chore: 🤖 replace remaining ember-cli-mirage references

* chore: 🤖 add mirage to test builds

* fix: 🐛 ensure that auto mirage start doesn't happen in test env

* chore: 🤖 use const instead of var

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>

* refactor: 💡 use cleaner logic for excluded api build modules

* fix: 🐛 handle issue where importSync was too eager

This was fixed by bumping the @embroider/macros dependency that includes
a fix to this issue:
https://github.com/embroider-build/embroider/pull/2511

* refactor: 💡 move mirage from addon to app directory

* refactor: 💡 update mirage test helper to be a factory

* chore: 🤖 exclude mirage directory when necessary at build time

* chore: 🤖 add miragejs as admin dev dependency

* refactor: 💡 update reference to startMirage

* chore: 🤖 update local mirage test helper

* chore: 🤖 change import path for mirage on desktop

* chore: 🤖 update imports in tests for startMirage

* chore: 🤖 update startMirage imports for api addon tests

* chore: 🤖 add miragejs dev dep to desktop

* docs: ✏️ update README

* chore: 🤖 set up setupMirage for core tests

* chore: 🤖 fix copyright header

* Add missing copyright headers

---------

Co-authored-by: Zhihe Li <zhihe.li@hashicorp.com>
2026-02-03 13:54:32 -05:00

4.3 KiB
Raw Blame History

API data layer Ember Addon for Boundary

This addon contains the API data access layer for Boundary.

Table of Contents generated with DocToc

Add API to an App

Add this addon to an Ember application's devDependencies as: "api": "workspace:*", for applications included in this monorepo.

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

mirage: {
  enabled: true
}

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:
// 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
      },
    },
  });
}
  1. Finally, use the @embroider/macros config value for startMirageWithApp in app/app.js to conditionally start mirage:
import { macroCondition, importSync, getOwnConfig, isTesting } from '@embroider/macros';

if (macroCondition(getOwnConfig().startMirageWithApp && !isTesting())) {
  const startServer = importSync('[name of host app]/mirage/config').default;
  startServer({});
}

Installation

See monorepo README for installation instructions.

When manually installing addon, ensure ember-data-fragments@5.0.0-beta.* is installed to use api models with data fragments.

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: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.
lint:js Lints js files.
lint:js:fix Runs automatic lint fixes for 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:ember-compatibility Runs tests across multiple Ember versions with ember-try.
precommit Runs all lint and format.
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:fix
  • pnpm lint:hbs
  • pnpm lint:hbs:fix
  • pnpm lint:js
  • pnpm 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 version
  • pnpm test --server – Runs the test suite in "watch mode"
  • pnpm test:all – Runs the test suite against multiple Ember versions

Running the dummy application

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.