diff --git a/guides/cookbook/incremental-adoption-guide.md b/guides/cookbook/incremental-adoption-guide.md new file mode 100644 index 00000000000..94c97fe0a86 --- /dev/null +++ b/guides/cookbook/incremental-adoption-guide.md @@ -0,0 +1,148 @@ +# Incremental adoption guide for existing projects + +- ⮐ [Cookbook](./index.md) + +This guide is for existing projects that want to adopt the new APIs of the EmberData incrementally. + +## Step 1: Upgrade to EmberData 4.12.x + +This version of EmberData is the first version that supports the new APIs. It is also a LTS version, so you can stay on it for a while. You can refer the [EmberData Compatibility table](https://github.com/emberjs/data/blob/main/README.md#compatibility) to see which version of EmberData is compatible with your Ember version. + +## Step 2: Add `Store` service to your application + +You will need to create your own store service. Before, a store service was automatically injected by EmberData. +Here is how you do it: + +```js +// eslint-disable-next-line ember/use-ember-data-rfc-395-imports +import Store from 'ember-data/store'; +import { service } from '@ember/service'; + +export default class MyStore extends Store { + @service requestManager; +} + +``` + +Notice we still want to import the `Store` class from `ember-data/store` package. You might have a lint rule that says don't do it. You can disable it for this import. The reason we want to import it from `ember-data/store` is because we want to use EmberData models, serializers, adapters, etc. while alongside we want to start utilizing new APIs. + +> Note: You can also use `@ember-data/store` package, but you will need to configure a lot more to make things work to use old APIs. We recommend using `ember-data/store` package to avoid confusion. + +> Note: Because we are extending `ember-data/store`, it is still v1 addon, so things might not work for you if you are using typescript. We recommend to have `store.js` file for now. + +## Step 3: Add `RequestManager` service to your application + +Now let's create our very own `RequestManager` service. It is a service that is responsible for sending requests to the server. It is a composable class, which means you can add your own request handlers to it. + +First you need to install [`@ember-data/request`](https://github.com/emberjs/data/tree/main/packages/request) and [`@ember-data/legacy-compat`](https://github.com/emberjs/data/tree/main/packages/legacy-compat) packages. First contains the `RequestManager` service and a few request handlers, second has `LegacyNetworkHandler` that gonna handle all old-style `this.store.*` calls. + +Here is how your own `RequestManager` service may look like: + +```ts +import { LegacyNetworkHandler } from '@ember-data/legacy-compat'; +import type { Handler, NextFn, RequestContext } from '@ember-data/request'; +import RequestManager from '@ember-data/request'; +import Fetch from '@ember-data/request/fetch'; + +/* eslint-disable no-console */ +const TestHandler: Handler = { + async request(context: RequestContext, next: NextFn) { + console.log('TestHandler.request', context.request); + const result = await next(Object.assign({}, context.request)); + console.log('TestHandler.response after fetch', result.response); + return result; + }, +}; + +export default class Requests extends RequestManager { + constructor(args?: Record) { + super(args); + this.use([LegacyNetworkHandler, TestHandler, Fetch]); + } +} +``` + +Let's go over the code above: + +1. `LegacyNetworkHandler` is the handler that is responsible for sending requests to the server using the old APIs. It will interrupt handlers chain if it detects request using old APIs. It will process it as it used to be doing with Adapters/Fetch/Serializers workflow. + +2. Next is `TestHandler`. It is a handler that is responsible for logging requests. It is a quick example of how you can add your own handlers to the request manager. We will take a look at more useful examples later. + +3. Lastly `Fetch`. It is a handler that sends requests to the server using the `fetch` API. It expects responses to be JSON and when in use it should be the last handler you put in the chain. After finishing each request it will convert the response into json and pass it back to the handlers chain in reverse order as the request context's response. So `TestHandler` will receive `response` property first, and so on if we would have any. + +> NOTE: Your `RequestManager` service should be exactly `app/services/request-manager.[js|ts]` file. It is a convention that Ember uses to find the service. + +You can read more about request manager in the [request manager guide](../requests/index.md). + +## Step 4: Install `@ember-data/json-api`, `@ember-data/request-utils` packages + +If you were using JSON:API adapter/serializer for your backend communication, you can use `@ember-data/json-api` package. It is a package that contains predefined builders for JSON:API requests. You can read more about it in the [`@ember-data/json-api`](https://github.com/emberjs/data/tree/main/packages/json-api). + +If you have different backend format - EmberData provides you with builders for `REST`([`@ember-data/rest`](https://github.com/emberjs/data/tree/main/packages/rest)) and `ActiveRecord`([`@ember-data/active-record`](https://github.com/emberjs/data/tree/main/packages/active-record)). + +`@ember-data/request-utils` package contains a lot of useful utilities for building requests. You can read more about it in its [Readme](https://github.com/emberjs/data/tree/main/packages/request-utils#readme). It has request builders for all type of requests. + +## Step 5: Off you go! Start using new APIs + +Now you can start refactoring old code to use new APIs. You can start with the `findAll` method. It is the easiest one to refactor. Here is how you do it: + +```diff app/components/projects/list.ts ++ import { query } from '@ember-data/json-api/request'; + + loadProjects: Task = task(async () => { +- const projects = await this.store.findAll('project'); +- this.projects = [...projects]; ++ const { content } = await this.store.request(query('project', {}, { host: config.api.host })); ++ this.projects = content.data; + }); +``` + +You most likely would need to add Auth Handler to your request manager to add `accessToken` to your requests. +Let's say you have your `accessToken` in the `session` service. Here is how you can add it to the request manager: + +```js +import { service } from '@ember/service'; + +export default class AuthHandler { + @service session; + + request({ request }, next) { + const headers = new Headers(request.headers); + headers.append( + 'Authorization', + `Bearer ${this.session.accessToken}`, + ); + + return next(Object.assign({}, request, { headers })); + } +} +``` + +You can read more about auth topic [here](../requests/examples/1-auth.md). + +Another good thing to do is to configure default host and namespace for your requests. There is an utility for that out of the box of `@ember-data/request-utils` called [`setBuildURLConfig`](https://github.com/emberjs/data/blob/main/packages/request-utils/src/index.ts#L67). You can do it anywhere in your app theoretically, but we recommend doing it in the `app/app.js` file. Here is how you can do it: + +```diff app/app.js +import Application from '@ember/application'; +import Resolver from 'ember-resolver'; +import loadInitializers from 'ember-load-initializers'; +import config from 'base-ember-typescript-app/config/environment'; ++import { setBuildURLConfig } from '@ember-data/request-utils'; ++ ++setBuildURLConfig({ ++ host: 'https://api.example.com', ++ namespace: 'v1', ++}); + +export default class App extends Application { + modulePrefix = config.modulePrefix; + podModulePrefix = config.podModulePrefix; + Resolver = Resolver; +} + +loadInitializers(App, config.modulePrefix); +``` + +--- + +- ⮐ [Cookbook](./index.md) diff --git a/guides/cookbook/index.md b/guides/cookbook/index.md new file mode 100644 index 00000000000..53df945e865 --- /dev/null +++ b/guides/cookbook/index.md @@ -0,0 +1,3 @@ +# Cookbook + +- [Incremental Adoption Guide](./incremental-adoption-guide.md) diff --git a/guides/index.md b/guides/index.md index 08f5c6c731c..0a7f07f0a53 100644 --- a/guides/index.md +++ b/guides/index.md @@ -3,3 +3,4 @@ - [Relationships](./relationships/index.md) - [Requests](./requests/index.md) - [Terminology](./terminology.md) +- [Cookbook](./cookbook/index.md) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d0578d486f8..1a68325952c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -38,7 +38,7 @@ importers: dependencies: turbo: specifier: ^1.12.5 - version: 1.12.5 + version: 1.13.0 devDependencies: '@babel/core': specifier: ^7.24.3 @@ -48,13 +48,13 @@ importers: version: 1.1.2(@babel/core@7.24.3) '@glint/core': specifier: ^1.3.0 - version: 1.3.0(typescript@5.4.3) + version: 1.4.0(typescript@5.4.3) '@glint/environment-ember-loose': specifier: ^1.3.0 - version: 1.3.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0) + version: 1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0) '@glint/environment-ember-template-imports': specifier: ^1.3.0 - version: 1.3.0(@glint/environment-ember-loose@1.3.0)(@glint/template@1.4.0) + version: 1.4.0(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0) '@glint/template': specifier: ^1.4.0 version: 1.4.0 @@ -306,13 +306,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -418,13 +418,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -547,13 +547,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -688,7 +688,7 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -767,13 +767,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -806,13 +806,13 @@ importers: version: 0.89.0 '@glint/core': specifier: ^1.3.0 - version: 1.3.0(typescript@5.4.3) + version: 1.4.0(typescript@5.4.3) '@glint/environment-ember-loose': specifier: ^1.3.0 - version: 1.3.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0) + version: 1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0) '@glint/environment-ember-template-imports': specifier: ^1.3.0 - version: 1.3.0(@glint/environment-ember-loose@1.3.0)(@glint/template@1.4.0) + version: 1.4.0(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0) '@glint/template': specifier: ^1.4.0 version: 1.4.0 @@ -900,13 +900,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -985,7 +985,7 @@ importers: version: 5.3.0 hono: specifier: ^4.1.2 - version: 4.1.2 + version: 4.1.3 pm2: specifier: ^5.3.1 version: 5.3.1 @@ -1001,7 +1001,7 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -1076,13 +1076,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -1195,13 +1195,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -1328,13 +1328,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -1541,13 +1541,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -1613,13 +1613,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -1683,13 +1683,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -1808,13 +1808,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -1915,13 +1915,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -2029,13 +2029,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -2128,13 +2128,13 @@ importers: version: 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-runtime': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) '@babel/preset-env': specifier: ^7.24.1 - version: 7.24.1(@babel/core@7.24.3) + version: 7.24.3(@babel/core@7.24.3) '@babel/preset-typescript': specifier: ^7.24.1 version: 7.24.1(@babel/core@7.24.3) @@ -3647,6 +3647,212 @@ importers: ember-inflector: injected: true + tests/example-json-api: + dependencies: + pnpm-sync-dependencies-meta-injected: + specifier: 0.0.10 + version: 0.0.10 + devDependencies: + '@babel/core': + specifier: ^7.23.9 + version: 7.24.3(supports-color@8.1.1) + '@babel/runtime': + specifier: ^7.23.9 + version: 7.24.1 + '@ember-data/debug': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/debug(@ember-data/store@5.4.0-alpha.43)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) + '@ember-data/graph': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/graph(@babel/core@7.24.3)(@ember-data/store@5.4.0-alpha.43)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) + '@ember-data/json-api': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.43)(@ember-data/request-utils@5.4.0-alpha.43)(@ember-data/store@5.4.0-alpha.43)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29)(ember-inflector@4.0.2) + '@ember-data/legacy-compat': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.43)(@ember-data/json-api@5.4.0-alpha.43)(@ember-data/request@5.4.0-alpha.43)(@ember-data/store@5.4.0-alpha.43)(@warp-drive/core-types@0.0.0-alpha.29) + '@ember-data/model': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.43)(@ember-data/graph@5.4.0-alpha.43)(@ember-data/json-api@5.4.0-alpha.43)(@ember-data/legacy-compat@5.4.0-alpha.43)(@ember-data/store@5.4.0-alpha.43)(@ember-data/tracking@5.4.0-alpha.43)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.29)(ember-inflector@4.0.2) + '@ember-data/private-build-infra': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/private-build-infra(@glint/template@1.4.0) + '@ember-data/request': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) + '@ember-data/request-utils': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/request-utils(@babel/core@7.24.3)(@warp-drive/core-types@0.0.0-alpha.29) + '@ember-data/store': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.43)(@ember-data/tracking@5.4.0-alpha.43)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) + '@ember-data/tracking': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/tracking(@babel/core@7.24.3)(@glint/template@1.4.0) + '@ember-data/unpublished-test-infra': + specifier: workspace:5.4.0-alpha.43 + version: file:packages/unpublished-test-infra(@babel/core@7.24.3)(@ember/string@3.1.1)(ember-cli-test-loader@3.1.0)(ember-cli@5.4.1)(ember-source@5.6.0) + '@ember/edition-utils': + specifier: ^1.2.0 + version: 1.2.0 + '@ember/optional-features': + specifier: ^2.0.0 + version: 2.1.0 + '@ember/string': + specifier: 3.1.1 + version: 3.1.1(@babel/core@7.24.3) + '@ember/test-helpers': + specifier: ^3.2.1 + version: 3.3.0(patch_hash=gppmtiox6pymwamrfimkbxfrsm)(@babel/core@7.24.3)(ember-source@5.6.0)(webpack@5.91.0) + '@embroider/compat': + specifier: ^3.4.0 + version: 3.4.6(@embroider/core@3.4.6) + '@embroider/core': + specifier: ^3.4.2 + version: 3.4.6(@glint/template@1.4.0) + '@embroider/webpack': + specifier: ^3.2.1 + version: 3.2.2(@embroider/core@3.4.6)(webpack@5.91.0) + '@glimmer/component': + specifier: ^1.1.2 + version: 1.1.2(@babel/core@7.24.3) + '@glimmer/tracking': + specifier: ^1.1.2 + version: 1.1.2 + '@html-next/vertical-collection': + specifier: ^4.0.2 + version: 4.0.2(@babel/core@7.24.3) + '@types/morgan': + specifier: ^1.9.9 + version: 1.9.9 + '@warp-drive/core-types': + specifier: workspace:0.0.0-alpha.29 + version: file:packages/core-types(@babel/core@7.24.3)(@glint/template@1.4.0) + '@warp-drive/internal-config': + specifier: workspace:5.4.0-alpha.43 + version: link:../../config + ember-auto-import: + specifier: ^2.7.0 + version: 2.7.2(@glint/template@1.4.0)(webpack@5.91.0) + ember-cli: + specifier: ~5.4.1 + version: 5.4.1 + ember-cli-babel: + specifier: ^8.2.0 + version: 8.2.0(@babel/core@7.24.3) + ember-cli-dependency-checker: + specifier: ^3.3.2 + version: 3.3.2(ember-cli@5.4.1) + ember-cli-htmlbars: + specifier: ^6.3.0 + version: 6.3.0 + ember-cli-inject-live-reload: + specifier: ^2.1.0 + version: 2.1.0 + ember-cli-sri: + specifier: ^2.1.1 + version: 2.1.1 + ember-cli-terser: + specifier: ~4.0.2 + version: 4.0.2 + ember-cli-test-loader: + specifier: ^3.1.0 + version: 3.1.0(@babel/core@7.24.3) + ember-data: + specifier: workspace:5.4.0-alpha.43 + version: file:packages/-ember-data(@babel/core@7.24.3)(@ember/string@3.1.1) + ember-disable-prototype-extensions: + specifier: ^1.1.3 + version: 1.1.3 + ember-inflector: + specifier: ^4.0.2 + version: 4.0.2(@babel/core@7.24.3) + ember-load-initializers: + specifier: ^2.1.2 + version: 2.1.2(@babel/core@7.24.3) + ember-maybe-import-regenerator: + specifier: ^1.0.0 + version: 1.0.0(@babel/core@7.24.3) + ember-page-title: + specifier: ^8.2.2 + version: 8.2.3(ember-source@5.6.0) + ember-qunit: + specifier: ^8.0.2 + version: 8.0.2(@babel/core@7.24.3)(@ember/test-helpers@3.3.0)(ember-source@5.6.0)(qunit@2.19.4) + ember-resolver: + specifier: ^11.0.1 + version: 11.0.1(@babel/core@7.24.3)(ember-source@5.6.0) + ember-source: + specifier: ~5.6.0 + version: 5.6.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(webpack@5.91.0) + ember-source-channel-url: + specifier: ^3.0.0 + version: 3.0.0 + ember-try: + specifier: ^3.0.0 + version: 3.0.0 + express: + specifier: ^4.18.2 + version: 4.19.1 + glob: + specifier: ^10.3.10 + version: 10.3.10 + loader.js: + specifier: ^4.7.0 + version: 4.7.0 + morgan: + specifier: ^1.10.0 + version: 1.10.0 + qunit: + specifier: 2.19.4 + version: 2.19.4(patch_hash=h2fz5inojlzu6daraxt5bghsqy) + qunit-console-grouper: + specifier: ^0.3.0 + version: 0.3.0 + qunit-dom: + specifier: ^3.0.0 + version: 3.0.0 + silent-error: + specifier: ^1.1.1 + version: 1.1.1 + typescript: + specifier: ^5.3.3 + version: 5.4.3 + webpack: + specifier: ^5.89.0 + version: 5.91.0 + dependenciesMeta: + '@ember-data/debug': + injected: true + '@ember-data/graph': + injected: true + '@ember-data/json-api': + injected: true + '@ember-data/legacy-compat': + injected: true + '@ember-data/model': + injected: true + '@ember-data/private-build-infra': + injected: true + '@ember-data/request': + injected: true + '@ember-data/request-utils': + injected: true + '@ember-data/store': + injected: true + '@ember-data/tracking': + injected: true + '@ember-data/unpublished-test-infra': + injected: true + '@ember/string': + injected: true + '@warp-drive/core-types': + injected: true + ember-data: + injected: true + ember-inflector: + injected: true + tests/fastboot: dependencies: '@ember-data/unpublished-test-infra': @@ -4127,228 +4333,27 @@ importers: specifier: ^2.1.2 version: 2.1.2(@babel/core@7.24.3) ember-maybe-import-regenerator: - specifier: ^1.0.0 - version: 1.0.0(@babel/core@7.24.3) - ember-resolver: - specifier: ^11.0.1 - version: 11.0.1(@babel/core@7.24.3)(ember-source@5.7.0) - ember-source: - specifier: ~5.7.0 - version: 5.7.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.4.0)(webpack@5.91.0) - loader.js: - specifier: ^4.7.0 - version: 4.7.0 - terser-webpack-plugin: - specifier: ^5.3.10 - version: 5.3.10(webpack@5.91.0) - zlib: - specifier: 1.0.5 - version: 1.0.5 - dependenciesMeta: - '@ember/string': - injected: true - ember-data: - injected: true - - tests/recommended-json-api: - dependencies: - pnpm-sync-dependencies-meta-injected: - specifier: 0.0.10 - version: 0.0.10 - devDependencies: - '@babel/core': - specifier: ^7.24.1 - version: 7.24.3(supports-color@8.1.1) - '@babel/runtime': - specifier: ^7.24.1 - version: 7.24.1 - '@ember-data/debug': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/debug(@ember-data/store@5.4.0-alpha.43)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) - '@ember-data/graph': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/graph(@babel/core@7.24.3)(@ember-data/store@5.4.0-alpha.43)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) - '@ember-data/json-api': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/json-api(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.43)(@ember-data/request-utils@5.4.0-alpha.43)(@ember-data/store@5.4.0-alpha.43)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29)(ember-inflector@4.0.2) - '@ember-data/legacy-compat': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/legacy-compat(@babel/core@7.24.3)(@ember-data/graph@5.4.0-alpha.43)(@ember-data/json-api@5.4.0-alpha.43)(@ember-data/request@5.4.0-alpha.43)(@ember-data/store@5.4.0-alpha.43)(@warp-drive/core-types@0.0.0-alpha.29) - '@ember-data/model': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/model(@babel/core@7.24.3)(@ember-data/debug@5.4.0-alpha.43)(@ember-data/graph@5.4.0-alpha.43)(@ember-data/json-api@5.4.0-alpha.43)(@ember-data/legacy-compat@5.4.0-alpha.43)(@ember-data/store@5.4.0-alpha.43)(@ember-data/tracking@5.4.0-alpha.43)(@ember/string@3.1.1)(@warp-drive/core-types@0.0.0-alpha.29)(ember-inflector@4.0.2) - '@ember-data/private-build-infra': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/private-build-infra(@glint/template@1.4.0) - '@ember-data/request': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) - '@ember-data/request-utils': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/request-utils(@babel/core@7.24.3)(@warp-drive/core-types@0.0.0-alpha.29) - '@ember-data/store': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.43)(@ember-data/tracking@5.4.0-alpha.43)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) - '@ember-data/tracking': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/tracking(@babel/core@7.24.3)(@glint/template@1.4.0) - '@ember-data/unpublished-test-infra': - specifier: workspace:5.4.0-alpha.43 - version: file:packages/unpublished-test-infra(@babel/core@7.24.3)(@ember/string@3.1.1)(@embroider/addon-shim@1.8.7)(ember-cli-test-loader@3.1.0)(ember-cli@5.7.0)(ember-source@5.7.0) - '@ember/edition-utils': - specifier: ^1.2.0 - version: 1.2.0 - '@ember/optional-features': - specifier: ^2.1.0 - version: 2.1.0 - '@ember/string': - specifier: 3.1.1 - version: 3.1.1(@babel/core@7.24.3) - '@ember/test-helpers': - specifier: ^3.3.0 - version: 3.3.0(patch_hash=gppmtiox6pymwamrfimkbxfrsm)(@babel/core@7.24.3)(@glint/template@1.4.0)(ember-source@5.7.0)(webpack@5.91.0) - '@embroider/compat': - specifier: ^3.4.6 - version: 3.4.6(@embroider/core@3.4.6) - '@embroider/core': - specifier: ^3.4.6 - version: 3.4.6(@glint/template@1.4.0) - '@embroider/webpack': - specifier: ^3.2.2 - version: 3.2.2(@embroider/core@3.4.6)(webpack@5.91.0) - '@glimmer/component': - specifier: ^1.1.2 - version: 1.1.2(@babel/core@7.24.3) - '@glimmer/tracking': - specifier: ^1.1.2 - version: 1.1.2 - '@html-next/vertical-collection': - specifier: ^4.0.2 - version: 4.0.2(@babel/core@7.24.3) - '@types/morgan': - specifier: ^1.9.9 - version: 1.9.9 - '@warp-drive/core-types': - specifier: workspace:0.0.0-alpha.29 - version: file:packages/core-types(@babel/core@7.24.3)(@glint/template@1.4.0) - '@warp-drive/internal-config': - specifier: workspace:5.4.0-alpha.43 - version: link:../../config - ember-auto-import: - specifier: ^2.7.0 - version: 2.7.2(@glint/template@1.4.0)(webpack@5.91.0) - ember-cli: - specifier: ~5.7.0 - version: 5.7.0 - ember-cli-babel: - specifier: ^8.2.0 - version: 8.2.0(@babel/core@7.24.3) - ember-cli-dependency-checker: - specifier: ^3.3.2 - version: 3.3.2(ember-cli@5.7.0) - ember-cli-htmlbars: - specifier: ^6.3.0 - version: 6.3.0 - ember-cli-inject-live-reload: - specifier: ^2.1.0 - version: 2.1.0 - ember-cli-sri: - specifier: ^2.1.1 - version: 2.1.1 - ember-cli-terser: - specifier: ~4.0.2 - version: 4.0.2 - ember-cli-test-loader: - specifier: ^3.1.0 - version: 3.1.0(@babel/core@7.24.3) - ember-disable-prototype-extensions: - specifier: ^1.1.3 - version: 1.1.3 - ember-inflector: - specifier: ^4.0.2 - version: 4.0.2(@babel/core@7.24.3) - ember-load-initializers: - specifier: ^2.1.2 - version: 2.1.2(@babel/core@7.24.3) - ember-maybe-import-regenerator: - specifier: ^1.0.0 - version: 1.0.0(@babel/core@7.24.3) - ember-page-title: - specifier: ^8.2.3 - version: 8.2.3(ember-source@5.7.0) - ember-qunit: - specifier: ^8.0.2 - version: 8.0.2(@babel/core@7.24.3)(@ember/test-helpers@3.3.0)(ember-source@5.7.0)(qunit@2.19.4) - ember-resolver: - specifier: ^11.0.1 - version: 11.0.1(@babel/core@7.24.3)(ember-source@5.7.0) - ember-source: - specifier: ~5.7.0 - version: 5.7.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.4.0)(webpack@5.91.0) - ember-source-channel-url: - specifier: ^3.0.0 - version: 3.0.0 - ember-try: - specifier: ^3.0.0 - version: 3.0.0 - express: - specifier: ^4.18.3 - version: 4.18.3 - glob: - specifier: ^10.3.10 - version: 10.3.10 - loader.js: - specifier: ^4.7.0 - version: 4.7.0 - morgan: - specifier: ^1.10.0 - version: 1.10.0 - qunit: - specifier: 2.19.4 - version: 2.19.4(patch_hash=h2fz5inojlzu6daraxt5bghsqy) - qunit-console-grouper: - specifier: ^0.3.0 - version: 0.3.0 - qunit-dom: - specifier: ^3.0.0 - version: 3.0.0 - silent-error: - specifier: ^1.1.1 - version: 1.1.1 - typescript: - specifier: ^5.4.3 - version: 5.4.3 - webpack: - specifier: ^5.91.0 - version: 5.91.0 + specifier: ^1.0.0 + version: 1.0.0(@babel/core@7.24.3) + ember-resolver: + specifier: ^11.0.1 + version: 11.0.1(@babel/core@7.24.3)(ember-source@5.7.0) + ember-source: + specifier: ~5.7.0 + version: 5.7.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.4.0)(webpack@5.91.0) + loader.js: + specifier: ^4.7.0 + version: 4.7.0 + terser-webpack-plugin: + specifier: ^5.3.10 + version: 5.3.10(webpack@5.91.0) + zlib: + specifier: 1.0.5 + version: 1.0.5 dependenciesMeta: - '@ember-data/debug': - injected: true - '@ember-data/graph': - injected: true - '@ember-data/json-api': - injected: true - '@ember-data/legacy-compat': - injected: true - '@ember-data/model': - injected: true - '@ember-data/private-build-infra': - injected: true - '@ember-data/request': - injected: true - '@ember-data/request-utils': - injected: true - '@ember-data/store': - injected: true - '@ember-data/tracking': - injected: true - '@ember-data/unpublished-test-infra': - injected: true '@ember/string': injected: true - '@warp-drive/core-types': - injected: true - ember-inflector: + ember-data: injected: true tests/warp-drive__ember: @@ -4416,10 +4421,10 @@ importers: version: 1.1.2 '@glint/environment-ember-loose': specifier: ^1.3.0 - version: 1.3.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0) + version: 1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0) '@glint/environment-ember-template-imports': specifier: ^1.3.0 - version: 1.3.0(@glint/environment-ember-loose@1.3.0)(@glint/template@1.4.0) + version: 1.4.0(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0) '@glint/template': specifier: ^1.4.0 version: 1.4.0 @@ -4900,8 +4905,8 @@ packages: dependencies: '@babel/types': 7.24.0 - /@babel/helper-module-imports@7.24.1: - resolution: {integrity: sha512-HfEWzysMyOa7xI5uQHc/OcZf67/jc+xe/RZlznWQHhbb8Pg1SkRdbK4yEi61aY8wxQA7PkSfoojtLQP/Kpe3og==} + /@babel/helper-module-imports@7.24.3: + resolution: {integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.24.0 @@ -4914,7 +4919,7 @@ packages: dependencies: '@babel/core': 7.24.3(supports-color@8.1.1) '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.1 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 @@ -5287,8 +5292,8 @@ packages: '@babel/core': 7.24.3(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-async-generator-functions@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-OTkLJM0OtmzcpOgF7MREERUCdCnCBtBsq3vVFbuq/RKMK0/jdYqdMexWi3zNs7Nzd95ase65MbTGrpFJflOb6A==} + /@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.3): + resolution: {integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5306,7 +5311,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.3(supports-color@8.1.1) - '@babel/helper-module-imports': 7.24.1 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.3) @@ -5676,17 +5681,17 @@ packages: '@babel/core': 7.24.3(supports-color@8.1.1) '@babel/helper-plugin-utils': 7.24.0 - /@babel/plugin-transform-runtime@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-yHLX14/T+tO0gjgJroDb8JYjOcQuzVC+Brt4CjHAxq/Ghw4xBVG+N02d1rMEcyUnKUQBL4Yy2gA9R72GK961jQ==} + /@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.3): + resolution: {integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.24.3(supports-color@8.1.1) - '@babel/helper-module-imports': 7.24.1 + '@babel/helper-module-imports': 7.24.3 '@babel/helper-plugin-utils': 7.24.0 babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) - babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.3) babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) semver: 6.3.1 transitivePeerDependencies: @@ -5789,8 +5794,8 @@ packages: '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.3) '@babel/helper-plugin-utils': 7.24.0 - /@babel/preset-env@7.24.1(@babel/core@7.24.3): - resolution: {integrity: sha512-CwCMz1Z28UHLI2iE+cbnWT2epPMV9bzzoBGM6A3mOS22VQd/1TPoWItV7S7iL9TkPmPEf5L/QzurmztyyDN9FA==} + /@babel/preset-env@7.24.3(@babel/core@7.24.3): + resolution: {integrity: sha512-fSk430k5c2ff8536JcPvPWK4tZDwehWLGlBp0wrsBUjZVdeQV6lePbwKWZaZfK2vnh/1kQX1PzAJWsnBmVgGJA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -5823,7 +5828,7 @@ packages: '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.3) '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.3) '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-async-generator-functions': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-block-scoping': 7.24.1(@babel/core@7.24.3) @@ -5872,7 +5877,7 @@ packages: '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.3) '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.3) babel-plugin-polyfill-corejs2: 0.4.10(@babel/core@7.24.3) - babel-plugin-polyfill-corejs3: 0.10.1(@babel/core@7.24.3) + babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.3) babel-plugin-polyfill-regenerator: 0.6.1(@babel/core@7.24.3) core-js-compat: 3.36.1 semver: 6.3.1 @@ -5930,7 +5935,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.1 + '@babel/generator': 7.23.6 '@babel/helper-environment-visitor': 7.22.20 '@babel/helper-function-name': 7.23.0 '@babel/helper-hoist-variables': 7.22.5 @@ -6041,6 +6046,30 @@ packages: - webpack patched: true + /@ember/test-helpers@3.3.0(patch_hash=gppmtiox6pymwamrfimkbxfrsm)(@babel/core@7.24.3)(ember-source@5.6.0)(webpack@5.91.0): + resolution: {integrity: sha512-HEI28wtjnQuEj9+DstHUEEKPtqPAEVN9AAVr4EifVCd3DyEDy0m6hFT4qbap1WxAIktLja2QXGJg50lVWzZc5g==} + engines: {node: 16.* || >= 18} + peerDependencies: + ember-source: '*' + dependencies: + '@ember/test-waiters': 3.1.0(@babel/core@7.24.3) + '@embroider/macros': 1.15.0(@glint/template@1.4.0) + '@simple-dom/interface': 1.4.0 + broccoli-debug: 0.6.5 + broccoli-funnel: 3.0.8 + dom-element-descriptors: 0.5.0 + ember-auto-import: 2.7.2(@glint/template@1.4.0)(webpack@5.91.0) + ember-cli-babel: 8.2.0(@babel/core@7.24.3) + ember-cli-htmlbars: 6.3.0 + ember-source: 5.6.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(webpack@5.91.0) + transitivePeerDependencies: + - '@babel/core' + - '@glint/template' + - supports-color + - webpack + dev: true + patched: true + /@ember/test-helpers@3.3.0(patch_hash=gppmtiox6pymwamrfimkbxfrsm)(@babel/core@7.24.3)(ember-source@5.7.0): resolution: {integrity: sha512-HEI28wtjnQuEj9+DstHUEEKPtqPAEVN9AAVr4EifVCd3DyEDy0m6hFT4qbap1WxAIktLja2QXGJg50lVWzZc5g==} engines: {node: 16.* || >= 18} @@ -6134,8 +6163,8 @@ packages: '@babel/code-frame': 7.24.2 '@babel/core': 7.24.3(supports-color@8.1.1) '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.3) - '@babel/plugin-transform-runtime': 7.24.1(@babel/core@7.24.3) - '@babel/preset-env': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.3) + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) '@babel/runtime': 7.24.1 '@babel/traverse': 7.24.1(supports-color@8.1.1) '@embroider/core': 3.4.6(@glint/template@1.4.0) @@ -6198,7 +6227,7 @@ packages: broccoli-source: 3.0.1 debug: 4.3.4(supports-color@8.1.1) fast-sourcemap-concat: 1.4.0 - filesize: 10.1.0 + filesize: 10.1.1 fs-extra: 9.1.0 fs-tree-diff: 2.0.1 handlebars: 4.7.8 @@ -6346,6 +6375,17 @@ packages: resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} dev: true + /@glimmer/compiler@0.85.13: + resolution: {integrity: sha512-To8a+yScHAHE9/PpwuHyz2yYTBM2+m1Z6l4B9A6LgjkKeu0K7plv2c03V9JpsA3mMJBROJ1mfxOUuQsvTidEkg==} + engines: {node: '>= 16.0.0'} + dependencies: + '@glimmer/interfaces': 0.85.13 + '@glimmer/syntax': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/vm': 0.85.13 + '@glimmer/wire-format': 0.85.13 + dev: true + /@glimmer/compiler@0.87.1: resolution: {integrity: sha512-7qXrOv55cH/YW+Vs4dFkNJsNXAW/jP+7kZLhKcH8wCduPfBCQxb9HNh1lBESuFej2rCks6h9I1qXeZHkc/oWxQ==} engines: {node: '>= 16.0.0'} @@ -6378,6 +6418,14 @@ packages: - '@babel/core' - supports-color + /@glimmer/debug@0.85.13: + resolution: {integrity: sha512-BguKA6RXbCskyRHfJn+Tm/z0aBwefgYQ4RFz/0lVqYB3lJz8Oo02SDrtHQTwBMC9x/nF9GVA//60R4P47aryWg==} + dependencies: + '@glimmer/interfaces': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/vm': 0.85.13 + dev: true + /@glimmer/debug@0.87.1: resolution: {integrity: sha512-rja9/Hofv1NEjIqp8P2eQuHY3+orlS3BL4fbFyvrE+Pw4lRwQPLm6UdgCMHZGGe9yweZAGvNVH6CimDBq7biwA==} dependencies: @@ -6385,6 +6433,15 @@ packages: '@glimmer/util': 0.87.1 '@glimmer/vm': 0.87.1 + /@glimmer/destroyable@0.85.13: + resolution: {integrity: sha512-fE3bhjDAzYsYQ+rm1qlu+6kP8f0CClHYynp1CWhskDc+qM0Jt7Up08htZK8/Ttaw7RXgi43Fe7FrQtOMUlrVlg==} + dependencies: + '@glimmer/env': 0.1.7 + '@glimmer/global-context': 0.85.13 + '@glimmer/interfaces': 0.85.13 + '@glimmer/util': 0.85.13 + dev: true + /@glimmer/destroyable@0.87.1: resolution: {integrity: sha512-v9kdMq/FCSMcXK4gIKxPCSEcYXjDAnapKVY2o9fCgqky+mbpd0XuGoxaXa35nFwDk69L/9/8B3vXQOpa6ThikA==} dependencies: @@ -6396,6 +6453,13 @@ packages: /@glimmer/di@0.1.11: resolution: {integrity: sha512-moRwafNDwHTnTHzyyZC9D+mUSvYrs1Ak0tRPjjmCghdoHHIvMshVbEnwKb/1WmW5CUlKc2eL9rlAV32n3GiItg==} + /@glimmer/encoder@0.85.13: + resolution: {integrity: sha512-GukVAeHxDAucbiExjl8lV8BYQXTkV2Co8IXnX5vKaomcZ+fwudGmvzbo2myq+WZ1llqnkZ45DVcqa9BVh9eNWg==} + dependencies: + '@glimmer/interfaces': 0.85.13 + '@glimmer/vm': 0.85.13 + dev: true + /@glimmer/encoder@0.87.1: resolution: {integrity: sha512-5oZEkdtYcAbkiWuXFQ8ofSEGH5uzqi86WK9/IXb7Qn4t6o7ixadWk8nhtORRpVS1u4FpAjhsAysnzRFoNqJwbQ==} dependencies: @@ -6405,6 +6469,10 @@ packages: /@glimmer/env@0.1.7: resolution: {integrity: sha512-JKF/a9I9jw6fGoz8kA7LEQslrwJ5jms5CXhu/aqkBWk+PmZ6pTl8mlb/eJ/5ujBGTiQzBhy5AIWF712iA+4/mw==} + /@glimmer/global-context@0.85.13: + resolution: {integrity: sha512-JY/TQ+9dyukQVuTwKlF3jVXaWUwxx676KtclYf6SphtJQu2/mysxqj9XIAowOahhi9m7E7hzHkxAl9bm2FXXjQ==} + dev: true + /@glimmer/global-context@0.87.1: resolution: {integrity: sha512-Mitr7pBeVDTplFWlohyzxWLpFll7ffMZN+fnkBmUj8HiDLbD790Lb8lR9B2nL3t4RGnh6W9kDkCnZB+hvDm/eQ==} @@ -6416,6 +6484,12 @@ packages: dependencies: '@simple-dom/interface': 1.4.0 + /@glimmer/interfaces@0.85.13: + resolution: {integrity: sha512-qOEdvFgCQX1g+Gfi/nA2zbKYPmEkEbhFgzZ5esgmlQNOSQx4j8nyGiBvnG/vepHrh4wUzTvIynrCQpfr3SiKXg==} + dependencies: + '@simple-dom/interface': 1.4.0 + dev: true + /@glimmer/interfaces@0.87.1: resolution: {integrity: sha512-2lbwLY4Bt9i2SvwT4hhY0TgEYKhOMQBgYvRiraq2BYHwO8iLKh3lC8iO3d+rQ3VgDtQ9i/sP6HG848VNRyVHxA==} dependencies: @@ -6431,6 +6505,20 @@ packages: dependencies: '@simple-dom/interface': 1.4.0 + /@glimmer/manager@0.85.13: + resolution: {integrity: sha512-HwJoD9qAVPQ6hHNMUFTvQtJi5NIO1JzOT0kauyln754G6ggT07IFmi+b1R4WeJJJndZpuR3Ad4PS4usRnI89Zw==} + dependencies: + '@glimmer/debug': 0.85.13 + '@glimmer/destroyable': 0.85.13 + '@glimmer/env': 0.1.7 + '@glimmer/global-context': 0.85.13 + '@glimmer/interfaces': 0.85.13 + '@glimmer/reference': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/validator': 0.89.0 + '@glimmer/vm': 0.85.13 + dev: true + /@glimmer/manager@0.87.1: resolution: {integrity: sha512-jEUZZQWcuxKg+Ri/A1HGURm9pBrx13JDHx1djYCnPo96yjtQFYxEG0VcwLq2EtAEpFrekwfO1b6m3JZiFqmtGg==} dependencies: @@ -6444,6 +6532,15 @@ packages: '@glimmer/validator': 0.89.0 '@glimmer/vm': 0.87.1 + /@glimmer/node@0.85.13: + resolution: {integrity: sha512-Lb/0zPoucm8hQ/qd6A8RYgdoLSC5tulZJ7LahAq1/bpG42vJyQMGYBjxVL2ffQv+Yxao/nEQxUP5ssoLXS+gvw==} + dependencies: + '@glimmer/interfaces': 0.85.13 + '@glimmer/runtime': 0.85.13 + '@glimmer/util': 0.85.13 + '@simple-dom/document': 1.4.0 + dev: true + /@glimmer/node@0.87.1: resolution: {integrity: sha512-peESyArA08Va9f3gpBnhO+RNkK4Oe0Q8sMPQILCloAukNe2+DQOhTvDgVjRUKmVXMJCWoSgmJtxkiB3ZE193vw==} dependencies: @@ -6452,6 +6549,21 @@ packages: '@glimmer/util': 0.87.1 '@simple-dom/document': 1.4.0 + /@glimmer/opcode-compiler@0.85.13: + resolution: {integrity: sha512-EySW/IsMoO+lWW2TC31zsHqanST/5lTGoZOrB9zy7FmiUaPGD0RxeOEBU8rTRHzYxNzoJAsX7l3Hv6Y0y2ABZg==} + dependencies: + '@glimmer/debug': 0.85.13 + '@glimmer/encoder': 0.85.13 + '@glimmer/env': 0.1.7 + '@glimmer/global-context': 0.85.13 + '@glimmer/interfaces': 0.85.13 + '@glimmer/manager': 0.85.13 + '@glimmer/reference': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/vm': 0.85.13 + '@glimmer/wire-format': 0.85.13 + dev: true + /@glimmer/opcode-compiler@0.87.1: resolution: {integrity: sha512-D9OFrH3CrGNXfGtgcVWvu3xofpQZPoYFkqj3RrcDwnsSIYPSqUYTIOO6dwpxTbPlzkASidq0B2htXK7WkCERVw==} dependencies: @@ -6466,11 +6578,30 @@ packages: '@glimmer/vm': 0.87.1 '@glimmer/wire-format': 0.87.1 + /@glimmer/owner@0.85.13: + resolution: {integrity: sha512-4FhMR9qHuKu7sZIIsulqBvzP9UWYFtjxzF+eQ5cxmr+0uxjJN8/rZbRG8vPbJs3OoV2k+vHj4BYhLyflSjRaZw==} + dependencies: + '@glimmer/util': 0.85.13 + dev: true + /@glimmer/owner@0.87.1: resolution: {integrity: sha512-ayYjznPMSGpgygNT7XlTXeel6Cl/fafm4WJeRRgdPxG1EZMjKPlfpfAyNzf9peEIlW3WMbPu3RAIYrf54aThWQ==} dependencies: '@glimmer/util': 0.87.1 + /@glimmer/program@0.85.13: + resolution: {integrity: sha512-E+89jmD+52fB2/HqeOW2vim1x8wNTkpfPpzsGeVFlyZHxBaMR95zw1+rgl2aE1pyRoZR3csL4qSBaJb26Sp6Pw==} + dependencies: + '@glimmer/encoder': 0.85.13 + '@glimmer/env': 0.1.7 + '@glimmer/interfaces': 0.85.13 + '@glimmer/manager': 0.85.13 + '@glimmer/opcode-compiler': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/vm': 0.85.13 + '@glimmer/wire-format': 0.85.13 + dev: true + /@glimmer/program@0.87.1: resolution: {integrity: sha512-+r1Dz5Da0zyYwBhPmqoXiw3qmDamqqhVmSCtJLLcZ6exXXC2ZjGoNdynfos80A91dx+PFqYgHg+5lfa5STT9iQ==} dependencies: @@ -6483,6 +6614,16 @@ packages: '@glimmer/vm': 0.87.1 '@glimmer/wire-format': 0.87.1 + /@glimmer/reference@0.85.13: + resolution: {integrity: sha512-rkMlY6RUkwZwfO7fQodKQw5WOLCKNZPkVAloaVJSqpyKjHRNjMaD3TZhfNmlGIVdNgVRRsOWSWdTL5CUUzDlwQ==} + dependencies: + '@glimmer/env': 0.1.7 + '@glimmer/global-context': 0.85.13 + '@glimmer/interfaces': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/validator': 0.89.0 + dev: true + /@glimmer/reference@0.87.1: resolution: {integrity: sha512-KJwKYDnds6amsmVB1YxmFhJGI/TNCNmsFBWKUH8K0odmiggUCjt3AwUoOKztkwh3xxy/jpq+5AahIuV+uBgW7A==} dependencies: @@ -6492,6 +6633,23 @@ packages: '@glimmer/util': 0.87.1 '@glimmer/validator': 0.89.0 + /@glimmer/runtime@0.85.13: + resolution: {integrity: sha512-jum5u2mX0WOAAF3L0pVZ/AOAMjJRKfGIqcStUYldmnf/xCFucKsh2WzSBS5KxlHDt4OGs00GflkpoTZkqPnCmg==} + dependencies: + '@glimmer/destroyable': 0.85.13 + '@glimmer/env': 0.1.7 + '@glimmer/global-context': 0.85.13 + '@glimmer/interfaces': 0.85.13 + '@glimmer/manager': 0.85.13 + '@glimmer/owner': 0.85.13 + '@glimmer/program': 0.85.13 + '@glimmer/reference': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/validator': 0.89.0 + '@glimmer/vm': 0.85.13 + '@glimmer/wire-format': 0.85.13 + dev: true + /@glimmer/runtime@0.87.1: resolution: {integrity: sha512-7QBONxRFesnHzelCiUahZjRj3nhbUxPg0F+iD+3rALrXaWfB1pkhngMTK2DYEmsJ7kq04qVzwBnTSrqsmLzOTg==} dependencies: @@ -6517,6 +6675,17 @@ packages: '@handlebars/parser': 2.0.0 simple-html-tokenizer: 0.5.11 + /@glimmer/syntax@0.85.13: + resolution: {integrity: sha512-zMGkJh6JcHdCTx1emmBbhBrGO04gqD6CS5khmDwSJCIpVHnGH0Ejxp9rpnSMc5IW71/hFoQY6RlMgVYF2hrHhA==} + dependencies: + '@glimmer/env': 0.1.7 + '@glimmer/interfaces': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/wire-format': 0.85.13 + '@handlebars/parser': 2.0.0 + simple-html-tokenizer: 0.5.11 + dev: true + /@glimmer/syntax@0.87.1: resolution: {integrity: sha512-zYzZT6LgpSF0iv5iuxmMV5Pf52aE8dukNC2KfrHC6gXJfM4eLZMZcyk76NW5m+SEetZSOXX6AWv/KwLnoxiMfQ==} dependencies: @@ -6553,6 +6722,13 @@ packages: '@glimmer/interfaces': 0.84.3 '@simple-dom/interface': 1.4.0 + /@glimmer/util@0.85.13: + resolution: {integrity: sha512-ogj65iukNKEPPqQ2bOD6CLsqxsFwmiGvTQbAsg1eh1MoPjxhNZMpLsT5CdQ10XE7yUALHGJ71SwxBSpAOGDmxg==} + dependencies: + '@glimmer/env': 0.1.7 + '@glimmer/interfaces': 0.85.13 + dev: true + /@glimmer/util@0.87.1: resolution: {integrity: sha512-Duxi2JutaIewfIWp8PJl7U5n12yasKWtZFHNLSrg+C8TKeMXdRyJtI7uqtqg0Z/6F9JwdJe/IPhTvdsTTfzAuA==} dependencies: @@ -6579,6 +6755,15 @@ packages: '@glimmer/interfaces': 0.89.0 '@glimmer/util': 0.89.0 + /@glimmer/vm-babel-plugins@0.85.13(@babel/core@7.24.3): + resolution: {integrity: sha512-B5R+t7o0Dlfz7GYu6liQ/GERAq/Fb775KZJeEaIwX2odJDKyIfOU+m/bLHpoVevY4V/x+qB8tVCA4Nv5LXu3Kg==} + engines: {node: '>=16'} + dependencies: + babel-plugin-debug-macros: 0.3.4(@babel/core@7.24.3) + transitivePeerDependencies: + - '@babel/core' + dev: true + /@glimmer/vm-babel-plugins@0.87.1(@babel/core@7.24.3): resolution: {integrity: sha512-VbhYHa+HfGFiTIOOkvFuYPwBTaDvWTAR1Q55RI25JI6Nno0duBLB3UVRTDgHM+iOfbgRN7OSR5XCe/C5X5C5LA==} engines: {node: '>=16'} @@ -6587,12 +6772,26 @@ packages: transitivePeerDependencies: - '@babel/core' + /@glimmer/vm@0.85.13: + resolution: {integrity: sha512-x/FwTAFnoIzu/TzJYuqWI1rWoIJUthKZ6n37q5Nr8TVoFqOVXk7q9k53etcAhxLEwBjX/cox6i1FxCuv5vpc8Q==} + dependencies: + '@glimmer/interfaces': 0.85.13 + '@glimmer/util': 0.85.13 + dev: true + /@glimmer/vm@0.87.1: resolution: {integrity: sha512-JSFr85ASZmuN4H72px7GHtnW79PPRHpqHw6O/6UUZd+ocwWHy+nG9JGbo8kntvqN5xP0SdCipjv/c0u7nkc8tg==} dependencies: '@glimmer/interfaces': 0.87.1 '@glimmer/util': 0.87.1 + /@glimmer/wire-format@0.85.13: + resolution: {integrity: sha512-q6bHPfjSYE9jH27L75lUzyhSpBA+iONzsJVXewdwO4GdYYCC4s+pfUaJg7ZYNFDcHDuVKUcLhBb/NICDzMA5Uw==} + dependencies: + '@glimmer/interfaces': 0.85.13 + '@glimmer/util': 0.85.13 + dev: true + /@glimmer/wire-format@0.87.1: resolution: {integrity: sha512-O3W1HDfRGX7wHZqvP8UzI/nWyZ2GIMFolU7l6WcLGU9HIdzqfxsc7ae2Icob/fq2kV9meHti4yDEdTMlBVK9AQ==} dependencies: @@ -6605,8 +6804,8 @@ packages: '@glimmer/interfaces': 0.88.1 '@glimmer/util': 0.88.1 - /@glint/core@1.3.0(typescript@5.4.3): - resolution: {integrity: sha512-R5Y1QmkZs6lJHQ0LTRRcTKDI1EdeM32YuR2J67LG4qKT+WUNZhmetkqPiAMW9hQAOdrG/PqDZWV+J7Jf3xOlAg==} + /@glint/core@1.4.0(typescript@5.4.3): + resolution: {integrity: sha512-nq27a/1R6kc3lsuciz8z9IZO1NQCbNkEBxf5KJI7AUrnps6RzQzmq3pmwO24zQYmFcH4sqpod8fleNIpg8YEqg==} hasBin: true peerDependencies: typescript: '*' @@ -6625,8 +6824,8 @@ packages: - supports-color dev: true - /@glint/environment-ember-loose@1.3.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0): - resolution: {integrity: sha512-kURIttax2zG1oYniJ4bd3rhJRuP588Ld4YAG5EFzjg4s01oLQKpfNskxwSwox07PUkygm2D+9v3Foo2TlYJSSg==} + /@glint/environment-ember-loose@1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0): + resolution: {integrity: sha512-vFR3qgPTisGzS36e04195wTUrtUc6GuVwm6hsC/XXx6PeRw/6rtMxhK08Aw/VtDc00UqQzM9sIEghPVKHwqVVQ==} peerDependencies: '@glimmer/component': ^1.1.2 '@glint/template': ^1.4.0 @@ -6658,10 +6857,10 @@ packages: ember-cli-htmlbars: 6.3.0 dev: true - /@glint/environment-ember-template-imports@1.3.0(@glint/environment-ember-loose@1.3.0)(@glint/template@1.4.0): - resolution: {integrity: sha512-ynSc3AeFE4ZocvjI4rTS55L5sSrMexMvRtOYbVuY/u9t0PGXDjFuH/OiRiSCbHIL/jYH5Ie5uASZxs7TTCT8dw==} + /@glint/environment-ember-template-imports@1.4.0(@glint/environment-ember-loose@1.4.0)(@glint/template@1.4.0): + resolution: {integrity: sha512-VXcUgea92l7NFShU26rpQn+hYUZ7ex/rNtU9vnw2BAVZaPfxZROokW8ABj8aMaCUDe60CoMVZ1/QSeONSCln3w==} peerDependencies: - '@glint/environment-ember-loose': ^1.3.0 + '@glint/environment-ember-loose': ^1.4.0 '@glint/template': ^1.4.0 '@types/ember__component': ^4.0.10 '@types/ember__helper': ^4.0.1 @@ -6677,11 +6876,9 @@ packages: '@types/ember__routing': optional: true dependencies: - '@glint/environment-ember-loose': 1.3.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0) + '@glint/environment-ember-loose': 1.4.0(@glimmer/component@1.1.2)(@glint/template@1.4.0)(ember-cli-htmlbars@6.3.0) '@glint/template': 1.4.0 - ember-template-imports: 3.4.2 - transitivePeerDependencies: - - supports-color + content-tag: 2.0.1 dev: true /@glint/template@1.4.0: @@ -7307,7 +7504,7 @@ packages: optional: true dependencies: '@babel/core': 7.24.3(supports-color@8.1.1) - '@babel/helper-module-imports': 7.24.1 + '@babel/helper-module-imports': 7.24.3 '@rollup/pluginutils': 5.1.0(rollup@4.13.0) rollup: 4.13.0 dev: true @@ -7536,10 +7733,10 @@ packages: /@types/chai-as-promised@7.1.8: resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} dependencies: - '@types/chai': 4.3.13 + '@types/chai': 4.3.14 - /@types/chai@4.3.13: - resolution: {integrity: sha512-+LxQEbg4BDUf88utmhpUpTyYn1zHao443aGnXIAQak9ZMt9Rtsic0Oig0OS1xyIqdDXc5uMekoC6NaiUlkT/qA==} + /@types/chai@4.3.14: + resolution: {integrity: sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==} /@types/connect@3.4.38: resolution: {integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==} @@ -7573,7 +7770,7 @@ packages: resolution: {integrity: sha512-oaYtiBirUOPQGSWNGPWnzyAFJ0BP3cwvN4oWZQY+zUBwpVIGsKUkpBpSztp74drYcjavs7SKFZ4DX1V2QeN8rg==} dependencies: '@types/node': 20.11.30 - '@types/qs': 6.9.13 + '@types/qs': 6.9.14 '@types/range-parser': 1.2.7 '@types/send': 0.17.4 @@ -7582,7 +7779,7 @@ packages: dependencies: '@types/body-parser': 1.19.5 '@types/express-serve-static-core': 4.17.43 - '@types/qs': 6.9.13 + '@types/qs': 6.9.14 '@types/serve-static': 1.15.5 /@types/fs-extra@8.1.5: @@ -7647,8 +7844,8 @@ packages: dependencies: undici-types: 5.26.5 - /@types/qs@6.9.13: - resolution: {integrity: sha512-iLR+1vTTJ3p0QaOUq6ACbY1mzKTODFDT/XedZI8BksOotFmL4ForwDfRQ/DZeuTHR7/2i4lI1D203gdfxuqTlA==} + /@types/qs@6.9.14: + resolution: {integrity: sha512-5khscbd3SwWMhFqylJBLQ0zIu7c1K6Vz0uBIt915BI3zV0q1nfjRQD3RqSBcPaO6PHEF4ov/t9y89fSiyThlPA==} /@types/qunit@2.19.10: resolution: {integrity: sha512-gVB+rxvxmbyPFWa6yjjKgcumWal3hyqoTXI0Oil161uWfo1OCzWZ/rnEumsx+6uVgrwPrCrhpQbLkzfildkSbg==} @@ -8270,15 +8467,16 @@ packages: resolution: {integrity: sha512-gUHx76KtnhEgB3HOuFYiCm3FIdEs6ocM2asHvNTkfu/Y09qQVrrVVaOKENmS2KkSaGoxgXNqC+ZVtR/n0MOkSA==} /array-flatten@1.1.1: - resolution: {integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==} + resolution: {integrity: sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=} - /array-includes@3.1.7: - resolution: {integrity: sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==} + /array-includes@3.1.8: + resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.2 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 is-string: 1.0.7 dev: false @@ -8585,11 +8783,6 @@ packages: - supports-color dev: true - /babel-import-util@0.2.0: - resolution: {integrity: sha512-CtWYYHU/MgK88rxMrLfkD356dApswtR/kWZ/c6JifG1m10e7tBBrs/366dFzWMAoqYmG5/JSh+94tUSpIwh+ag==} - engines: {node: '>= 12.*'} - dev: true - /babel-import-util@1.4.1: resolution: {integrity: sha512-TNdiTQdPhXlx02pzG//UyVPSKE7SNWjY0n4So/ZnjQpWwaM5LvWBLkWa1JKll5u06HNscHD91XZPuwrMg1kadQ==} engines: {node: '>= 12.*'} @@ -8696,7 +8889,7 @@ packages: line-column: 1.0.2 magic-string: 0.25.9 parse-static-imports: 1.1.0 - string.prototype.matchall: 4.0.10 + string.prototype.matchall: 4.0.11 /babel-plugin-module-resolver@5.0.0: resolution: {integrity: sha512-g0u+/ChLSJ5+PzYwLwP8Rp8Rcfowz58TJNCe+L/ui4rpzE/mg//JVX0EWBUYoxaextqnwuGHzfGp2hh0PPV25Q==} @@ -8720,8 +8913,8 @@ packages: transitivePeerDependencies: - supports-color - /babel-plugin-polyfill-corejs3@0.10.1(@babel/core@7.24.3): - resolution: {integrity: sha512-XiFei6VGwM4ii6nKC1VCenGD8Z4bjiNYcrdkM8oqM3pbuemmyb8biMgrDX1ZHSbIuMLXatM6JJ/StPYIuTl6MQ==} + /babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.3): + resolution: {integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==} peerDependencies: '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 dependencies: @@ -9707,7 +9900,7 @@ packages: resolution: {integrity: sha512-sWi3b3fTUSVPDsz5KsQ5eCQNVAtLgkIE/HYFkEZXR/07clqmd4E/gFiuwSaqa9b+QTXc1Uemfb7TVWbEIURWDg==} engines: {node: 8.* || >= 10.*} dependencies: - '@types/chai': 4.3.13 + '@types/chai': 4.3.14 '@types/chai-as-promised': 7.1.8 '@types/express': 4.17.21 ansi-html: 0.0.7 @@ -9746,8 +9939,8 @@ packages: resolution: {integrity: sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==} hasBin: true dependencies: - caniuse-lite: 1.0.30001599 - electron-to-chromium: 1.4.711 + caniuse-lite: 1.0.30001600 + electron-to-chromium: 1.4.715 dev: true /browserslist@4.23.0: @@ -9755,8 +9948,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001599 - electron-to-chromium: 1.4.711 + caniuse-lite: 1.0.30001600 + electron-to-chromium: 1.4.715 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.23.0) @@ -9821,7 +10014,7 @@ packages: promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 8.0.1 - tar: 6.2.0 + tar: 6.2.1 unique-filename: 1.1.1 transitivePeerDependencies: - bluebird @@ -9902,8 +10095,8 @@ packages: dependencies: path-temp: 2.1.0 - /caniuse-lite@1.0.30001599: - resolution: {integrity: sha512-LRAQHZ4yT1+f9LemSMeqdMpMxZcc4RMWdj4tiFe3G8tNkWK+E58g+/tzotb5cU6TbcVJLr4fySiAW7XmxQvZQA==} + /caniuse-lite@1.0.30001600: + resolution: {integrity: sha512-+2S9/2JFhYmYaDpZvo0lKkfvuKIglrx68MwOBqMGHhQsNkLjB5xtc/TGoEPs+MxjSyN/72qer2g97nzR641mOQ==} /capture-exit@2.0.0: resolution: {integrity: sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==} @@ -10133,8 +10326,8 @@ packages: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} - /cli-table3@0.6.3: - resolution: {integrity: sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==} + /cli-table3@0.6.4: + resolution: {integrity: sha512-Lm3L0p+/npIQWNIiyF/nAn7T5dnOwR3xNTHXYEBFBFVPXzCVNZ5lqEC/1eo/EVfpDsQ1I+TX4ORPQgp+UI0CRw==} engines: {node: 10.* || >= 12.*} dependencies: string-width: 4.2.3 @@ -10315,7 +10508,7 @@ packages: - supports-color /concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} /config-chain@1.1.13: resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} @@ -10562,14 +10755,14 @@ packages: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} /cookie-signature@1.0.6: - resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} + resolution: {integrity: sha1-4wOogrNCzD7oylE6eZmXNNqzriw=} /cookie@0.4.2: resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} engines: {node: '>= 0.6'} - /cookie@0.5.0: - resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} + /cookie@0.6.0: + resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} engines: {node: '>= 0.6'} /copy-descriptor@0.1.1: @@ -10647,13 +10840,13 @@ packages: webpack: optional: true dependencies: - icss-utils: 5.1.0(postcss@8.4.37) + icss-utils: 5.1.0(postcss@8.4.38) loader-utils: 2.0.4 - postcss: 8.4.37 - postcss-modules-extract-imports: 3.0.0(postcss@8.4.37) - postcss-modules-local-by-default: 4.0.4(postcss@8.4.37) - postcss-modules-scope: 3.1.1(postcss@8.4.37) - postcss-modules-values: 4.0.0(postcss@8.4.37) + postcss: 8.4.38 + postcss-modules-extract-imports: 3.0.0(postcss@8.4.38) + postcss-modules-local-by-default: 4.0.4(postcss@8.4.38) + postcss-modules-scope: 3.1.1(postcss@8.4.38) + postcss-modules-values: 4.0.0(postcss@8.4.38) postcss-value-parser: 4.2.0 schema-utils: 3.3.0 semver: 7.6.0 @@ -11049,10 +11242,10 @@ packages: semver: 6.3.1 /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} - /electron-to-chromium@1.4.711: - resolution: {integrity: sha512-hRg81qzvUEibX2lDxnFlVCHACa+LtrCPIsWAxo161LDYIB3jauf57RGsMZV9mvGwE98yGH06icj3zBEoOkxd/w==} + /electron-to-chromium@1.4.715: + resolution: {integrity: sha512-XzWNH4ZSa9BwVUQSDorPWAUQ5WGuYz7zJUNpNif40zFCiCl20t8zgylmreNmn26h5kiyw2lg7RfTmeMBsDklqg==} /ember-auto-import@2.7.2(@glint/template@1.4.0): resolution: {integrity: sha512-pkWIljmJClYL17YBk8FjO7NrZPQoY9v0b+FooJvaHf/xlDQIBYVP7OaDHbNuNbpj7+wAwSDAnnwxjCoLsmm4cw==} @@ -11063,7 +11256,7 @@ packages: '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.3) '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.3) '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) - '@babel/preset-env': 7.24.1(@babel/core@7.24.3) + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) '@embroider/macros': 1.15.0(@glint/template@1.4.0) '@embroider/shared-internals': 2.5.2(supports-color@8.1.1) babel-loader: 8.3.0(@babel/core@7.24.3)(webpack@5.91.0) @@ -11107,7 +11300,7 @@ packages: '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.3) '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@7.24.3) '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) - '@babel/preset-env': 7.24.1(@babel/core@7.24.3) + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) '@embroider/macros': 1.15.0(@glint/template@1.4.0) '@embroider/shared-internals': 2.5.2(supports-color@8.1.1) babel-loader: 8.3.0(@babel/core@7.24.3)(webpack@5.91.0) @@ -11191,9 +11384,9 @@ packages: '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@7.24.3) '@babel/plugin-transform-class-static-block': 7.24.1(@babel/core@7.24.3) '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.3) - '@babel/plugin-transform-runtime': 7.24.1(@babel/core@7.24.3) + '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.3) '@babel/plugin-transform-typescript': 7.24.1(@babel/core@7.24.3) - '@babel/preset-env': 7.24.1(@babel/core@7.24.3) + '@babel/preset-env': 7.24.3(@babel/core@7.24.3) '@babel/runtime': 7.12.18 amd-name-resolver: 1.3.1 babel-plugin-debug-macros: 0.3.4(@babel/core@7.24.3) @@ -11214,6 +11407,25 @@ packages: transitivePeerDependencies: - supports-color + /ember-cli-blueprint-test-helpers@0.19.2(ember-cli@5.4.1): + resolution: {integrity: sha512-otCKdGcNFK0+MkQo+LLjYbRD9EerApH6Z/odvvlL1hxrN+owHMV5E+jI2rbtdvNEH0/6w5ZqjH4kS232fvtCxQ==} + engines: {node: 6.* || 8.* || >= 10.*} + peerDependencies: + ember-cli: '*' + dependencies: + chai: 4.4.1 + chai-as-promised: 7.1.1(chai@4.4.1) + chai-files: 1.4.0 + debug: 4.3.4(supports-color@8.1.1) + ember-cli: 5.4.1 + ember-cli-internal-test-helpers: 0.9.1 + fs-extra: 7.0.1 + testdouble: 3.20.2 + tmp-sync: 1.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /ember-cli-blueprint-test-helpers@0.19.2(ember-cli@5.7.0): resolution: {integrity: sha512-otCKdGcNFK0+MkQo+LLjYbRD9EerApH6Z/odvvlL1hxrN+owHMV5E+jI2rbtdvNEH0/6w5ZqjH4kS232fvtCxQ==} engines: {node: 6.* || 8.* || >= 10.*} @@ -11227,11 +11439,27 @@ packages: ember-cli: 5.7.0 ember-cli-internal-test-helpers: 0.9.1 fs-extra: 7.0.1 - testdouble: 3.20.1 + testdouble: 3.20.2 tmp-sync: 1.1.2 transitivePeerDependencies: - supports-color + /ember-cli-dependency-checker@3.3.2(ember-cli@5.4.1): + resolution: {integrity: sha512-PwkrW5oYsdPWwt+0Tojufmv/hxVETTjkrEdK7ANQB2VSnqpA5UcYubwpQM9ONuR2J8wyNDMwEHlqIrk/FYtBsQ==} + engines: {node: '>= 6'} + peerDependencies: + ember-cli: ^3.2.0 || >=4.0.0 + dependencies: + chalk: 2.4.2 + ember-cli: 5.4.1 + find-yarn-workspace-root: 1.2.1 + is-git-url: 1.0.0 + resolve: 1.22.8 + semver: 5.7.2 + transitivePeerDependencies: + - supports-color + dev: true + /ember-cli-dependency-checker@3.3.2(ember-cli@5.7.0): resolution: {integrity: sha512-PwkrW5oYsdPWwt+0Tojufmv/hxVETTjkrEdK7ANQB2VSnqpA5UcYubwpQM9ONuR2J8wyNDMwEHlqIrk/FYtBsQ==} engines: {node: '>= 6'} @@ -11477,6 +11705,153 @@ packages: transitivePeerDependencies: - supports-color + /ember-cli@5.4.1: + resolution: {integrity: sha512-+jwp63OPT0zkUnXP563DkIwb1GiI6kGYHg6DyzJKY48BCdevqcgxsMFn8/RENXoF7krg18A5B9cSa8Y1v15tIw==} + engines: {node: '>= 18'} + hasBin: true + dependencies: + '@pnpm/find-workspace-dir': 6.0.3 + broccoli: 3.5.2 + broccoli-builder: 0.18.14 + broccoli-concat: 4.2.5 + broccoli-config-loader: 1.0.1 + broccoli-config-replace: 1.1.2 + broccoli-debug: 0.6.5 + broccoli-funnel: 3.0.8 + broccoli-funnel-reducer: 1.0.0 + broccoli-merge-trees: 4.2.0 + broccoli-middleware: 2.1.1 + broccoli-slow-trees: 3.1.0 + broccoli-source: 3.0.1 + broccoli-stew: 3.0.0 + calculate-cache-key-for-tree: 2.0.0 + capture-exit: 2.0.0 + chalk: 4.1.2 + ci-info: 3.9.0 + clean-base-url: 1.0.0 + compression: 1.7.4 + configstore: 5.0.1 + console-ui: 3.1.2 + core-object: 3.1.5 + dag-map: 2.0.2 + diff: 5.2.0 + ember-cli-is-package-missing: 1.0.0 + ember-cli-lodash-subset: 2.0.1 + ember-cli-normalize-entity-name: 1.0.0 + ember-cli-preprocess-registry: 5.0.1 + ember-cli-string-utils: 1.1.0 + ensure-posix-path: 1.1.1 + execa: 5.1.1 + exit: 0.1.2 + express: 4.19.1 + filesize: 10.1.1 + find-up: 5.0.0 + find-yarn-workspace-root: 2.0.0 + fixturify-project: 2.1.1 + fs-extra: 11.2.0 + fs-tree-diff: 2.0.1 + get-caller-file: 2.0.5 + git-repo-info: 2.1.1 + glob: 8.1.0 + heimdalljs: 0.2.6 + heimdalljs-fs-monitor: 1.1.1 + heimdalljs-graph: 1.0.0 + heimdalljs-logger: 0.1.10 + http-proxy: 1.18.1 + inflection: 2.0.1 + inquirer: 9.2.16 + is-git-url: 1.0.0 + is-language-code: 3.1.0 + isbinaryfile: 5.0.2 + lodash.template: 4.5.0 + markdown-it: 13.0.2 + markdown-it-terminal: 0.4.0(markdown-it@13.0.2) + minimatch: 7.4.6 + morgan: 1.10.0 + nopt: 3.0.6 + npm-package-arg: 10.1.0 + os-locale: 5.0.0 + p-defer: 3.0.0 + portfinder: 1.0.32 + promise-map-series: 0.3.0 + promise.hash.helper: 1.0.8 + quick-temp: 0.1.8 + remove-types: 1.0.0 + resolve: 1.22.8 + resolve-package-path: 4.0.3 + safe-stable-stringify: 2.4.3 + sane: 5.0.1 + semver: 7.6.0 + silent-error: 1.1.1 + sort-package-json: 1.57.0 + symlink-or-copy: 1.3.1 + temp: 0.9.4 + testem: 3.11.0(patch_hash=yfkum5c5nfihh3ce3f64tnp5rq) + tiny-lr: 2.0.0 + tree-sync: 2.1.0 + walk-sync: 3.0.0 + watch-detector: 1.0.2 + workerpool: 6.5.1 + yam: 1.0.0 + transitivePeerDependencies: + - arc-templates + - atpl + - babel-core + - bracket-template + - bufferutil + - coffee-script + - debug + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - underscore + - utf-8-validate + - vash + - velocityjs + - walrus + - whiskers + dev: true + /ember-cli@5.7.0: resolution: {integrity: sha512-MKHVcRpDk1ENUCCRGGqZ8yfkCsszvSUbwO09h14vqcfaqcJkOWI+p0oynmdZQMM8OkZp484oLe3+CZCsXO9LfA==} engines: {node: '>= 18'} @@ -11516,8 +11891,8 @@ packages: ensure-posix-path: 1.1.1 execa: 5.1.1 exit: 0.1.2 - express: 4.18.3 - filesize: 10.1.0 + express: 4.19.1 + filesize: 10.1.1 find-up: 5.0.0 find-yarn-workspace-root: 2.0.0 fixturify-project: 2.1.1 @@ -11664,7 +12039,7 @@ packages: dependencies: '@babel/core': 7.24.3(supports-color@8.1.1) chalk: 5.3.0 - cli-table3: 0.6.3 + cli-table3: 0.6.4 debug: 4.3.4(supports-color@8.1.1) ember-auto-import: 2.7.2(@glint/template@1.4.0)(webpack@5.91.0) ember-cli-babel: 8.2.0(@babel/core@7.24.3) @@ -11726,7 +12101,7 @@ packages: - '@babel/core' - supports-color - /ember-page-title@8.2.3(ember-source@5.7.0): + /ember-page-title@8.2.3(ember-source@5.6.0): resolution: {integrity: sha512-9XH4EVPCpSCyXRsLPzdDydU4HgQnaVeJJTrRF0WVh5bZERI9DgxuHv1NPmZU28todHRH91KcBc5nx8kIVJmqUw==} engines: {node: 16.* || >= 18} peerDependencies: @@ -11734,8 +12109,27 @@ packages: dependencies: '@embroider/addon-shim': 1.8.7 '@simple-dom/document': 1.4.0 - ember-source: 5.7.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.4.0)(webpack@5.91.0) + ember-source: 5.6.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(webpack@5.91.0) + transitivePeerDependencies: + - supports-color + dev: true + + /ember-qunit@8.0.2(@babel/core@7.24.3)(@ember/test-helpers@3.3.0)(ember-source@5.6.0)(qunit@2.19.4): + resolution: {integrity: sha512-Rf60jeUTWNsF3Imf/FLujW/B/DFmKVXKmXO1lirTXjpertKfwRhp/3MnN8a/U/WyodTIsERkInGT1IqTtphCdQ==} + peerDependencies: + '@ember/test-helpers': '>=3.0.3' + ember-source: '*' + qunit: 2.19.4 + dependencies: + '@ember/test-helpers': 3.3.0(patch_hash=gppmtiox6pymwamrfimkbxfrsm)(@babel/core@7.24.3)(ember-source@5.6.0)(webpack@5.91.0) + '@embroider/addon-shim': 1.8.7 + '@embroider/macros': 1.15.0(@glint/template@1.4.0) + ember-cli-test-loader: 3.1.0(@babel/core@7.24.3) + ember-source: 5.6.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(webpack@5.91.0) + qunit: 2.19.4(patch_hash=h2fz5inojlzu6daraxt5bghsqy) transitivePeerDependencies: + - '@babel/core' + - '@glint/template' - supports-color dev: true @@ -11768,6 +12162,22 @@ packages: - supports-color dev: true + /ember-resolver@11.0.1(@babel/core@7.24.3)(ember-source@5.6.0): + resolution: {integrity: sha512-ucBk3oM+PR+AfYoSUXeQh8cDQS1sSiEKp4Pcgbew5cFMSqPxJfqd1zyZsfQKNTuyubeGmWxBOyMVSTvX2LeCyg==} + engines: {node: 14.* || 16.* || >= 18} + peerDependencies: + ember-source: '*' + peerDependenciesMeta: + ember-source: + optional: true + dependencies: + ember-cli-babel: 8.2.0(@babel/core@7.24.3) + ember-source: 5.6.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(webpack@5.91.0) + transitivePeerDependencies: + - '@babel/core' + - supports-color + dev: true + /ember-resolver@11.0.1(@babel/core@7.24.3)(ember-source@5.7.0): resolution: {integrity: sha512-ucBk3oM+PR+AfYoSUXeQh8cDQS1sSiEKp4Pcgbew5cFMSqPxJfqd1zyZsfQKNTuyubeGmWxBOyMVSTvX2LeCyg==} engines: {node: 14.* || 16.* || >= 18} @@ -11818,13 +12228,74 @@ packages: - encoding dev: true + /ember-source@5.6.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(webpack@5.91.0): + resolution: {integrity: sha512-dtxi3cVPT4/+NyhA+a+4UL/i+ut4Fuu3uJAgkVqrN1XlK4TXpyVp9I6VbH7DjD5+LJdF1+UqIn8GJ50dIdoH2Q==} + engines: {node: '>= 16.*'} + peerDependencies: + '@glimmer/component': ^1.1.2 + dependencies: + '@babel/helper-module-imports': 7.24.3 + '@ember/edition-utils': 1.2.0 + '@glimmer/compiler': 0.85.13 + '@glimmer/component': 1.1.2(@babel/core@7.24.3) + '@glimmer/destroyable': 0.85.13 + '@glimmer/env': 0.1.7 + '@glimmer/global-context': 0.85.13 + '@glimmer/interfaces': 0.85.13 + '@glimmer/manager': 0.85.13 + '@glimmer/node': 0.85.13 + '@glimmer/opcode-compiler': 0.85.13 + '@glimmer/owner': 0.85.13 + '@glimmer/program': 0.85.13 + '@glimmer/reference': 0.85.13 + '@glimmer/runtime': 0.85.13 + '@glimmer/syntax': 0.85.13 + '@glimmer/util': 0.85.13 + '@glimmer/validator': 0.89.0 + '@glimmer/vm': 0.85.13 + '@glimmer/vm-babel-plugins': 0.85.13(@babel/core@7.24.3) + '@simple-dom/interface': 1.4.0 + babel-plugin-debug-macros: 0.3.4(@babel/core@7.24.3) + babel-plugin-ember-template-compilation: 2.2.1 + babel-plugin-filter-imports: 4.0.0 + backburner.js: 2.8.0 + broccoli-concat: 4.2.5 + broccoli-debug: 0.6.5 + broccoli-file-creator: 2.1.1 + broccoli-funnel: 3.0.8 + broccoli-merge-trees: 4.2.0 + chalk: 4.1.2 + ember-auto-import: 2.7.2(@glint/template@1.4.0)(webpack@5.91.0) + ember-cli-babel: 8.2.0(@babel/core@7.24.3) + ember-cli-get-component-path-option: 1.0.0 + ember-cli-is-package-missing: 1.0.0 + ember-cli-normalize-entity-name: 1.0.0 + ember-cli-path-utils: 1.0.0 + ember-cli-string-utils: 1.1.0 + ember-cli-typescript-blueprint-polyfill: 0.1.0 + ember-cli-version-checker: 5.1.2 + ember-router-generator: 2.0.0 + inflection: 2.0.1 + route-recognizer: 0.3.4 + router_js: 8.0.5(route-recognizer@0.3.4) + semver: 7.6.0 + silent-error: 1.1.1 + simple-html-tokenizer: 0.5.11 + transitivePeerDependencies: + - '@babel/core' + - '@glint/template' + - rsvp + - supports-color + - webpack + dev: true + /ember-source@5.7.0(@babel/core@7.24.3)(@glimmer/component@1.1.2)(@glint/template@1.4.0): resolution: {integrity: sha512-iOZVyxLBzGewEThDDsNRZ9y02SNH42PWSPC9U4O94pew7ktld3IpIODCDjLCtKWn2zAGM9DhWTMrXz27HI1UKw==} engines: {node: '>= 16.*'} peerDependencies: '@glimmer/component': ^1.1.2 dependencies: - '@babel/helper-module-imports': 7.24.1 + '@babel/helper-module-imports': 7.24.3 '@ember/edition-utils': 1.2.0 '@glimmer/compiler': 0.87.1 '@glimmer/component': 1.1.2(@babel/core@7.24.3) @@ -11885,7 +12356,7 @@ packages: peerDependencies: '@glimmer/component': ^1.1.2 dependencies: - '@babel/helper-module-imports': 7.24.1 + '@babel/helper-module-imports': 7.24.3 '@ember/edition-utils': 1.2.0 '@glimmer/compiler': 0.87.1 '@glimmer/component': 1.1.2(@babel/core@7.24.3) @@ -11949,23 +12420,6 @@ packages: - supports-color dev: true - /ember-template-imports@3.4.2: - resolution: {integrity: sha512-OS8TUVG2kQYYwP3netunLVfeijPoOKIs1SvPQRTNOQX4Pu8xGGBEZmrv0U1YTnQn12Eg+p6w/0UdGbUnITjyzw==} - engines: {node: 12.* || >= 14} - dependencies: - babel-import-util: 0.2.0 - broccoli-stew: 3.0.0 - ember-cli-babel-plugin-helpers: 1.1.1 - ember-cli-version-checker: 5.1.2 - line-column: 1.0.2 - magic-string: 0.25.9 - parse-static-imports: 1.1.0 - string.prototype.matchall: 4.0.10 - validate-peer-dependencies: 1.2.0 - transitivePeerDependencies: - - supports-color - dev: true - /ember-template-imports@4.1.0: resolution: {integrity: sha512-FMC13/FWPZBL4zMkFtspgGqc9zYfrUXf8/MV83Eke3ZYVR4oKb9CuB65BRmgCvFwv8R5PGkpUhks0i5kjYeAHw==} engines: {node: 16.* || >= 18} @@ -12005,7 +12459,7 @@ packages: engines: {node: 16.* || >= 18.*} dependencies: chalk: 4.1.2 - cli-table3: 0.6.3 + cli-table3: 0.6.4 core-object: 3.1.5 debug: 4.3.4(supports-color@8.1.1) ember-try-config: 4.0.0 @@ -12164,11 +12618,11 @@ packages: safe-regex-test: 1.0.3 string.prototype.trim: 1.2.9 string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.7 + string.prototype.trimstart: 1.0.8 typed-array-buffer: 1.0.2 typed-array-byte-length: 1.0.1 typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.5 + typed-array-length: 1.0.6 unbox-primitive: 1.0.2 which-typed-array: 1.1.15 @@ -12239,13 +12693,14 @@ packages: optionalDependencies: source-map: 0.6.1 - /eslint-compat-utils@0.1.2(eslint@8.57.0): - resolution: {integrity: sha512-Jia4JDldWnFNIru1Ehx1H5s9/yxiRHY/TimCuUc0jNexew3cF1gI6CYZil1ociakfWO3rRqFjl1mskBblB3RYg==} + /eslint-compat-utils@0.5.0(eslint@8.57.0): + resolution: {integrity: sha512-dc6Y8tzEcSYZMHa+CMPLi/hyo1FzNeonbhJL7Ol0ccuKQkwopJcJBA9YL/xmMTLU1eKigXo9vj9nALElWYSowg==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: eslint: 8.57.0 + semver: 7.6.0 dev: false /eslint-config-prettier@9.1.0(eslint@8.57.0): @@ -12296,8 +12751,8 @@ packages: - supports-color dev: false - /eslint-plugin-es-x@7.5.0(eslint@8.57.0): - resolution: {integrity: sha512-ODswlDSO0HJDzXU0XvgZ3lF3lS3XAZEossh15Q2UHjwrJggWeBoKqqEsLTZLXl+dh5eOAozG0zRcYtuE35oTuQ==} + /eslint-plugin-es-x@7.6.0(eslint@8.57.0): + resolution: {integrity: sha512-I0AmeNgevgaTR7y2lrVCJmGYF0rjoznpDvqV/kIkZSZbZ8Rw3eu4cGlvBBULScfkSOCzqKbff5LR4CNrV7mZHA==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' @@ -12305,7 +12760,7 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@eslint-community/regexpp': 4.10.0 eslint: 8.57.0 - eslint-compat-utils: 0.1.2(eslint@8.57.0) + eslint-compat-utils: 0.5.0(eslint@8.57.0) dev: false /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.3.1)(eslint@8.57.0): @@ -12319,7 +12774,7 @@ packages: optional: true dependencies: '@typescript-eslint/parser': 7.3.1(eslint@8.57.0)(typescript@5.4.3) - array-includes: 3.1.7 + array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 array.prototype.flatmap: 1.3.2 @@ -12364,7 +12819,7 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) builtins: 5.0.1 eslint: 8.57.0 - eslint-plugin-es-x: 7.5.0(eslint@8.57.0) + eslint-plugin-es-x: 7.6.0(eslint@8.57.0) get-tsconfig: 4.7.3 globals: 13.24.0 ignore: 5.3.1 @@ -12534,7 +12989,7 @@ packages: resolution: {integrity: sha512-K7J4xq5xAD5jHsGM5ReWXRTFa3JRGofHiMcVgQ8PRwgWxzjHpMWCIzsmyf60+mh8KLsqYPcjUMa0AC4hd6lPyQ==} /eventemitter2@5.0.1: - resolution: {integrity: sha512-5EM1GHXycJBS6mauYAbVKT1cVs7POKWb2NXD4Vyt8dDqeZa7LaDK1/sjtL+Zb0lzTpSNil4596Dyu97hz37QLg==} + resolution: {integrity: sha1-YZegldX7a1folC9v1+qtY6CclFI=} /eventemitter2@6.4.9: resolution: {integrity: sha512-JEPTiaOt9f04oa6NOkc4aH+nVp5I3wEjpHbIPqfgCdD5v5bUzy7xQqwcVO2aDQgOWhI28da57HksMrzK9HlRxg==} @@ -12608,7 +13063,7 @@ packages: dev: true /exists-sync@0.0.3: - resolution: {integrity: sha512-/qPB5E0cRuA/Cs5vHrmKYSfhIBCPJs9Vm3e9aIejMwwbe6idMeNbGu1g5stvr/bXT6HywHckLPEkmY7HK6FlwA==} + resolution: {integrity: sha1-uRAAC+27ETs3i4L19adjgQdiLc8=} deprecated: Please replace with usage of fs.existsSync /exit@0.1.2: @@ -12640,8 +13095,8 @@ packages: engines: {node: '>=12.0.0'} dev: true - /express@4.18.3: - resolution: {integrity: sha512-6VyCijWQ+9O7WuVMTRBTl+cjNNIzD5cY5mQ1WM8r/LEkI2u8EYpOotESNwzNlyCn3g+dmjKYI6BmNneSr/FSRw==} + /express@4.19.1: + resolution: {integrity: sha512-K4w1/Bp7y8iSiVObmCrtq8Cs79XjJc/RU2YYkZQ7wpUu5ZyZ7MtPHkqoMz4pf+mgXfNvo2qft8D9OnrH2ABk9w==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 @@ -12649,7 +13104,7 @@ packages: body-parser: 1.20.2 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.5.0 + cookie: 0.6.0 cookie-signature: 1.0.6 debug: 2.6.9(supports-color@8.1.1) depd: 2.0.0 @@ -12861,8 +13316,8 @@ packages: dependencies: flat-cache: 3.2.0 - /filesize@10.1.0: - resolution: {integrity: sha512-GTLKYyBSDz3nPhlLVPjPWZCnhkd9TrrRArNcy8Z+J2cqScB7h2McAzR6NBX6nYOoWafql0roY8hrocxnZBv9CQ==} + /filesize@10.1.1: + resolution: {integrity: sha512-L0cdwZrKlwZQkMSFnCflJ6J2Y+5egO/p3vgRSDQGxQt++QbUZe5gMbRO6kg6gzwQDPvq2Fk9AmoxUNfZ5gdqaQ==} engines: {node: '>= 10.4.0'} /fill-range@4.0.0: @@ -13798,8 +14253,8 @@ packages: dependencies: parse-passwd: 1.0.0 - /hono@4.1.2: - resolution: {integrity: sha512-pbfllzxpZifsp8gbjB01wetLk6Lc4p0OkJmtbH92CYFMPAdL6dzS2tHldfPjnNP87mNJS717P72lt6jzZSqg/g==} + /hono@4.1.3: + resolution: {integrity: sha512-V0I6qCw0gn2MA4LLtyXe6oD3/7ToeQf5Zv98o7uSuLuViQgWHJeYoYrZ4NbXhOtg4SaZjNJJm1+XuFB3LN+j6A==} engines: {node: '>=16.0.0'} /hosted-git-info@4.1.0: @@ -13961,13 +14416,13 @@ packages: safer-buffer: 2.1.2 dev: true - /icss-utils@5.1.0(postcss@8.4.37): + /icss-utils@5.1.0(postcss@8.4.38): resolution: {integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.37 + postcss: 8.4.38 /ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} @@ -14368,7 +14823,7 @@ packages: has-symbols: 1.0.3 /is-type@0.0.1: - resolution: {integrity: sha512-YwJh/zBVrcJ90aAnPBM0CbHvm7lG9ao7lIFeqTZ1UQj4iFLpM5CikdaU+dGGesrMJwxLqPGmjjrUrQ6Kn3Zh+w==} + resolution: {integrity: sha1-9lHYXDZdRJVdFKUdjXBh8/a0d5w=} dependencies: core-util-is: 1.0.3 @@ -15079,7 +15534,7 @@ packages: resolution: {integrity: sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==} /media-typer@0.3.0: - resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + resolution: {integrity: sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=} engines: {node: '>= 0.6'} /mem@5.1.1: @@ -15103,7 +15558,7 @@ packages: readable-stream: 1.0.34 /merge-descriptors@1.0.1: - resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==} + resolution: {integrity: sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=} /merge-stream@2.0.0: resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} @@ -16143,7 +16598,7 @@ packages: async: 3.2.5 debug: 4.3.4(supports-color@8.1.1) pidusage: 2.0.21 - systeminformation: 5.22.5 + systeminformation: 5.22.6 tx2: 1.0.5 transitivePeerDependencies: - supports-color @@ -16226,42 +16681,42 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} - /postcss-modules-extract-imports@3.0.0(postcss@8.4.37): + /postcss-modules-extract-imports@3.0.0(postcss@8.4.38): resolution: {integrity: sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.37 + postcss: 8.4.38 - /postcss-modules-local-by-default@4.0.4(postcss@8.4.37): + /postcss-modules-local-by-default@4.0.4(postcss@8.4.38): resolution: {integrity: sha512-L4QzMnOdVwRm1Qb8m4x8jsZzKAaPAgrUF1r/hjDR2Xj7R+8Zsf97jAlSQzWtKx5YNiNGN8QxmPFIc/sh+RQl+Q==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.37) - postcss: 8.4.37 + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 postcss-selector-parser: 6.0.16 postcss-value-parser: 4.2.0 - /postcss-modules-scope@3.1.1(postcss@8.4.37): + /postcss-modules-scope@3.1.1(postcss@8.4.38): resolution: {integrity: sha512-uZgqzdTleelWjzJY+Fhti6F3C9iF1JR/dODLs/JDefozYcKTBCdD8BIl6nNPbTbcLnGrk56hzwZC2DaGNvYjzA==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - postcss: 8.4.37 + postcss: 8.4.38 postcss-selector-parser: 6.0.16 - /postcss-modules-values@4.0.0(postcss@8.4.37): + /postcss-modules-values@4.0.0(postcss@8.4.38): resolution: {integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==} engines: {node: ^10 || ^12 || >= 14} peerDependencies: postcss: ^8.1.0 dependencies: - icss-utils: 5.1.0(postcss@8.4.37) - postcss: 8.4.37 + icss-utils: 5.1.0(postcss@8.4.38) + postcss: 8.4.38 /postcss-selector-parser@6.0.16: resolution: {integrity: sha512-A0RVJrX+IUkVZbW3ClroRWurercFhieevHB38sr2+l9eUClMqome3LmEmnhlNy+5Mr2EYN6B2Kaw9wYdd+VHiw==} @@ -16273,8 +16728,8 @@ packages: /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - /postcss@8.4.37: - resolution: {integrity: sha512-7iB/v/r7Woof0glKLH8b1SPHrsX7uhdO+Geb41QpF/+mWZHU3uxxSlN+UXGVit1PawOYDToO+AbZzhBzWRDwbQ==} + /postcss@8.4.38: + resolution: {integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==} engines: {node: ^10 || ^12 || >=14} dependencies: nanoid: 3.3.7 @@ -16487,8 +16942,8 @@ packages: /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - /quibble@0.9.1: - resolution: {integrity: sha512-2EkLLm3CsBhbHfYEgBWHSJZZRpVHUZLeuJVEQoU/lsCqxcOvVkgVlF4nWv2ACWKkb0lgxgMh3m8vq9rhx9LTIg==} + /quibble@0.9.2: + resolution: {integrity: sha512-BrL7hrZcbyyt5ZDfePkGFDc3m82uUtxCPOnpRUrkOdtBnmV9ldQKxXORkKL8eIzToRNaCpIPyKyfdfq/tBlFAA==} engines: {node: '>= 0.14.0'} dependencies: lodash: 4.17.21 @@ -17612,13 +18067,17 @@ packages: strip-ansi: 7.1.0 dev: true - /string.prototype.matchall@4.0.10: - resolution: {integrity: sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==} + /string.prototype.matchall@4.0.11: + resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 es-abstract: 1.23.2 + es-errors: 1.3.0 + es-object-atoms: 1.0.0 get-intrinsic: 1.2.4 + gopd: 1.0.1 has-symbols: 1.0.3 internal-slot: 1.0.7 regexp.prototype.flags: 1.5.2 @@ -17641,12 +18100,13 @@ packages: define-properties: 1.2.1 es-object-atoms: 1.0.0 - /string.prototype.trimstart@1.0.7: - resolution: {integrity: sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==} + /string.prototype.trimstart@1.0.8: + resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} + engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 define-properties: 1.2.1 - es-abstract: 1.23.2 + es-object-atoms: 1.0.0 /string_decoder@0.10.31: resolution: {integrity: sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==} @@ -17751,7 +18211,7 @@ packages: webpack: 5.91.0 /styled_string@0.0.1: - resolution: {integrity: sha512-DU2KZiB6VbPkO2tGSqQ9n96ZstUPjW7X4sGO6V2m1myIQluX0p1Ol8BrA/l6/EesqhMqXOIXs3cJNOy1UuU2BA==} + resolution: {integrity: sha1-0ieCvYEpVFm8Tx3xjEutjpTdEko=} /sum-up@1.0.3: resolution: {integrity: sha512-zw5P8gnhiqokJUWRdR6F4kIIIke0+ubQSGyYUY506GCbJWtV7F6Xuy0j6S125eSX2oF+a8KdivsZ8PlVEH0Mcw==} @@ -17819,8 +18279,8 @@ packages: transitivePeerDependencies: - supports-color - /systeminformation@5.22.5: - resolution: {integrity: sha512-wH8lJMlQAkBGu78EjtYO6eFMPsFrAMWcWDsQQb1+cwS9cuFJaGcZ6gah9ZXWpHpIST1slyyuk0KuqdcAjbmM3A==} + /systeminformation@5.22.6: + resolution: {integrity: sha512-hUTQX+bRgIFbv1T/z251NtwGwNIeSyWURnT2BGnsYu6dQNbkiBl4oAwk50acVfITFq1Zvb8KDNgibQK9uGlUGg==} engines: {node: '>=8.0.0'} os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] hasBin: true @@ -17839,8 +18299,8 @@ packages: resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==} engines: {node: '>=6'} - /tar@6.2.0: - resolution: {integrity: sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==} + /tar@6.2.1: + resolution: {integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==} engines: {node: '>=10'} dependencies: chownr: 2.0.0 @@ -17893,12 +18353,12 @@ packages: commander: 2.20.3 source-map-support: 0.5.21 - /testdouble@3.20.1: - resolution: {integrity: sha512-D9Or6ayxr16dPPEkmXyGb8ow7VcQjUzuYFUxPTkx2FdSkn5Z6EC6cxQHwEGhedmE30FAJOYiAW+r7XXg6FmYOQ==} + /testdouble@3.20.2: + resolution: {integrity: sha512-790e9vJKdfddWNOaxW1/V9FcMk48cPEl3eJSj2i8Hh1fX89qArEJ6cp3DBnaECpGXc3xKJVWbc1jeNlWYWgiMg==} engines: {node: '>= 16'} dependencies: lodash: 4.17.21 - quibble: 0.9.1 + quibble: 0.9.2 stringify-object-es5: 2.5.0 theredoc: 1.0.0 @@ -17915,7 +18375,7 @@ packages: compression: 1.7.4 consolidate: 0.16.0(mustache@4.2.0) execa: 1.0.0 - express: 4.18.3 + express: 4.19.1 fireworm: 0.7.2 glob: 7.2.3 http-proxy: 1.18.1 @@ -18235,64 +18695,64 @@ packages: dev: true optional: true - /turbo-darwin-64@1.12.5: - resolution: {integrity: sha512-0GZ8reftwNQgIQLHkHjHEXTc/Z1NJm+YjsrBP+qhM/7yIZ3TEy9gJhuogDt2U0xIWwFgisTyzbtU7xNaQydtoA==} + /turbo-darwin-64@1.13.0: + resolution: {integrity: sha512-ctHeJXtQgBcgxnCXwrJTGiq57HtwF7zWz5NTuSv//5yeU01BtQIt62ArKfjudOhRefWJbX3Z5srn88XTb9hfww==} cpu: [x64] os: [darwin] requiresBuild: true dev: false optional: true - /turbo-darwin-arm64@1.12.5: - resolution: {integrity: sha512-8WpOLNNzvH6kohQOjihD+gaWL+ZFNfjvBwhOF0rjEzvW+YR3Pa7KjhulrjWyeN2yMFqAPubTbZIGOz1EVXLuQA==} + /turbo-darwin-arm64@1.13.0: + resolution: {integrity: sha512-/Q9/pNFkF9w83tNxwMpgapwLYdQ12p8mpty2YQRoUiS9ClWkcqe136jR0mtuMqzlNlpREOFZaoyIthjt6Sdo0g==} cpu: [arm64] os: [darwin] requiresBuild: true dev: false optional: true - /turbo-linux-64@1.12.5: - resolution: {integrity: sha512-INit73+bNUpwqGZCxgXCR3I+cQsdkQ3/LkfkgSOibkpg+oGqxJRzeXw3sp990d7SCoE8QOcs3iw+PtiFX/LDAA==} + /turbo-linux-64@1.13.0: + resolution: {integrity: sha512-hgbT7o020BGV4L7Sd8hhFTd5zVKPKxbsr0dPfel/9NkdTmptz2aGZ0Vb2MAa18SY3XaCQpDxmdYuOzvvRpo5ZA==} cpu: [x64] os: [linux] requiresBuild: true dev: false optional: true - /turbo-linux-arm64@1.12.5: - resolution: {integrity: sha512-6lkRBvxtI/GQdGtaAec9LvVQUoRw6nXFp0kM+Eu+5PbZqq7yn6cMkgDJLI08zdeui36yXhone8XGI8pHg8bpUQ==} + /turbo-linux-arm64@1.13.0: + resolution: {integrity: sha512-WK01i2wDZARrV+HEs495A3hNeGMwQR5suYk7G+ceqqW7b+dOTlQdvUjnI3sg7wAnZPgjafFs/hoBaZdJjVa/nw==} cpu: [arm64] os: [linux] requiresBuild: true dev: false optional: true - /turbo-windows-64@1.12.5: - resolution: {integrity: sha512-gQYbOhZg5Ww0bQ/bC0w/4W6yQRwBumUUnkB+QPo15VznwxZe2a7bo6JM+9Xy9dKLa/kn+p7zTqme4OEp6M3/Yg==} + /turbo-windows-64@1.13.0: + resolution: {integrity: sha512-hJgSZJZwlWHNwLEthaqJqJWGm4NqF5X/I7vE0sPE4i/jeDl8f0n1hcOkgJkJiNXVxhj+qy/9+4dzbPLKT9imaQ==} cpu: [x64] os: [win32] requiresBuild: true dev: false optional: true - /turbo-windows-arm64@1.12.5: - resolution: {integrity: sha512-auvhZ9FrhnvQ4mgBlY9O68MT4dIfprYGvd2uPICba/mHUZZvVy5SGgbHJ0KbMwaJfnnFoPgLJO6M+3N2gDprKw==} + /turbo-windows-arm64@1.13.0: + resolution: {integrity: sha512-L/ErxYoXeq8tmjU/AIGicC9VyBN1zdYw8JlM4yPmMI0pJdY8E4GaYK1IiIazqq7M72lmQhU/WW7fV9FqEktwrw==} cpu: [arm64] os: [win32] requiresBuild: true dev: false optional: true - /turbo@1.12.5: - resolution: {integrity: sha512-FATU5EnhrYG8RvQJYFJnDd18DpccDjyvd53hggw9T9JEg9BhWtIEoeaKtBjYbpXwOVrJQMDdXcIB4f2nD3QPPg==} + /turbo@1.13.0: + resolution: {integrity: sha512-r02GtNmkOPcQvUzVE6lg474QVLyU02r3yh3lUGqrFHf5h5ZEjgDGWILsAUqplVqjri1Y/oOkTssks4CObTAaiw==} hasBin: true optionalDependencies: - turbo-darwin-64: 1.12.5 - turbo-darwin-arm64: 1.12.5 - turbo-linux-64: 1.12.5 - turbo-linux-arm64: 1.12.5 - turbo-windows-64: 1.12.5 - turbo-windows-arm64: 1.12.5 + turbo-darwin-64: 1.13.0 + turbo-darwin-arm64: 1.13.0 + turbo-linux-64: 1.13.0 + turbo-linux-arm64: 1.13.0 + turbo-windows-64: 1.13.0 + turbo-windows-arm64: 1.13.0 dev: false /tv4@1.3.0: @@ -18374,8 +18834,8 @@ packages: has-proto: 1.0.3 is-typed-array: 1.1.13 - /typed-array-length@1.0.5: - resolution: {integrity: sha512-yMi0PlwuznKHxKmcpoOdeLwxBoVPkqZxd7q2FgMkmD3bNwvF5VW0+UlUQ1k1vmktTu4Yu13Q0RIxEP8+B+wloA==} + /typed-array-length@1.0.6: + resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -18559,7 +19019,7 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} /utils-merge@1.0.1: - resolution: {integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==} + resolution: {integrity: sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=} engines: {node: '>= 0.4.0'} /uuid@3.4.0: @@ -18577,13 +19037,6 @@ packages: dependencies: builtins: 5.0.1 - /validate-peer-dependencies@1.2.0: - resolution: {integrity: sha512-nd2HUpKc6RWblPZQ2GDuI65sxJ2n/UqZwSBVtj64xlWjMx0m7ZB2m9b2JS3v1f+n9VWH/dd1CMhkHfP6pIdckA==} - dependencies: - resolve-package-path: 3.1.0 - semver: 7.6.0 - dev: true - /vary@1.1.2: resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} engines: {node: '>= 0.8'} @@ -19136,7 +19589,7 @@ packages: engines: {node: '>=0.10.0'} hasBin: true dependencies: - express: 4.18.3 + express: 4.19.1 graceful-fs: 4.2.11 markdown-it: 4.4.0 mdn-links: 0.1.0 @@ -19180,7 +19633,6 @@ packages: ember-auto-import: 2.7.2(@glint/template@1.4.0)(webpack@5.91.0) ember-cli-babel: 8.2.0(@babel/core@7.24.3) ember-inflector: 4.0.2(@babel/core@7.24.3) - pnpm-sync-dependencies-meta-injected: 0.0.10 typescript: 5.4.3 webpack: 5.91.0 transitivePeerDependencies: @@ -19249,7 +19701,6 @@ packages: dependencies: '@ember-data/private-build-infra': file:packages/private-build-infra(@glint/template@1.4.0) ember-cli-babel: 8.2.0(@babel/core@7.24.3) - pnpm-sync-dependencies-meta-injected: 0.0.10 transitivePeerDependencies: - '@babel/core' - '@glint/template' @@ -19306,7 +19757,6 @@ packages: debug: 4.3.4(supports-color@8.1.1) ember-cli-htmlbars: 6.3.0 ember-cli-test-loader: 3.1.0(@babel/core@7.24.3) - pnpm-sync-dependencies-meta-injected: 0.0.10 tmp: 0.2.3 transitivePeerDependencies: - supports-color @@ -19375,7 +19825,7 @@ packages: '@hono/node-server': 1.8.2 '@warp-drive/core-types': file:packages/core-types(@babel/core@7.24.3)(@glint/template@1.4.0) chalk: 5.3.0 - hono: 4.1.2 + hono: 4.1.3 pm2: 5.3.1 transitivePeerDependencies: - bufferutil @@ -19588,7 +20038,6 @@ packages: ember-cli-version-checker: 5.1.2 git-repo-info: 2.1.1 npm-git-info: 1.0.3 - pnpm-sync-dependencies-meta-injected: 0.0.10 semver: 7.6.0 silent-error: 1.1.1 transitivePeerDependencies: @@ -19729,7 +20178,6 @@ packages: '@ember-data/private-build-infra': file:packages/private-build-infra(@glint/template@1.4.0) '@embroider/macros': 1.15.0(@glint/template@1.4.0) ember-cli-babel: 8.2.0(@babel/core@7.24.3) - pnpm-sync-dependencies-meta-injected: 0.0.10 transitivePeerDependencies: - '@babel/core' - '@glint/template' @@ -19927,3 +20375,100 @@ packages: - webpack-cli - whiskers dev: true + + file:packages/unpublished-test-infra(@babel/core@7.24.3)(@ember/string@3.1.1)(ember-cli-test-loader@3.1.0)(ember-cli@5.4.1)(ember-source@5.6.0): + resolution: {directory: packages/unpublished-test-infra, type: directory} + id: file:packages/unpublished-test-infra + name: '@ember-data/unpublished-test-infra' + engines: {node: '>= 18.19.1'} + dependencies: + '@ember-data/private-build-infra': file:packages/private-build-infra(@glint/template@1.4.0) + '@ember-data/request': file:packages/request(@babel/core@7.24.3)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) + '@ember-data/store': file:packages/store(@babel/core@7.24.3)(@ember-data/request@5.4.0-alpha.43)(@ember-data/tracking@5.4.0-alpha.43)(@ember/string@3.1.1)(@glint/template@1.4.0)(@warp-drive/core-types@0.0.0-alpha.29) + '@ember-data/tracking': file:packages/tracking(@babel/core@7.24.3)(@glint/template@1.4.0) + '@ember/edition-utils': 1.2.0 + '@ember/test-helpers': 3.3.0(patch_hash=gppmtiox6pymwamrfimkbxfrsm)(@babel/core@7.24.3)(ember-source@5.6.0)(webpack@5.91.0) + '@embroider/macros': 1.15.0(@glint/template@1.4.0) + '@types/qunit': 2.19.10 + '@warp-drive/core-types': file:packages/core-types(@babel/core@7.24.3)(@glint/template@1.4.0) + '@warp-drive/diagnostic': file:packages/diagnostic(@ember/test-helpers@3.3.0)(@embroider/addon-shim@1.8.7)(ember-cli-test-loader@3.1.0) + broccoli-merge-trees: 4.2.0 + chalk: 4.1.2 + ember-auto-import: 2.7.2(@glint/template@1.4.0)(webpack@5.91.0) + ember-cli-babel: 8.2.0(@babel/core@7.24.3) + ember-cli-blueprint-test-helpers: 0.19.2(ember-cli@5.4.1) + ember-get-config: 2.1.1(@babel/core@7.24.3)(@glint/template@1.4.0) + qunit: 2.19.4(patch_hash=h2fz5inojlzu6daraxt5bghsqy) + semver: 7.6.0 + testem: 3.11.0(patch_hash=yfkum5c5nfihh3ce3f64tnp5rq) + typescript: 5.4.3 + webpack: 5.91.0 + transitivePeerDependencies: + - '@babel/core' + - '@ember/string' + - '@embroider/addon-shim' + - '@glint/template' + - '@swc/core' + - arc-templates + - atpl + - babel-core + - bracket-template + - bufferutil + - coffee-script + - debug + - dot + - dust + - dustjs-helpers + - dustjs-linkedin + - eco + - ect + - ejs + - ember-cli + - ember-cli-test-loader + - ember-source + - esbuild + - haml-coffee + - hamlet + - hamljs + - handlebars + - hogan.js + - htmling + - jade + - jazz + - jqtpl + - just + - liquid-node + - liquor + - lodash + - marko + - mote + - nunjucks + - plates + - pug + - qejs + - ractive + - razor-tmpl + - react + - react-dom + - slm + - squirrelly + - supports-color + - swig + - swig-templates + - teacup + - templayed + - then-jade + - then-pug + - tinyliquid + - toffee + - twig + - twing + - uglify-js + - underscore + - utf-8-validate + - vash + - velocityjs + - walrus + - webpack-cli + - whiskers + dev: true diff --git a/tests/recommended-json-api/.eslintrc.cjs b/tests/example-json-api/.eslintrc.cjs similarity index 100% rename from tests/recommended-json-api/.eslintrc.cjs rename to tests/example-json-api/.eslintrc.cjs diff --git a/tests/recommended-json-api/README.md b/tests/example-json-api/README.md similarity index 75% rename from tests/recommended-json-api/README.md rename to tests/example-json-api/README.md index f218310c21d..865d34a9bf7 100644 --- a/tests/recommended-json-api/README.md +++ b/tests/example-json-api/README.md @@ -1,3 +1,3 @@ -# Recommended JSON:API +# Incremental JSON:API Demonstrates the configuration we recommend for JSON:API applications diff --git a/tests/example-json-api/app/adapters/application.js b/tests/example-json-api/app/adapters/application.js new file mode 100644 index 00000000000..265c3da331d --- /dev/null +++ b/tests/example-json-api/app/adapters/application.js @@ -0,0 +1,5 @@ +import JSONAPIAdapter from '@ember-data/adapter/json-api'; + +export default class ApplicationAdapter extends JSONAPIAdapter { + namespace = 'api'; +} diff --git a/tests/recommended-json-api/app/app.ts b/tests/example-json-api/app/app.ts similarity index 76% rename from tests/recommended-json-api/app/app.ts rename to tests/example-json-api/app/app.ts index 8f235d166e6..270d3147ca9 100644 --- a/tests/recommended-json-api/app/app.ts +++ b/tests/example-json-api/app/app.ts @@ -2,9 +2,16 @@ import Application from '@ember/application'; import loadInitializers from 'ember-load-initializers'; +import { setBuildURLConfig } from '@ember-data/request-utils'; + import config from './config/environment'; import Resolver from './resolver'; +setBuildURLConfig({ + host: '/', + namespace: 'api', +}); + class App extends Application { modulePrefix = config.modulePrefix; podModulePrefix = config.podModulePrefix; diff --git a/tests/recommended-json-api/app/components/.gitkeep b/tests/example-json-api/app/components/.gitkeep similarity index 100% rename from tests/recommended-json-api/app/components/.gitkeep rename to tests/example-json-api/app/components/.gitkeep diff --git a/tests/recommended-json-api/app/components/book-list.hbs b/tests/example-json-api/app/components/book-list.hbs similarity index 100% rename from tests/recommended-json-api/app/components/book-list.hbs rename to tests/example-json-api/app/components/book-list.hbs diff --git a/tests/recommended-json-api/app/components/book-list.ts b/tests/example-json-api/app/components/book-list.ts similarity index 100% rename from tests/recommended-json-api/app/components/book-list.ts rename to tests/example-json-api/app/components/book-list.ts diff --git a/tests/recommended-json-api/app/components/book-search.hbs b/tests/example-json-api/app/components/book-search.hbs similarity index 100% rename from tests/recommended-json-api/app/components/book-search.hbs rename to tests/example-json-api/app/components/book-search.hbs diff --git a/tests/recommended-json-api/app/components/book-search.ts b/tests/example-json-api/app/components/book-search.ts similarity index 100% rename from tests/recommended-json-api/app/components/book-search.ts rename to tests/example-json-api/app/components/book-search.ts diff --git a/tests/recommended-json-api/app/components/infinite-books.hbs b/tests/example-json-api/app/components/infinite-books.hbs similarity index 100% rename from tests/recommended-json-api/app/components/infinite-books.hbs rename to tests/example-json-api/app/components/infinite-books.hbs diff --git a/tests/recommended-json-api/app/components/infinite-books.ts b/tests/example-json-api/app/components/infinite-books.ts similarity index 100% rename from tests/recommended-json-api/app/components/infinite-books.ts rename to tests/example-json-api/app/components/infinite-books.ts diff --git a/tests/example-json-api/app/components/legacy-infinite-books.hbs b/tests/example-json-api/app/components/legacy-infinite-books.hbs new file mode 100644 index 00000000000..f88275006ad --- /dev/null +++ b/tests/example-json-api/app/components/legacy-infinite-books.hbs @@ -0,0 +1,15 @@ + +
  • + {{book.title}} ({{book.genre}}) - {{book.publicationDate}} +
    by {{book.author}} ISBN: {{book.isbn}} +
  • +
    \ No newline at end of file diff --git a/tests/example-json-api/app/components/legacy-infinite-books.ts b/tests/example-json-api/app/components/legacy-infinite-books.ts new file mode 100644 index 00000000000..151b40a1aea --- /dev/null +++ b/tests/example-json-api/app/components/legacy-infinite-books.ts @@ -0,0 +1,48 @@ +import { service } from '@ember/service'; +import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; + +import type Store from '@ember-data/store'; +import type { Collection } from '@ember-data/store/-private/record-arrays/identifier-array'; + +import type Book from '../models/book'; + +export interface InfiniteBookSignature { + Element: HTMLUListElement; + Args: { + allBooks: Collection; + }; +} + +class Pages { + @tracked pages: Collection[] = []; + @tracked data: T[] = []; + + constructor(page: Collection) { + this.pages = [page]; + this.data = page.slice(); + } + + addPage(page: Collection) { + this.pages.push(page); + this.data = this.data.concat(page); + } +} + +export default class InfiniteBookComponent extends Component { + @service declare store: Store; + pageCollection = new Pages(this.args.allBooks); + + get books(): Book[] { + return this.pageCollection.data; + } + + next = async () => { + const meta = this.pageCollection.pages.at(-1)?.query as { page: number; pageSize: number }; + if (!meta) { + return; + } + const result = await this.store.query('book', { page: meta.page + 1, pageSize: meta.pageSize }); + this.pageCollection.addPage(result); + }; +} diff --git a/tests/recommended-json-api/app/components/page-link.hbs b/tests/example-json-api/app/components/page-link.hbs similarity index 100% rename from tests/recommended-json-api/app/components/page-link.hbs rename to tests/example-json-api/app/components/page-link.hbs diff --git a/tests/recommended-json-api/app/config/environment.d.ts b/tests/example-json-api/app/config/environment.d.ts similarity index 100% rename from tests/recommended-json-api/app/config/environment.d.ts rename to tests/example-json-api/app/config/environment.d.ts diff --git a/tests/recommended-json-api/app/helpers/.gitkeep b/tests/example-json-api/app/helpers/.gitkeep similarity index 100% rename from tests/recommended-json-api/app/helpers/.gitkeep rename to tests/example-json-api/app/helpers/.gitkeep diff --git a/tests/recommended-json-api/app/helpers/add.ts b/tests/example-json-api/app/helpers/add.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/add.ts rename to tests/example-json-api/app/helpers/add.ts diff --git a/tests/recommended-json-api/app/helpers/and.ts b/tests/example-json-api/app/helpers/and.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/and.ts rename to tests/example-json-api/app/helpers/and.ts diff --git a/tests/recommended-json-api/app/helpers/eq.ts b/tests/example-json-api/app/helpers/eq.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/eq.ts rename to tests/example-json-api/app/helpers/eq.ts diff --git a/tests/recommended-json-api/app/helpers/gt.ts b/tests/example-json-api/app/helpers/gt.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/gt.ts rename to tests/example-json-api/app/helpers/gt.ts diff --git a/tests/recommended-json-api/app/helpers/lt.ts b/tests/example-json-api/app/helpers/lt.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/lt.ts rename to tests/example-json-api/app/helpers/lt.ts diff --git a/tests/recommended-json-api/app/helpers/mod.ts b/tests/example-json-api/app/helpers/mod.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/mod.ts rename to tests/example-json-api/app/helpers/mod.ts diff --git a/tests/recommended-json-api/app/helpers/neq.ts b/tests/example-json-api/app/helpers/neq.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/neq.ts rename to tests/example-json-api/app/helpers/neq.ts diff --git a/tests/recommended-json-api/app/helpers/not.ts b/tests/example-json-api/app/helpers/not.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/not.ts rename to tests/example-json-api/app/helpers/not.ts diff --git a/tests/recommended-json-api/app/helpers/or.ts b/tests/example-json-api/app/helpers/or.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/or.ts rename to tests/example-json-api/app/helpers/or.ts diff --git a/tests/recommended-json-api/app/helpers/sub.ts b/tests/example-json-api/app/helpers/sub.ts similarity index 100% rename from tests/recommended-json-api/app/helpers/sub.ts rename to tests/example-json-api/app/helpers/sub.ts diff --git a/tests/recommended-json-api/app/index.html b/tests/example-json-api/app/index.html similarity index 71% rename from tests/recommended-json-api/app/index.html rename to tests/example-json-api/app/index.html index 0441dcf4a05..d3239b493cc 100644 --- a/tests/recommended-json-api/app/index.html +++ b/tests/example-json-api/app/index.html @@ -3,14 +3,14 @@ - EmberData JSON:API Recommended Setup + EmberData JSON:API example Setup {{content-for "head"}} - + {{content-for "head-footer"}} @@ -18,7 +18,7 @@ {{content-for "body"}} - + {{content-for "body-footer"}} diff --git a/tests/recommended-json-api/app/models/.gitkeep b/tests/example-json-api/app/models/.gitkeep similarity index 100% rename from tests/recommended-json-api/app/models/.gitkeep rename to tests/example-json-api/app/models/.gitkeep diff --git a/tests/recommended-json-api/app/models/author.ts b/tests/example-json-api/app/models/author.ts similarity index 100% rename from tests/recommended-json-api/app/models/author.ts rename to tests/example-json-api/app/models/author.ts diff --git a/tests/recommended-json-api/app/models/book.ts b/tests/example-json-api/app/models/book.ts similarity index 72% rename from tests/recommended-json-api/app/models/book.ts rename to tests/example-json-api/app/models/book.ts index b1044c5d710..0cf69b427ea 100644 --- a/tests/recommended-json-api/app/models/book.ts +++ b/tests/example-json-api/app/models/book.ts @@ -1,4 +1,5 @@ import Model, { attr } from '@ember-data/model'; +import { ResourceType } from '@warp-drive/core-types/symbols'; export default class Book extends Model { @attr declare title: string; @@ -6,4 +7,6 @@ export default class Book extends Model { @attr declare publicationDate: string; @attr declare author: string; @attr declare genre: string; + + [ResourceType] = 'book' as const; } diff --git a/tests/recommended-json-api/app/models/genre.ts b/tests/example-json-api/app/models/genre.ts similarity index 100% rename from tests/recommended-json-api/app/models/genre.ts rename to tests/example-json-api/app/models/genre.ts diff --git a/tests/recommended-json-api/app/resolver.ts b/tests/example-json-api/app/resolver.ts similarity index 100% rename from tests/recommended-json-api/app/resolver.ts rename to tests/example-json-api/app/resolver.ts diff --git a/tests/recommended-json-api/app/router.ts b/tests/example-json-api/app/router.ts similarity index 100% rename from tests/recommended-json-api/app/router.ts rename to tests/example-json-api/app/router.ts diff --git a/tests/recommended-json-api/app/routes/.gitkeep b/tests/example-json-api/app/routes/.gitkeep similarity index 100% rename from tests/recommended-json-api/app/routes/.gitkeep rename to tests/example-json-api/app/routes/.gitkeep diff --git a/tests/recommended-json-api/app/routes/application.ts b/tests/example-json-api/app/routes/application.ts similarity index 66% rename from tests/recommended-json-api/app/routes/application.ts rename to tests/example-json-api/app/routes/application.ts index 8f630f67773..480a77d19ae 100644 --- a/tests/recommended-json-api/app/routes/application.ts +++ b/tests/example-json-api/app/routes/application.ts @@ -2,7 +2,6 @@ import Route from '@ember/routing/route'; import { service } from '@ember/service'; import { query } from '@ember-data/json-api/request'; -import { setBuildURLConfig } from '@ember-data/request-utils'; import type Store from '@ember-data/store'; import type { Document } from '@ember-data/store/-private/document'; @@ -10,24 +9,30 @@ import type Author from '../models/author'; import type Book from '../models/book'; import type Genre from '../models/genre'; -setBuildURLConfig({ - host: '/', - namespace: 'api', -}); - export default class ApplicationRoute extends Route { @service declare store: Store; override async model() { const genres = this.store.request>({ url: '/api/books/genres' }); const authors = this.store.request>({ url: '/api/books/authors' }); + + // Example of legacy usage to be refactored, unpaginated + const oldBooks = this.store.findAll('book'); + + // Example of legacy usage, paginated + const oldBooksPaginated = this.store.query('book', { page: 1, pageSize: 20 }); + + // Example of new usage (refactored, paginated) const books = this.store.request>(query('book')); - const data = await Promise.all([genres, authors, books]); + const data = await Promise.all([genres, authors, books, oldBooks, oldBooksPaginated]); + return { genres: data[0].content.data!, authors: data[1].content.data!, allBooks: data[2].content, + oldBooks: data[3], + oldBooksPaginated: data[4], }; } } diff --git a/tests/example-json-api/app/services/request-manager.ts b/tests/example-json-api/app/services/request-manager.ts new file mode 100644 index 00000000000..522664f295e --- /dev/null +++ b/tests/example-json-api/app/services/request-manager.ts @@ -0,0 +1,21 @@ +import { LegacyNetworkHandler } from '@ember-data/legacy-compat'; +import type { Handler, NextFn, RequestContext } from '@ember-data/request'; +import RequestManager from '@ember-data/request'; +import Fetch from '@ember-data/request/fetch'; + +/* eslint-disable no-console */ +const TestHandler: Handler = { + async request(context: RequestContext, next: NextFn) { + console.log('TestHandler.request', context.request); + const result = await next(Object.assign({}, context.request)); + console.log('TestHandler.response after fetch', result.response); + return result; + }, +}; + +export default class Requests extends RequestManager { + constructor(args?: Record) { + super(args); + this.use([LegacyNetworkHandler, TestHandler, Fetch]); + } +} diff --git a/tests/example-json-api/app/services/store.js b/tests/example-json-api/app/services/store.js new file mode 100644 index 00000000000..d86d966b815 --- /dev/null +++ b/tests/example-json-api/app/services/store.js @@ -0,0 +1,20 @@ +import { service } from '@ember/service'; + +import Store from 'ember-data/store'; + +import { LifetimesService } from '@ember-data/request-utils'; + +import CONFIG from '../config/environment'; + +// NOTE: This file must be JS extension as `ember-data` is still v1 addon, +// and JS declaration will always "win" in final build of application + +export default class MyStore extends Store { + @service requestManager; + + constructor(args) { + super(args); + + this.lifetimes = new LifetimesService(CONFIG); + } +} diff --git a/tests/recommended-json-api/app/styles/app.css b/tests/example-json-api/app/styles/app.css similarity index 100% rename from tests/recommended-json-api/app/styles/app.css rename to tests/example-json-api/app/styles/app.css diff --git a/tests/recommended-json-api/app/templates/.gitkeep b/tests/example-json-api/app/templates/.gitkeep similarity index 100% rename from tests/recommended-json-api/app/templates/.gitkeep rename to tests/example-json-api/app/templates/.gitkeep diff --git a/tests/example-json-api/app/templates/application.hbs b/tests/example-json-api/app/templates/application.hbs new file mode 100644 index 00000000000..1d4539f2c5f --- /dev/null +++ b/tests/example-json-api/app/templates/application.hbs @@ -0,0 +1,43 @@ +{{page-title "Library"}} + + + + + + + + + + +
    +

    Browse

    +
    + +
    +

    Search

    All Books

    + + + + + + + + +
    +

    Old Books (All) ({{@model.oldBooks.length}})

    +
      + {{#each @model.oldBooks as |book|}} +
    • + {{book.title}} ({{book.genre}}) - {{book.publicationDate}} +
      by {{book.author}} ISBN: {{book.isbn}} +
    • + {{/each}} +
    +
    +

    Old Books (Paginated) ({{@model.oldBooksPaginated.length}})

    +
    + +
    +
    + +{{outlet}} \ No newline at end of file diff --git a/tests/recommended-json-api/app/utils/pagination-links.ts b/tests/example-json-api/app/utils/pagination-links.ts similarity index 100% rename from tests/recommended-json-api/app/utils/pagination-links.ts rename to tests/example-json-api/app/utils/pagination-links.ts diff --git a/tests/recommended-json-api/config/environment.js b/tests/example-json-api/config/environment.js similarity index 96% rename from tests/recommended-json-api/config/environment.js rename to tests/example-json-api/config/environment.js index 3042a06465e..57ade2f8a8d 100644 --- a/tests/recommended-json-api/config/environment.js +++ b/tests/example-json-api/config/environment.js @@ -2,7 +2,7 @@ module.exports = function (environment) { const ENV = { - modulePrefix: 'recommended-json-api', + modulePrefix: 'example-json-api', environment, rootURL: '/', locationType: 'history', diff --git a/tests/recommended-json-api/config/optional-features.json b/tests/example-json-api/config/optional-features.json similarity index 100% rename from tests/recommended-json-api/config/optional-features.json rename to tests/example-json-api/config/optional-features.json diff --git a/tests/recommended-json-api/config/targets.js b/tests/example-json-api/config/targets.js similarity index 100% rename from tests/recommended-json-api/config/targets.js rename to tests/example-json-api/config/targets.js diff --git a/tests/recommended-json-api/ember-cli-build.js b/tests/example-json-api/ember-cli-build.js similarity index 100% rename from tests/recommended-json-api/ember-cli-build.js rename to tests/example-json-api/ember-cli-build.js diff --git a/tests/recommended-json-api/package.json b/tests/example-json-api/package.json similarity index 82% rename from tests/recommended-json-api/package.json rename to tests/example-json-api/package.json index e90e0a243d5..fc61b6268c5 100644 --- a/tests/recommended-json-api/package.json +++ b/tests/example-json-api/package.json @@ -1,13 +1,13 @@ { - "name": "recommended-json-api", + "name": "example-json-api", "version": "5.4.0-alpha.43", "private": true, - "description": "Demos the recommended experience for JSON:API with EmberData", + "description": "Demos the incremental adoption of new EmberData for JSON:API", "keywords": [], "repository": { "type": "git", "url": "git+ssh://git@github.com:emberjs/data.git", - "directory": "tests/recomended-json-api" + "directory": "tests/example-json-api" }, "license": "MIT", "author": "", @@ -23,6 +23,9 @@ "_syncPnpm": "bun run sync-dependencies-meta-injected" }, "dependenciesMeta": { + "ember-data": { + "injected": true + }, "@ember-data/json-api": { "injected": true }, @@ -67,8 +70,8 @@ } }, "devDependencies": { - "@babel/core": "^7.24.1", - "@babel/runtime": "^7.24.1", + "@babel/core": "^7.23.9", + "@babel/runtime": "^7.23.9", "@ember-data/debug": "workspace:5.4.0-alpha.43", "@ember-data/graph": "workspace:5.4.0-alpha.43", "@ember-data/json-api": "workspace:5.4.0-alpha.43", @@ -81,20 +84,20 @@ "@ember-data/tracking": "workspace:5.4.0-alpha.43", "@ember-data/unpublished-test-infra": "workspace:5.4.0-alpha.43", "@ember/edition-utils": "^1.2.0", - "@ember/optional-features": "^2.1.0", + "@ember/optional-features": "^2.0.0", "@ember/string": "3.1.1", - "@ember/test-helpers": "^3.3.0", - "@embroider/compat": "^3.4.6", - "@embroider/core": "^3.4.6", - "@embroider/webpack": "^3.2.2", + "@ember/test-helpers": "^3.2.1", + "@embroider/compat": "^3.4.0", + "@embroider/core": "^3.4.2", + "@embroider/webpack": "^3.2.1", "@glimmer/component": "^1.1.2", "@glimmer/tracking": "^1.1.2", "@html-next/vertical-collection": "^4.0.2", "@types/morgan": "^1.9.9", "@warp-drive/core-types": "workspace:0.0.0-alpha.29", "@warp-drive/internal-config": "workspace:5.4.0-alpha.43", - "ember-auto-import": "^2.7.2", - "ember-cli": "~5.7.0", + "ember-auto-import": "^2.7.0", + "ember-cli": "~5.4.1", "ember-cli-babel": "^8.2.0", "ember-cli-dependency-checker": "^3.3.2", "ember-cli-htmlbars": "^6.3.0", @@ -102,26 +105,27 @@ "ember-cli-sri": "^2.1.1", "ember-cli-terser": "~4.0.2", "ember-cli-test-loader": "^3.1.0", + "ember-data": "workspace:5.4.0-alpha.43", "ember-disable-prototype-extensions": "^1.1.3", "ember-inflector": "^4.0.2", "ember-load-initializers": "^2.1.2", "ember-maybe-import-regenerator": "^1.0.0", - "ember-page-title": "^8.2.3", + "ember-page-title": "^8.2.2", "ember-qunit": "^8.0.2", "ember-resolver": "^11.0.1", - "ember-source": "~5.7.0", + "ember-source": "~5.6.0", "ember-source-channel-url": "^3.0.0", "ember-try": "^3.0.0", - "express": "^4.18.3", + "express": "^4.18.2", "glob": "^10.3.10", "loader.js": "^4.7.0", "morgan": "^1.10.0", - "qunit": "^2.20.1", + "qunit": "^2.20.0", "qunit-console-grouper": "^0.3.0", "qunit-dom": "^3.0.0", "silent-error": "^1.1.1", - "typescript": "^5.4.3", - "webpack": "^5.91.0" + "typescript": "^5.3.3", + "webpack": "^5.89.0" }, "ember": { "edition": "octane" @@ -132,7 +136,7 @@ "volta": { "extends": "../../package.json" }, - "packageManager": "pnpm@8.15.5", + "packageManager": "pnpm@8.6.0", "dependencies": { "pnpm-sync-dependencies-meta-injected": "0.0.10" } diff --git a/tests/recommended-json-api/server/index.js b/tests/example-json-api/server/index.js similarity index 100% rename from tests/recommended-json-api/server/index.js rename to tests/example-json-api/server/index.js diff --git a/tests/recommended-json-api/server/mocks/MOCK_DATA.json b/tests/example-json-api/server/mocks/MOCK_DATA.json similarity index 100% rename from tests/recommended-json-api/server/mocks/MOCK_DATA.json rename to tests/example-json-api/server/mocks/MOCK_DATA.json diff --git a/tests/recommended-json-api/server/mocks/book.js b/tests/example-json-api/server/mocks/book.js similarity index 100% rename from tests/recommended-json-api/server/mocks/book.js rename to tests/example-json-api/server/mocks/book.js diff --git a/tests/recommended-json-api/testem.js b/tests/example-json-api/testem.js similarity index 100% rename from tests/recommended-json-api/testem.js rename to tests/example-json-api/testem.js diff --git a/tests/recommended-json-api/tests/.gitkeep b/tests/example-json-api/tests/.gitkeep similarity index 100% rename from tests/recommended-json-api/tests/.gitkeep rename to tests/example-json-api/tests/.gitkeep diff --git a/tests/recommended-json-api/tests/index.html b/tests/example-json-api/tests/index.html similarity index 93% rename from tests/recommended-json-api/tests/index.html rename to tests/example-json-api/tests/index.html index 7904f5f0da9..3ba72386180 100644 --- a/tests/recommended-json-api/tests/index.html +++ b/tests/example-json-api/tests/index.html @@ -11,7 +11,7 @@ {{content-for "test-head"}} - + {{content-for "head-footer"}} @@ -58,7 +58,7 @@ - + {{content-for "body-footer"}} diff --git a/tests/recommended-json-api/tests/test-helper.js b/tests/example-json-api/tests/test-helper.js similarity index 100% rename from tests/recommended-json-api/tests/test-helper.js rename to tests/example-json-api/tests/test-helper.js diff --git a/tests/recommended-json-api/tsconfig.json b/tests/example-json-api/tsconfig.json similarity index 100% rename from tests/recommended-json-api/tsconfig.json rename to tests/example-json-api/tsconfig.json diff --git a/tests/recommended-json-api/app/services/store.ts b/tests/recommended-json-api/app/services/store.ts deleted file mode 100644 index b25e7b063d3..00000000000 --- a/tests/recommended-json-api/app/services/store.ts +++ /dev/null @@ -1,49 +0,0 @@ -import JSONAPICache from '@ember-data/json-api'; -import type Model from '@ember-data/model'; -import { instantiateRecord, teardownRecord } from '@ember-data/model'; -import { buildSchema, modelFor } from '@ember-data/model/hooks'; -import RequestManager from '@ember-data/request'; -import Fetch from '@ember-data/request/fetch'; -import { LifetimesService } from '@ember-data/request-utils'; -import DataStore, { CacheHandler } from '@ember-data/store'; -import type { CacheCapabilitiesManager } from '@ember-data/store/-types/q/cache-store-wrapper'; -import type { ModelSchema } from '@ember-data/store/-types/q/ds-model'; -import type { StableRecordIdentifier } from '@warp-drive/core-types'; -import type { Cache } from '@warp-drive/core-types/cache'; -import type { TypeFromInstance } from '@warp-drive/core-types/record'; - -import CONFIG from '../config/environment'; - -export default class Store extends DataStore { - constructor(args: unknown) { - super(args); - - const manager = (this.requestManager = new RequestManager()); - manager.use([Fetch]); - manager.useCache(CacheHandler); - - this.registerSchema(buildSchema(this)); - this.lifetimes = new LifetimesService(CONFIG); - } - - override createCache(capabilities: CacheCapabilitiesManager): Cache { - return new JSONAPICache(capabilities); - } - - override instantiateRecord( - identifier: StableRecordIdentifier, - createRecordArgs: { [key: string]: unknown } - ): unknown { - return instantiateRecord.call(this, identifier, createRecordArgs); - } - - override teardownRecord(record: Model): void { - return teardownRecord.call(this, record); - } - - override modelFor(type: TypeFromInstance): ModelSchema; - override modelFor(type: string): ModelSchema; - override modelFor(type: string): ModelSchema { - return modelFor.call(this, type) as ModelSchema; - } -} diff --git a/tests/recommended-json-api/app/templates/application.hbs b/tests/recommended-json-api/app/templates/application.hbs deleted file mode 100644 index dd4c468197e..00000000000 --- a/tests/recommended-json-api/app/templates/application.hbs +++ /dev/null @@ -1,18 +0,0 @@ -{{page-title "Library"}} - - - - - - - - - -
    -

    Browse

    -
    - -
    -

    Search

    All Books

    - -{{outlet}} \ No newline at end of file