# WarpDrive Legacy Documentation > Guides for legacy setups and API reference for `@warp-drive/legacy` (Models, Adapters, Serializers) and for the legacy `@ember-data/*` and early `@warp-drive/*` packages, kept for apps that have not yet migrated. The modern documentation is indexed in https://canary.warp-drive.io/llms.txt. The full text of every page listed here is in https://canary.warp-drive.io/llms-legacy-full.txt. ## Guides - [Setup - Legacy (Ember)](https://canary.warp-drive.io/guides/configuration/ember.md): Restore legacy Adapter, Serializer, Model, and EmberObject features through @warp-drive/legacy in an Ember app, and decide when LegacyNetworkHandler is still needed. - [Overview](https://canary.warp-drive.io/guides/configuration/legacy-package-setup.md): Install the pre-unification @ember-data/* and @warp-drive/* packages with exact pinned versions, for apps still on the legacy multi-package setup rather than @warp-drive/core. - [Ember.js](https://canary.warp-drive.io/guides/configuration/legacy-package-setup/setup/ember.md): Configure a legacy Ember app to import @warp-drive/ember/install, drop @ember-data/tracking, and add LegacyNetworkHandler plus adapterFor and serializerFor hooks to the store. - [Setup](https://canary.warp-drive.io/guides/configuration/legacy-package-setup/setup/universal.md): Configure the legacy multi-package setup with setConfig in ember-cli-build, unstable-preview-types in tsconfig, and a hand-built Store using RequestManager and JSONAPICache. - [Configuration](https://canary.warp-drive.io/guides/the-manual/typescript/configuration.md): Add the unstable-preview-types entries to tsconfig.json so your app consumes WarpDrive's alpha-stage native types from either the runtime packages or the -types packages. - [Installation](https://canary.warp-drive.io/guides/the-manual/typescript/installation.md): Install WarpDrive's native types with `npx warp-drive retrofit types@canary` or by hand, replacing DefinitelyTyped @types packages with typed releases or -types packages. - [Typing Models & Transforms](https://canary.warp-drive.io/guides/the-manual/typescript/typing-models.md): Brand legacy Model classes and Transforms with the `Type` symbol and add generics to `attr`, `belongsTo`, and `hasMany` so relationships and store calls infer types. - [Using Codemods](https://canary.warp-drive.io/upgrading/v5/codemods.md): Run the `@ember-data/codemods` migrate-to-schema and legacy-compat-builders codemods to convert 4.x Models and mixins into 5.x schemas and store.request builders. - [Incremental adoption guide for existing projects](https://canary.warp-drive.io/upgrading/v5/incremental-adoption.md): Move an existing 4.12 EmberData app still on adapters and serializers onto RequestManager, LegacyNetworkHandler, and request builders one step at a time. - [Migrating 4.x to 5.x](https://canary.warp-drive.io/upgrading/v5.md): Migrate an EmberData 4.6 or 4.12 app to WarpDrive 5.x step by step, using native types, mirror packages, useLegacyStore, and schemas in place of Models. - [Migrating Between Versions Using The Two Store Approach](https://canary.warp-drive.io/upgrading/v5/two-store-migration.md): Run a second WarpDrive store built from the -mirror packages beside your existing 4.x store so parts of an app can adopt 5.x incrementally, with the tradeoffs to expect. ## @warp-drive/legacy - [@warp-drive/legacy](https://canary.warp-drive.io/api/@warp-drive/legacy.md): Opt-in support for features deprecated out of `@warp-drive/core`, such as Models, Adapters, Serializers and legacy store APIs, for apps that still need to migrate away from them. - [Adapter](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/classes/Adapter.md): Legacy abstract base class for adapters that translate store requests such as `findRecord` and `updateRecord` into calls against a persistence layer. - [@warp-drive/legacy/adapter/error](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error.md): Legacy adapter errors, such as `AdapterError`, `InvalidError` and `NotFoundError`, that an adapter returns or throws to signal a failed API request. - [AbortError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/AbortError.md): Legacy adapter error signaling that a request to the API was aborted before a response arrived. - [AdapterError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/AdapterError.md): Legacy base error an adapter returns or throws to signal a failed API request; extend it to define app-specific error types. - [AdapterRequestError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/AdapterRequestError.md): Legacy adapter error shape: an `Error` flagged `isAdapterError` with a `code` string and a {json:api} `errors` array, as thrown by `AdapterError` and its subclasses. - [AdapterRequestErrorConstructor](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/AdapterRequestErrorConstructor.md): Static side of the legacy adapter error constructors: `new (errors?, message?)` plus `extend({ message })` for creating further error subclasses. - [ConflictError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/ConflictError.md): Legacy adapter error for an HTTP 409 response, signaling that the request conflicts with existing server state, such as a duplicate client-generated id. - [ForbiddenError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/ForbiddenError.md): Legacy adapter error for an HTTP 403 response, signaling that the server refused a valid request the user lacks permission for. - [InvalidError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/InvalidError.md): Instance type of the legacy `InvalidError`, the adapter error for a request the API rejected as semantically invalid. - [NotFoundError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/NotFoundError.md): Legacy adapter error for an HTTP 404 response, signaling that the requested resource does not exist on the API. - [ServerError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/ServerError.md): Legacy adapter error for an HTTP 500 response, signaling that the API failed internally and an immediate retry is unlikely to succeed. - [TimeoutError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/TimeoutError.md): Legacy adapter error signaling that a request to the API timed out without receiving a response. - [UnauthorizedError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/types/UnauthorizedError.md): Legacy adapter error for an HTTP 401 response, signaling that authorization is required and failed or was not provided. - [AbortError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/AbortError.md): Legacy adapter error constructor for signaling that a request to the API was aborted before a response arrived. - [AdapterError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/AdapterError.md): Legacy base error constructor an adapter uses to signal a failed API request; call `extend` on it to define app-specific error types. - [ConflictError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/ConflictError.md): Legacy adapter error constructor for an HTTP 409 response, signaling that the request conflicts with existing server state, such as a duplicate client-generated id. - [ForbiddenError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/ForbiddenError.md): Legacy adapter error constructor for an HTTP 403 response, signaling that the server refused a valid request the user lacks permission for. - [InvalidError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/InvalidError.md): Legacy adapter error signaling that the API rejected a request as semantically invalid, typically failed server-side validation, putting the record in the `invalid` state. - [NotFoundError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/NotFoundError.md): Legacy adapter error constructor for an HTTP 404 response, signaling that the requested resource does not exist on the API. - [ServerError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/ServerError.md): Legacy adapter error constructor for an HTTP 500 response, signaling that the API failed internally and an immediate retry is unlikely to succeed. - [TimeoutError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/TimeoutError.md): Legacy adapter error constructor for signaling that a request to the API timed out without receiving a response. - [UnauthorizedError](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/error/variables/UnauthorizedError.md): Legacy adapter error constructor for an HTTP 401 response, signaling that authorization is required and failed or was not provided. - [@warp-drive/legacy/adapter](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter.md): Legacy adapter layer through which the store fetches and saves data from an API, superseded by `RequestManager` handlers. - [JSONAPIAdapter](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/json-api/classes/JSONAPIAdapter.md): Legacy adapter that turns store requests into HTTP requests following JSON:API URL, verb, and `application/vnd.api+json` conventions. - [@warp-drive/legacy/adapter/json-api](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/json-api.md): Legacy `JSONAPIAdapter`, which turns store requests into HTTP requests following JSON:API URL, verb and header conventions. - [RESTAdapter](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/rest/classes/RESTAdapter.md): Legacy adapter that exchanges conventional REST-style JSON with an HTTP server, building URLs from model names and ids. - [@warp-drive/legacy/adapter/rest](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/rest.md): Legacy `RESTAdapter`, which exchanges conventional REST-style JSON with an HTTP server, plus the request types it builds. - [FetchRequestInit](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/rest/types/FetchRequestInit.md): `fetch` options plus `url`, `method`, and `type` that the legacy `RESTAdapter` builds for a request sent with the native `fetch` API. - [JQueryRequestInit](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/rest/types/JQueryRequestInit.md): jQuery `$.ajax` settings plus `url`, `method`, and `type` that the legacy `RESTAdapter` builds when it sends a request through jQuery. - [QueryState](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/rest/types/QueryState.md): Query params the legacy `RESTAdapter.buildQuery` adds to `findRecord` and `findAll` URLs, such as the `include` paths to sideload. - [RequestData](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/rest/types/RequestData.md): The url and HTTP method of a legacy `RESTAdapter` request, used to build error messages when that request fails. - [BuildURLMixin](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/types/BuildURLMixin.md): Legacy adapter mixin providing `buildURL` and the `urlFor*` hooks that turn a model name, id, snapshot, and request type into a request URL. - [BuildURLMixin](https://canary.warp-drive.io/api/@warp-drive/legacy/adapter/variables/BuildURLMixin.md): Legacy `Mixin` that adds `buildURL` and the `urlFor*` hooks to an adapter so it can turn a model name, id, snapshot, and request type into a request URL. - [ConfiguredStore](https://canary.warp-drive.io/api/@warp-drive/legacy/classes/ConfiguredStore.md) - [findAll()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/builders/functions/findAll.md): Deprecated legacy builder for a `store.request` config that behaves like `store.findAll`, easing migration off adapters and serializers. - [findRecord()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/builders/functions/findRecord.md): Deprecated legacy builder for a `store.request` config that behaves like `store.findRecord`, taking a type and id or a resource identifier. - [query()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/builders/functions/query.md): Deprecated legacy builder for a `store.request` config that behaves like `store.query`, returning the records matching a query object. - [queryRecord()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/builders/functions/queryRecord.md): Deprecated legacy builder for a `store.request` config that behaves like `store.queryRecord`, returning a single record or `null` for a query object. - [saveRecord()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/builders/functions/saveRecord.md): Deprecated legacy builder for a `store.request` config that creates, updates, or deletes a record through adapters, like the legacy `store.saveRecord`. - [@warp-drive/legacy/compat/builders](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/builders.md): Deprecated request builders that move `findRecord`, `query`, and `saveRecord` calls to `store.request` while still using adapters and serializers. - [@warp-drive/legacy/compat/extensions](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/extensions.md): Legacy schema extensions that give reactive objects and arrays the classic `EmberObject` and Ember array APIs, such as `get`, `set` and `mapBy`, plus matching types. - [ArrayType](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/extensions/types/ArrayType.md): Type utility resolving to the element type of an array type, or `never` for non-arrays. - [WithArrayLike](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/extensions/types/WithArrayLike.md): Legacy type that adds Ember array methods such as `mapBy` and `firstObject` to a reactive array type using `EmberArrayLikeExtension`. - [WithEmberObject](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/extensions/types/WithEmberObject.md): Legacy type that adds the classic `EmberObject` methods to a reactive resource type using `EmberObjectExtension` or `EmberObjectArrayExtension`. - [EmberArrayLikeExtension](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/extensions/variables/EmberArrayLikeExtension.md): Legacy schema extension that gives reactive arrays Ember array methods such as `pushObject`, `mapBy`, `filterBy`, and `firstObject`. - [EmberObjectArrayExtension](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/extensions/variables/EmberObjectArrayExtension.md): Legacy schema extension that gives reactive arrays the classic `EmberObject` API such as `get`, `set`, and observers, to ease migration from Ember objects. - [EmberObjectExtension](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/extensions/variables/EmberObjectExtension.md): Legacy schema extension that gives reactive objects the classic `EmberObject` API such as `get`, `set`, and observers, to ease migration from Ember objects. - [adapterFor()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/functions/adapterFor.md): Legacy store method that returns the cached adapter for a model type, falling back to the `application` adapter. - [cleanup()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/functions/cleanup.md): Legacy store teardown hook that destroys every adapter and serializer instance the store has cached. - [normalize()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/functions/normalize.md): Legacy store method that converts a raw payload into the normalized document `store.push` expects, using the serializer for the given model type. - [pushPayload()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/functions/pushPayload.md): Legacy store method that pushes a raw payload into the store after the application serializer, or the given model type's serializer, normalizes it. - [serializeRecord()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/functions/serializeRecord.md): Legacy store method that serializes a record into a payload using its model type's serializer. - [serializerFor()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/functions/serializerFor.md): Legacy store method that returns the cached serializer for a model type, falling back to the `application` serializer, or `null` if neither exists. - [@warp-drive/legacy/compat](https://canary.warp-drive.io/api/@warp-drive/legacy/compat.md): Legacy store support for adapters and serializers: the `LegacyNetworkHandler` plus store methods such as `adapterFor`, `serializerFor`, `normalize` and `pushPayload`. - [AdapterPayload](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/types/AdapterPayload.md): Raw object or array payload a legacy adapter resolves with, before a serializer normalizes it into a JSON:API document. - [CompatStore](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/types/CompatStore.md): Deprecated alias of `LegacyStoreCompat`, the `Store` type extended with legacy adapter and serializer methods. - [LegacyStoreCompat](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/types/LegacyStoreCompat.md): Legacy `Store` type extended with `adapterFor`, `serializerFor`, `normalize`, `pushPayload`, and `serializeRecord` from the adapter and serializer network layer. - [MinimumAdapterInterface](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/types/MinimumAdapterInterface.md): Legacy contract for adapters: the `findRecord`, `query`, `createRecord`, and other methods the store calls to load and save data, and which are optional. (Interface) Adapter - [MinimumSerializerInterface](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/types/MinimumSerializerInterface.md): Legacy contract for serializers: `normalizeResponse` to turn adapter payloads into JSON:API, plus `serialize` and other optional methods. - [SerializerOptions](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/types/SerializerOptions.md): Options for legacy serializer `serialize` calls, such as `includeId` to include the record id in the output. - [configureAssertFn()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils/functions/configureAssertFn.md): Legacy migration helper that registers a callback invoked when an id or type passed to these utilities fails validation. - [configureMismatchReporter()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils/functions/configureMismatchReporter.md): Legacy migration helper that registers a callback invoked whenever `formattedId` or `formattedType` has to change the id or type it was given. - [configureTypeNormalization()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils/functions/configureTypeNormalization.md): Legacy migration helper that replaces the singularize-and-dasherize function `formattedType` and `isEquivType` use to normalize resource types. - [expectId()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils/functions/expectId.md): Legacy migration helper that normalizes a resource id to a string like `formattedId`, but asserts that it is not `null`. - [formattedId()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils/functions/formattedId.md): Legacy migration helper that normalizes a resource id to the `string` or `null` the cache expects, asserting on invalid ids such as `''` or `0`. - [formattedType()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils/functions/formattedType.md): Legacy migration helper that normalizes a resource type to the singular dasherized form the cache expects, such as `'PostComments'` to `'post-comment'`. - [isEquivId()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils/functions/isEquivId.md): Legacy migration helper that reports whether two resource ids match after normalization, so `1` and `'1'` are equivalent. - [isEquivType()](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils/functions/isEquivType.md): Legacy migration helper that reports whether two resource types match after normalization, so `'posts'` and `'post'` are equivalent. - [@warp-drive/legacy/compat/utils](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/utils.md): Legacy helpers that normalize, compare, and report mismatched resource ids and types while migrating to stricter formats. - [LegacyNetworkHandler](https://canary.warp-drive.io/api/@warp-drive/legacy/compat/variables/LegacyNetworkHandler.md): Legacy `RequestManager` handler that fulfills find, query, create, update, and delete operations through the store's adapters and serializers, passing other requests along. - [useLegacyStore()](https://canary.warp-drive.io/api/@warp-drive/legacy/functions/useLegacyStore.md): Creates a `Store` class preconfigured for legacy apps, with `Model` schema support, request handlers, cache, and optional adapter, serializer, and fragment support. - [Fragment](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/classes/Fragment.md): Legacy `ModelFragments`-compatible object API, such as `hasDirtyAttributes`, `isFragment`, and `rollbackAttributes`, for reactive objects migrated off fragments. - [FragmentArray](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/classes/FragmentArray.md): Legacy `ModelFragments`-compatible array API, such as `addFragment`, `removeFragment`, and `rollbackAttributes`, for reactive arrays migrated off fragments. - [registerFragmentExtensions()](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/functions/registerFragmentExtensions.md): Legacy setup function that registers the fragment and fragment-array schema extensions on a `SchemaService` to support migrating off ModelFragments. - [withArrayDefaults()](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/functions/withArrayDefaults.md): Legacy ModelFragments migration helper that builds an `array` schema field preconfigured with the `ember-object`, `ember-array-like`, and `fragment-array` extensions. - [withFragmentArrayDefaults()](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/functions/withFragmentArrayDefaults.md): Legacy ModelFragments migration helper that builds a `schema-array` field of `fragment:` items, defaulting to an empty array, with Ember and fragment-array extensions. - [withFragmentDefaults()](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/functions/withFragmentDefaults.md): Legacy ModelFragments migration helper that builds a `schema-object` field for a single `fragment:` type with the `ember-object` and `fragment` extensions. - [withLegacy()](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/functions/withLegacy.md): Legacy ModelFragments migration helper that completes a legacy resource schema with an `id` identity, `Model` defaults, and the `ember-object` and `fragment` extensions. - [@warp-drive/legacy/model-fragments](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments.md): Legacy helpers for migrating ember-data-model-fragments to WarpDrive schemas, including `withLegacy`, `withFragmentDefaults` and the `Fragment` and `FragmentArray` extensions. - [WithFragment](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/types/WithFragment.md): Legacy type for a reactive object migrated from a `ModelFragments` fragment, adding the `EmberObject` and `Fragment` APIs to it. - [WithFragmentArray](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/types/WithFragmentArray.md): Legacy type for a reactive array migrated from a `ModelFragments` fragment array, adding Ember array methods and the `FragmentArray` API to it. - [FragmentArrayExtension](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/variables/FragmentArrayExtension.md): Legacy schema extension named `fragment-array` that adds the `FragmentArray` API to reactive arrays migrated from `ModelFragments`. - [FragmentExtension](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/variables/FragmentExtension.md): Legacy schema extension named `fragment` that adds the `Fragment` API to reactive objects migrated from `ModelFragments`. - [modelFor](https://canary.warp-drive.io/api/@warp-drive/legacy/model-fragments/variables/modelFor.md): Legacy `store.modelFor` fallback that returns a schema-backed `ShimModelClass` for a type when ModelFragments support is on and no `Model` class exists. - [Model](https://canary.warp-drive.io/api/@warp-drive/legacy/model/classes/Model.md): Legacy base class whose subclasses both define a resource type's schema with `attr`, `belongsTo` and `hasMany` and serve as its reactive record. - [attr()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/functions/attr.md): Legacy `Model` decorator that declares an attribute field, optionally converted by a named transform and given a `defaultValue`. - [belongsTo()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/functions/belongsTo.md): Legacy `Model` decorator that declares a to-one relationship to another resource type, configured with required `async` and `inverse` options. - [buildSchema()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/functions/buildSchema.md): Legacy factory for a schema service that reads resource schemas from an app's `Model` classes, returned from the store's `createSchemaService` hook. - [hasMany()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/functions/hasMany.md): Legacy `Model` decorator that declares a to-many relationship to another resource type, configured with required `async` and `inverse` options. - [instantiateRecord()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/functions/instantiateRecord.md): Legacy store hook that creates a `Model` instance for a resource key using the `Model` class registered for its type. - [modelFor()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/functions/modelFor.md): Legacy `store.modelFor` implementation that returns the `Model` class registered for a resource type, if there is one. - [restoreDeprecatedModelRequestBehaviors()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/functions/restoreDeprecatedModelRequestBehaviors.md): Legacy opt-in that restores the pre-`RequestManager` `save`, `destroyRecord`, `reload`, and `isReloading` onto a `Model` class without deprecation warnings. - [teardownRecord()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/functions/teardownRecord.md): Legacy store hook that destroys a `Model` instance when the store releases its record. - [@warp-drive/legacy/model](https://canary.warp-drive.io/api/@warp-drive/legacy/model.md): Legacy `Model` base class and `attr`, `belongsTo`, and `hasMany` decorators that define resource schemas as classes and present records. - [DelegatingSchemaService](https://canary.warp-drive.io/api/@warp-drive/legacy/model/migration-support/classes/DelegatingSchemaService.md): Legacy schema service that serves a resource's schema from the primary service when it has one, and otherwise from its `Model` class, for incremental migration. - [registerDerivations()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/migration-support/functions/registerDerivations.md): Legacy setup that registers the derivation, relationship behaviors, and extension a schema service needs to support LegacyMode records. - [withDefaults()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/migration-support/functions/withDefaults.md): Legacy helper that marks a resource schema as LegacyMode and adds the fields that give its records `Model`-like state and methods. - [withRestoredDeprecatedModelRequestBehaviors()](https://canary.warp-drive.io/api/@warp-drive/legacy/model/migration-support/functions/withRestoredDeprecatedModelRequestBehaviors.md): Legacy alternative to `withDefaults` that makes a LegacyMode schema whose `save`, `reload`, and `destroyRecord` run without deprecation warnings. - [@warp-drive/legacy/model/migration-support](https://canary.warp-drive.io/api/@warp-drive/legacy/model/migration-support.md): Legacy helpers for migrating from `Model` to `ReactiveResource`: LegacyMode schema defaults, derivations, types, and a schema service that serves both at once. - [WithLegacy](https://canary.warp-drive.io/api/@warp-drive/legacy/model/migration-support/types/WithLegacy.md): Legacy type that adds the `Model`-style state flags and methods (`save`, `isNew`, `errors`, etc.) that `withDefaults` provides to a LegacyMode record type. - [WithLegacyDerivations](https://canary.warp-drive.io/api/@warp-drive/legacy/model/migration-support/types/WithLegacyDerivations.md): Legacy type that adds the `Model`-style `belongsTo` and `hasMany` reference methods to a typed record migrating from `Model` to a schema-based record. - [AsyncHasMany](https://canary.warp-drive.io/api/@warp-drive/legacy/model/types/AsyncHasMany.md): Legacy promise-like, iterable proxy returned by an async `hasMany` on a `Model`, which templates can consume while the related records load. - [Serializer](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/classes/Serializer.md): Legacy abstract base class for serializers that normalize API responses into JSON:API and serialize records into the API's request format. Serializer - [@warp-drive/legacy/serializer](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer.md): Legacy serializer layer that converts data between an API's format and JSON:API for the adapter-based request flow. - [JSONAPISerializer](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/json-api/classes/JSONAPISerializer.md): Legacy serializer that normalizes and serializes record payloads following the JSON:API spec. - [@warp-drive/legacy/serializer/json-api](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/json-api.md): Legacy `JSONAPISerializer`, which normalizes and serializes record payloads following the JSON:API spec. - [JSONSerializer](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/json/classes/JSONSerializer.md): Legacy serializer for plain JSON payloads that don't follow the JSON:API spec, normalizing them into JSON:API documents for the store. JSONSerializer - [@warp-drive/legacy/serializer/json](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/json.md): Legacy `JSONSerializer`, which normalizes and serializes plain JSON payloads that don't follow the JSON:API spec. - [EmbeddedRecordsMixin](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/rest/classes/EmbeddedRecordsMixin.md): Legacy serializer mixin that extracts and serializes related records embedded in a payload instead of referenced by id, configured per relationship via `attrs`. EmbeddedRecordsMixin - [RESTSerializer](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/rest/classes/RESTSerializer.md): Legacy serializer for REST payloads that key records by model type name at the root, with hooks for normalizing keys and payloads. RESTSerializer - [@warp-drive/legacy/serializer/rest](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/rest.md): Legacy `RESTSerializer` for payloads that key records by model name at the root, plus the `EmbeddedRecordsMixin` for embedded relationships. - [BooleanTransform](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/transform/classes/BooleanTransform.md): Legacy transform for `attr('boolean')` that converts payload values to and from booleans, optionally allowing `null`. - [DateTransform](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/transform/classes/DateTransform.md): Legacy transform for `attr('date')` that converts ISO 8601 strings or epoch numbers to `Date` objects and serializes them back to ISO 8601 strings. - [NumberTransform](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/transform/classes/NumberTransform.md): Legacy transform for `attr('number')` that converts payload values to numbers, or `null` when empty or not a valid number. - [StringTransform](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/transform/classes/StringTransform.md): Legacy transform for `attr('string')` that converts payload values to and from strings. - [Transform](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/transform/classes/Transform.md): Legacy base for custom attribute transforms, which implement `serialize` and `deserialize` to convert values between payloads and records. Transform - [@warp-drive/legacy/serializer/transform](https://canary.warp-drive.io/api/@warp-drive/legacy/serializer/transform.md): Legacy transforms that serialize and deserialize attribute values: the `Transform` base class plus the boolean, date, number and string transforms. - [restoreDeprecatedStoreBehaviors()](https://canary.warp-drive.io/api/@warp-drive/legacy/store/functions/restoreDeprecatedStoreBehaviors.md): Legacy opt-in that restores the adapter-based `findRecord`, `findAll`, `query`, `saveRecord`, and related methods onto a `Store` class. - [@warp-drive/legacy/store](https://canary.warp-drive.io/api/@warp-drive/legacy/store.md): Legacy `restoreDeprecatedStoreBehaviors`, which restores the adapter-based `findRecord`, `findAll`, `query`, `saveRecord` and related methods onto a `Store` class. - [LegacyModelAndNetworkAndRequestStoreSetupOptions](https://canary.warp-drive.io/api/@warp-drive/legacy/types/LegacyModelAndNetworkAndRequestStoreSetupOptions.md): `useLegacyStore` options for a store that uses `Model`, the legacy adapter and serializer network layer, and deprecated request methods like `store.findRecord`. - [LegacyModelAndNetworkStoreSetupOptions](https://canary.warp-drive.io/api/@warp-drive/legacy/types/LegacyModelAndNetworkStoreSetupOptions.md): `useLegacyStore` options for a store that uses `Model` and the legacy adapter and serializer network layer, without deprecated request methods like `store.findRecord`. - [LegacyModelStoreSetupOptions](https://canary.warp-drive.io/api/@warp-drive/legacy/types/LegacyModelStoreSetupOptions.md): `useLegacyStore` options for a store that uses `Model` in `linksMode`, without the legacy adapter and serializer network layer. - [LegacyStoreSetupOptions](https://canary.warp-drive.io/api/@warp-drive/legacy/types/LegacyStoreSetupOptions.md): Options accepted by `useLegacyStore`, choosing via `linksMode` and `legacyRequests` how much of the legacy `Model`, adapter, and request support to enable. ## @ember-data/adapter - [@ember-data/adapter](https://canary.warp-drive.io/api/@ember-data/adapter.md): (Legacy) REST and JSON:API implementations of the Adapter interface, re-exported from `@warp-drive/legacy/adapter`; new apps should write request handlers for the `RequestManager` instead. - [@ember-data/adapter/error](https://canary.warp-drive.io/api/@ember-data/adapter/error.md): Legacy alias that re-exports `AdapterError` and its subclasses (invalid, timeout, abort, 401, 403, 404, 409, 5xx) from `@warp-drive/legacy/adapter/error`. - [@ember-data/adapter/json-api](https://canary.warp-drive.io/api/@ember-data/adapter/json-api.md): Legacy alias that re-exports `JSONAPIAdapter` from `@warp-drive/legacy/adapter/json-api` so `@ember-data/adapter/json-api` imports keep working. - [@ember-data/adapter/rest](https://canary.warp-drive.io/api/@ember-data/adapter/rest.md): Legacy alias that re-exports `RESTAdapter`, `fetchOptions`, and their request types from `@warp-drive/legacy/adapter/rest` so `@ember-data/adapter/rest` imports keep working. ## @ember-data/active-record - [@ember-data/active-record](https://canary.warp-drive.io/api/@ember-data/active-record.md): (Legacy) ActiveRecord request builders such as `findRecord` and `query` that produce underscored, pluralized URLs; new apps should use `@warp-drive/utilities/active-record` instead. - [@ember-data/active-record/request](https://canary.warp-drive.io/api/@ember-data/active-record/request.md): Legacy alias that re-exports the ActiveRecord-style request builders (`findRecord`, `query`, `createRecord`, `updateRecord`, `deleteRecord`) from `@warp-drive/utilities/active-record`. ## @ember-data/legacy-compat - [@ember-data/legacy-compat](https://canary.warp-drive.io/api/@ember-data/legacy-compat.md): (Legacy) Shims such as `LegacyNetworkHandler`, `adapterFor` and `serializerFor` that keep Adapters and Serializers working with the `RequestManager`; now published as `@warp-drive/legacy/compat`. - [@ember-data/legacy-compat/builders](https://canary.warp-drive.io/api/@ember-data/legacy-compat/builders.md): Deprecated request builders (`findAll`, `findRecord`, `query`, `queryRecord`, `saveRecord`) that move store method calls onto `store.request` while keeping adapter behavior. - [@ember-data/legacy-compat/utils](https://canary.warp-drive.io/api/@ember-data/legacy-compat/utils.md): Deprecated helpers for normalizing and checking resource types and IDs (`formattedType`, `formattedId`, `expectId`, `isEquivType`, `isEquivId`) and configuring mismatch reporting. ## @ember-data/model - [@ember-data/model](https://canary.warp-drive.io/api/@ember-data/model.md): (Legacy) `Model` class and its `attr`, `belongsTo` and `hasMany` decorators, re-exported from `@warp-drive/legacy/model`; new apps should define schemas for `@warp-drive/core` instead. - [@ember-data/model/hooks](https://canary.warp-drive.io/api/@ember-data/model/hooks.md): Legacy alias that re-exports the `Model` lifecycle hooks `instantiateRecord`, `teardownRecord`, `modelFor`, and `buildSchema` from `@warp-drive/legacy/model`. - [@ember-data/model/migration-support](https://canary.warp-drive.io/api/@ember-data/model/migration-support.md): Legacy helpers (`withDefaults`, `registerDerivations`, `DelegatingSchemaService`, `WithLegacy`) for migrating from `@ember-data/model` to schema-driven records in LegacyMode. ## @ember-data/json-api - [@ember-data/json-api](https://canary.warp-drive.io/api/@ember-data/json-api.md): (Legacy) JSON:API document and resource cache for the `@ember-data/*` packages, re-exporting `JSONAPICache`; new apps should import it from `@warp-drive/json-api` instead. - [@ember-data/json-api/request](https://canary.warp-drive.io/api/@ember-data/json-api/request.md): Legacy alias re-exporting request builders from `@warp-drive/utilities/json-api` that produce fetch options with stable JSON:API URLs for `store.request`. ## @ember-data/store - [@ember-data/store](https://canary.warp-drive.io/api/@ember-data/store.md): (Legacy) EmberData `Store` class that coordinates the cache, the `RequestManager` and record presentation; new apps should use the `Store` from `@warp-drive/core` instead. - [@ember-data/store/configure](https://canary.warp-drive.io/api/@ember-data/store/configure.md): Re-exports `setupSignals`, which configures the signals implementation WarpDrive uses for reactivity. - [@ember-data/store/types](https://canary.warp-drive.io/api/@ember-data/store/types.md): Legacy alias that re-exports the store public types (schema service, finder options, model schema, and more) from `@warp-drive/core/types`. ## @ember-data/graph - [@ember-data/graph](https://canary.warp-drive.io/api/@ember-data/graph.md): (Internal) Package re-exporting the relationship graph from `@warp-drive/core` for use by the JSON:API cache; not intended for direct application use. ## @ember-data/request - [@ember-data/request](https://canary.warp-drive.io/api/@ember-data/request.md): (Legacy) Package that once provided the `RequestManager` and its related facilities; new apps should import them from `@warp-drive/core` instead. - [@ember-data/request/fetch](https://canary.warp-drive.io/api/@ember-data/request/fetch.md): Legacy entry re-exporting `Fetch`, a request handler that sends each request with `fetch` and parses the response as JSON. ## @ember-data/request-utils - [@ember-data/request-utils](https://canary.warp-drive.io/api/@ember-data/request-utils.md): (Legacy) URL and query-param helpers such as `buildBaseURL` and `buildQueryParams` for request builders; new apps should import them from `@warp-drive/utilities` instead. - [LifetimesService](https://canary.warp-drive.io/api/@ember-data/request-utils/classes/LifetimesService.md) - [@ember-data/request-utils/handlers](https://canary.warp-drive.io/api/@ember-data/request-utils/handlers.md): Re-exports prebuilt request handlers such as `Gate`, `AutoCompress`, and `MetaDocHandler`, plus header and URL-length helpers, from `@warp-drive/utilities/handlers`. - [@ember-data/request-utils/string](https://canary.warp-drive.io/api/@ember-data/request-utils/string.md): Re-exports LRU-cached string inflection and case helpers (`pluralize`, `singularize`, `camelize`, `dasherize`, and others) from `@warp-drive/utilities/string`. ## @ember-data/rest - [@ember-data/rest](https://canary.warp-drive.io/api/@ember-data/rest.md): (Legacy) REST request builders such as `findRecord`, `query` and `createRecord` that produce camelCase, pluralized URLs; new apps should import them from `@warp-drive/utilities/rest` instead. - [@ember-data/rest/request](https://canary.warp-drive.io/api/@ember-data/rest/request.md): Legacy alias re-exporting request builders from `@warp-drive/utilities/rest` that produce fetch options with * stable, camelCase pluralized REST URLs. * ## @ember-data/serializer - [@ember-data/serializer](https://canary.warp-drive.io/api/@ember-data/serializer.md): (Legacy) JSON, REST and JSON:API implementations of the Serializer interface, re-exported from `@warp-drive/legacy/serializer`; new apps should normalize data in request handlers instead. - [@ember-data/serializer/json-api](https://canary.warp-drive.io/api/@ember-data/serializer/json-api.md): Legacy alias that re-exports `JSONAPISerializer` from `@warp-drive/legacy/serializer/json-api` so `@ember-data/serializer/json-api` imports keep working. - [@ember-data/serializer/json](https://canary.warp-drive.io/api/@ember-data/serializer/json.md): Legacy alias that re-exports `JSONSerializer` from `@warp-drive/legacy/serializer/json` so `@ember-data/serializer/json` imports keep working. - [@ember-data/serializer/rest](https://canary.warp-drive.io/api/@ember-data/serializer/rest.md): Legacy alias that re-exports `RESTSerializer` and `EmbeddedRecordsMixin` from `@warp-drive/legacy/serializer/rest` so `@ember-data/serializer/rest` imports keep working. - [@ember-data/serializer/transform](https://canary.warp-drive.io/api/@ember-data/serializer/transform.md): Legacy alias that re-exports the base `Transform` and the boolean, string, number, and date attribute transforms from `@warp-drive/legacy/serializer/transform`. ## @ember-data/tracking - [@ember-data/tracking](https://canary.warp-drive.io/api/@ember-data/tracking.md): (Deprecated) Package that once wired WarpDrive into Ember's reactivity system; remove it and install `@warp-drive/ember` instead, following the migration steps on this page. - [buildSignalConfig()](https://canary.warp-drive.io/api/@ember-data/tracking/functions/buildSignalConfig.md): Deprecated: builds signal hooks that back WarpDrive reactivity with Ember tags; `@ember-data/store` registers it automatically, and `@warp-drive/ember` replaces it. ## @warp-drive/core-types - [@warp-drive/core-types](https://canary.warp-drive.io/api/@warp-drive/core-types.md): (Legacy) Type-only re-exports of the `@warp-drive/core/types` modules, kept so existing `@warp-drive/core-types` imports compile; new code should import from `@warp-drive/core/types`. - [@warp-drive/core-types/cache/aliases](https://canary.warp-drive.io/api/@warp-drive/core-types/cache/aliases.md): Legacy alias re-exporting `@warp-drive/core/types/cache/aliases`, the opaque raw resource blob type; new code should import from there. - [@warp-drive/core-types/cache/change](https://canary.warp-drive.io/api/@warp-drive/core-types/cache/change.md): Legacy alias re-exporting `@warp-drive/core/types/cache/change`, the type for resource and document changes the cache records; new code should import from there. - [@warp-drive/core-types/cache](https://canary.warp-drive.io/api/@warp-drive/core-types/cache.md): Legacy alias re-exporting `@warp-drive/core/types/cache`, the Cache interface and its change types; new code should import from there. - [@warp-drive/core-types/cache/mutations](https://canary.warp-drive.io/api/@warp-drive/core-types/cache/mutations.md): Legacy alias re-exporting `@warp-drive/core/types/cache/mutations`, the relationship mutations passed to `cache.mutate`; new code should import from there. - [@warp-drive/core-types/cache/operations](https://canary.warp-drive.io/api/@warp-drive/core-types/cache/operations.md): Legacy alias re-exporting `@warp-drive/core/types/cache/operations`, the operations that add, update, merge, and remove cache data; new code should import from there. - [@warp-drive/core-types/cache/relationship](https://canary.warp-drive.io/api/@warp-drive/core-types/cache/relationship.md): Legacy alias re-exporting `@warp-drive/core/types/cache/relationship`, the cache-side to-one and to-many relationship state types; new code should import from there. - [@warp-drive/core-types/graph](https://canary.warp-drive.io/api/@warp-drive/core-types/graph.md): Legacy alias re-exporting `@warp-drive/core/types/graph`, the operation types that update the relationship graph; new code should import from there. - [@warp-drive/core-types/identifier](https://canary.warp-drive.io/api/@warp-drive/core-types/identifier.md): Legacy alias re-exporting `@warp-drive/core/types/identifier`, the resource and request cache key types; new code should import from there. - [@warp-drive/core-types/json/raw](https://canary.warp-drive.io/api/@warp-drive/core-types/json/raw.md): Legacy alias re-exporting `@warp-drive/core/types/json/raw`, the types describing JSON-serializable values; new code should import from there. - [@warp-drive/core-types/params](https://canary.warp-drive.io/api/@warp-drive/core-types/params.md): Legacy alias re-exporting `@warp-drive/core/types/params`, the types for serializable query params; new code should import from there. - [@warp-drive/core-types/record](https://canary.warp-drive.io/api/@warp-drive/core-types/record.md): Legacy alias re-exporting `@warp-drive/core/types/record`, the type utilities for typed records and include paths; new code should import from there. - [@warp-drive/core-types/request](https://canary.warp-drive.io/api/@warp-drive/core-types/request.md): Legacy alias re-exporting `@warp-drive/core/types/request`, the request option, cache option, and structured document types; new code should import from there. - [@warp-drive/core-types/schema/concepts](https://canary.warp-drive.io/api/@warp-drive/core-types/schema/concepts.md): Legacy alias re-exporting `@warp-drive/core/types/schema/concepts`, the transformation, derivation, and hash function types; new code should import from there. - [@warp-drive/core-types/schema/fields](https://canary.warp-drive.io/api/@warp-drive/core-types/schema/fields.md): Legacy alias re-exporting `@warp-drive/core/types/schema/fields`, the field and resource schema types; new code should import from there. - [@warp-drive/core-types/spec/document](https://canary.warp-drive.io/api/@warp-drive/core-types/spec/document.md): Legacy alias re-exporting `@warp-drive/core/types/spec/document`, the types for raw {json:api} response documents; new code should import from there. - [@warp-drive/core-types/spec/error](https://canary.warp-drive.io/api/@warp-drive/core-types/spec/error.md): Legacy alias re-exporting `@warp-drive/core/types/spec/error`, the {json:api} error object type; new code should import from there. - [@warp-drive/core-types/spec/json-api-raw](https://canary.warp-drive.io/api/@warp-drive/core-types/spec/json-api-raw.md): Legacy alias re-exporting `@warp-drive/core/types/spec/json-api-raw`, the raw {json:api} resource, link, and meta types; new code should import from there. - [@warp-drive/core-types/symbols](https://canary.warp-drive.io/api/@warp-drive/core-types/symbols.md): Legacy alias re-exporting `@warp-drive/core/types/symbols`, the symbols that brand typed records with their store, type, and request signature; new code should import from there. - [@warp-drive/core-types/utils](https://canary.warp-drive.io/api/@warp-drive/core-types/utils.md): Legacy alias re-exporting `@warp-drive/core/types/utils`, small TypeScript helper types like `Mutable`; new code should import from there. ## @warp-drive/build-config - [@warp-drive/build-config](https://canary.warp-drive.io/api/@warp-drive/build-config.md): (Legacy) Home of the `setConfig` build plugin that configures WarpDrive deprecations, optional features and debug logging; new apps should use `@warp-drive/core/build-config` instead. ## @warp-drive/schema-record - [@warp-drive/schema-record](https://canary.warp-drive.io/api/@warp-drive/schema-record.md): (Legacy) Re-export of the reactive-resource API such as `SchemaService`, `instantiateRecord` and `withDefaults`; new code should import these from `@warp-drive/core/reactive`.