From fd09fdd025b63e53914364f1a90a48bf23061dbb Mon Sep 17 00:00:00 2001 From: Leo Singer Date: Mon, 24 Jun 2024 15:10:16 -0400 Subject: [PATCH] Fix incorrect total rate estimate for JSON notice types Add rate estimate for GCN Circulars Fixes #2351. Set noopener, not noreferrer Noopener prevents the newly opened page from interacting with the old one via JavaScript. Noreferrer prevents sending any tracking data. I am concerned about the former, not the latter. Set target=_blank, noopener for automatic links in MDX files Bump @nasa-gcn/eslint-config-gitignore from 0.0.1 to 0.0.2 Bumps [@nasa-gcn/eslint-config-gitignore](https://github.com/nasa-gcn/eslint-config-gitignore) from 0.0.1 to 0.0.2. - [Release notes](https://github.com/nasa-gcn/eslint-config-gitignore/releases) - [Commits](https://github.com/nasa-gcn/eslint-config-gitignore/compare/v0.0.1...v0.0.2) --- updated-dependencies: - dependency-name: "@nasa-gcn/eslint-config-gitignore" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @nasa-gcn/architect-functions-search from 1.0.0 to 1.0.1 Bumps [@nasa-gcn/architect-functions-search](https://github.com/nasa-gcn/architect-functions-search) from 1.0.0 to 1.0.1. - [Release notes](https://github.com/nasa-gcn/architect-functions-search/releases) - [Commits](https://github.com/nasa-gcn/architect-functions-search/compare/v1.0.0...v1.0.1) --- updated-dependencies: - dependency-name: "@nasa-gcn/architect-functions-search" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump isbot from 5.1.7 to 5.1.10 Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.7 to 5.1.10. - [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md) - [Commits](https://github.com/omrilotan/isbot/compare/v5.1.7...v5.1.10) --- updated-dependencies: - dependency-name: isbot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @nasa-gcn/remix-seo from 2.0.0 to 2.0.1 Bumps [@nasa-gcn/remix-seo](https://github.com/nasa-gcn/remix-seo) from 2.0.0 to 2.0.1. - [Release notes](https://github.com/nasa-gcn/remix-seo/releases) - [Commits](https://github.com/nasa-gcn/remix-seo/compare/v2.0.0...v2.0.1) --- updated-dependencies: - dependency-name: "@nasa-gcn/remix-seo" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Import only what we need from diff This may reduce the server side code bundle size a little bit by tree-shaking out what we don't use. Bump ts-jest from 29.1.2 to 29.1.5 Bumps [ts-jest](https://github.com/kulshekhar/ts-jest) from 29.1.2 to 29.1.5. - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.1.2...v29.1.5) --- updated-dependencies: - dependency-name: ts-jest dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump oidc-provider from 8.4.3 to 8.4.7 Bumps [oidc-provider](https://github.com/panva/node-oidc-provider) from 8.4.3 to 8.4.7. - [Release notes](https://github.com/panva/node-oidc-provider/releases) - [Changelog](https://github.com/panva/node-oidc-provider/blob/main/CHANGELOG.md) - [Commits](https://github.com/panva/node-oidc-provider/compare/v8.4.3...v8.4.7) --- updated-dependencies: - dependency-name: oidc-provider dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @nasa-gcn/dynamodb-autoincrement from 2.2.0 to 2.2.1 Bumps [@nasa-gcn/dynamodb-autoincrement](https://github.com/nasa-gcn/dynamodb-autoincrement) from 2.2.0 to 2.2.1. - [Release notes](https://github.com/nasa-gcn/dynamodb-autoincrement/releases) - [Commits](https://github.com/nasa-gcn/dynamodb-autoincrement/compare/v2.2.0...v2.2.1) --- updated-dependencies: - dependency-name: "@nasa-gcn/dynamodb-autoincrement" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @playwright/test from 1.44.1 to 1.45.0 Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.44.1 to 1.45.0. - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.44.1...v1.45.0) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Allow for testing of different roles in playwright config Bump @types/lodash from 4.17.4 to 4.17.5 Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.17.4 to 4.17.5. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash) --- updated-dependencies: - dependency-name: "@types/lodash" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @testing-library/jest-dom from 6.1.4 to 6.4.6 Bumps [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) from 6.1.4 to 6.4.6. - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/jest-dom/compare/v6.1.4...v6.4.6) --- updated-dependencies: - dependency-name: "@testing-library/jest-dom" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Bump @testing-library/react from 14.1.2 to 16.0.0 Bumps [@testing-library/react](https://github.com/testing-library/react-testing-library) from 14.1.2 to 16.0.0. - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-testing-library/compare/v14.1.2...v16.0.0) --- updated-dependencies: - dependency-name: "@testing-library/react" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Bump the remix group across 1 directory with 6 updates Bumps the remix group with 6 updates in the / directory: | Package | From | To | | --- | --- | --- | | [@remix-run/architect](https://github.com/remix-run/remix/tree/HEAD/packages/remix-architect) | `2.8.1` | `2.10.0` | | [@remix-run/css-bundle](https://github.com/remix-run/remix/tree/HEAD/packages/remix-css-bundle) | `2.8.1` | `2.10.0` | | [@remix-run/node](https://github.com/remix-run/remix/tree/HEAD/packages/remix-node) | `2.8.1` | `2.10.0` | | [@remix-run/react](https://github.com/remix-run/remix/tree/HEAD/packages/remix-react) | `2.8.1` | `2.10.0` | | [@remix-run/dev](https://github.com/remix-run/remix/tree/HEAD/packages/remix-dev) | `2.8.1` | `2.10.0` | | [@remix-run/eslint-config](https://github.com/remix-run/remix/tree/HEAD/packages/remix-eslint-config) | `2.8.1` | `2.10.0` | Updates `@remix-run/architect` from 2.8.1 to 2.10.0 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-architect/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/architect@2.10.0/packages/remix-architect) Updates `@remix-run/css-bundle` from 2.8.1 to 2.10.0 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-css-bundle/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/css-bundle@2.10.0/packages/remix-css-bundle) Updates `@remix-run/node` from 2.8.1 to 2.10.0 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-node/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/node@2.10.0/packages/remix-node) Updates `@remix-run/react` from 2.8.1 to 2.10.0 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-react/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/react@2.10.0/packages/remix-react) Updates `@remix-run/dev` from 2.8.1 to 2.10.0 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-dev/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/dev@2.10.0/packages/remix-dev) Updates `@remix-run/eslint-config` from 2.8.1 to 2.10.0 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-eslint-config/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/eslint-config@2.10.0/packages/remix-eslint-config) --- updated-dependencies: - dependency-name: "@remix-run/architect" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: remix - dependency-name: "@remix-run/css-bundle" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: remix - dependency-name: "@remix-run/node" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: remix - dependency-name: "@remix-run/react" dependency-type: direct:production update-type: version-update:semver-minor dependency-group: remix - dependency-name: "@remix-run/dev" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remix - dependency-name: "@remix-run/eslint-config" dependency-type: direct:development update-type: version-update:semver-minor dependency-group: remix ... Signed-off-by: dependabot[bot] Use native fetch instead of legacy Remix polyfill Decoding of request cookies in Architect applications was broken by Remix 2.9.0. As a temporary workaround, using Node.js's native but nonstandard fetch implementation restores cookie decoding. See https://github.com/remix-run/remix/issues/9657#issuecomment-2193246263 Circulars: Open Automatically Formatted Hyperlinks in New Tab (#2383) EP: Add schema related links (#2363) Fixes #2359. Bump isbot from 5.1.10 to 5.1.11 Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.10 to 5.1.11. - [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md) - [Commits](https://github.com/omrilotan/isbot/compare/v5.1.10...v5.1.11) --- updated-dependencies: - dependency-name: isbot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @types/lodash from 4.17.5 to 4.17.6 Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.17.5 to 4.17.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash) --- updated-dependencies: - dependency-name: "@types/lodash" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @types/node from 20.14.2 to 20.14.9 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.14.2 to 20.14.9. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Open all external links in a separate window - Also add `noopener` so that external links cannot communicate with the page via JavaScript. - Also suppress the eslint react/jsx-no-target-blank rule which suggests `rel="noreferrer"` which is only necessary for IE which has negligible market share. Fixes missing fields causing unexpected error in moderator views (#2432) Fixes #2431. fix for tooltip error in circular overview adding in circular with the error Save switching circular version retains search parameters Bump @nasa-gcn/architect-plugin-search from 1.2.0 to 1.3.0 Bumps [@nasa-gcn/architect-plugin-search](https://github.com/nasa-gcn/architect-plugin-search) from 1.2.0 to 1.3.0. - [Release notes](https://github.com/nasa-gcn/architect-plugin-search/releases) - [Commits](https://github.com/nasa-gcn/architect-plugin-search/compare/v1.2.0...v1.3.0) --- updated-dependencies: - dependency-name: "@nasa-gcn/architect-plugin-search" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Bump @types/node from 20.14.9 to 20.14.10 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.14.9 to 20.14.10. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump the remix group with 6 updates Bumps the remix group with 6 updates: | Package | From | To | | --- | --- | --- | | [@remix-run/architect](https://github.com/remix-run/remix/tree/HEAD/packages/remix-architect) | `2.10.0` | `2.10.2` | | [@remix-run/css-bundle](https://github.com/remix-run/remix/tree/HEAD/packages/remix-css-bundle) | `2.10.0` | `2.10.2` | | [@remix-run/node](https://github.com/remix-run/remix/tree/HEAD/packages/remix-node) | `2.10.0` | `2.10.2` | | [@remix-run/react](https://github.com/remix-run/remix/tree/HEAD/packages/remix-react) | `2.10.0` | `2.10.2` | | [@remix-run/dev](https://github.com/remix-run/remix/tree/HEAD/packages/remix-dev) | `2.10.0` | `2.10.2` | | [@remix-run/eslint-config](https://github.com/remix-run/remix/tree/HEAD/packages/remix-eslint-config) | `2.10.0` | `2.10.2` | Updates `@remix-run/architect` from 2.10.0 to 2.10.2 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-architect/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/architect@2.10.2/packages/remix-architect) Updates `@remix-run/css-bundle` from 2.10.0 to 2.10.2 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-css-bundle/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/css-bundle@2.10.2/packages/remix-css-bundle) Updates `@remix-run/node` from 2.10.0 to 2.10.2 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-node/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/node@2.10.2/packages/remix-node) Updates `@remix-run/react` from 2.10.0 to 2.10.2 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-react/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/react@2.10.2/packages/remix-react) Updates `@remix-run/dev` from 2.10.0 to 2.10.2 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-dev/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/dev@2.10.2/packages/remix-dev) Updates `@remix-run/eslint-config` from 2.10.0 to 2.10.2 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-eslint-config/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/eslint-config@2.10.2/packages/remix-eslint-config) --- updated-dependencies: - dependency-name: "@remix-run/architect" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/css-bundle" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/node" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/react" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/dev" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/eslint-config" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remix ... Signed-off-by: dependabot[bot] Bump isbot from 5.1.11 to 5.1.12 Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.11 to 5.1.12. - [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md) - [Commits](https://github.com/omrilotan/isbot/compare/v5.1.11...v5.1.12) --- updated-dependencies: - dependency-name: isbot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump highlight.js from 11.8.0 to 11.10.0 Bumps [highlight.js](https://github.com/highlightjs/highlight.js) from 11.8.0 to 11.10.0. - [Release notes](https://github.com/highlightjs/highlight.js/releases) - [Changelog](https://github.com/highlightjs/highlight.js/blob/main/CHANGES.md) - [Commits](https://github.com/highlightjs/highlight.js/compare/11.8.0...11.10.0) --- updated-dependencies: - dependency-name: highlight.js dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Add SVOM JSON Notices to Quickstart UI (#2404) Resolves #2274. Playwright circulars archive basic tests (#2423) Resolves #2350. fix: using ISO 8601 string input for seconds and milliseconds granularity on circular correction (#2424) Resolves #2388. Bump husky from 9.0.11 to 9.1.0 Bumps [husky](https://github.com/typicode/husky) from 9.0.11 to 9.1.0. - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v9.0.11...v9.1.0) --- updated-dependencies: - dependency-name: husky dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Bump @types/node from 20.14.10 to 20.14.11 Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.14.10 to 20.14.11. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump typescript from 5.5.2 to 5.5.3 Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.5.2 to 5.5.3. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.2...v5.5.3) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @playwright/test from 1.45.0 to 1.45.2 Bumps [@playwright/test](https://github.com/microsoft/playwright) from 1.45.0 to 1.45.2. - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](https://github.com/microsoft/playwright/compare/v1.45.0...v1.45.2) --- updated-dependencies: - dependency-name: "@playwright/test" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump @babel/preset-env from 7.23.6 to 7.24.8 Bumps [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) from 7.23.6 to 7.24.8. - [Release notes](https://github.com/babel/babel/releases) - [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md) - [Commits](https://github.com/babel/babel/commits/v7.24.8/packages/babel-preset-env) --- updated-dependencies: - dependency-name: "@babel/preset-env" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Bump the remix group with 6 updates Bumps the remix group with 6 updates: | Package | From | To | | --- | --- | --- | | [@remix-run/architect](https://github.com/remix-run/remix/tree/HEAD/packages/remix-architect) | `2.10.2` | `2.10.3` | | [@remix-run/css-bundle](https://github.com/remix-run/remix/tree/HEAD/packages/remix-css-bundle) | `2.10.2` | `2.10.3` | | [@remix-run/node](https://github.com/remix-run/remix/tree/HEAD/packages/remix-node) | `2.10.2` | `2.10.3` | | [@remix-run/react](https://github.com/remix-run/remix/tree/HEAD/packages/remix-react) | `2.10.2` | `2.10.3` | | [@remix-run/dev](https://github.com/remix-run/remix/tree/HEAD/packages/remix-dev) | `2.10.2` | `2.10.3` | | [@remix-run/eslint-config](https://github.com/remix-run/remix/tree/HEAD/packages/remix-eslint-config) | `2.10.2` | `2.10.3` | Updates `@remix-run/architect` from 2.10.2 to 2.10.3 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-architect/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/architect@2.10.3/packages/remix-architect) Updates `@remix-run/css-bundle` from 2.10.2 to 2.10.3 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-css-bundle/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/css-bundle@2.10.3/packages/remix-css-bundle) Updates `@remix-run/node` from 2.10.2 to 2.10.3 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-node/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/node@2.10.3/packages/remix-node) Updates `@remix-run/react` from 2.10.2 to 2.10.3 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-react/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/react@2.10.3/packages/remix-react) Updates `@remix-run/dev` from 2.10.2 to 2.10.3 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-dev/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/dev@2.10.3/packages/remix-dev) Updates `@remix-run/eslint-config` from 2.10.2 to 2.10.3 - [Release notes](https://github.com/remix-run/remix/releases) - [Changelog](https://github.com/remix-run/remix/blob/main/packages/remix-eslint-config/CHANGELOG.md) - [Commits](https://github.com/remix-run/remix/commits/@remix-run/eslint-config@2.10.3/packages/remix-eslint-config) --- updated-dependencies: - dependency-name: "@remix-run/architect" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/css-bundle" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/node" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/react" dependency-type: direct:production update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/dev" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remix - dependency-name: "@remix-run/eslint-config" dependency-type: direct:development update-type: version-update:semver-patch dependency-group: remix ... Signed-off-by: dependabot[bot] bump @types/lodash from 4.17.6 to 4.17.7 Bumps [@types/lodash](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/lodash) from 4.17.6 to 4.17.7. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/lodash) --- updated-dependencies: - dependency-name: "@types/lodash" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] bump isbot from 5.1.12 to 5.1.13 Bumps [isbot](https://github.com/omrilotan/isbot) from 5.1.12 to 5.1.13. - [Changelog](https://github.com/omrilotan/isbot/blob/main/CHANGELOG.md) - [Commits](https://github.com/omrilotan/isbot/compare/v5.1.12...v5.1.13) --- updated-dependencies: - dependency-name: isbot dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] bump prettier from 3.3.2 to 3.3.3 Bumps [prettier](https://github.com/prettier/prettier) from 3.3.2 to 3.3.3. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/3.3.2...3.3.3) --- updated-dependencies: - dependency-name: prettier dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Rerun prettier Add schema ID to GCN Circulars over Kafka See #2455. To close that issue, we will have to do a release of gcn-schema and then update the dependency in our package.json file. Remove dependabot Python configuration This project has no Python dependencies. Husky hooks no longer need to be run with npx See https://github.com/typicode/husky/releases/tag/v9.1.0. Bump @nasa-gcn/remark-rehype-astro from 1.1.2 to 1.1.3 Bumps [@nasa-gcn/remark-rehype-astro](https://github.com/nasa-gcn/remark-rehype-astro) from 1.1.2 to 1.1.3. - [Release notes](https://github.com/nasa-gcn/remark-rehype-astro/releases) - [Commits](https://github.com/nasa-gcn/remark-rehype-astro/compare/v1.1.2...v1.1.3) --- updated-dependencies: - dependency-name: "@nasa-gcn/remark-rehype-astro" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump husky from 9.1.0 to 9.1.1 Bumps [husky](https://github.com/typicode/husky) from 9.1.0 to 9.1.1. - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v9.1.0...v9.1.1) --- updated-dependencies: - dependency-name: husky dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] fix broken link Update @nasa-gcn/schema dependency to tagged version Fixes #2455. Bump downshift from 7.2.1 to 9.0.6 Bumps [downshift](https://github.com/downshift-js/downshift) from 7.2.1 to 9.0.6. - [Release notes](https://github.com/downshift-js/downshift/releases) - [Changelog](https://github.com/downshift-js/downshift/blob/master/CHANGELOG.md) - [Commits](https://github.com/downshift-js/downshift/compare/v7.2.1...v9.0.6) --- updated-dependencies: - dependency-name: downshift dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Circulars: enable basic lucene search this commit adds the most basic form of lucene search, which can be enabled by adding the CIRCULARS_LUCENE feature flag. Additional tuning of field weighting and some type of workaround for the autor search will be required to make it more functional, as well as documentation instructing users on making use of lucene search. Fix rate limiting due to improperly debounced auto complete In this context, the `useDebouncedCallback` hook is not working. Although it delays the execution of the callback until `wait` seconds of inactivity have passed, it does not decrease the _number_ of executions --- it just bunches them all together at once. As a result, we exceed the Cognito rate limit and the page crashes. Instead, use the Lodash `debounce` method directly. In my local sandbox environment, I observe that this approach does result in properly debounced invocations of the callback. Remove ruff from recommended extensions This repository does not contain any Python code. Add MDX support to recommended VS Code extensions This enables syntax highlighting in MDX documents. Document heartbeat topic Get schema ID from JSON schema itself Bump @architect/plugin-lambda-invoker from 2.0.0 to 2.0.1 Bumps [@architect/plugin-lambda-invoker](https://github.com/architect/plugin-lambda-invoker) from 2.0.0 to 2.0.1. - [Changelog](https://github.com/architect/plugin-lambda-invoker/blob/main/changelog.md) - [Commits](https://github.com/architect/plugin-lambda-invoker/compare/v2.0.0...v2.0.1) --- updated-dependencies: - dependency-name: "@architect/plugin-lambda-invoker" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Federal should be lowercase See https://digital.gov/style-guide/#grammar-and-spelling-2. Bump typescript from 5.5.3 to 5.5.4 Bumps [typescript](https://github.com/Microsoft/TypeScript) from 5.5.3 to 5.5.4. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Changelog](https://github.com/microsoft/TypeScript/blob/main/azure-pipelines.release.yml) - [Commits](https://github.com/Microsoft/TypeScript/compare/v5.5.3...v5.5.4) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Bump husky from 9.1.1 to 9.1.3 Bumps [husky](https://github.com/typicode/husky) from 9.1.1 to 9.1.3. - [Release notes](https://github.com/typicode/husky/releases) - [Commits](https://github.com/typicode/husky/compare/v9.1.1...v9.1.3) --- updated-dependencies: - dependency-name: husky dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] news item for circulars over kafka added schema update to announcement add heartbeat topic reorder announcements Update app/routes/news._index.mdx Co-authored-by: Leo Singer add link to heartbeat FAQ in announcement (#2500) * add link to heartbeat FAQ Parsing JSON Notices Update app/routes/docs.client.samples.md Update app/routes/docs.client.samples.md Update app/routes/docs.client.samples.md Co-authored-by: Tyler Barna <57914086+tylerbarna@users.noreply.github.com> Update app/routes/docs.client.samples.md Co-authored-by: Tyler Barna <57914086+tylerbarna@users.noreply.github.com> Update app/routes/docs.client.samples.md Co-authored-by: Tyler Barna <57914086+tylerbarna@users.noreply.github.com> Update app/routes/docs.client.samples.md Co-authored-by: Tyler Barna <57914086+tylerbarna@users.noreply.github.com> Update app/routes/docs.client.samples.md remove highlight, XML/JSON heading --- .github/dependabot.yml | 5 - .husky/pre-commit | 2 +- .vscode/extensions.json | 4 +- __playwright__/admin.setup.ts | 18 + __playwright__/admin/admin.spec.ts | 10 + __playwright__/auth.setup.ts | 3 - __playwright__/circulars/archive.spec.ts | 51 +- __playwright__/circulars/corrections.spec.ts | 18 +- __playwright__/circulars/edit.spec.ts | 35 +- __tests__/components/AnnounceBanner.tsx | 2 +- app/components/ClientSampleCode.tsx | 21 +- app/components/NoticeFormat.tsx | 12 +- .../NoticeTypeCheckboxes.tsx | 20 +- app/components/NoticeTypeCheckboxes/rates.ts | 3 + .../nested-checkboxes/NestedCheckboxes.tsx | 4 +- app/root.tsx | 5 +- app/root/AnnounceBanner.tsx | 5 +- app/root/Footer.tsx | 56 +- .../AstroData.components.tsx | 17 +- .../AstroDataContext.tsx | 25 +- .../rehypeAutolinkLiteral.ts | 6 +- .../route.tsx | 3 +- .../circulars._archive._index/route.tsx | 11 +- .../circulars.correction.$circularId.tsx | 7 +- .../CircularEditForm.tsx | 105 +- .../CircularsEditForm.module.scss | 14 - .../circulars.edit.$circularId/route.tsx | 7 +- ...lars.moderation.$circularId.$requestor.tsx | 11 +- app/routes/circulars/circulars.lib.ts | 9 +- app/routes/circulars/circulars.server.ts | 41 +- app/routes/docs.client.samples.md | 56 +- app/routes/docs.contributing._index.mdx | 2 +- app/routes/docs.faq/SampleHeartbeat.tsx | 24 + .../{docs.faq.md => docs.faq/route.mdx} | 14 + app/routes/docs.notices.consuming.mdx | 2 +- .../route.tsx | 12 +- app/routes/missions.einstein-probe/route.mdx | 7 + app/routes/news._index.mdx | 19 + app/routes/user.email._index/route.tsx | 6 +- app/routes/user.endorsements/route.tsx | 40 +- app/table-streams/circulars/index.ts | 10 +- package-lock.json | 2145 ++++++++++------- package.json | 61 +- playwright.config.ts | 77 +- remix.config.js | 4 +- sandbox-seed.json | 30 + server.ts | 2 +- src/plugins/sandboxOidcIdp.js | 33 +- 48 files changed, 1796 insertions(+), 1278 deletions(-) create mode 100644 __playwright__/admin.setup.ts create mode 100644 __playwright__/admin/admin.spec.ts delete mode 100644 app/routes/circulars.edit.$circularId/CircularsEditForm.module.scss create mode 100644 app/routes/docs.faq/SampleHeartbeat.tsx rename app/routes/{docs.faq.md => docs.faq/route.mdx} (85%) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 230f338b5..d91322cd7 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -18,8 +18,3 @@ updates: remix: patterns: - '@remix-run/*' - - - package-ecosystem: pip - directory: / - schedule: - interval: weekly diff --git a/.husky/pre-commit b/.husky/pre-commit index 2312dc587..c27d8893a 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1 @@ -npx lint-staged +lint-staged diff --git a/.vscode/extensions.json b/.vscode/extensions.json index 8157b50df..013c6ad16 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -4,10 +4,10 @@ // List of extensions which should be recommended for users of this workspace. "recommendations": [ - "charliermarsh.ruff", "dbaeumer.vscode-eslint", "esbenp.prettier-vscode", - "ms-playwright.playwright" + "ms-playwright.playwright", + "unifiedjs.vscode-mdx" ], // List of extensions recommended by VS Code that should not be recommended for users of this workspace. "unwantedRecommendations": [] diff --git a/__playwright__/admin.setup.ts b/__playwright__/admin.setup.ts new file mode 100644 index 000000000..3ecf4eb17 --- /dev/null +++ b/__playwright__/admin.setup.ts @@ -0,0 +1,18 @@ +import { expect, test as setup } from '@playwright/test' + +const authFile = '__playwright__/.auth/adminUser.json' + +const testAdminUsername = 'admin' +const testAdminPassword = 'TEST_PASSWORD' + +setup('authenticate', async ({ page }) => { + await page.goto('/login') + await page.getByPlaceholder('Enter any login').fill(testAdminUsername) + await page.getByPlaceholder('and password').fill(testAdminPassword) + await page.getByRole('button', { name: 'Sign-in' }).click() + await page.waitForURL('/') + await expect( + page.getByRole('button', { name: 'admin@example.com' }) + ).toBeVisible() + await page.context().storageState({ path: authFile }) +}) diff --git a/__playwright__/admin/admin.spec.ts b/__playwright__/admin/admin.spec.ts new file mode 100644 index 000000000..afcfdd779 --- /dev/null +++ b/__playwright__/admin/admin.spec.ts @@ -0,0 +1,10 @@ +import { expect, test } from '@playwright/test' + +test.describe('Example Admin Test Suite', () => { + test('has title', async ({ page }) => { + await page.goto('/') + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle('GCN - General Coordinates Network') + }) +}) diff --git a/__playwright__/auth.setup.ts b/__playwright__/auth.setup.ts index 77ea31bc5..ab7da38c9 100644 --- a/__playwright__/auth.setup.ts +++ b/__playwright__/auth.setup.ts @@ -6,9 +6,6 @@ const testUsername = 'TEST_USERNAME' const testPassword = 'TEST_PASSWORD' setup('authenticate', async ({ page }) => { - // Perform authentication steps. Replace these actions with your own. - if (!testUsername || !testPassword) - throw new Error('Please define test account info') await page.goto('/login') await page.getByPlaceholder('Enter any login').fill(testUsername) await page.getByPlaceholder('and password').fill(testPassword) diff --git a/__playwright__/circulars/archive.spec.ts b/__playwright__/circulars/archive.spec.ts index 55512cadd..c0cc33262 100644 --- a/__playwright__/circulars/archive.spec.ts +++ b/__playwright__/circulars/archive.spec.ts @@ -1,4 +1,4 @@ -import { test } from '@playwright/test' +import { expect, test } from '@playwright/test' test.describe('Circulars archive page', () => { test('responds to changes in the number of results per page', async ({ @@ -17,4 +17,53 @@ test.describe('Circulars archive page', () => { ) } }) + + test('search is functional via mouse click', async ({ page }) => { + await page.goto('/circulars') + await page.locator('#query').fill('GRB') + await page.getByRole('button', { name: 'Search' }).click() + }) + + test('search is functional via keyboard input', async ({ page }) => { + await page.goto('/circulars') + await page.locator('#query').fill('GRB') + await page.getByTestId('textInput').press('Enter') + }) + + test('search finds query string in body of circular', async ({ page }) => { + await page.goto('/circulars?query=ATLAS23srq') + await expect( + page.locator('a[href="/circulars/34730?query=ATLAS23srq"]') + ).toBeVisible() + }) + + test('search finds all results related to a specific object', async ({ + page, + }) => { + await page.goto('/circulars?query=230812B') + await page.waitForLoadState() + await expect(page.locator('ol', { has: page.locator('li') })).toBeVisible() + expect(await page.locator('ol > li').count()).toBe(64) + }) + + test('search finds no results for query with typo', async ({ page }) => { + // this highlights this search behaviour does not capture cases where there is a minor typo + await page.goto('/circulars?query=230812C') + await page.waitForLoadState() + await expect( + page.locator('ol', { has: page.locator('li') }) + ).not.toBeVisible() + }) + + test('search finds results that contain exact string but not similar strings', async ({ + page, + }) => { + // This highlights the search returns limited results because it is looking for exact matches to the string + // This should return many more results and include strings like 230812B + await page.goto('/circulars?query=230812') + const orderedListLocator = page.locator('ol') + const listItemLocator = orderedListLocator.locator('li') + + await expect(listItemLocator).toHaveCount(1) + }) }) diff --git a/__playwright__/circulars/corrections.spec.ts b/__playwright__/circulars/corrections.spec.ts index e6c055280..3a5993aac 100644 --- a/__playwright__/circulars/corrections.spec.ts +++ b/__playwright__/circulars/corrections.spec.ts @@ -13,14 +13,6 @@ const loadingTestsCircular = { version: 3, } -function getDateAndTimeStrings(createdOn: number) { - const date = new Date(createdOn) - return [ - date.toISOString().split('T')[0], - `${date.getUTCHours() % 12}:${date.getUTCMinutes()}${date.getUTCHours() > 12 ? 'pm' : 'am'}`, - ] -} - test.describe('Circulars correction page', () => { test('populates all fields on load', async ({ page }) => { test.slow() @@ -28,14 +20,8 @@ test.describe('Circulars correction page', () => { await expect(page.locator('#submitter')).toHaveValue( loadingTestsCircular.submitter ) - const [testDate, testTime] = getDateAndTimeStrings( - loadingTestsCircular.createdOn - ) - await expect(page.getByTestId('date-picker-external-input')).toHaveValue( - testDate - ) - // Time is only mapped to the minute, and in 12 hour format (for now) - await expect(page.getByTestId('combo-box-input')).toHaveValue(testTime) + const testDateTime = new Date(loadingTestsCircular.createdOn).toISOString() + await expect(page.locator('#createdOn')).toHaveValue(testDateTime) await expect(page.locator('#subject')).toHaveValue( loadingTestsCircular.subject ) diff --git a/__playwright__/circulars/edit.spec.ts b/__playwright__/circulars/edit.spec.ts index 0938274ee..d7acf555e 100644 --- a/__playwright__/circulars/edit.spec.ts +++ b/__playwright__/circulars/edit.spec.ts @@ -16,21 +16,12 @@ const loadingTestsCircular = { const editTestsCircular = { subject: 'ZTF and SEDM Observations of the Candidate Optical Afterglow AT 2024sva', - date: '2024-09-18', - time: '6:00am', + createdOn: '2024-09-18 06:00', submitter: 'example@example.com', body: 'Smaller body for Playwright test', circularId: 34730, } -function getDateAndTimeStrings(createdOn: number) { - const date = new Date(createdOn) - return [ - date.toISOString().split('T')[0], - `${date.getUTCHours() % 12}:${date.getUTCMinutes()}${date.getUTCHours() > 12 ? 'pm' : 'am'}`, - ] -} - test.describe('Circulars edit page', () => { test('populates all fields on load', async ({ page }) => { test.slow() @@ -38,14 +29,8 @@ test.describe('Circulars edit page', () => { await expect(page.locator('#submitter')).toHaveValue( loadingTestsCircular.submitter ) - const [testDate, testTime] = getDateAndTimeStrings( - loadingTestsCircular.createdOn - ) - await expect(page.getByTestId('date-picker-external-input')).toHaveValue( - testDate - ) - // Time is only mapped to the minute, and in 12 hour format (for now) - await expect(page.getByTestId('combo-box-input')).toHaveValue(testTime) + const testDateTime = new Date(loadingTestsCircular.createdOn).toISOString() + await expect(page.locator('#createdOn')).toHaveValue(testDateTime) await expect(page.locator('#subject')).toHaveValue( loadingTestsCircular.subject ) @@ -54,26 +39,24 @@ test.describe('Circulars edit page', () => { ) }) - test('submits expected values', async ({ page }) => { + test('submits expected values', async ({ page, browserName }) => { test.slow() + const testSubject = `${editTestsCircular.subject} - ${browserName}` await page.goto(`/circulars/edit/${editTestsCircular.circularId}`) await page.locator('#submitter').fill(editTestsCircular.submitter) - await page - .getByTestId('date-picker-external-input') - .fill(editTestsCircular.date) - await page.getByTestId('combo-box-input').fill(editTestsCircular.time) - await page.locator('#subject').fill(editTestsCircular.subject) + await page.locator('#createdOn').fill(editTestsCircular.createdOn) + await page.locator('#subject').fill(testSubject) await page.getByTestId('textarea').fill(editTestsCircular.body) await page.getByRole('button', { name: 'Update' }).click({ timeout: 10000 }) await page.waitForURL('/circulars?index') await expect( page.getByRole('link', { - name: editTestsCircular.subject, + name: testSubject, }) ).toBeVisible() await page .getByRole('link', { - name: editTestsCircular.subject, + name: testSubject, }) .click({ timeout: 10000 }) }) diff --git a/__tests__/components/AnnounceBanner.tsx b/__tests__/components/AnnounceBanner.tsx index ef51e155d..8b9a8b8a6 100644 --- a/__tests__/components/AnnounceBanner.tsx +++ b/__tests__/components/AnnounceBanner.tsx @@ -71,7 +71,7 @@ describe('AnnounceBanner component', () => { 'href', 'https://nasa-gcn.github.io/gcn-presentation/' ) - expect(link).toHaveAttribute('rel', 'external') + expect(link).toHaveAttribute('rel', 'external noopener') }) }) diff --git a/app/components/ClientSampleCode.tsx b/app/components/ClientSampleCode.tsx index 965c6f901..d9c078369 100644 --- a/app/components/ClientSampleCode.tsx +++ b/app/components/ClientSampleCode.tsx @@ -39,7 +39,8 @@ export function ClientSampleCode({ Open a terminal and run this command to install with{' '} pip @@ -51,7 +52,8 @@ export function ClientSampleCode({ or this command to install with with{' '} conda @@ -118,7 +120,8 @@ export function ClientSampleCode({ Open a terminal and run this command to install with{' '} npm @@ -201,7 +204,8 @@ export function ClientSampleCode({ Open a terminal and run this command to install with{' '} npm @@ -286,7 +290,8 @@ export function ClientSampleCode({ First,{' '} install librdkafka @@ -540,14 +545,16 @@ export function ClientSampleCode({ The following instructions are for the official Kafka command line tools which use Java and come with either{' '} Apache Kafka {' '} version 3.4.0 or newer or{' '} Confluent diff --git a/app/components/NoticeFormat.tsx b/app/components/NoticeFormat.tsx index 91f3f28dd..acf1789f6 100644 --- a/app/components/NoticeFormat.tsx +++ b/app/components/NoticeFormat.tsx @@ -48,7 +48,8 @@ export function NoticeFormatInput({ <> VOEvent XML. See{' '} documentation @@ -64,7 +65,8 @@ export function NoticeFormatInput({ <> 160-byte binary format. Field packing is{' '} specific to each notice type. @@ -80,7 +82,11 @@ export function NoticeFormatInput({ description: ( <> New notice types in JSON format defined using{' '} - + JSON schema diff --git a/app/components/NoticeTypeCheckboxes/NoticeTypeCheckboxes.tsx b/app/components/NoticeTypeCheckboxes/NoticeTypeCheckboxes.tsx index 333cf05df..de9d8ac1f 100644 --- a/app/components/NoticeTypeCheckboxes/NoticeTypeCheckboxes.tsx +++ b/app/components/NoticeTypeCheckboxes/NoticeTypeCheckboxes.tsx @@ -10,11 +10,12 @@ import { useState } from 'react' import type { NoticeFormat } from '../NoticeFormat' import { NestedCheckboxes } from '../nested-checkboxes/NestedCheckboxes' import { triggerRate } from './rates' +import { useFeature } from '~/root' const minRate = 1 / 7 function humanizedCount(count: number, singular: string, plural?: string) { - const noun = count === 1 ? singular : plural ?? `${singular}s` + const noun = count === 1 ? singular : (plural ?? `${singular}s`) return `${count} ${noun}` } @@ -28,7 +29,9 @@ function humanizedRate(rate: number, singular: string, plural?: string) { let unit = 'day' if (rate) { for (const { factor, unit: proposedUnit } of [ - { factor: 1, unit: 'day' }, + { factor: 1 / 86400, unit: 'second' }, + { factor: 3600, unit: 'hour' }, + { factor: 24, unit: 'day' }, { factor: 7, unit: 'week' }, { factor: 4, unit: 'month' }, { factor: 12, unit: 'year' }, @@ -192,6 +195,7 @@ const NoticeTypeLinks: { [key: string]: string | undefined } = { const JsonNoticeTypes: { [key: string]: string[] } = { Circulars: ['gcn.circulars'], + Heartbeat: ['gcn.heartbeat'], IceCube: ['gcn.notices.icecube.lvk_nu_track_search'], LVK: ['igwn.gwalert'], Swift: ['gcn.notices.swift.bat.guano'], @@ -200,6 +204,7 @@ const JsonNoticeTypes: { [key: string]: string[] } = { const JsonNoticeTypeLinks: { [key: string]: string | undefined } = { Circulars: '/circulars', + Heartbeat: '/docs/faq#how-can-i-tell-that-my-kafka-client-is-working', IceCube: '/missions/icecube', LVK: 'https://emfollow.docs.ligo.org/userguide/tutorial/receiving/gcn.html#receiving-and-parsing-notices', Swift: '/missions/swift', @@ -221,6 +226,11 @@ export function NoticeTypeCheckboxes({ const [selectedCounter, setSelectedCounter] = useState(0) const [alertEstimate, setAlertEstimate] = useState(0) + if (useFeature('SVOM_QUICKSTART')) { + JsonNoticeTypes.SVOM = ['gcn.notices.svom'] + JsonNoticeTypeLinks.SVOM = '/missions/svom' + } + const counterfunction = (childRef: HTMLInputElement) => { if (childRef.checked) { userSelected.add(childRef.name) @@ -234,7 +244,11 @@ export function NoticeTypeCheckboxes({ let estimate = 0 for (const noticeType of userSelected) { estimate += - triggerRate[`gcn.classic.${selectedFormat}.${noticeType}`] ?? 0 + triggerRate[ + selectedFormat === 'json' + ? noticeType + : `gcn.classic.${selectedFormat}.${noticeType}` + ] ?? 0 } setAlertEstimate(estimate) diff --git a/app/components/NoticeTypeCheckboxes/rates.ts b/app/components/NoticeTypeCheckboxes/rates.ts index 3dd21d942..e32857244 100644 --- a/app/components/NoticeTypeCheckboxes/rates.ts +++ b/app/components/NoticeTypeCheckboxes/rates.ts @@ -35,6 +35,8 @@ */ export const triggerRate: Record = { + 'gcn.circulars': 8.4, + 'gcn.heartbeat': 86400, 'gcn.classic.binary.AGILE_GRB_POS_TEST': 6.714285714285714, 'gcn.classic.binary.AGILE_MCAL_ALERT': 0.0, 'gcn.classic.binary.AMON_NU_EM_COINC': 0.0, @@ -274,4 +276,5 @@ export const triggerRate: Record = { 'gcn.notices.swift.bat.guano': 0.0, 'igwn.gwalert': 90.42857142857143, 'gcn.notices.einstein_probe.wxt.alert': 0.27, + 'gcn.notices.svom': 0, } diff --git a/app/components/nested-checkboxes/NestedCheckboxes.tsx b/app/components/nested-checkboxes/NestedCheckboxes.tsx index dabc34ae4..14cef7644 100644 --- a/app/components/nested-checkboxes/NestedCheckboxes.tsx +++ b/app/components/nested-checkboxes/NestedCheckboxes.tsx @@ -47,7 +47,7 @@ function NestedCheckboxNode({ nodes.map((node) => node.defaultChecked || false) ) - const isExternal = link && isExternalLink(link) + const external = link && isExternalLink(link) function updateParent() { if (topLevelRef.current) { @@ -85,7 +85,7 @@ function NestedCheckboxNode({ className="usa-link" to={link} target="_blank" - rel={isExternal ? 'noreferrer' : undefined} + rel={external ? 'noopener' : undefined} onClick={(e) => { e.stopPropagation() }} diff --git a/app/root.tsx b/app/root.tsx index 6a2d9f8a2..60b43e296 100644 --- a/app/root.tsx +++ b/app/root.tsx @@ -250,11 +250,10 @@ export function Layout({ children }: { children?: ReactNode }) {
- Introducing Einstein Probe, Astro Flavored Markdown, and Notices - Schema v4.0.0. See{' '} + New! Circulars over Kafka, Heartbeat Topic, and Schema v4.1.0. See{' '} news and announcements diff --git a/app/root/AnnounceBanner.tsx b/app/root/AnnounceBanner.tsx index faf60919e..4eaeb2066 100644 --- a/app/root/AnnounceBanner.tsx +++ b/app/root/AnnounceBanner.tsx @@ -53,7 +53,8 @@ export default function AnnounceBanner({

If you cannot attend live, then you can get the{' '} presentation @@ -77,7 +78,7 @@ export function AnnouncementEvent(props: { {props.time}

(best for {props.region}):
- + {props.linkstring} diff --git a/app/root/Footer.tsx b/app/root/Footer.tsx index 6cf20bb4b..e535408be 100644 --- a/app/root/Footer.tsx +++ b/app/root/Footer.tsx @@ -95,27 +95,44 @@ export function Footer() { A service of the{' '} - + Astrophysics Science Division {' '} at{' '} - + NASA {' '} - + Goddard Space Flight Center - + About NASA Accessibility @@ -123,7 +140,8 @@ export function Footer() { Budget and Performance @@ -131,30 +149,44 @@ export function Footer() { No FEAR Act - + FOIA Requests - + Office of the Inspector General - + Privacy Policy Vulnerability Disclosure Policy @@ -163,7 +195,7 @@ export function Footer() { Looking for U.S. government information and services?{' '} - + Visit USA.gov diff --git a/app/routes/circulars.$circularId.($version)/AstroData.components.tsx b/app/routes/circulars.$circularId.($version)/AstroData.components.tsx index 5f499fb7c..bb76ee771 100644 --- a/app/routes/circulars.$circularId.($version)/AstroData.components.tsx +++ b/app/routes/circulars.$circularId.($version)/AstroData.components.tsx @@ -34,7 +34,7 @@ export function GcnCircular({ return ( + fetchFunction={() => fetchTooltipData('circular', value) } label={({ subject, submitter }) => ( @@ -54,7 +54,10 @@ export function Arxiv({ children, value }: JSX.IntrinsicElements['data']) { return ( fetchTooltipData('arxiv', value)} + ext + fetchFunction={() => + fetchTooltipData('arxiv', value) + } label={({ title, year, authors }) => ( <>
arXiv:{value}
@@ -74,7 +77,10 @@ export function Doi({ children, value }: JSX.IntrinsicElements['data']) { return ( fetchTooltipData('doi', value)} + ext + fetchFunction={() => + fetchTooltipData('doi', value) + } label={({ authors, pub, year, title }) => ( <>
{pub}
@@ -94,7 +100,10 @@ export function Tns({ children, value }: JSX.IntrinsicElements['data']) { return ( fetchTooltipData('tns', value)} + ext + fetchFunction={() => + fetchTooltipData('tns', value) + } label={({ ra, dec, names }) => ( <>
{names.join(', ')}
diff --git a/app/routes/circulars.$circularId.($version)/AstroDataContext.tsx b/app/routes/circulars.$circularId.($version)/AstroDataContext.tsx index a143823d3..01ff3841a 100644 --- a/app/routes/circulars.$circularId.($version)/AstroDataContext.tsx +++ b/app/routes/circulars.$circularId.($version)/AstroDataContext.tsx @@ -31,16 +31,26 @@ export const AstroDataContext = createContext({}) */ export const AstroDataLink = forwardRef( ( - { children, className, rel: origRel, ...props }: Omit, + { + children, + className, + rel: origRel, + external, + ...props + }: Omit & { external?: boolean }, ref: Ref ) => { const context = useContext(AstroDataContext) - const rel = [origRel, context.rel].filter(Boolean).join(' ') || undefined + const target = external ? '_blank' : context.target + const rel = + [origRel, context.rel, external ? 'external noopener' : ''] + .filter(Boolean) + .join(' ') || undefined return ( ({ - fetch, + fetchFunction, label, children, + ext, ...props }: Omit[0], 'ref'> & { - fetch: () => T + fetchFunction: () => T label: (resolved: Awaited) => ReactNode + ext?: boolean }) { return ( ({ } >
Not found
@@ -98,6 +110,7 @@ export function AstroDataLinkWithTooltip({ } asCustom={AstroDataLink} + external={Boolean(ext)} > {children}
diff --git a/app/routes/circulars.$circularId.($version)/rehypeAutolinkLiteral.ts b/app/routes/circulars.$circularId.($version)/rehypeAutolinkLiteral.ts index f253bdc88..dd0dabd38 100644 --- a/app/routes/circulars.$circularId.($version)/rehypeAutolinkLiteral.ts +++ b/app/routes/circulars.$circularId.($version)/rehypeAutolinkLiteral.ts @@ -20,7 +20,11 @@ const regexp = new RegExp( function autolinkLiteral(tree: Parameters[0]) { findAndReplace( tree, - [regexp, (href: string) => h('a', { rel: 'external', href }, href)], + [ + regexp, + (href: string) => + h('a', { rel: 'external noopener', href, target: '_blank' }, href), + ], { ignore: ['data'] } ) return tree diff --git a/app/routes/circulars.$circularId.($version)/route.tsx b/app/routes/circulars.$circularId.($version)/route.tsx index 715fe12dd..32b8087f4 100644 --- a/app/routes/circulars.$circularId.($version)/route.tsx +++ b/app/routes/circulars.$circularId.($version)/route.tsx @@ -157,6 +157,7 @@ function CircularsHistory({ }) { const ref = useRef(null) const [showContent, setShowContent] = useState(false) + const searchString = useSearchString() useOnClickOutside(ref, () => { setShowContent(false) }) @@ -184,7 +185,7 @@ function CircularsHistory({
setShowContent(!showContent)} - to={`/circulars/${circular}/${version}`} + to={`/circulars/${circular}/${version}${searchString}`} > Version {version} diff --git a/app/routes/circulars._archive._index/route.tsx b/app/routes/circulars._archive._index/route.tsx index 1ad96b741..76a55d40e 100644 --- a/app/routes/circulars._archive._index/route.tsx +++ b/app/routes/circulars._archive._index/route.tsx @@ -90,9 +90,9 @@ export async function action({ request }: ActionFunctionArgs) { throw new Response('Body and subject are required', { status: 400 }) const user = await getUser(request) const circularId = getFormDataString(data, 'circularId') - const createdOnDate = getFormDataString(data, 'createdOnDate') - const createdOnTime = getFormDataString(data, 'createdOnTime') - const createdOn = Date.parse(`${createdOnDate} ${createdOnTime} UTC`) + const createdOnDate = + getFormDataString(data, 'createdOn') || Date.now().toString() + const createdOn = Date.parse(createdOnDate) let newCircular const props = { body, subject, ...(format ? { format } : {}) } @@ -107,7 +107,8 @@ export async function action({ request }: ActionFunctionArgs) { submitter = getFormDataString(data, 'submitter') if (!submitter) throw new Response(null, { status: 400 }) } - if (!createdOnDate || !createdOnTime || !createdOn) + + if (!createdOnDate || !createdOn) throw new Response(null, { status: 400 }) await createChangeRequest( { @@ -130,7 +131,7 @@ export async function action({ request }: ActionFunctionArgs) { case 'edit': if (circularId === undefined) throw new Response('circularId is required', { status: 400 }) - if (!createdOnDate || !createdOnTime || !createdOn) + if (!createdOnDate || !createdOn) throw new Response(null, { status: 400 }) await putVersion( { diff --git a/app/routes/circulars.correction.$circularId.tsx b/app/routes/circulars.correction.$circularId.tsx index 3893477b2..54942a145 100644 --- a/app/routes/circulars.correction.$circularId.tsx +++ b/app/routes/circulars.correction.$circularId.tsx @@ -29,9 +29,7 @@ export async function loader({ const user = await getUser(request) if (!user?.groups.includes(group)) throw new Response(null, { status: 403 }) const circular = await get(parseFloat(circularId)) - const defaultDateTime = new Date(circular.createdOn ?? 0) - .toISOString() - .split('T') + const defaultDateTime = new Date(circular.createdOn ?? 0).toISOString() return { formattedContributor: user ? formatAuthor(user) : '', @@ -40,8 +38,7 @@ export async function loader({ defaultFormat: circular.format, circularId: circular.circularId, defaultSubmitter: circular.submitter, - defaultCreatedOnDate: defaultDateTime[0], - defaultCreatedOnTime: defaultDateTime[1].substring(0, 5), + defaultCreatedOnDateTime: defaultDateTime, searchString: '', } } diff --git a/app/routes/circulars.edit.$circularId/CircularEditForm.tsx b/app/routes/circulars.edit.$circularId/CircularEditForm.tsx index fe6557046..363994703 100644 --- a/app/routes/circulars.edit.$circularId/CircularEditForm.tsx +++ b/app/routes/circulars.edit.$circularId/CircularEditForm.tsx @@ -9,14 +9,11 @@ import { Form, Link, useNavigation } from '@remix-run/react' import { Button, ButtonGroup, - DatePicker, - Grid, Icon, InputGroup, InputPrefix, Table, TextInput, - TimePicker, } from '@trussworks/react-uswds' import classnames from 'classnames' import { type ReactNode, useContext, useState } from 'react' @@ -27,7 +24,7 @@ import { MarkdownBody } from '../circulars.$circularId.($version)/Body' import { type CircularFormat, bodyIsValid, - dateIsValid, + dateTimeIsValid, subjectIsValid, submitterIsValid, } from '../circulars/circulars.lib' @@ -37,8 +34,6 @@ import CollapsableInfo from '~/components/CollapsableInfo' import Spinner from '~/components/Spinner' import { useModStatus } from '~/root' -import styles from './CircularsEditForm.module.css' - function SyntaxExample({ label, children, @@ -116,8 +111,7 @@ export function CircularEditForm({ defaultBody, defaultSubject, searchString, - defaultCreatedOnDate, - defaultCreatedOnTime, + defaultCreatedOnDateTime, intent, }: { formattedContributor: string @@ -127,8 +121,7 @@ export function CircularEditForm({ defaultBody: string defaultSubject: string searchString: string - defaultCreatedOnDate?: string - defaultCreatedOnTime?: string + defaultCreatedOnDateTime?: string intent: 'correction' | 'edit' | 'new' }) { let formSearchString = '?index' @@ -142,15 +135,14 @@ export function CircularEditForm({ const [body, setBody] = useState(defaultBody) const [subject, setSubject] = useState(defaultSubject) const [format, setFormat] = useState(defaultFormat) - const [date, setDate] = useState(defaultCreatedOnDate) - const [time, setTime] = useState(defaultCreatedOnTime ?? '12:00') - const dateValid = circularId ? dateIsValid(date, time) : true - + const [dateTime, setDateTime] = useState(defaultCreatedOnDateTime ?? '') const [submitter, setSubmitter] = useState(defaultSubmitter) const submitterValid = circularId ? submitterIsValid(submitter) : true const bodyValid = bodyIsValid(body) + const dateTimeValid = circularId ? dateTimeIsValid(dateTime) : true const sending = Boolean(useNavigation().formData) - const valid = subjectValid && bodyValid && dateValid && submitterValid + const valid = subjectValid && bodyValid && dateTimeValid && submitterValid + let headerText, saveButtonText switch (intent) { @@ -173,8 +165,7 @@ export function CircularEditForm({ subject.trim() !== defaultSubject.trim() || format !== defaultFormat || submitter?.trim() !== defaultSubmitter || - date !== defaultCreatedOnDate || - time !== defaultCreatedOnTime + dateTime !== defaultCreatedOnDateTime const userIsModerator = useModStatus() @@ -229,69 +220,23 @@ export function CircularEditForm({ {circularId !== undefined && ( - - - - Date - { - setDate(value ?? '') - }} - name="createdOnDate" - id="createdOnDate" - dateFormat="YYYY-MM-DD" - /> - - - - - {/* FIXME: The TimePicker component does not by itself - contribute useful form data because only the element has - a name, and the field does not. So the form data is only - populated correctly if the user selects an option from the - dropdown, but not if they type a valid value into the combo box. - - See https://github.com/trussworks/react-uswds/issues/2806 */} - - Time - {/* FIXME: Currently only 12 hour formats are supported. We should - switch to 24 hours as it is more common/useful for the community. - - See https://github.com/trussworks/react-uswds/issues/2947 */} - { - setTime(value ?? '') - }} - step={1} - label="" - /> - - - + + Date + { + setDateTime(value) + }} + name="createdOn" + id="createdOn" + className="maxw-full" + /> + )} diff --git a/app/routes/circulars/circulars.lib.ts b/app/routes/circulars/circulars.lib.ts index b332dd8be..77d8d2c64 100644 --- a/app/routes/circulars/circulars.lib.ts +++ b/app/routes/circulars/circulars.lib.ts @@ -132,15 +132,14 @@ export function formatIsValid(format: string): format is CircularFormat { return (circularFormats as any as string[]).includes(format) } -/** For updated dates, check that the date is valid */ -export function dateIsValid(date?: string, time?: string) { - return !Number.isNaN(Date.parse(`${date}T${time}:00.000Z`)) -} - export function submitterIsValid(submitter?: string) { return Boolean(submitter) } +export function dateTimeIsValid(date: string) { + return !Number.isNaN(Date.parse(date)) +} + export function emailIsAutoReply(subject: string) { const lowercaseSubject = subject.toLowerCase() return emailAutoReplyChecklist.some((x) => lowercaseSubject.includes(x)) diff --git a/app/routes/circulars/circulars.server.ts b/app/routes/circulars/circulars.server.ts index bd0ca4492..cd44bf415 100644 --- a/app/routes/circulars/circulars.server.ts +++ b/app/routes/circulars/circulars.server.ts @@ -32,7 +32,7 @@ import type { CircularMetadata, } from './circulars.lib' import { sendEmail } from '~/lib/email.server' -import { origin } from '~/lib/env.server' +import { feature, origin } from '~/lib/env.server' // A type with certain keys required. type Require = Omit & Required> @@ -158,6 +158,22 @@ export async function search({ }, } + const queryObj = query + ? feature('CICRULARS_LUCENE') + ? { + simple_query_string: { + query, + fields: ['submitter', 'subject', 'body'], + }, + } + : { + multi_match: { + query, + fields: ['submitter', 'subject', 'body'], + }, + } + : undefined + const { body: { hits: { @@ -170,14 +186,7 @@ export async function search({ body: { query: { bool: { - must: query - ? { - multi_match: { - query, - fields: ['submitter', 'subject', 'body'], - }, - } - : undefined, + must: queryObj, filter: { range: { createdOn: { @@ -404,8 +413,8 @@ export async function createChangeRequest( to: [user.email], fromName: 'GCN Circulars', subject: 'GCN Circulars Change Request: Received', - body: dedent`Your change request has been created for GCN Circular ${item.circularId}. - + body: dedent`Your change request has been created for GCN Circular ${item.circularId}. + You will receive another email when your request has been reviewed.`, }) } @@ -461,8 +470,8 @@ export async function deleteChangeRequest( to: [requestorEmail], fromName: 'GCN Circulars', subject: 'GCN Circulars Change Request: Rejected', - body: dedent`Your change request has been rejected for GCN Circular ${circularId}. - + body: dedent`Your change request has been rejected for GCN Circular ${circularId}. + View the Circular at ${origin}/circulars/${circularId}`, }) } @@ -526,7 +535,7 @@ export async function approveChangeRequest( editedOn: Date.now(), format: changeRequest.format, submitter: changeRequest.submitter, - createdOn: changeRequest.createdOn, + createdOn: changeRequest.createdOn ?? circular.createdOn, // This is temporary while there are some requests without this property }) await deleteChangeRequestRaw(circularId, requestorSub) @@ -535,8 +544,8 @@ export async function approveChangeRequest( to: [changeRequest.requestorEmail], fromName: 'GCN Circulars', subject: 'GCN Circulars Change Request: Approved', - body: dedent`Your change request has been approved for GCN Circular ${changeRequest.circularId}. - + body: dedent`Your change request has been approved for GCN Circular ${changeRequest.circularId}. + View the Circular at ${origin}/circulars/${changeRequest.circularId}`, }) } diff --git a/app/routes/docs.client.samples.md b/app/routes/docs.client.samples.md index 059507b46..06d2d190e 100644 --- a/app/routes/docs.client.samples.md +++ b/app/routes/docs.client.samples.md @@ -12,7 +12,7 @@ and some samples from the FAQs section of the [gcn-kafka-python](https://github. To contribute your own ideas, make a GitHub pull request to add it to [the Markdown source for this document](https://github.com/nasa-gcn/gcn.nasa.gov/blob/CodeSamples/app/routes/docs.client.samples.md), or [contact us](/contact). -## Parsing +## Parsing XML Within your consumer loop, use the following functions to convert the content of `message.value()` into other data types. @@ -164,3 +164,57 @@ for message in consumer.consume(end[0].offset - start[0].offset, timeout=1): continue print(message.value()) ``` + +## Working With JSON Schema + +For new missions, GCN Notices are preferably distributed in JSON format. This guide describes how to programmatically read the JSON schema. + +## Parsing JSON + +Read the JSON data from [sample.schema.json](https://gcn.nasa.gov/docs/notices/schema) and [sample.example.json](https://gcn.nasa.gov/docs/notices/schema), which parses it into Python dictionaries. + +```python +import json + +# Load and parse schema and example JSON files +with open('sample.schema.json', 'r') as schema_file: + schema = json.load(schema_file) + +with open('sample.example.json', 'r') as example_file: + example = json.load(example_file) + +print('Schema:', schema) +print('Example:', example) +``` + +## Encoding and Decoding of Embedded Data + +The following code sample shows how to encode/decode a file in Python. The `base64` package includes the methods `b64decode` and `b64encode` to make this task simple. + +```python +import base64 + +# Parse the content of your file to a base64 encoded string: +with open("path/to/your/file", 'rb') as file: + encoded_string = base64.b64encode(file.read()) + +print(encoded_string) +# b'a1512dabc1b6adb3cd1b6dcb6d4c6......' + +# Decode and write the content to a local file: +with open("path/to/destination/file", 'wb') as file: + file.write(base64.b64decode(encoded_string)) + +``` + +If you want to include a FITS file in a Notice, you add a property to your schema definition in the following format: + +```python +{ + type: 'string', + contentEncoding: 'base64', + contentMediaType: 'image/fits', +} +``` + +In your data production pipeline, you can use the encoding steps to convert your file to a bytestring and set the value of the property to this bytestring. See [non-JSON data](https://json-schema.org/understanding-json-schema/reference/non_json_data.html) for more information. diff --git a/app/routes/docs.contributing._index.mdx b/app/routes/docs.contributing._index.mdx index 79d0f5228..41a9d017f 100644 --- a/app/routes/docs.contributing._index.mdx +++ b/app/routes/docs.contributing._index.mdx @@ -37,7 +37,7 @@ Here are some more specific ways that _you_ can help. - **Improve design and accessibility.** We are constantly seeking to improve the GCN user experience. Look for issues in GitHub that are marked . - We use the [US Web Design System](https://designsystem.digital.gov), an open source design language and front end framework that is common to many Federal agencies. US Web Design System components for [React](https://reactjs.org) are provided by [react-uswds](https://github.com/trussworks/react-uswds). + We use the [US Web Design System](https://designsystem.digital.gov), an open source design language and front end framework that is common to many U.S. federal agencies. US Web Design System components for [React](https://reactjs.org) are provided by [react-uswds](https://github.com/trussworks/react-uswds). - **Add new features to the web site.** We have lots of ideas for new features, visualizations, and ways to interact with GCN data. We bet you have lots of ideas too! Look for issues in GitHub that are marked or . diff --git a/app/routes/docs.faq/SampleHeartbeat.tsx b/app/routes/docs.faq/SampleHeartbeat.tsx new file mode 100644 index 000000000..b10d29fa5 --- /dev/null +++ b/app/routes/docs.faq/SampleHeartbeat.tsx @@ -0,0 +1,24 @@ +/*! + * Copyright © 2023 United States Government as represented by the + * Administrator of the National Aeronautics and Space Administration. + * All Rights Reserved. + * + * SPDX-License-Identifier: Apache-2.0 + */ +import { dedent } from 'ts-dedent' + +import { Highlight } from '~/components/Highlight' + +import { $id } from '@nasa-gcn/schema/gcn/notices/core/Alert.schema.json' + +export function SampleHeartbeat() { + return ( + + ) +} diff --git a/app/routes/docs.faq.md b/app/routes/docs.faq/route.mdx similarity index 85% rename from app/routes/docs.faq.md rename to app/routes/docs.faq/route.mdx index 85b4e91ac..a003cc540 100644 --- a/app/routes/docs.faq.md +++ b/app/routes/docs.faq/route.mdx @@ -3,6 +3,8 @@ handle: breadcrumb: Frequently Asked Questions --- +import { SampleHeartbeat } from './SampleHeartbeat' + # Frequently Asked Questions ## Kafka @@ -58,6 +60,18 @@ Clients connecting to GCN only need to be able to make _outbound_ (egress) TCP c +### How can I tell that my Kafka client is working? + +Subscribe to the topic `gcn.heartbeat`, which broadcasts a test message approximately once a second. The contents of the heartbeat messages looks like this: + + + +### I have an intermittent or flaky Internet connection. How do I ensure that my Kafka client script won't miss messages? + +A common mistake that we see is that users stop and restart their Kafka client script to try to resolve connectivity issues. We do not recommend this. + +Instead, simply leave your client script running. As long as you leave your client running, the GCN Kafka broker will remember the last record that it sent to you by saving your [consumer offset](https://docs.confluent.io/platform/current/clients/consumer.html#offset-management). Shortly after your Internet connection stabilizes, the broker will send your client any messages that were queued while your connection was down. + ### What does the warning `Subscribed topic not available: gcn.classic.text.AGILE_GRB_GROUND: Broker: Unknown topic or partition'` mean? This warning means that there have not been any recent alerts on that topic. diff --git a/app/routes/docs.notices.consuming.mdx b/app/routes/docs.notices.consuming.mdx index 8c639c1ab..6f7ba6e5d 100644 --- a/app/routes/docs.notices.consuming.mdx +++ b/app/routes/docs.notices.consuming.mdx @@ -20,7 +20,7 @@ Subscriptions to notices via Kafka provides pipelines and robotic telescopes a r See our [Start Streaming GCN Notices quick start guide](/quickstart) for a step-by-step walkthrough to begin streaming alerts now. -See our [Kafka client setup](/client) for more details about configuring your client to receive Notices, and the lightweight wrappers in [Python](https://github.com/nasa-gcn/gcn-kafka-python), [Node.js](https://github.com/nasa-gcn/gcn-kafka-js), C, and C#. +See our [Kafka client setup](/docs/client) for more details about configuring your client to receive Notices, and the lightweight wrappers in [Python](https://github.com/nasa-gcn/gcn-kafka-python), [Node.js](https://github.com/nasa-gcn/gcn-kafka-js), C, and C#. ## Receiving Notices via Email diff --git a/app/routes/docs_._schema-browser.schema.($version).$/route.tsx b/app/routes/docs_._schema-browser.schema.($version).$/route.tsx index e40ad6c4f..1e95bf395 100644 --- a/app/routes/docs_._schema-browser.schema.($version).$/route.tsx +++ b/app/routes/docs_._schema-browser.schema.($version).$/route.tsx @@ -252,7 +252,8 @@ function SchemaBody({ View the source on{' '} GitHub @@ -303,7 +304,8 @@ function SchemaBody({ individually valid, based on their respective properties. See{' '} allOf @@ -323,7 +325,8 @@ function SchemaBody({ individually valid based on their respective properties. See{' '} anyOf @@ -343,7 +346,8 @@ function SchemaBody({ individually valid based on their respective properties. See{' '} oneOf diff --git a/app/routes/missions.einstein-probe/route.mdx b/app/routes/missions.einstein-probe/route.mdx index a3db8a42e..b57f5e4cc 100644 --- a/app/routes/missions.einstein-probe/route.mdx +++ b/app/routes/missions.einstein-probe/route.mdx @@ -33,6 +33,13 @@ The [Einstein Probe (EP)](https://ep.bao.ac.cn/ep/) is a mission of the Chinese **JSON-Serialized GCN Notices Types in GCN Kafka:** +Einstein Probe distributes alerts for the detection of gamma-ray transients. These notices are published on the GCN Kafka topic `gcn.notices.einstein_probe.wxt.alert`. + +The [GCN schema](/schema/stable/gcn/notices/einstein_probe/wxt/alert.schema.json) and +example [JSON message](/schema/stable/gcn/notices/einstein_probe/wxt/alert.schema.example.json) files are available to use for [Einstein Probe Schema](/schema/stable/gcn/notices/einstein_probe). See the [Schema Browser](/docs/schema/stable/gcn/notices/einstein_probe/wxt/alert.schema.json) for more information on the properties defined in the schema. + +Detailed description and examples of EP Notices are available in the [GCN Schema GitHub project](https://github.com/nasa-gcn/gcn-schema/tree/main/gcn/notices/einstein_probe/wxt). +
| Type | Contents | Latency | diff --git a/app/routes/news._index.mdx b/app/routes/news._index.mdx index 7c70609cb..4cf3e282b 100644 --- a/app/routes/news._index.mdx +++ b/app/routes/news._index.mdx @@ -26,6 +26,25 @@ import { Anchor } from '~/components/Anchor' ## 2024 + + } + > + + Circulars are Now Available via Kafka, Heartbeat Kafka Topic, and Schema Release v4.1.0 + + + - **Stream Circulars over Kafka in JSON format** on the topic `gcn.circulars`. Add Circulars to your existing Kafka streaming codes or generated via the [Start Streaming GCN Notices interface](/quickstart). + - [**GCN Heartbeat Kafka Topic**](docs/faq#how-can-i-tell-that-my-kafka-client-is-working) (`gcn.heartbeat`) broadcasts a test message approximately once a second that can be used to test your Kafka connection. + - **Schema v4.1.0** includes the following updates: + - [Circulars schema](https://gcn.nasa.gov/docs/schema/v4.1.0/gcn/circulars.schema.json). + - `id` property (from the Event core schema) in [Einstein Probe Notices](https://gcn.nasa.gov/docs/schema/v4.1.0/gcn/notices/einstein_probe/wxt/alert.schema.json). + - [Pointing core schema](https://gcn.nasa.gov/docs/schema/v4.1.0/gcn/notices/core/Pointing.schema.json) changed from `ra` and `dec` to `ra_pointing` and `dec_pointing` to remove ambiguity with source position. + + + Note that your preferenes here do not affect prior subscriptions on the old web site,{' '} - + https://gcn.gsfc.nasa.gov/ . To change your GCN Classic Notice subscriptions, please{' '} diff --git a/app/routes/user.endorsements/route.tsx b/app/routes/user.endorsements/route.tsx index 1a7515d55..776d79ab0 100644 --- a/app/routes/user.endorsements/route.tsx +++ b/app/routes/user.endorsements/route.tsx @@ -22,14 +22,16 @@ import { type UseComboboxStateChange, useCombobox, } from 'downshift' +import debounce from 'lodash/debounce' import { forwardRef, + useCallback, useEffect, useImperativeHandle, useRef, useState, } from 'react' -import { useDebounceCallback, useResizeObserver } from 'usehooks-ts' +import { useResizeObserver } from 'usehooks-ts' import { formatAuthor } from '../circulars/circulars.lib' import type { @@ -129,7 +131,11 @@ export default function () {

Peer endorsements (inspired by{' '} - + arXiv ) help us to grow the GCN community sustainably while protecting the @@ -388,19 +394,23 @@ const EndorserComboBox = forwardRef< setItems(fetcher.data?.submitters ?? []) }, [fetcher.data]) - const onInputValueChange = useDebounceCallback( - ({ inputValue, isOpen }: UseComboboxStateChange) => { - if (inputValue && isOpen) { - const data = new FormData() - data.set('filter', inputValue.split(' ')[0]) - data.set('intent', 'filter') - fetcher.submit(data, { method: 'POST' }) - } else { - setItems([]) - } - }, - 500, - { trailing: true } + // eslint-disable-next-line react-hooks/exhaustive-deps + const onInputValueChange = useCallback( + debounce( + ({ inputValue, isOpen }: UseComboboxStateChange) => { + if (inputValue && isOpen) { + const data = new FormData() + data.set('filter', inputValue.split(' ')[0]) + data.set('intent', 'filter') + fetcher.submit(data, { method: 'POST' }) + } else { + setItems([]) + } + }, + 500, + { trailing: true } + ), + [] ) const { diff --git a/app/table-streams/circulars/index.ts b/app/table-streams/circulars/index.ts index 6b6e2d215..4b3328abd 100644 --- a/app/table-streams/circulars/index.ts +++ b/app/table-streams/circulars/index.ts @@ -24,6 +24,8 @@ import { createTriggerHandler } from '~/lib/lambdaTrigger.server' import type { Circular } from '~/routes/circulars/circulars.lib' import { formatCircularText } from '~/routes/circulars/circulars.lib' +import { $id as circularsJsonSchemaId } from '@nasa-gcn/schema/gcn/circulars.schema.json' + const index = 'circulars' const fromName = 'GCN Circulars' @@ -124,7 +126,13 @@ export const handler = createTriggerHandler( promises.push(send(circular)) const { sub, ...cleanedCircular } = circular promises.push( - sendKafka('gcn.circulars', JSON.stringify(cleanedCircular)) + sendKafka( + 'gcn.circulars', + JSON.stringify({ + $schema: circularsJsonSchemaId, + ...cleanedCircular, + }) + ) ) } } diff --git a/package-lock.json b/package-lock.json index 3f359bad2..3b2ddfd33 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,16 +8,17 @@ "license": "Apache-2.0", "dependencies": { "@architect/functions": "^5.3.4", - "@nasa-gcn/architect-functions-search": "^1.0.0", - "@nasa-gcn/dynamodb-autoincrement": "^2.2.0", - "@nasa-gcn/remark-rehype-astro": "^1.1.2", - "@nasa-gcn/remix-seo": "^2.0.0", + "@nasa-gcn/architect-functions-search": "^1.0.1", + "@nasa-gcn/dynamodb-autoincrement": "^2.2.1", + "@nasa-gcn/remark-rehype-astro": "^1.1.3", + "@nasa-gcn/remix-seo": "^2.0.1", + "@nasa-gcn/schema": "^4.1.0", "@octokit/rest": "^21.0.0", "@opensearch-project/opensearch": "^2.10.0", - "@remix-run/architect": "^2.8.1", - "@remix-run/css-bundle": "^2.8.1", - "@remix-run/node": "^2.8.1", - "@remix-run/react": "^2.8.1", + "@remix-run/architect": "^2.10.3", + "@remix-run/css-bundle": "^2.10.3", + "@remix-run/node": "^2.10.3", + "@remix-run/react": "^2.10.3", "@trussworks/react-uswds": "github:lpsinger/react-uswds#gcn", "@xmldom/xmldom": "^0.8.10", "aws-lambda-ses-forwarder": "github:lpsinger/aws-lambda-ses-forwarder#aws-sdk-v3", @@ -26,14 +27,14 @@ "cross-env": "^7.0.3", "dayjs": "^1.11.10", "diff": "^5.2.0", - "downshift": "^7.2.1", + "downshift": "^9.0.6", "email-validator": "^2.0.4", "gcn-kafka": "^0.2.2", "github-slugger": "^2.0.0", "hast-util-find-and-replace": "^5.0.1", "hastscript": "^8.0.0", - "highlight.js": "^11.8.0", - "isbot": "^5.1.7", + "highlight.js": "^11.10.0", + "isbot": "^5.1.13", "lodash": "^4.17.21", "lucene": "^2.1.1", "mailparser": "^3.6.5", @@ -63,7 +64,7 @@ }, "devDependencies": { "@architect/architect": "^10.16.3", - "@architect/plugin-lambda-invoker": "^2.0.0", + "@architect/plugin-lambda-invoker": "^2.0.1", "@architect/utils": "^3.1.9", "@aws-sdk/client-cognito-identity-provider": "^3.552.0", "@aws-sdk/client-dynamodb": "^3.552.0", @@ -73,27 +74,27 @@ "@aws-sdk/lib-dynamodb": "^3.552.0", "@aws-sdk/lib-storage": "^3.552.0", "@aws-sdk/util-dynamodb": "^3.319.0", - "@babel/preset-env": "^7.23.6", + "@babel/preset-env": "^7.24.8", "@babel/preset-typescript": "^7.23.3", "@gitlab/svgs": "^3.83.0", - "@nasa-gcn/architect-plugin-search": "^1.2.0", - "@nasa-gcn/eslint-config-gitignore": "^0.0.1", - "@playwright/test": "^1.44.1", - "@remix-run/dev": "^2.8.1", - "@remix-run/eslint-config": "^2.8.1", - "@testing-library/jest-dom": "^6.1.4", - "@testing-library/react": "^14.1.2", + "@nasa-gcn/architect-plugin-search": "^1.3.0", + "@nasa-gcn/eslint-config-gitignore": "^0.0.2", + "@playwright/test": "^1.45.2", + "@remix-run/dev": "^2.10.3", + "@remix-run/eslint-config": "^2.10.3", + "@testing-library/jest-dom": "^6.4.6", + "@testing-library/react": "^16.0.0", "@trivago/prettier-plugin-sort-imports": "^4.2.1", "@types/color-convert": "^2.0.1", "@types/diff": "^5.2.1", "@types/grecaptcha": "^3.0.6", "@types/jest": "^29.5.5", - "@types/lodash": "^4.17.4", + "@types/lodash": "^4.17.7", "@types/lucene": "^2.1.7", "@types/mailparser": "^3.4.1", "@types/mdast": "^4.0.4", "@types/memoizee": "^0.4.9", - "@types/node": "^20.14.2", + "@types/node": "^20.14.11", "@types/nodemailer": "^6.4.14", "@types/react": "^18.2.24", "@types/react-copy-to-clipboard": "^5.0.5", @@ -107,7 +108,7 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-jest": "^27.9.0", "glob": "^10.3.4", - "husky": "^9.0.11", + "husky": "^9.1.3", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-transform-stub": "^2.0.0", @@ -115,17 +116,17 @@ "lowlight": "^3.0.0", "nasawds": "^4.0.63", "npm-run-all": "^4.1.5", - "oidc-provider": "^8.4.3", + "oidc-provider": "^8.4.7", "postcss-csso": "^6.0.1", - "prettier": "3.3.2", + "prettier": "3.3.3", "rehype-autolink-headings": "^6.1.1", "rehype-external-links": "^3.0.0", "rehype-highlight": "^7.0.0", "rehype-slug": "^6.0.0", "rimraf": "^5.0.0", "sass": "^1.64.2", - "ts-jest": "^29.1.2", - "typescript": "^5.5.2", + "ts-jest": "^29.1.5", + "typescript": "^5.5.4", "yarn": "^1.22.21" }, "engines": { @@ -142,9 +143,9 @@ } }, "node_modules/@adobe/css-tools": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", - "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz", + "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==", "dev": true }, "node_modules/@ampproject/remapping": { @@ -423,9 +424,9 @@ } }, "node_modules/@architect/plugin-lambda-invoker": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@architect/plugin-lambda-invoker/-/plugin-lambda-invoker-2.0.0.tgz", - "integrity": "sha512-QIfbrXiDu7Ixw4v67WibG/oGFjC6I7koiaaVMuYSIm6i84SzUDbUfNu4MJnGwxbgbJwhvfHVch9dJGrG9rwEQQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@architect/plugin-lambda-invoker/-/plugin-lambda-invoker-2.0.1.tgz", + "integrity": "sha512-exp9WvYwuKe4OCVmXTjMwRQ1mk83Hi70niDuu2bsnf9WPjCkTtuWmN7+zueoCzOWU/xHbvtoyKAYhtI6xLp9Bw==", "dev": true, "dependencies": { "@architect/utils": "^4.0.6", @@ -10720,93 +10721,22 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.22.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.13.tgz", - "integrity": "sha512-XktuhWlJ5g+3TJXc5upd9Ks1HutSArik6jf2eAjYFyIOf4ej3RN+184cZbzDvbPnuTJIUhPKKJE3cIsYTiAT3w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.22.13", - "chalk": "^2.4.2" + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/code-frame/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/code-frame/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@babel/code-frame/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/code-frame/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/compat-data": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", - "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.9.tgz", + "integrity": "sha512-e701mcfApCJqMMueQI0Fb68Amflj83+dvAvHawoBpAz+GDjCIyGHzNwnefjsWJ3xiYAqqiQFoWbspGYBdb2/ng==", "dev": true, "engines": { "node": ">=6.9.0" @@ -10879,14 +10809,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.0.tgz", - "integrity": "sha512-lN85QRR+5IbYrMWM6Y4pE/noaQtg4pNiqeNGX60eqOfo6gtEj6uw/JagelB8vVztSd7R6M5n1+PQkDbHbBRU4g==", + "version": "7.24.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.10.tgz", + "integrity": "sha512-o9HBZL1G2129luEUlG1hB4N/nlYNWHnpwlND9eOMclRqqu1YDy2sSYVCFUZwl8I1Gxh+QSRrP2vD7EpUmFVXxg==", "dev": true, "dependencies": { - "@babel/types": "^7.23.0", - "@jridgewell/gen-mapping": "^0.3.2", - "@jridgewell/trace-mapping": "^0.3.17", + "@babel/types": "^7.24.9", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^2.5.1" }, "engines": { @@ -10894,14 +10824,14 @@ } }, "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", - "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.0.1", + "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { "node": ">=6.0.0" @@ -10920,38 +10850,60 @@ } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", - "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", + "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", - "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", + "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor/node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", - "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.24.8.tgz", + "integrity": "sha512-oU+UoqCHdp+nWVDkpldqIQL/i/bvAv53tRqLG/s+cOXxe66zOYLU7ar/Xs3LdmBihrUMEUhwu6dMZwbNOYDwvw==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-validator-option": "^7.23.5", - "browserslist": "^4.22.2", + "@babel/compat-data": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -10984,19 +10936,19 @@ "dev": true }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.8.tgz", + "integrity": "sha512-4f6Oqnmyp2PP3olgUMmOwC3akxSm5aBYraQ6YDdKy7NcAMkDECHWG0DEnV6M2UAkERgIBhYt8S27rURPg7SxWA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.8", + "@babel/helper-optimise-call-expression": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "semver": "^6.3.1" }, "engines": { @@ -11016,12 +10968,12 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", - "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.24.7.tgz", + "integrity": "sha512-03TCmXy2FtXJEZfbXDTSqq1fRJArk7lX9DOFC/47VthYcxyIOx+eXQmdo6DOQvrbpIix+KfXwvuXdFDZHxt+rA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", "regexpu-core": "^5.3.1", "semver": "^6.3.1" }, @@ -11042,9 +10994,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", + "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", "dev": true, "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", @@ -11058,74 +11010,121 @@ } }, "node_modules/@babel/helper-environment-visitor": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", - "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", + "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", "dev": true, + "dependencies": { + "@babel/types": "^7.24.7" + }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", - "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz", + "integrity": "sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==", "dev": true, "dependencies": { - "@babel/template": "^7.22.15", - "@babel/types": "^7.23.0" + "@babel/template": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-hoist-variables": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", - "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.24.7.tgz", + "integrity": "sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.22.15.tgz", - "integrity": "sha512-qLNsZbgrNh0fDQBCPocSL8guki1hcPvltGDv/NxvUoABwFq7GkKSu1nRXeJkVZc+wJvne2E0RKQz+2SQrz6eAA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", + "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.8", + "@babel/types": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions/node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", - "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports/node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", - "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.24.9.tgz", + "integrity": "sha512-oYbh+rtFKj/HwBQkFlUzvcybzklmVdVV3UU+mN7n2t/q3yGHbuVdNxyFvSBO1tfvjyArpHNcWMAzsSPdyI46hw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-simple-access": "^7.22.5", - "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11135,35 +11134,35 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", - "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", + "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", - "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", - "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.24.7.tgz", + "integrity": "sha512-9pKLcTlZ92hNZMQfGCHImUpDOlAgkkpqalWEeftW5FBya75k8Li2ilerxkM/uBEj01iBZXcCIB/bwvDYgWyibA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-wrap-function": "^7.22.20" + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-wrap-function": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11173,14 +11172,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", - "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.24.7.tgz", + "integrity": "sha512-qTAxxBM81VEyoAY0TtLrx1oAEJc09ZK67Q9ljQToqCnA+55eNwCORaxlKyu+rNfX86o8OXRUSNUnrtsAZXM9sg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-member-expression-to-functions": "^7.22.15", - "@babel/helper-optimise-call-expression": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-member-expression-to-functions": "^7.24.7", + "@babel/helper-optimise-call-expression": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11190,77 +11189,143 @@ } }, "node_modules/@babel/helper-simple-access": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", - "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access/node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", - "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", + "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers/node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-split-export-declaration": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", - "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", "dev": true, "dependencies": { - "@babel/types": "^7.22.5" + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-string-parser": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.22.5.tgz", - "integrity": "sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", - "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", - "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.24.7.tgz", + "integrity": "sha512-N9JIYk3TD+1vq/wn77YnJOqMtfWhNewNE+DJV4puD2X7Ew9J4JvrzrFDfTfyv5EgEXVy9/Wt8QiOErzEmv5Ifw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.24.7", + "@babel/template": "^7.24.7", + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function/node_modules/@babel/traverse": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.8.tgz", + "integrity": "sha512-t0P1xxAPzEDcEPmjprAQq19NWum4K0EQPjMwZQZbHt+GiZqvjCHjj755Weq1YRPVzBI+3zSfvScfpnuIecVFJQ==", "dev": true, "dependencies": { - "@babel/helper-function-name": "^7.22.5", - "@babel/template": "^7.22.15", - "@babel/types": "^7.22.19" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", + "@babel/parser": "^7.24.8", + "@babel/types": "^7.24.8", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" @@ -11281,14 +11346,15 @@ } }, "node_modules/@babel/highlight": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.20.tgz", - "integrity": "sha512-dkdMCN3py0+ksCgYmGG8jKeGA/8Tk+gJwSYYlFGxG5lmhfKNoAy004YpLxpS1W2J8m/EK2Ew+yOs9pVRwO89mg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-validator-identifier": "^7.24.7", "chalk": "^2.4.2", - "js-tokens": "^4.0.0" + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" }, "engines": { "node": ">=6.9.0" @@ -11366,9 +11432,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz", - "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.8.tgz", + "integrity": "sha512-WzfbgXOkGzZiXXCqk43kKwZjzwx4oulxZi3nq2TYL9mOjQv6kYwul9mz6ID36njuL7Xkp6nJEfok848Zj10j/w==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -11377,13 +11443,29 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.7.tgz", + "integrity": "sha512-TiT1ss81W80eQsN+722OaeQMY/G4yTb4G9JrqeiDADs3N8lbPMGldWi9x8tyqCW5NLx1Jh2AvkE6r6QvEltMMQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", - "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.7.tgz", + "integrity": "sha512-unaQgZ/iRu/By6tsjMZzpeBZjChYfLYry6HrEXPoz3KmfF0sVBQ1l8zKMQ4xRGLWVsjuvB8nQfjNP/DcfEOCsg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11393,14 +11475,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", - "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.7.tgz", + "integrity": "sha512-+izXIbke1T33mY4MSNnrqhPXDz01WYhEf3yF5NbnUtkiNnm+XBZJl3kNfoK6NKmYlz/D07+l2GWVK/QfDkNCuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", - "@babel/plugin-transform-optional-chaining": "^7.23.3" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11410,13 +11492,13 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", - "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.7.tgz", + "integrity": "sha512-utA4HuR6F4Vvcr+o4DnjL8fCOlgRFGbeeBEGNg3ZTrLFw6VWG5XmUrvcQ0FjIYMU2ST4XcR2Wsp7t9qOAPnxMg==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11528,12 +11610,12 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", - "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.7.tgz", + "integrity": "sha512-Ec3NRUMoi8gskrkBe3fNmEQfxDvY8bgfQpz6jlk/41kX9eUjvpyqWU7PBP/pLAvMaSQjbMNKJmvX57jP+M6bPg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11543,12 +11625,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", - "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.7.tgz", + "integrity": "sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11730,12 +11812,12 @@ } }, "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", - "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", + "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11745,14 +11827,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", - "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.7.tgz", + "integrity": "sha512-o+iF77e3u7ZS4AoAuJvapz9Fm001PuD2V3Lp6OSE4FYQke+cSewYtnek+THqGRWyQloRCyvWL1OkyfNEl9vr/g==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7", "@babel/plugin-syntax-async-generators": "^7.8.4" }, "engines": { @@ -11763,14 +11845,14 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", - "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.7.tgz", + "integrity": "sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-remap-async-to-generator": "^7.22.20" + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-remap-async-to-generator": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11780,12 +11862,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", - "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.7.tgz", + "integrity": "sha512-yO7RAz6EsVQDaBH18IDJcMB1HnrUn2FJ/Jslc/WtPPWcjhpUJXU/rjbwmluzp7v/ZzWcEhTMXELnnsz8djWDwQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11795,12 +11877,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", - "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.7.tgz", + "integrity": "sha512-Nd5CvgMbWc+oWzBsuaMcbwjJWAcp5qzrbg69SZdHSP7AMY0AbWFqFO0WTFCA1jxhMCwodRwvRec8k0QUbZk7RQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11810,13 +11892,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", - "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.7.tgz", + "integrity": "sha512-vKbfawVYayKcSeSR5YYzzyXvsDFWU2mD8U5TFeXtbCPLFUqe7GyCgvO6XDHzje862ODrOwy6WCPmKeWHbCFJ4w==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11826,13 +11908,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", - "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.7.tgz", + "integrity": "sha512-HMXK3WbBPpZQufbMG4B46A90PkuuhN9vBCb5T8+VAHqvAqvcLi+2cKoukcpmUYkszLhScU3l1iudhrks3DggRQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-class-static-block": "^7.14.5" }, "engines": { @@ -11843,19 +11925,18 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", - "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-environment-visitor": "^7.22.20", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20", - "@babel/helper-split-export-declaration": "^7.22.6", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.8.tgz", + "integrity": "sha512-VXy91c47uujj758ud9wx+OMgheXm4qJfyhj1P18YvlrQkNOSrwsteHk+EFS3OMGfhMhpZa0A+81eE7G4QC+3CA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-environment-visitor": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-replace-supers": "^7.24.7", + "@babel/helper-split-export-declaration": "^7.24.7", "globals": "^11.1.0" }, "engines": { @@ -11866,13 +11947,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", - "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", + "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/template": "^7.22.15" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/template": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11882,12 +11963,12 @@ } }, "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", - "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", + "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -11897,13 +11978,13 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", - "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.7.tgz", + "integrity": "sha512-ZOA3W+1RRTSWvyqcMJDLqbchh7U4NRGqwRfFSVbOLS/ePIP4vHB5e8T8eXcuqyN1QkgKyj5wuW0lcS85v4CrSw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11913,12 +11994,12 @@ } }, "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", - "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.7.tgz", + "integrity": "sha512-JdYfXyCRihAe46jUIliuL2/s0x0wObgwwiGxw/UbgJBr20gQBThrokO4nYKgWkD7uBaqM7+9x5TU7NkExZJyzw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11928,12 +12009,12 @@ } }, "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", - "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.7.tgz", + "integrity": "sha512-sc3X26PhZQDb3JhORmakcbvkeInvxz+A8oda99lj7J60QRuPZvNAk9wQlTBS1ZynelDrDmTU4pw1tyc5d5ZMUg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-dynamic-import": "^7.8.3" }, "engines": { @@ -11944,13 +12025,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", - "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", + "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11960,12 +12041,12 @@ } }, "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", - "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.7.tgz", + "integrity": "sha512-v0K9uNYsPL3oXZ/7F9NNIbAj2jv1whUEtyA6aujhekLs56R++JDQuzRcP2/z4WX5Vg/c5lE9uWZA0/iUoFhLTA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" }, "engines": { @@ -11976,13 +12057,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", - "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", + "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -11992,14 +12073,14 @@ } }, "node_modules/@babel/plugin-transform-function-name": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", - "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.7.tgz", + "integrity": "sha512-U9FcnA821YoILngSmYkW6FjyQe2TyZD5pHt4EVIhmcTkrJw/3KqcrRSxuOo5tFZJi7TE19iDyI1u+weTI7bn2w==", "dev": true, "dependencies": { - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-function-name": "^7.23.0", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-function-name": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12009,12 +12090,12 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", - "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.7.tgz", + "integrity": "sha512-2yFnBGDvRuxAaE/f0vfBKvtnvvqU8tGpMHqMNpTN2oWMKIR3NqFkjaAgGwawhqK/pIN2T3XdjGPdaG0vDhOBGw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-json-strings": "^7.8.3" }, "engines": { @@ -12025,12 +12106,12 @@ } }, "node_modules/@babel/plugin-transform-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", - "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.7.tgz", + "integrity": "sha512-vcwCbb4HDH+hWi8Pqenwnjy+UiklO4Kt1vfspcQYFhJdpthSnW8XvWGyDZWKNVrVbVViI/S7K9PDJZiUmP2fYQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12040,12 +12121,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", - "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.7.tgz", + "integrity": "sha512-4D2tpwlQ1odXmTEIFWy9ELJcZHqrStlzK/dAOWYyxX3zT0iXQB6banjgeOJQXzEc4S0E0a5A+hahxPaEFYftsw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" }, "engines": { @@ -12056,12 +12137,12 @@ } }, "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", - "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.7.tgz", + "integrity": "sha512-T/hRC1uqrzXMKLQ6UCwMT85S3EvqaBXDGf0FaMf4446Qx9vKwlghvee0+uuZcDUCZU5RuNi4781UQ7R308zzBw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12071,13 +12152,13 @@ } }, "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", - "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.7.tgz", + "integrity": "sha512-9+pB1qxV3vs/8Hdmz/CulFB8w2tuu6EB94JZFsjdqxQokwGa9Unap7Bo2gGBGIvPmDIVvQrom7r5m/TCDMURhg==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12087,14 +12168,14 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", - "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", + "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-simple-access": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-simple-access": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12104,15 +12185,15 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", - "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.7.tgz", + "integrity": "sha512-GYQE0tW7YoaN13qFh3O1NCY4MPkUiAH3fiF7UcV/I3ajmDKEdG3l+UOcbAm4zUE3gnvUU+Eni7XrVKo9eO9auw==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.22.5", - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20" + "@babel/helper-hoist-variables": "^7.24.7", + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12122,13 +12203,13 @@ } }, "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", - "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.7.tgz", + "integrity": "sha512-3aytQvqJ/h9z4g8AsKPLvD4Zqi2qT+L3j7XoFFu1XBlZWEl2/1kWnhmAbxpLgPrHSY0M6UA02jyTiwUVtiKR6A==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.23.3", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-module-transforms": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12138,13 +12219,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.22.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", - "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.24.7.tgz", + "integrity": "sha512-/jr7h/EWeJtk1U/uz2jlsCioHkZk1JJZVcc8oQsJ1dUlaJD83f4/6Zeh2aHt9BIFokHIsSeDfhUmju0+1GPd6g==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.5", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12154,12 +12235,12 @@ } }, "node_modules/@babel/plugin-transform-new-target": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", - "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.7.tgz", + "integrity": "sha512-RNKwfRIXg4Ls/8mMTza5oPF5RkOW8Wy/WgMAp1/F1yZ8mMbtwXW+HDoJiOsagWrAhI5f57Vncrmr9XeT4CVapA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12169,12 +12250,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", - "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.7.tgz", + "integrity": "sha512-Ts7xQVk1OEocqzm8rHMXHlxvsfZ0cEF2yomUqpKENHWMF4zKk175Y4q8H5knJes6PgYad50uuRmt3UJuhBw8pQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" }, "engines": { @@ -12185,12 +12266,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", - "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.7.tgz", + "integrity": "sha512-e6q1TiVUzvH9KRvicuxdBTUj4AdKSRwzIyFFnfnezpCfP2/7Qmbb8qbU2j7GODbl4JMkblitCQjKYUaX/qkkwA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-numeric-separator": "^7.10.4" }, "engines": { @@ -12201,16 +12282,15 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", - "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.7.tgz", + "integrity": "sha512-4QrHAr0aXQCEFni2q4DqKLD31n2DL+RxcwnNjDFkSG0eNQ/xCavnRkfCUjsyqGC2OviNJvZOF/mQqZBw7i2C5Q==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-compilation-targets": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.23.3" + "@babel/plugin-transform-parameters": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12220,13 +12300,13 @@ } }, "node_modules/@babel/plugin-transform-object-super": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", - "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.7.tgz", + "integrity": "sha512-A/vVLwN6lBrMFmMDmPPz0jnE6ZGx7Jq7d6sT/Ev4H65RER6pZ+kczlf1DthF5N0qaPHBsI7UXiE8Zy66nmAovg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.20" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-replace-supers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12236,12 +12316,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", - "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.7.tgz", + "integrity": "sha512-uLEndKqP5BfBbC/5jTwPxLh9kqPWWgzN/f8w6UwAIirAEqiIVJWWY312X72Eub09g5KF9+Zn7+hT7sDxmhRuKA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" }, "engines": { @@ -12252,13 +12332,13 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", - "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.8.tgz", + "integrity": "sha512-5cTOLSMs9eypEy8JUVvIKOu6NgvbJMnpG62VpIHrTmROdQ+L5mDAaI40g25k5vXti55JWNX5jCkq3HZxXBQANw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", "@babel/plugin-syntax-optional-chaining": "^7.8.3" }, "engines": { @@ -12269,12 +12349,12 @@ } }, "node_modules/@babel/plugin-transform-parameters": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", - "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", + "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12284,13 +12364,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", - "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.7.tgz", + "integrity": "sha512-COTCOkG2hn4JKGEKBADkA8WNb35TGkkRbI5iT845dB+NyqgO8Hn+ajPbSnIQznneJTa3d30scb6iz/DhH8GsJQ==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12300,14 +12380,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", - "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.7.tgz", + "integrity": "sha512-9z76mxwnwFxMyxZWEgdgECQglF2Q7cFLm0kMf8pGwt+GSJsY0cONKj/UuO4bOH0w/uAel3ekS4ra5CEAyJRmDA==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-annotate-as-pure": "^7.24.7", + "@babel/helper-create-class-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7", "@babel/plugin-syntax-private-property-in-object": "^7.14.5" }, "engines": { @@ -12318,12 +12398,12 @@ } }, "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", - "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.7.tgz", + "integrity": "sha512-EMi4MLQSHfd2nrCqQEWxFdha2gBCqU4ZcCng4WBGZ5CJL4bBRW0ptdqqDdeirGZcpALazVVNJqRmsO8/+oNCBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12398,12 +12478,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", - "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", + "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-plugin-utils": "^7.24.7", "regenerator-transform": "^0.15.2" }, "engines": { @@ -12414,12 +12494,12 @@ } }, "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", - "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.7.tgz", + "integrity": "sha512-0DUq0pHcPKbjFZCfTss/pGkYMfy3vFWydkUBd9r0GHpIyfs2eCDENvqadMycRS9wZCXR41wucAfJHJmwA0UmoQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12429,12 +12509,12 @@ } }, "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", - "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", + "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12444,13 +12524,13 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", - "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", + "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12460,12 +12540,12 @@ } }, "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", - "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", + "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12475,12 +12555,12 @@ } }, "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", - "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", + "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12490,12 +12570,12 @@ } }, "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", - "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.8.tgz", + "integrity": "sha512-adNTUpDCVnmAE58VEqKlAA6ZBlNkMnWD0ZcW76lyNFN3MJniyGFZfNwERVk8Ap56MCnXztmDr19T4mPTztcuaw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.8" }, "engines": { "node": ">=6.9.0" @@ -12523,12 +12603,12 @@ } }, "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", - "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.7.tgz", + "integrity": "sha512-U3ap1gm5+4edc2Q/P+9VrBNhGkfnf+8ZqppY71Bo/pzZmXhhLdqgaUl6cuB07O1+AQJtCLfaOmswiNbSQ9ivhw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12538,13 +12618,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", - "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.7.tgz", + "integrity": "sha512-uH2O4OV5M9FZYQrwc7NdVmMxQJOCCzFeYudlZSzUAHRFeOujQefa92E74TQDVskNHCzOXoigEuoyzHDhaEaK5w==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12554,13 +12634,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", - "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", + "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12570,13 +12650,13 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", - "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.7.tgz", + "integrity": "sha512-2G8aAvF4wy1w/AGZkemprdGMRg5o6zPNhbHVImRz3lss55TYCBd6xStN19rt8XJHq20sqV0JbyWjOWwQRwV/wg==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.22.15", - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-create-regexp-features-plugin": "^7.24.7", + "@babel/helper-plugin-utils": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12586,26 +12666,27 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", - "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.23.5", - "@babel/helper-compilation-targets": "^7.23.6", - "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.23.5", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.24.8.tgz", + "integrity": "sha512-vObvMZB6hNWuDxhSaEPTKCwcqkAIuDtE+bQGn4XMXne1DSLzFVY8Vmj1bm+mUQXYNN8NmaQEO+r8MMbzPr1jBQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.24.8", + "@babel/helper-compilation-targets": "^7.24.8", + "@babel/helper-plugin-utils": "^7.24.8", + "@babel/helper-validator-option": "^7.24.8", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.24.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.24.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.24.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.24.7", "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-class-properties": "^7.12.13", "@babel/plugin-syntax-class-static-block": "^7.14.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3", "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-import-assertions": "^7.23.3", - "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-assertions": "^7.24.7", + "@babel/plugin-syntax-import-attributes": "^7.24.7", "@babel/plugin-syntax-import-meta": "^7.10.4", "@babel/plugin-syntax-json-strings": "^7.8.3", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", @@ -12617,59 +12698,59 @@ "@babel/plugin-syntax-private-property-in-object": "^7.14.5", "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.4", - "@babel/plugin-transform-async-to-generator": "^7.23.3", - "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.4", - "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.4", - "@babel/plugin-transform-classes": "^7.23.5", - "@babel/plugin-transform-computed-properties": "^7.23.3", - "@babel/plugin-transform-destructuring": "^7.23.3", - "@babel/plugin-transform-dotall-regex": "^7.23.3", - "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.4", - "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.4", - "@babel/plugin-transform-for-of": "^7.23.6", - "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.4", - "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", - "@babel/plugin-transform-member-expression-literals": "^7.23.3", - "@babel/plugin-transform-modules-amd": "^7.23.3", - "@babel/plugin-transform-modules-commonjs": "^7.23.3", - "@babel/plugin-transform-modules-systemjs": "^7.23.3", - "@babel/plugin-transform-modules-umd": "^7.23.3", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", - "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", - "@babel/plugin-transform-numeric-separator": "^7.23.4", - "@babel/plugin-transform-object-rest-spread": "^7.23.4", - "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.4", - "@babel/plugin-transform-optional-chaining": "^7.23.4", - "@babel/plugin-transform-parameters": "^7.23.3", - "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.4", - "@babel/plugin-transform-property-literals": "^7.23.3", - "@babel/plugin-transform-regenerator": "^7.23.3", - "@babel/plugin-transform-reserved-words": "^7.23.3", - "@babel/plugin-transform-shorthand-properties": "^7.23.3", - "@babel/plugin-transform-spread": "^7.23.3", - "@babel/plugin-transform-sticky-regex": "^7.23.3", - "@babel/plugin-transform-template-literals": "^7.23.3", - "@babel/plugin-transform-typeof-symbol": "^7.23.3", - "@babel/plugin-transform-unicode-escapes": "^7.23.3", - "@babel/plugin-transform-unicode-property-regex": "^7.23.3", - "@babel/plugin-transform-unicode-regex": "^7.23.3", - "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.24.7", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoped-functions": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.24.7", + "@babel/plugin-transform-class-properties": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.24.7", + "@babel/plugin-transform-classes": "^7.24.8", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-dotall-regex": "^7.24.7", + "@babel/plugin-transform-duplicate-keys": "^7.24.7", + "@babel/plugin-transform-dynamic-import": "^7.24.7", + "@babel/plugin-transform-exponentiation-operator": "^7.24.7", + "@babel/plugin-transform-export-namespace-from": "^7.24.7", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.24.7", + "@babel/plugin-transform-json-strings": "^7.24.7", + "@babel/plugin-transform-literals": "^7.24.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-member-expression-literals": "^7.24.7", + "@babel/plugin-transform-modules-amd": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-modules-systemjs": "^7.24.7", + "@babel/plugin-transform-modules-umd": "^7.24.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-new-target": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-object-super": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-property-literals": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-reserved-words": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-template-literals": "^7.24.7", + "@babel/plugin-transform-typeof-symbol": "^7.24.8", + "@babel/plugin-transform-unicode-escapes": "^7.24.7", + "@babel/plugin-transform-unicode-property-regex": "^7.24.7", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.24.7", "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.6", - "babel-plugin-polyfill-corejs3": "^0.8.5", - "babel-plugin-polyfill-regenerator": "^0.5.3", - "core-js-compat": "^3.31.0", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.4", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.37.1", "semver": "^6.3.1" }, "engines": { @@ -12748,25 +12829,25 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.22.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz", - "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==", + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.6.tgz", + "integrity": "sha512-Ja18XcETdEl5mzzACGd+DKgaGJzPTCow7EglgwTmHdwokzDFYh/MHua6lU6DV/hjF2IaOJ4oX2nqnjG7RElKOw==", "dependencies": { - "regenerator-runtime": "^0.13.11" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/template": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", - "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.7.tgz", + "integrity": "sha512-jYqfPrU9JTF0PmPy1tLYHW4Mp4KlgxJD9l2nP9fD6yT/ICi554DmrWBAEYpIelzjHf1msDP3PxJIRt/nFNfBig==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.22.13", - "@babel/parser": "^7.22.15", - "@babel/types": "^7.22.15" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.24.7", + "@babel/types": "^7.24.7" }, "engines": { "node": ">=6.9.0" @@ -12794,13 +12875,13 @@ } }, "node_modules/@babel/types": { - "version": "7.23.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.0.tgz", - "integrity": "sha512-0oIyUfKoI3mSqMvsxBdclDwxXKXAUA8v/apZbc+iSyARYou1o8ZGDxbUYyLFoW2arqS2jDGqJuZvv1d/io1axg==", + "version": "7.24.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.9.tgz", + "integrity": "sha512-xm8XrMKz0IlUdocVbYJe0Z9xEgidU7msskG8BbhnTPK/HZ2z/7FP7ykqPgrUH+C+r414mNfNWam1f2vqOjqjYQ==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.22.5", - "@babel/helper-validator-identifier": "^7.22.20", + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", "to-fast-properties": "^2.0.0" }, "engines": { @@ -13964,9 +14045,9 @@ } }, "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "dev": true, "engines": { "node": ">=6.0.0" @@ -13979,13 +14060,13 @@ "dev": true }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, "node_modules/@jspm/core": { @@ -14222,9 +14303,9 @@ } }, "node_modules/@nasa-gcn/architect-functions-search": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@nasa-gcn/architect-functions-search/-/architect-functions-search-1.0.0.tgz", - "integrity": "sha512-saYMUJfQlrdyFzHs1wiPouR5/n8Rgx/QAaqwMZGSlKES68WQwsTN9bv9y/ZfjNfhaHI51PT+1KHWqV/Ksb14+w==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@nasa-gcn/architect-functions-search/-/architect-functions-search-1.0.1.tgz", + "integrity": "sha512-LcYGV8+AqDKWVPqIk+F2DV0gH9eedp0RJhwh/Ie2q/xHYD/XLm8dDi4oP2Fe0fYBnuzU5w2/HCHNYoc81I3L2A==", "dependencies": { "@architect/functions": ">=5.3.4", "@aws-sdk/credential-provider-node": "^3.188.0", @@ -14233,9 +14314,9 @@ } }, "node_modules/@nasa-gcn/architect-plugin-search": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@nasa-gcn/architect-plugin-search/-/architect-plugin-search-1.2.0.tgz", - "integrity": "sha512-JO0Fds6Qu3M42SPyDYJ9ebeKi9Dlp1TulBo8lRJzCB0iweCjX0BySePLPSoinTykGfwVLdburBazMlVY7Oz70A==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@nasa-gcn/architect-plugin-search/-/architect-plugin-search-1.3.0.tgz", + "integrity": "sha512-yPhXsyWjrsDUWpQoUkKBbpJii47Cp7vBvmaINjGjNd25b9LoCNH97WS6jailODTP1O5mN1a4T/SpNqAxsSwQ8w==", "dev": true, "dependencies": { "@nasa-gcn/architect-functions-search": "^1.0.0", @@ -14245,7 +14326,7 @@ "lodash": "^4.17.21", "make-fetch-happen": "^11.0.3", "rimraf": "^4.1.2", - "tar": "^6.1.13", + "tar": "^6.2.1", "unzip-stream": "^0.3.1", "wait-port": "^1.0.4" }, @@ -14323,9 +14404,9 @@ } }, "node_modules/@nasa-gcn/dynamodb-autoincrement": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@nasa-gcn/dynamodb-autoincrement/-/dynamodb-autoincrement-2.2.0.tgz", - "integrity": "sha512-rAg9YOWr3O1sR55kmmd/wqx/7zGl4QgfV0tE3+3mtiiGSNfJ1Y3a75m5RmQPcZgLFOD5kEeRlA3IOzrbD5Fv0w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@nasa-gcn/dynamodb-autoincrement/-/dynamodb-autoincrement-2.2.1.tgz", + "integrity": "sha512-v0Lntzp6G1qEYCDuvCbn3oKczhIsEHO6UDvqMfquqQgUWHUv494dZwyYTAtUUbVnUVBcEVrCFefAfc2geslFyw==", "dependencies": { "@aws-sdk/client-dynamodb": "^3.188.0", "@aws-sdk/lib-dynamodb": "^3.188.0", @@ -14336,9 +14417,9 @@ } }, "node_modules/@nasa-gcn/eslint-config-gitignore": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@nasa-gcn/eslint-config-gitignore/-/eslint-config-gitignore-0.0.1.tgz", - "integrity": "sha512-+T+dWsH/iB00jOaTFZnt01w4vCfmShvnkgwr9OrBMrGblcboHmLudYu/IA3df5SSi4XOmLFfrKTFbLCoAZ053g==", + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@nasa-gcn/eslint-config-gitignore/-/eslint-config-gitignore-0.0.2.tgz", + "integrity": "sha512-EtFY+UHSjQW+mkDx0Ffk2PBxNV8MhaZgcTDtxF53XLG4892TTikkT0rwu+g0tHo4tsNij/FW7r0YnpYk5iIQ8Q==", "dev": true, "engines": { "node": "^14.17.0 || ^16.0.0 || >= 18.0.0" @@ -14348,9 +14429,9 @@ } }, "node_modules/@nasa-gcn/remark-rehype-astro": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@nasa-gcn/remark-rehype-astro/-/remark-rehype-astro-1.1.2.tgz", - "integrity": "sha512-otkldnWbYwRC7/V/4Ij2eqji594ex0d4TG+DxocOliWuVHi178FOQncqTHTv+CLNInkCXUEWBvccBBydfKM/tg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nasa-gcn/remark-rehype-astro/-/remark-rehype-astro-1.1.3.tgz", + "integrity": "sha512-hDF/AdMXFu3E5K62A7K07VQWpvF078IZicD+YPccu8HDE8bOtB2Dyztjlsjd4hKGwPeJMj55F0GyERR+IyAXzA==", "dependencies": { "hast-util-find-and-replace": "^5.0.0", "hastscript": "^8.0.0", @@ -14417,9 +14498,9 @@ } }, "node_modules/@nasa-gcn/remix-seo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@nasa-gcn/remix-seo/-/remix-seo-2.0.0.tgz", - "integrity": "sha512-jawoxrjMMbFGgj20d61KblrQNkSFcW2yP7vWWQn2a+eK2J8uYYbw99j2GD7A4XbpQUxy7dg0yvRVsYYJ5uZnLQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nasa-gcn/remix-seo/-/remix-seo-2.0.1.tgz", + "integrity": "sha512-g9biDdYfsdFBnOU7lM+7vPGEXSEMRnWmfVLDQ98pT0PnTT/O3pFuA+s3DA0Mj9IwnAq9IcLs2Wee/aL6fvEA+A==", "dependencies": { "lodash": "^4.17.21" }, @@ -14428,6 +14509,14 @@ "@remix-run/server-runtime": "^1.0.0 || ^2.0.0" } }, + "node_modules/@nasa-gcn/schema": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@nasa-gcn/schema/-/schema-4.1.0.tgz", + "integrity": "sha512-oK4tCwYgnwBkxm3IXn90ABfrd7pxNa/aqVnUHuWn1wvBI9pjVTTgehPawSRa5rTMzlSbHNHxiUriuo0Sl90vjQ==", + "engines": { + "node": ">=18" + } + }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", @@ -14827,18 +14916,18 @@ } }, "node_modules/@playwright/test": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.44.1.tgz", - "integrity": "sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==", + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.45.2.tgz", + "integrity": "sha512-JxG9eq92ET75EbVi3s+4sYbcG7q72ECeZNbdBlaMkGcNbiDQ4cAi8U2QP5oKkOx+1gpaiL1LDStmzCaEM1Z6fQ==", "dev": true, "dependencies": { - "playwright": "1.44.1" + "playwright": "1.45.2" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/@pnpm/config.env-replace": { @@ -14877,12 +14966,13 @@ } }, "node_modules/@remix-run/architect": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@remix-run/architect/-/architect-2.8.1.tgz", - "integrity": "sha512-gtIKzb42bD6lqOYYO+nZ8kp+liZuEd/+CvcOzR3LwMDpT2ljzP5OGz+Efk1KX6xkkLLYn9T1yyKeyFpWuv9SBg==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@remix-run/architect/-/architect-2.10.3.tgz", + "integrity": "sha512-/BW2QvOfuYSzk/tBd3bUoa0MY1xvvMIX09lRu7pE6qEFuz148SkBb1O9kOA1O6uWWCzWJ2zD+l9Yp9dXplHMdw==", "dependencies": { "@architect/functions": "^5.2.0", - "@remix-run/node": "2.8.1", + "@remix-run/node": "2.10.3", + "@remix-run/web-fetch": "^4.4.2", "@types/aws-lambda": "^8.10.82" }, "engines": { @@ -14898,17 +14988,17 @@ } }, "node_modules/@remix-run/css-bundle": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.8.1.tgz", - "integrity": "sha512-rn72xyUJ+rR5I0IxjlDWPPBddV1kpLvOT2FY9SMIUTFqyxq3ZK2W7FCtFzBt2JZQGZ9oDYidXYMWkW6tXY//rg==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@remix-run/css-bundle/-/css-bundle-2.10.3.tgz", + "integrity": "sha512-FWTHe0kphAoK85kY92BaLuwNjyn9t2Gd1/MebR1lEzG2dDm80tThJ2tpZMCOn1zPFAaLOGn3fXnywYMYDzyBfg==", "engines": { "node": ">=18.0.0" } }, "node_modules/@remix-run/dev": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.8.1.tgz", - "integrity": "sha512-qFt4jAsAJeIOyg6ngeSnTG/9Z5N9QJfeThP/8wRHc1crqYgTiEtcI3DZ8WlAXjVSF5emgn/ZZKqzLAI02OgMfQ==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@remix-run/dev/-/dev-2.10.3.tgz", + "integrity": "sha512-ZbSslRCPVsXispbu1t/khMrMwJ34R695tGujnya696nAW0v8rocVhEwaUpvR2iwnvGKN372gv4SdJrjnYz45kw==", "dev": true, "dependencies": { "@babel/core": "^7.21.8", @@ -14921,9 +15011,9 @@ "@babel/types": "^7.22.5", "@mdx-js/mdx": "^2.3.0", "@npmcli/package-json": "^4.0.1", - "@remix-run/node": "2.8.1", - "@remix-run/router": "1.15.3-pre.0", - "@remix-run/server-runtime": "2.8.1", + "@remix-run/node": "2.10.3", + "@remix-run/router": "1.18.0", + "@remix-run/server-runtime": "2.10.3", "@types/mdx": "^2.0.5", "@vanilla-extract/integration": "^6.2.0", "arg": "^5.0.1", @@ -14937,7 +15027,7 @@ "esbuild-plugins-node-modules-polyfill": "^1.6.0", "execa": "5.1.1", "exit-hook": "2.2.1", - "express": "^4.17.1", + "express": "^4.19.2", "fs-extra": "^10.0.0", "get-port": "^5.1.1", "gunzip-maybe": "^1.4.2", @@ -14972,7 +15062,8 @@ "node": ">=18.0.0" }, "peerDependencies": { - "@remix-run/serve": "^2.8.1", + "@remix-run/react": "^2.10.3", + "@remix-run/serve": "^2.10.3", "typescript": "^5.1.0", "vite": "^5.1.0", "wrangler": "^3.28.2" @@ -14992,15 +15083,6 @@ } } }, - "node_modules/@remix-run/dev/node_modules/@remix-run/router": { - "version": "1.15.3-pre.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3-pre.0.tgz", - "integrity": "sha512-JUQb6sztqJpRbsdKpx3D4+6eaGmHU4Yb/QeKrES/ZbLuijlZMOmZ+gV0ohX5vrRDnJHJmcQPq3Tpk0GGPNM9gg==", - "dev": true, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@remix-run/dev/node_modules/brace-expansion": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", @@ -15180,9 +15262,9 @@ } }, "node_modules/@remix-run/eslint-config": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.8.1.tgz", - "integrity": "sha512-lH5/H8oznYk0pVhrNTBt7+++U+guEKOYFwK1aO3zoeyrBtSc7OdX1KWWFlJw0IdGVMSKDqnW3U0n1VbIa4sX/g==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@remix-run/eslint-config/-/eslint-config-2.10.3.tgz", + "integrity": "sha512-Poj8giCzIzbcIxmsRQ/VU3MPaN+pZH4Fbk5/XcRQbBELb1rC2CCOG7H9/MV3EfGxl2RUxrj8vEdRzY6GdQ6FDg==", "dev": true, "dependencies": { "@babel/core": "^7.21.8", @@ -15241,18 +15323,17 @@ } }, "node_modules/@remix-run/node": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.8.1.tgz", - "integrity": "sha512-ddCwBVlfLvRxTQJHPcaM1lhfMjsFYG3EGmYpWJIWnnzDX5EbX9pUNHBWisMuH1eA0c7pbw0PbW0UtCttKYx2qg==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@remix-run/node/-/node-2.10.3.tgz", + "integrity": "sha512-LBqsgADJKW7tYdJZZi2wu20gfMm6UcOXbvb5U70P2jCNxjJvuIw1gXVvNXRJKAdxPKLonjm8cSpfoI6HeQKEDg==", "dependencies": { - "@remix-run/server-runtime": "2.8.1", + "@remix-run/server-runtime": "2.10.3", "@remix-run/web-fetch": "^4.4.2", - "@remix-run/web-file": "^3.1.0", - "@remix-run/web-stream": "^1.1.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie-signature": "^1.1.0", "source-map-support": "^0.5.21", - "stream-slice": "^0.1.2" + "stream-slice": "^0.1.2", + "undici": "^6.11.1" }, "engines": { "node": ">=18.0.0" @@ -15267,14 +15348,15 @@ } }, "node_modules/@remix-run/react": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.8.1.tgz", - "integrity": "sha512-HTPm1U8+xz2jPaVjZnssrckfmFMA8sUZUdaWnoF5lmLWdReqcQv+XlBhIrQQ3jO9L8iYYdnzaSZZcRFYSdpTYg==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@remix-run/react/-/react-2.10.3.tgz", + "integrity": "sha512-nqXlUJzG3zgllsMio20AICbSsF8va0jOnMakl/+oJpFbQqCyFkvYqr+BViBc4Befp5VK54jqJzDnY4kL9zwNvA==", "dependencies": { - "@remix-run/router": "1.15.3", - "@remix-run/server-runtime": "2.8.1", - "react-router": "6.22.3", - "react-router-dom": "6.22.3" + "@remix-run/router": "1.18.0", + "@remix-run/server-runtime": "2.10.3", + "react-router": "6.25.0", + "react-router-dom": "6.25.0", + "turbo-stream": "2.2.0" }, "engines": { "node": ">=18.0.0" @@ -15291,24 +15373,25 @@ } }, "node_modules/@remix-run/router": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.15.3.tgz", - "integrity": "sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.18.0.tgz", + "integrity": "sha512-L3jkqmqoSVBVKHfpGZmLrex0lxR5SucGA0sUfFzGctehw+S/ggL9L/0NnC5mw6P8HUWpFZ3nQw3cRApjjWx9Sw==", "engines": { "node": ">=14.0.0" } }, "node_modules/@remix-run/server-runtime": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.8.1.tgz", - "integrity": "sha512-fh4SOEoONrN73Kvzc0gMDCmYpVRVbvoj9j3BUXHAcn0An8iX+HD/22gU7nTkIBzExM/F9xgEcwTewOnWqLw0Bg==", + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@remix-run/server-runtime/-/server-runtime-2.10.3.tgz", + "integrity": "sha512-vUl5jONUI6Lj0ICg9FSRFhoPzQdZ/7dpT1m7ID13DF5BEeF3t/9uCJS61XXWgQ/JEu7YRiwvZiwSRTrgM7zeWw==", "dependencies": { - "@remix-run/router": "1.15.3", + "@remix-run/router": "1.18.0", "@types/cookie": "^0.6.0", "@web3-storage/multipart-parser": "^1.0.0", "cookie": "^0.6.0", "set-cookie-parser": "^2.4.8", - "source-map": "^0.7.3" + "source-map": "^0.7.3", + "turbo-stream": "2.2.0" }, "engines": { "node": ">=18.0.0" @@ -15334,6 +15417,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@remix-run/web-blob/-/web-blob-3.1.0.tgz", "integrity": "sha512-owGzFLbqPH9PlKb8KvpNJ0NO74HWE2euAn61eEiyCXX/oteoVzTVSN8mpLgDjaxBf2btj5/nUllSUgpyd6IH6g==", + "license": "MIT", "dependencies": { "@remix-run/web-stream": "^1.1.0", "web-encoding": "1.1.5" @@ -15343,6 +15427,7 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/@remix-run/web-fetch/-/web-fetch-4.4.2.tgz", "integrity": "sha512-jgKfzA713/4kAW/oZ4bC3MoLWyjModOVDjFPNseVqcJKSafgIscrYL9G50SurEYLswPuoU3HzSbO0jQCMYWHhA==", + "license": "MIT", "dependencies": { "@remix-run/web-blob": "^3.1.0", "@remix-run/web-file": "^3.1.0", @@ -15361,6 +15446,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@remix-run/web-file/-/web-file-3.1.0.tgz", "integrity": "sha512-dW2MNGwoiEYhlspOAXFBasmLeYshyAyhIdrlXBi06Duex5tDr3ut2LFKVj7tyHLmn8nnNwFf1BjNbkQpygC2aQ==", + "license": "MIT", "dependencies": { "@remix-run/web-blob": "^3.1.0" } @@ -15369,6 +15455,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/@remix-run/web-form-data/-/web-form-data-3.1.0.tgz", "integrity": "sha512-NdeohLMdrb+pHxMQ/Geuzdp0eqPbea+Ieo8M8Jx2lGC6TBHsgHzYcBvr0LyPdPVycNRDEpWpiDdCOdCryo3f9A==", + "license": "MIT", "dependencies": { "web-encoding": "1.1.5" } @@ -15377,6 +15464,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/@remix-run/web-stream/-/web-stream-1.1.0.tgz", "integrity": "sha512-KRJtwrjRV5Bb+pM7zxcTJkhIqWWSy+MYsIxHK+0m5atcznsf15YwUBWHWulZerV2+vvHH1Lp1DD7pw6qKW8SgA==", + "license": "MIT", "dependencies": { "web-streams-polyfill": "^3.1.1" } @@ -16578,37 +16666,38 @@ } }, "node_modules/@testing-library/dom": { - "version": "8.20.1", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", - "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.2.0.tgz", + "integrity": "sha512-CytIvb6tVOADRngTHGWNxH8LPgO/3hi/BdCEHOf7Qd2GvZVClhVP0Wo/QHzWhpki49Bk0b4VT6xpt3fx8HTSIw==", "dev": true, + "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", + "aria-query": "5.3.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/@testing-library/jest-dom": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.1.4.tgz", - "integrity": "sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.6.tgz", + "integrity": "sha512-8qpnGVincVDLEcQXWaHOf6zmlbwTKc6Us6PPu4CRnPXCzo2OGBS5cwgMMOWdxDpEz1mkbvXHpEy99M5Yvt682w==", "dev": true, "dependencies": { - "@adobe/css-tools": "^4.3.1", + "@adobe/css-tools": "^4.4.0", "@babel/runtime": "^7.9.2", "aria-query": "^5.0.0", "chalk": "^3.0.0", "css.escape": "^1.5.1", - "dom-accessibility-api": "^0.5.6", - "lodash": "^4.17.15", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", "redent": "^3.0.0" }, "engines": { @@ -16618,6 +16707,7 @@ }, "peerDependencies": { "@jest/globals": ">= 28", + "@types/bun": "latest", "@types/jest": ">= 28", "jest": ">= 28", "vitest": ">= 0.32" @@ -16626,6 +16716,9 @@ "@jest/globals": { "optional": true }, + "@types/bun": { + "optional": true + }, "@types/jest": { "optional": true }, @@ -16650,41 +16743,37 @@ "node": ">=8" } }, + "node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true + }, "node_modules/@testing-library/react": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-14.1.2.tgz", - "integrity": "sha512-z4p7DVBTPjKM5qDZ0t5ZjzkpSNb+fZy1u6bzO7kk8oeGagpPCAtgh4cx1syrfp7a+QWkM021jGqjJaxJJnXAZg==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-16.0.0.tgz", + "integrity": "sha512-guuxUKRWQ+FgNX0h0NS0FIq3Q3uLtWVpBzcLOggmfMoUpgBnzBzvLLd4fbm6yS8ydJd94cIfY4yP9qUQjM2KwQ==", "dev": true, "dependencies": { - "@babel/runtime": "^7.12.5", - "@testing-library/dom": "^9.0.0", - "@types/react-dom": "^18.0.0" + "@babel/runtime": "^7.12.5" }, "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { + "@testing-library/dom": "^10.0.0", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", "react": "^18.0.0", "react-dom": "^18.0.0" - } - }, - "node_modules/@testing-library/react/node_modules/@testing-library/dom": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.2.0.tgz", - "integrity": "sha512-xTEnpUKiV/bMyEsE5bT4oYA0x0Z/colMtxzUY8bKyPXBNLn/e0V4ZjBZkEhms0xE4pv9QsPfSRu9AWS4y5wGvA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.10.4", - "@babel/runtime": "^7.12.5", - "@types/aria-query": "^5.0.1", - "aria-query": "^5.0.0", - "chalk": "^4.1.0", - "dom-accessibility-api": "^0.5.9", - "lz-string": "^1.5.0", - "pretty-format": "^27.0.2" }, - "engines": { - "node": ">=14" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } } }, "node_modules/@trivago/prettier-plugin-sort-imports": { @@ -17001,9 +17090,9 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.17.4", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.4.tgz", - "integrity": "sha512-wYCP26ZLxaT3R39kiN2+HcJ4kTd3U1waI/cY7ivWYqFP6pW3ZNpvi6Wd6PHZx7T/t8z0vlkXMg3QYLa7DZ/IJQ==", + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", "dev": true }, "node_modules/@types/lucene": { @@ -17060,9 +17149,9 @@ "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" }, "node_modules/@types/node": { - "version": "20.14.2", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", - "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "version": "20.14.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.11.tgz", + "integrity": "sha512-kprQpL8MMeszbz6ojB5/tU8PLN4kesnN8Gjzw349rDlNgsSzg90lAVj3llK99Dh7JON+t9AuscPPFW6mPbTnSA==", "dev": true, "dependencies": { "undici-types": "~5.26.4" @@ -17975,6 +18064,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", + "license": "(Unlicense OR Apache-2.0)", "optional": true }, "node_modules/abab": { @@ -17987,6 +18077,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", "dependencies": { "event-target-shim": "^5.0.0" }, @@ -18252,49 +18343,14 @@ "dev": true }, "node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" - } - }, - "node_modules/aria-query/node_modules/deep-equal": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.2.tgz", - "integrity": "sha512-xjVyBf0w5vH0I42jdAZzOKVldmPgSulmiyPRywoyq7HXC9qdgo17kxJE+rdnif5Tz6+pIrpJI8dCpMNLIGkUiA==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.1", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.0", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.9" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dequal": "^2.0.3" } }, - "node_modules/aria-query/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true - }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", @@ -18488,9 +18544,12 @@ } }, "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, "engines": { "node": ">= 0.4" }, @@ -18665,13 +18724,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.11", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", + "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", "dev": true, "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -18688,25 +18747,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.10.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz", + "integrity": "sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", - "core-js-compat": "^3.33.1" + "@babel/helper-define-polyfill-provider": "^0.6.1", + "core-js-compat": "^3.36.1" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", + "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.6.2" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -19025,9 +19084,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.2.tgz", + "integrity": "sha512-qkqSyistMYdxAcw+CzbZwlBy8AGmS/eEWs+sEV5TnLRGDOL+C5M2EnH6tlZyg0YoAxGJAFKh61En9BR941GnHA==", "dev": true, "funding": [ { @@ -19044,10 +19103,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", + "caniuse-lite": "^1.0.30001640", + "electron-to-chromium": "^1.4.820", "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -19257,12 +19316,18 @@ } }, "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -19290,9 +19355,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001607", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001607.tgz", - "integrity": "sha512-WcvhVRjXLKFB/kmOFVwELtMxyhq3iM/MvmXcyCe2PNf166c39mptscOc/45TTS96n2gpNV2z7+NakArTWZCQ3w==", + "version": "1.0.30001642", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001642.tgz", + "integrity": "sha512-3XQ0DoRgLijXJErLSl+bLnJ+Et4KqV1PY6JJBGAFlsNsz31zeAIncyeZfLCabHK/jtSh+671RM9YMldxjUPZtA==", "dev": true, "funding": [ { @@ -19654,9 +19719,9 @@ } }, "node_modules/compute-scroll-into-view": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-2.0.4.tgz", - "integrity": "sha512-y/ZA3BGnxoM/QHHQ2Uy49CLtnWPbt4tTPpEEZiEmmiWBFKjej7nEyH8Ryz54jH0MLXflUYA3Er2zUxPSJu5R+g==" + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" }, "node_modules/concat-map": { "version": "0.0.1", @@ -19764,9 +19829,9 @@ } }, "node_modules/cookies": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", - "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", "dev": true, "dependencies": { "depd": "~2.0.0", @@ -19785,12 +19850,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.33.2", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.2.tgz", - "integrity": "sha512-axfo+wxFVxnqf8RvxTzoAlzW4gRoacrHeoFlc9n0x50+7BEyZL/Rt3hicaED1/CEd7I6tPCPVUYcJwCMO5XUYw==", + "version": "3.37.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.37.1.tgz", + "integrity": "sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==", "dev": true, "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.23.0" }, "funding": { "type": "opencollective", @@ -20119,6 +20184,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz", "integrity": "sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og==", + "license": "MIT", "engines": { "node": ">= 6" } @@ -20177,9 +20243,9 @@ "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { "ms": "2.1.2" }, @@ -20354,6 +20420,22 @@ "node": ">=6" } }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/define-lazy-prop": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", @@ -20367,11 +20449,12 @@ } }, "node_modules/define-properties": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.0.tgz", - "integrity": "sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { + "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -20717,20 +20800,25 @@ } }, "node_modules/downshift": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/downshift/-/downshift-7.2.1.tgz", - "integrity": "sha512-P39LrMwHEkeiOeMoVE+Nv01AMSXzFQG2b5tsSGOG0zi99qMgOEN4RBHNfQuYgYUwV1uDJeKUhOvIZoQQ/r27NA==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/downshift/-/downshift-9.0.6.tgz", + "integrity": "sha512-lkqWh0eb34XuH+3z3/BH/LGVRV7ur0rielSlxtlQKsjAFF/wc/c0wsM9phUGXyzK2g1QWHoNHQyc+vVAheI17Q==", "dependencies": { - "@babel/runtime": "^7.14.8", - "compute-scroll-into-view": "^2.0.4", - "prop-types": "^15.7.2", - "react-is": "^17.0.2", - "tslib": "^2.3.0" + "@babel/runtime": "^7.24.5", + "compute-scroll-into-view": "^3.1.0", + "prop-types": "^15.8.1", + "react-is": "18.2.0", + "tslib": "^2.6.2" }, "peerDependencies": { "react": ">=16.12.0" } }, + "node_modules/downshift/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" + }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -20780,9 +20868,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.4.729", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.729.tgz", - "integrity": "sha512-bx7+5Saea/qu14kmPTDHQxkp2UnziG3iajUQu3BxFvCOnpAJdDbMV4rSl+EqFDkkpNNVUFlR1kDfpL59xfy1HA==", + "version": "1.4.829", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.829.tgz", + "integrity": "sha512-5qp1N2POAfW0u1qGAxXEtz6P7bO1m6gpZr5hdf5ve6lxpLM7MpiM4jIPz7xcrNlClQMafbyUDDWjlIQZ1Mw0Rw==", "dev": true }, "node_modules/element-closest": { @@ -21014,6 +21102,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/es-get-iterator": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", @@ -21187,9 +21294,9 @@ } }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "dev": true, "engines": { "node": ">=6" @@ -21609,6 +21716,72 @@ "eslint": "^6.8.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/eslint-plugin-jest-dom/node_modules/@testing-library/dom": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-8.20.1.tgz", + "integrity": "sha512-/DiOQ5xBxgdYRC8LNk7U+RWat0S3qRLeIw3ZIkMQ9kkVlRmwD/Eg8k8CqIpD6GW7u20JIUOfMKbxtiLutpjQ4g==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.10.4", + "@babel/runtime": "^7.12.5", + "@types/aria-query": "^5.0.1", + "aria-query": "5.1.3", + "chalk": "^4.1.0", + "dom-accessibility-api": "^0.5.9", + "lz-string": "^1.5.0", + "pretty-format": "^27.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/eslint-plugin-jest-dom/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/eslint-plugin-jest-dom/node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-jest-dom/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.7.1", "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.7.1.tgz", @@ -22096,9 +22269,9 @@ } }, "node_modules/eta": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eta/-/eta-3.2.0.tgz", - "integrity": "sha512-Qzc3it7nLn49dbOb9+oHV9rwtt9qN8oShRztqkZ3gXPqQflF0VLin5qhWk0g/2ioibBwT4DU6OIMVft7tg/rVg==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/eta/-/eta-3.4.0.tgz", + "integrity": "sha512-tCsc7WXTjrTx4ZjYLplcqrI3o4mYJ+Z6YspeuGL8tbt/hHoMchwBwtKfwM09svEY86iRapY93vUqQttcNuIO5Q==", "dev": true, "engines": { "node": ">=6.0.0" @@ -22141,6 +22314,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "license": "MIT", "engines": { "node": ">=6" } @@ -22746,9 +22920,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.5", @@ -22865,14 +23042,18 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -23139,6 +23320,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, "dependencies": { "function-bind": "^1.1.1" }, @@ -23165,12 +23347,11 @@ } }, "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", - "dev": true, + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dependencies": { - "get-intrinsic": "^1.1.1" + "es-define-property": "^1.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -23199,11 +23380,11 @@ } }, "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.2" + "has-symbols": "^1.0.3" }, "engines": { "node": ">= 0.4" @@ -23221,6 +23402,17 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/hast-to-hyperscript": { "version": "10.0.3", "resolved": "https://registry.npmjs.org/hast-to-hyperscript/-/hast-to-hyperscript-10.0.3.tgz", @@ -23618,9 +23810,9 @@ } }, "node_modules/highlight.js": { - "version": "11.8.0", - "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", - "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", + "version": "11.10.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.10.0.tgz", + "integrity": "sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==", "engines": { "node": ">=12.0.0" } @@ -23843,12 +24035,12 @@ } }, "node_modules/husky": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.0.11.tgz", - "integrity": "sha512-AB6lFlbwwyIqMdHYhwPe+kjOC3Oc5P3nThEoW/AaO2BX3vJDjWPFxYLxokUZOo6RNX20He3AaT8sESs9NJcmEw==", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.3.tgz", + "integrity": "sha512-ET3TQmQgdIu0pt+jKkpo5oGyg/4MQZpG6xcam5J5JyNJV+CBT23OBpCF15bKHKycRyMH9k6ONy8g2HdGIsSkMQ==", "dev": true, "bin": { - "husky": "bin.mjs" + "husky": "bin.js" }, "engines": { "node": ">=18" @@ -24388,10 +24580,13 @@ "dev": true }, "node_modules/is-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", - "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -24511,10 +24706,13 @@ } }, "node_modules/is-set": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", - "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -24610,10 +24808,13 @@ } }, "node_modules/is-weakmap": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", - "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -24631,13 +24832,16 @@ } }, "node_modules/is-weakset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", - "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24683,9 +24887,9 @@ "dev": true }, "node_modules/isbot": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.7.tgz", - "integrity": "sha512-/U9wtTOhYcP1cnDUFKNalTSQHVD3y4ginXstBBQDRwDKTZ2liBb0IEnRu8X+RpX9VnNN/I3MNNgJvKnKQ5+CnA==", + "version": "5.1.13", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.13.tgz", + "integrity": "sha512-RXtBib4m9zChSb+187EpNQML7Z3u2i34zDdqcRFZnqSJs0xdh91xzJytc5apYVg+9Y4NGnUQ0AIeJvX9FAnCUw==", "engines": { "node": ">=18" } @@ -26210,16 +26414,16 @@ } }, "node_modules/koa": { - "version": "2.14.2", - "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", - "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.15.3.tgz", + "integrity": "sha512-j/8tY9j5t+GVMLeioLaxweJiKUayFhlGqNTzf2ZGwL0ZCQijd2RLHK0SLW5Tsko8YyyqCZC2cojIb0/s62qTAg==", "dev": true, "dependencies": { "accepts": "^1.3.5", "cache-content-type": "^1.0.0", "content-disposition": "~0.5.2", "content-type": "^1.0.4", - "cookies": "~0.8.0", + "cookies": "~0.9.0", "debug": "^4.3.2", "delegates": "^1.0.0", "depd": "^2.0.0", @@ -27144,6 +27348,15 @@ "@types/unist": "*" } }, + "node_modules/lowlight/node_modules/highlight.js": { + "version": "11.8.0", + "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-11.8.0.tgz", + "integrity": "sha512-MedQhoqVdr0U6SSnWPzfiadUcDHfN/Wzq25AkXiQv9oiOO/sG0S7XkvpFIqWBl9Yq1UYyYOOVORs5UW2XlPyzg==", + "dev": true, + "engines": { + "node": ">=12.0.0" + } + }, "node_modules/lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -28837,6 +29050,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "license": "MIT", "engines": { "node": ">=10" } @@ -29387,13 +29601,13 @@ } }, "node_modules/object-is": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", - "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -29497,20 +29711,20 @@ "license": "MIT" }, "node_modules/oidc-provider": { - "version": "8.4.3", - "resolved": "https://registry.npmjs.org/oidc-provider/-/oidc-provider-8.4.3.tgz", - "integrity": "sha512-XEGMwSJEMXf0z2lKLts/y5p9cd5hBODKmwJnLeOhdKJh8kgYfFLYtc555/9cBBLmQ4JBnK4xb/zk1AGbvZdYvw==", + "version": "8.4.7", + "resolved": "https://registry.npmjs.org/oidc-provider/-/oidc-provider-8.4.7.tgz", + "integrity": "sha512-WjURLNh0cAacyZMItl/KimFPBTFZBTE/PVu/+W0JW3T2fWYMUVTDFMOUFcY1tlMDPASUCORgZkyLPCywe4tyDA==", "dev": true, "dependencies": { "@koa/cors": "^5.0.0", "@koa/router": "^12.0.1", - "debug": "^4.3.4", - "eta": "^3.2.0", + "debug": "^4.3.5", + "eta": "^3.4.0", "got": "^13.0.0", - "jose": "^5.1.3", + "jose": "^5.4.0", "jsesc": "^3.0.2", - "koa": "^2.14.2", - "nanoid": "^5.0.4", + "koa": "^2.15.3", + "nanoid": "^5.0.7", "object-hash": "^3.0.0", "oidc-token-hash": "^5.0.3", "quick-lru": "^7.0.0", @@ -29521,18 +29735,18 @@ } }, "node_modules/oidc-provider/node_modules/jose": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.2.3.tgz", - "integrity": "sha512-KUXdbctm1uHVL8BYhnyHkgp3zDX5KW8ZhAKVFEfUbU2P8Alpzjb+48hHvjOdQIyPshoblhzsuqOwEEAbtHVirA==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.5.0.tgz", + "integrity": "sha512-DUPr/1kYXbuqYpkCj9r66+B4SGCKXCLQ5ZbKCgmn4sJveJqcwNqWtAR56u4KPmpXjrmBO2uNuLdEAEiqIhFNBg==", "dev": true, "funding": { "url": "https://github.com/sponsors/panva" } }, "node_modules/oidc-provider/node_modules/nanoid": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.4.tgz", - "integrity": "sha512-vAjmBf13gsmhXSgBrtIclinISzFFy22WwCYoyilZlsrRXNIHSwgFQ1bEdjRwMT3aoadeIF6HMuDRlOxzfXV8ig==", + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.7.tgz", + "integrity": "sha512-oLxFY2gd2IqnjcYyOXD8XGCftpGtZP2AbHbOkthDkvRywH5ayNtPVy9YlOPcHckXzbLTCHpkb7FB+yuxKV13pQ==", "dev": true, "funding": [ { @@ -29964,9 +30178,9 @@ } }, "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", "dev": true }, "node_modules/picomatch": { @@ -30078,33 +30292,33 @@ } }, "node_modules/playwright": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.44.1.tgz", - "integrity": "sha512-qr/0UJ5CFAtloI3avF95Y0L1xQo6r3LQArLIg/z/PoGJ6xa+EwzrwO5lpNr/09STxdHuUoP2mvuELJS+hLdtgg==", + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.45.2.tgz", + "integrity": "sha512-ReywF2t/0teRvNBpfIgh5e4wnrI/8Su8ssdo5XsQKpjxJj+jspm00jSoz9BTg91TT0c9HRjXO7LBNVrgYj9X0g==", "dev": true, "dependencies": { - "playwright-core": "1.44.1" + "playwright-core": "1.45.2" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" }, "optionalDependencies": { "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.44.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.44.1.tgz", - "integrity": "sha512-wh0JWtYTrhv1+OSsLPgFzGzt67Y7BE/ZS3jEqgGBlp2ppp1ZDj8c+9IARNW4dwf1poq5MgHreEM2KV/GuR4cFA==", + "version": "1.45.2", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.45.2.tgz", + "integrity": "sha512-ha175tAWb0dTK0X4orvBIqi3jGEt701SMxMhyujxNrgd8K0Uy5wMSwwcQHtyB4om7INUkfndx02XnQ2p6dvLDw==", "dev": true, "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/playwright/node_modules/fsevents": { @@ -30121,6 +30335,14 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/postcss": { "version": "8.4.38", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", @@ -30284,9 +30506,9 @@ } }, "node_modules/prettier": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.2.tgz", - "integrity": "sha512-rAVeHYMcv8ATV5d508CFdn+8/pHPpXeIid1DdrPwXnaAdH7cqjVbpJaT5eq4yRAFU/lsbwYwSF/n5iNrdJHPQA==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -30719,7 +30941,8 @@ "node_modules/react-is": { "version": "17.0.2", "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "node_modules/react-refresh": { "version": "0.14.0", @@ -30731,11 +30954,11 @@ } }, "node_modules/react-router": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.22.3.tgz", - "integrity": "sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==", + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.25.0.tgz", + "integrity": "sha512-bziKjCcDbcxgWS9WlWFcQIVZ2vJHnCP6DGpQDT0l+0PFDasfJKgzf9CM22eTyhFsZkjk8ApCdKjJwKtzqH80jQ==", "dependencies": { - "@remix-run/router": "1.15.3" + "@remix-run/router": "1.18.0" }, "engines": { "node": ">=14.0.0" @@ -30745,12 +30968,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.22.3", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.22.3.tgz", - "integrity": "sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==", + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.25.0.tgz", + "integrity": "sha512-BhcczgDWWgvGZxjDDGuGHrA8HrsSudilqTaRSBYLWDayvo1ClchNIDVt5rldqp6e7Dro5dEFx9Mzc+r292lN0w==", "dependencies": { - "@remix-run/router": "1.15.3", - "react-router": "6.22.3" + "@remix-run/router": "1.18.0", + "react-router": "6.25.0" }, "engines": { "node": ">=14.0.0" @@ -30889,9 +31112,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", @@ -30903,14 +31126,15 @@ } }, "node_modules/regexp.prototype.flags": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.0.tgz", - "integrity": "sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==", + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "functions-have-names": "^1.2.3" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { "node": ">= 0.4" @@ -32176,6 +32400,37 @@ "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.6.0.tgz", "integrity": "sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==" }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/setimmediate": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", @@ -32555,7 +32810,8 @@ "node_modules/stream-slice": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/stream-slice/-/stream-slice-0.1.2.tgz", - "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==" + "integrity": "sha512-QzQxpoacatkreL6jsxnVb7X5R/pGw9OUv2qWTYWnmLpg4NdN31snPy/f3TdQE1ZUXaThRvj1Zw4/OGg0ZkaLMA==", + "license": "MIT" }, "node_modules/streamx": { "version": "2.15.0", @@ -33302,9 +33558,9 @@ } }, "node_modules/ts-jest": { - "version": "29.1.2", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.2.tgz", - "integrity": "sha512-br6GJoH/WUX4pu7FbZXuWGKGNDuU7b8Uj77g/Sp7puZV6EXzuByl6JrECvm0MzVzSTkSHWTihsXt+5XYER5b+g==", + "version": "29.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.5.tgz", + "integrity": "sha512-UuClSYxM7byvvYfyWdFI+/2UxMmwNyJb0NPkZPQE2hew3RurV7l7zURgOHAd/1I1ZdPpe3GUsXNXAcN8TFKSIg==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -33320,10 +33576,11 @@ "ts-jest": "cli.js" }, "engines": { - "node": "^16.10.0 || ^18.0.0 || >=20.0.0" + "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0" }, "peerDependencies": { "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/transform": "^29.0.0", "@jest/types": "^29.0.0", "babel-jest": "^29.0.0", "jest": "^29.0.0", @@ -33333,6 +33590,9 @@ "@babel/core": { "optional": true }, + "@jest/transform": { + "optional": true + }, "@jest/types": { "optional": true }, @@ -33389,6 +33649,12 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/turbo-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.2.0.tgz", + "integrity": "sha512-FKFg7A0To1VU4CH9YmSMON5QphK0BXjSoiC7D9yMh+mEEbXLUP9qJ4hEt1qcjKtzncs1OpcnjZO8NgrlVbZH+g==", + "license": "ISC" + }, "node_modules/tweetnacl": { "version": "0.14.5", "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", @@ -33521,9 +33787,9 @@ } }, "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", "devOptional": true, "bin": { "tsc": "bin/tsc", @@ -33570,6 +33836,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici": { + "version": "6.19.2", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.2.tgz", + "integrity": "sha512-JfjKqIauur3Q6biAtHJ564e3bWa8VvT+7cSiOJHFbX4Erv6CLGDpg8z+Fmg/1OI/47RA+GI2QZaF48SSaLvyBA==", + "license": "MIT", + "engines": { + "node": ">=18.17" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -33882,9 +34157,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -33901,8 +34176,8 @@ } ], "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -35180,6 +35455,7 @@ "version": "1.1.5", "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", + "license": "MIT", "dependencies": { "util": "^0.12.3" }, @@ -35197,9 +35473,10 @@ } }, "node_modules/web-streams-polyfill": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", - "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "license": "MIT", "engines": { "node": ">= 8" } @@ -35290,31 +35567,33 @@ } }, "node_modules/which-collection": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", - "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "dependencies": { - "is-map": "^2.0.1", - "is-set": "^2.0.1", - "is-weakmap": "^2.0.1", - "is-weakset": "^2.0.1" + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/which-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.10.tgz", - "integrity": "sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==", + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", "for-each": "^0.3.3", "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0", - "is-typed-array": "^1.1.10" + "has-tostringtag": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -35547,9 +35826,9 @@ "dev": true }, "node_modules/ylru": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", - "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.4.0.tgz", + "integrity": "sha512-2OQsPNEmBCvXuFlIni/a+Rn+R2pHW9INm0BxXJ4hVDA8TirqMj+J/Rp9ItLatT/5pZqWwefVrTQcHpixsxnVlA==", "dev": true, "engines": { "node": ">= 4.0.0" diff --git a/package.json b/package.json index 7da58d604..b21516b68 100644 --- a/package.json +++ b/package.json @@ -26,16 +26,17 @@ }, "dependencies": { "@architect/functions": "^5.3.4", - "@nasa-gcn/architect-functions-search": "^1.0.0", - "@nasa-gcn/dynamodb-autoincrement": "^2.2.0", - "@nasa-gcn/remark-rehype-astro": "^1.1.2", - "@nasa-gcn/remix-seo": "^2.0.0", + "@nasa-gcn/architect-functions-search": "^1.0.1", + "@nasa-gcn/dynamodb-autoincrement": "^2.2.1", + "@nasa-gcn/remark-rehype-astro": "^1.1.3", + "@nasa-gcn/remix-seo": "^2.0.1", + "@nasa-gcn/schema": "^4.1.0", "@octokit/rest": "^21.0.0", "@opensearch-project/opensearch": "^2.10.0", - "@remix-run/architect": "^2.8.1", - "@remix-run/css-bundle": "^2.8.1", - "@remix-run/node": "^2.8.1", - "@remix-run/react": "^2.8.1", + "@remix-run/architect": "^2.10.3", + "@remix-run/css-bundle": "^2.10.3", + "@remix-run/node": "^2.10.3", + "@remix-run/react": "^2.10.3", "@trussworks/react-uswds": "github:lpsinger/react-uswds#gcn", "@xmldom/xmldom": "^0.8.10", "aws-lambda-ses-forwarder": "github:lpsinger/aws-lambda-ses-forwarder#aws-sdk-v3", @@ -44,14 +45,14 @@ "cross-env": "^7.0.3", "dayjs": "^1.11.10", "diff": "^5.2.0", - "downshift": "^7.2.1", + "downshift": "^9.0.6", "email-validator": "^2.0.4", "gcn-kafka": "^0.2.2", "github-slugger": "^2.0.0", "hast-util-find-and-replace": "^5.0.1", "hastscript": "^8.0.0", - "highlight.js": "^11.8.0", - "isbot": "^5.1.7", + "highlight.js": "^11.10.0", + "isbot": "^5.1.13", "lodash": "^4.17.21", "lucene": "^2.1.1", "mailparser": "^3.6.5", @@ -81,7 +82,7 @@ }, "devDependencies": { "@architect/architect": "^10.16.3", - "@architect/plugin-lambda-invoker": "^2.0.0", + "@architect/plugin-lambda-invoker": "^2.0.1", "@architect/utils": "^3.1.9", "@aws-sdk/client-cognito-identity-provider": "^3.552.0", "@aws-sdk/client-dynamodb": "^3.552.0", @@ -91,27 +92,27 @@ "@aws-sdk/lib-dynamodb": "^3.552.0", "@aws-sdk/lib-storage": "^3.552.0", "@aws-sdk/util-dynamodb": "^3.319.0", - "@babel/preset-env": "^7.23.6", + "@babel/preset-env": "^7.24.8", "@babel/preset-typescript": "^7.23.3", "@gitlab/svgs": "^3.83.0", - "@nasa-gcn/architect-plugin-search": "^1.2.0", - "@nasa-gcn/eslint-config-gitignore": "^0.0.1", - "@playwright/test": "^1.44.1", - "@remix-run/dev": "^2.8.1", - "@remix-run/eslint-config": "^2.8.1", - "@testing-library/jest-dom": "^6.1.4", - "@testing-library/react": "^14.1.2", + "@nasa-gcn/architect-plugin-search": "^1.3.0", + "@nasa-gcn/eslint-config-gitignore": "^0.0.2", + "@playwright/test": "^1.45.2", + "@remix-run/dev": "^2.10.3", + "@remix-run/eslint-config": "^2.10.3", + "@testing-library/jest-dom": "^6.4.6", + "@testing-library/react": "^16.0.0", "@trivago/prettier-plugin-sort-imports": "^4.2.1", "@types/color-convert": "^2.0.1", "@types/diff": "^5.2.1", "@types/grecaptcha": "^3.0.6", "@types/jest": "^29.5.5", - "@types/lodash": "^4.17.4", + "@types/lodash": "^4.17.7", "@types/lucene": "^2.1.7", "@types/mailparser": "^3.4.1", "@types/mdast": "^4.0.4", "@types/memoizee": "^0.4.9", - "@types/node": "^20.14.2", + "@types/node": "^20.14.11", "@types/nodemailer": "^6.4.14", "@types/react": "^18.2.24", "@types/react-copy-to-clipboard": "^5.0.5", @@ -125,7 +126,7 @@ "eslint-config-prettier": "^9.1.0", "eslint-plugin-jest": "^27.9.0", "glob": "^10.3.4", - "husky": "^9.0.11", + "husky": "^9.1.3", "jest": "^29.7.0", "jest-environment-jsdom": "^29.7.0", "jest-transform-stub": "^2.0.0", @@ -133,17 +134,17 @@ "lowlight": "^3.0.0", "nasawds": "^4.0.63", "npm-run-all": "^4.1.5", - "oidc-provider": "^8.4.3", + "oidc-provider": "^8.4.7", "postcss-csso": "^6.0.1", - "prettier": "3.3.2", + "prettier": "3.3.3", "rehype-autolink-headings": "^6.1.1", "rehype-external-links": "^3.0.0", "rehype-highlight": "^7.0.0", "rehype-slug": "^6.0.0", "rimraf": "^5.0.0", "sass": "^1.64.2", - "ts-jest": "^29.1.2", - "typescript": "^5.5.2", + "ts-jest": "^29.1.5", + "typescript": "^5.5.4", "yarn": "^1.22.21" }, "engines": { @@ -193,6 +194,12 @@ "children": "never", "propElementValues": "always" } + ], + "react/jsx-no-target-blank": [ + "error", + { + "allowReferrer": true + } ] }, "overrides": [ diff --git a/playwright.config.ts b/playwright.config.ts index 2b7308a05..5aa5401b4 100644 --- a/playwright.config.ts +++ b/playwright.config.ts @@ -6,6 +6,32 @@ import { defineConfig, devices } from '@playwright/test' */ // require('dotenv').config(); +const deviceList = ['Desktop Firefox', 'Desktop Chrome', 'Desktop Safari'] + +const adminTests = deviceList.map((device) => { + return { + name: `Admin tests: ${device}`, + use: { + ...devices[device], + storageState: '__playwright__/.auth/adminUser.json', + }, + testMatch: 'admin.spec.ts', + dependencies: ['adminSetup'], + } +}) + +const circularsTests = deviceList.map((device) => { + return { + name: `Circulars Tests: ${device}`, + use: { + ...devices[device], + storageState: '__playwright__/.auth/user.json', + }, + testMatch: 'circulars/*', + dependencies: ['setup'], + } +}) + /** * See https://playwright.dev/docs/test-configuration. */ @@ -32,53 +58,10 @@ export default defineConfig({ /* Configure projects for major browsers */ projects: [ - { name: 'setup', testMatch: /.*\.setup\.ts/ }, - { - name: 'chromium', - use: { - ...devices['Desktop Chrome'], - storageState: '__playwright__/.auth/user.json', - }, - dependencies: ['setup'], - }, - - { - name: 'firefox', - use: { - ...devices['Desktop Firefox'], - storageState: '__playwright__/.auth/user.json', - }, - dependencies: ['setup'], - }, - - { - name: 'webkit', - use: { - ...devices['Desktop Safari'], - storageState: '__playwright__/.auth/user.json', - }, - dependencies: ['setup'], - }, - - /* Test against mobile viewports. */ - // { - // name: 'Mobile Chrome', - // use: { ...devices['Pixel 5'] }, - // }, - // { - // name: 'Mobile Safari', - // use: { ...devices['iPhone 12'] }, - // }, - - /* Test against branded browsers. */ - // { - // name: 'Microsoft Edge', - // use: { ...devices['Desktop Edge'], channel: 'msedge' }, - // }, - // { - // name: 'Google Chrome', - // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, - // }, + { name: 'setup', testMatch: 'auth.setup.ts' }, + { name: 'adminSetup', testMatch: 'admin.setup.ts' }, + ...adminTests, + ...circularsTests, ], /* Run your local dev server before starting the tests */ diff --git a/remix.config.js b/remix.config.js index a51b1e1e2..f4ed1cb98 100644 --- a/remix.config.js +++ b/remix.config.js @@ -53,8 +53,8 @@ export default { rehypeSlug, (options) => rehypeExternalLinks({ - rel: 'external', - target: false, + rel: ['external', 'noopener'], + target: '_blank', ...options, }), (options) => diff --git a/sandbox-seed.json b/sandbox-seed.json index 8be8e4b9b..35534487e 100644 --- a/sandbox-seed.json +++ b/sandbox-seed.json @@ -8,6 +8,16 @@ "submitter": "jlv93@cornell.edu", "body": "Jada L. Vail, Maggie L. Li (Cornell), Jacob Wise (LJMU), D. A. Perley (LJMU), Anna Y. Q. Ho (Cornell), Eric Burns (LSU), Michael Coughlin (UMN) report: \n\nWe report the identification of a fast-evolving red transient by the Zwicky Transient Facility (ZTF) and Spectral Energy Distribution Machine (SEDM). AT 2023sva is located at the position (J2000) of:\n\nRA = 00:56:59.19 (14.24662 deg)\nDec = +80:08:44.12 (80.14559 deg)\n\nIt was first detected by ZTF on 2023-09-17 09:38:31 UT at r = 17.71 +/- 0.05 mag (MJD=60204.40175) and g = 18.49 +/- 0.06 mag (MJD=60204.44580) as part of the public all-sky survey. ZTF also obtained a non-detection ~2 days prior at r > 20.91 mag (MJD=60202.24319), indicating a fast rise rate of >1.5 mag/day in r. The transient was detected in follow-up Spectral Energy Distribution Machine (SEDM) observations at r = 20.22 +/- 0.08 mag (MJD=60205.48761) and g = 20.73 +/- 0.10 mag (MJD=60205.48597), implying red colors and rapid fading (~2.3 mag/day fade in r). \n\nAT2023sva was also detected by ATLAS (ATLAS23srq) at MJD 60204.43499 and saved to the TNS (Tonry et al. 2023, TNS Report No. 188327). The last ATLAS non-detection was at MJD 60202.48470. The Galactic latitude of AT 2023sva is 17.27 degrees, and the Galactic reddening toward the direction of AT 2023sva is: E(g-r) = 0.249 from Schlafly & Finkbeiner (2011).\n\nThe fast rise, fast decay, red color, and lack of an archival optical counterpart make AT 2023sva a strong candidate afterglow. We identify the temporally and spatially coincident Fermi-GBM trigger bn230916144 / 716527670, initially classified as a GRB with 64% probability at position (J2000) of RA, Dec = 00:26:52.8, +87:43:12. The localization error radius is 21.44 deg. The time of the GBM trigger was 2023-09-16 03:27:46 UT (MJD=60203.14428), 1.3 days prior to the first ZTF detection of AT 2023sva. If the Fermi-GBM trigger is indeed a GRB then we suggest this as the prompt counterpart to AT 2023sva. If the trigger is of another origin, then no identified prompt signal has been reported thus far.\n\nWe encourage spectroscopic follow-up observations.\n\nZTF is supported by the National Science Foundation under Grant No. AST-2034437 and a collaboration including Caltech, IPAC, the Weizmann Institute for Science, the Oskar Klein Center at Stockholm University, the University of Maryland, Deutsches Elektronen-Synchrotron and Humboldt University, the TANGO Consortium of Taiwan, the University of Wisconsin at Milwaukee, Trinity College Dublin, Lawrence Livermore National Laboratories, and IN2P3, France. Operations are conducted by COO, IPAC, and UW.\n\nSED Machine is based upon work supported by the National Science Foundation under Grant No. 1106171.\n" }, + { + "subject": "LIGO/Virgo/KAGRA S240630t: Updated Sky localization", + "eventId": "LIGO/Virgo/KAGRA S240630t", + "submittedHow": "web", + "createdOn": 1719767201026, + "circularId": 36796, + "submitter": "Christopher P L Berry at LVK Collaboration ", + "format": "text/plain", + "body": "The LIGO Scientific Collaboration, the Virgo Collaboration, and the KAGRA Collaboration report:\n\nWe have conducted further analysis of the LIGO Hanford Observatory (H1), LIGO Livingston Observatory (L1), and Virgo Observatory (V1) data around the time of the compact binary merger (CBC) candidate S240630t (GCN Circular 36794). Parameter estimation has been performed using Bilby [1] and a new sky map, Bilby.multiorder.fits,0, distributed via GCN Notice, is available for retrieval from the GraceDB event page:\n\nhttps://gracedb.ligo.org/superevents/S240630t\n\nFor the Bilby.multiorder.fits,0 sky map, the 90% credible region is 670 deg2. Marginalized over the whole sky, the a posteriori luminosity distance estimate is 3161 +/- 841 Mpc (a posteriori mean +/- standard deviation).\n\nFor further information about analysis methodology and the contents of this alert, refer to the LIGO/Virgo/KAGRA Public Alerts User Guide https://emfollow.docs.ligo.org/.\n\n [1] Ashton et al. ApJS 241, 27 (2019) doi:10.3847/1538-4365/ab06fc and Morisaki et al. (2023) arXiv:2307.13380" + }, { "subject": "GRB230911C: LCOGT Optical Upper Limits", "submittedHow": "email", @@ -4727,6 +4737,16 @@ "submitter": "Ulisse Quadri at Bassano Bresciano Obs ", "body": "U.Quadri, P.Madurini and L.Strabla (Bassano Bresciano Astronomical Observatory),\n\nMember of: \nAAVSO - American Association of Variable Star Observers.\nUAI/SSV - Unione Astrofili Italiani/sezione stelle variabili.\nGAC - Gruppo Astrofili Cremonesi.\n\nin a large collaboration with:\nM.G. Dainotti (National Astronomical Observatory of Japan), \nY. Niino (Tokyo University, Institute of Astronomy), \nK. Kalinowski (Aarhus University, Department of Physics and Astronomy),\nB. De Simone (Universita' degli Studi Di Salerno)\nreport: \n\nWe imaged the field of Swift J1727.8-1613(GRB 230824A) \n(Page et al., GCN 34537; Navaneeth et al., GCN 34538, Odeh et al., GCN 34543)\nwith the following telescopes:\n\n0.25-m f/4.8 Newton reflector at Bassano Bresciano Observatory, Italy - MPC Code 565. \n0.32-m f/8.0 (iTelescope) reflector at AstroCamp at Nerpio, Spain - MPC Code I89.\n0.51-m f/6.8 (iTelescope) Dall-Kirkham at Rio Hurtado Valley, Chile - MPC Code X07. \n \n\nWe clearly detected a bright object, in the same location as M.Odeh et al., GCN 34543, within \nthe uncertainty radius of the Swift localization, at:\n\nR.A. (J2000): 17:27:43.32\nDec. (J2000): -16:12:18.8\n\n\nThe results of our photometry are:\n\n------------------------------------------------------ \n Date UT Exp Time R-mag Err IAU STATION\n------------------------------------------------------\n \n2023-08-24.7967 18x20s 13.25 0.057 565\n2023-08-24.8018 18x20s 13.25 0.049 565 \n2023-08-24.8071 12x30s 13.24 0.048 565 \n2023-08-24.8124 12x30s 13.24 0.043 565 \n2023-08-24.8185 12x30s 13.24 0.042 565 \n2023-08-24.9030 10x60s 13.05 - I89\n2023-08-25.1470 10x60s 12.80 - X07\n------------------------------------------------------\n\nMagnitudes were estimated with the pan-STARRS cat. \nand are converted using Lupton (2005) equations.\n\nNot corrected for galactic dust extinction.\n\nFurther observations are planned.\n\nReference:\nhttp://www.osservatoriobassano.org/GRB.asp\n\nThe message may be cited.\n\n\n", "eventId": "GRB 230824A" + }, + { + "subject": "Swift J1727.8-1613 (GRB 230824A): Bassano Bresciano Observatory optical observations", + "submittedHow": "email-legacy", + "bibcode": "2023GCN.34562....1Q", + "createdOn": 1693037110788, + "circularId": 21, + "submitter": "Ulisse Quadri at Bassano Bresciano Obs ", + "body": "U.Quadri, P.Madurini and L.Strabla (Bassano Bresciano Astronomical Observatory),\n\nMember of: \nAAVSO - American Association of Variable Star Observers.\nUAI/SSV - Unione Astrofili Italiani/sezione stelle variabili.\nGAC - Gruppo Astrofili Cremonesi.\n\nin a large collaboration with:\nM.G. Dainotti (National Astronomical Observatory of Japan), \nY. Niino (Tokyo University, Institute of Astronomy), \nK. Kalinowski (Aarhus University, Department of Physics and Astronomy),\nB. De Simone (Universita' degli Studi Di Salerno)\nreport: \n\nWe imaged the field of Swift J1727.8-1613(GRB 230824A) \n(Page et al., GCN 34537; Navaneeth et al., GCN 34538, Odeh et al., GCN 34543)\nwith the following telescopes:\n\n0.25-m f/4.8 Newton reflector at Bassano Bresciano Observatory, Italy - MPC Code 565. \n0.32-m f/8.0 (iTelescope) reflector at AstroCamp at Nerpio, Spain - MPC Code I89.\n0.51-m f/6.8 (iTelescope) Dall-Kirkham at Rio Hurtado Valley, Chile - MPC Code X07. \n \n\nWe clearly detected a bright object, in the same location as M.Odeh et al., GCN 34543, within \nthe uncertainty radius of the Swift localization, at:\n\nR.A. (J2000): 17:27:43.32\nDec. (J2000): -16:12:18.8\n\n\nThe results of our photometry are:\n\n------------------------------------------------------ \n Date UT Exp Time R-mag Err IAU STATION\n------------------------------------------------------\n \n2023-08-24.7967 18x20s 13.25 0.057 565\n2023-08-24.8018 18x20s 13.25 0.049 565 \n2023-08-24.8071 12x30s 13.24 0.048 565 \n2023-08-24.8124 12x30s 13.24 0.043 565 \n2023-08-24.8185 12x30s 13.24 0.042 565 \n2023-08-24.9030 10x60s 13.05 - I89\n2023-08-25.1470 10x60s 12.80 - X07\n------------------------------------------------------\n\nMagnitudes were estimated with the pan-STARRS cat. \nand are converted using Lupton (2005) equations.\n\nNot corrected for galactic dust extinction.\n\nFurther observations are planned.\n\nReference:\nhttp://www.osservatoriobassano.org/GRB.asp\n\nThe message may be cited.\n\n\n", + "eventId": "GRB 230824A" } ], "circulars_history": [ @@ -5125,5 +5145,15 @@ "affiliation": "Example", "submit": 1 } + ], + "circulars_change_requests": [ + { + "circularId": 21, + "requestorSub": "12345678-abcd-1234-abcd-1234abcd1234", + "body": "This is an example of a request with a missing createdOn field", + "requestor": "Example User at Example ", + "requestorEmail": "example@example.com", + "subject": "Optical Observations for GRB 971227" + } ] } diff --git a/server.ts b/server.ts index e21b148cf..eecd6435b 100644 --- a/server.ts +++ b/server.ts @@ -4,7 +4,7 @@ import { installGlobals } from '@remix-run/node' import sourceMapSupport from 'source-map-support' sourceMapSupport.install() -installGlobals() +installGlobals({ nativeFetch: true }) const remixHandler = createRequestHandler({ build, diff --git a/src/plugins/sandboxOidcIdp.js b/src/plugins/sandboxOidcIdp.js index c9371cb33..2cd8f64cd 100644 --- a/src/plugins/sandboxOidcIdp.js +++ b/src/plugins/sandboxOidcIdp.js @@ -30,6 +30,27 @@ export const set = { }, } +const localSandboxProfiles = { + admin: { + sub: '1234abcd-1234-abcd-1234-abcd1234abcd', + email: 'admin@example.com', + 'cognito:username': 'admin@example.com', + 'cognito:groups': ['gcn.nasa.gov/gcn-admin'], + identities: [{ providerName: 'Local Sandbox' }], + }, + default: { + sub: '1234abcd-1234-abcd-1234-abcd1234abcd', + email: 'user@example.com', + 'cognito:username': 'user@example.com', + 'cognito:groups': [ + 'gcn.nasa.gov/kafka-public-consumer', + 'gcn.nasa.gov/circular-submitter', + 'gcn.nasa.gov/circular-moderator', + ], + identities: [{ providerName: 'Local Sandbox' }], + }, +} + export const sandbox = { async start() { if (!process.env.ARC_OIDC_IDP_PORT) return @@ -42,17 +63,7 @@ export const sandbox = { return { accountId: id, claims() { - return { - sub: id, - email: 'user@example.com', - 'cognito:username': id, - 'cognito:groups': [ - 'gcn.nasa.gov/kafka-public-consumer', - 'gcn.nasa.gov/circular-submitter', - 'gcn.nasa.gov/circular-moderator', - ], - identities: [{ providerName: 'Local Sandbox' }], - } + return localSandboxProfiles[id] ?? localSandboxProfiles['default'] }, } },