diff --git a/.eslintrc.json b/.eslintrc.json index 888c968b5c6..6ee63b269f7 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -294,7 +294,8 @@ "rules": { // Custom DSpace Angular rules "dspace-angular-html/themed-component-usages": "error", - "dspace-angular-html/no-disabled-attribute-on-button": "error" + "dspace-angular-html/no-disabled-attribute-on-button": "error", + "@angular-eslint/template/prefer-control-flow": "error" } }, { diff --git a/.gitignore b/.gitignore index 7af424c50f3..c58a1914c2c 100644 --- a/.gitignore +++ b/.gitignore @@ -42,3 +42,9 @@ yarn-error.log junit.xml /src/mirador-viewer/config.local.js + + + +.nx/cache +.nx/workspace-data +.angular diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000000..113709c96f6 --- /dev/null +++ b/.prettierignore @@ -0,0 +1,6 @@ +# Add files here to ignore them from prettier formatting +/dist +/coverage +/.nx/cache +/.nx/workspace-data +.angular diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 00000000000..544138be456 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,3 @@ +{ + "singleQuote": true +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000000..6717cd0e5e7 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,9 @@ +{ + "recommendations": [ + "nrwl.angular-console", + "angular.ng-template", + "dbaeumer.vscode-eslint", + "esbenp.prettier-vscode", + "firsttris.vscode-jest-runner" + ] +} diff --git a/angular.json b/angular.json deleted file mode 100644 index 02fd69b1e1b..00000000000 --- a/angular.json +++ /dev/null @@ -1,292 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "dspace-angular": { - "projectType": "application", - "schematics": { - "@schematics/angular:component": { - "style": "scss" - } - }, - "root": "", - "sourceRoot": "src", - "prefix": "ds", - "architect": { - "build": { - "builder": "@angular-builders/custom-webpack:browser", - "options": { - "preserveSymlinks": true, - "customWebpackConfig": { - "path": "./webpack/webpack.browser.ts", - "mergeStrategies": { - "loaders": "prepend" - } - }, - "allowedCommonJsDependencies": [ - "cerialize", - "core-js", - "lodash", - "jwt-decode", - "uuid", - "zone.js" - ], - "outputPath": "dist/browser", - "index": "src/index.html", - "main": "src/main.browser.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "aot": true, - "assets": [ - "src/assets", - "src/robots.txt" - ], - "styles": [ - "src/styles/startup.scss", - { - "input": "src/styles/base-theme.scss", - "inject": false, - "bundleName": "base-theme" - }, - { - "input": "src/themes/custom/styles/theme.scss", - "inject": false, - "bundleName": "custom-theme" - }, - { - "input": "src/themes/dspace/styles/theme.scss", - "inject": false, - "bundleName": "dspace-theme" - } - ], - "scripts": [], - "baseHref": "/" - }, - "configurations": { - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - }, - "production": { - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.production.ts" - }, - { - "replace": "src/config/store/devtools.ts", - "with": "src/config/store/devtools.prod.ts" - } - ], - "optimization": true, - "outputHashing": "all", - "namedChunks": false, - "aot": true, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "budgets": [ - { - "type": "initial", - "maximumWarning": "3mb", - "maximumError": "5mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "200kb", - "maximumError": "300kb" - } - ] - } - } - }, - "serve": { - "builder": "@angular-builders/custom-webpack:dev-server", - "options": { - "buildTarget": "dspace-angular:build", - "port": 4000 - }, - "configurations": { - "development": { - "buildTarget": "dspace-angular:build:development" - }, - "production": { - "buildTarget": "dspace-angular:build:production" - } - } - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "buildTarget": "dspace-angular:build" - } - }, - "test": { - "builder": "@angular-builders/custom-webpack:karma", - "options": { - "customWebpackConfig": { - "path": "./webpack/webpack.test.ts", - "mergeStrategies": { - "loaders": "prepend" - } - }, - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "sourceMap": { - "scripts": false, - "styles": false, - "hidden": false, - "vendor": false - }, - "assets": [ - "src/assets" - ], - "styles": [ - { - "input": "src/styles/base-theme.scss", - "inject": false, - "bundleName": "base-theme" - } - ], - "scripts": [] - }, - "configurations": { - "test": { - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.test.ts" - } - ] - } - } - }, - "e2e": { - "builder": "@cypress/schematic:cypress", - "options": { - "devServerTarget": "dspace-angular:serve", - "watch": true, - "headless": false - }, - "configurations": { - "production": { - "devServerTarget": "dspace-angular:serve:production" - } - } - }, - "server": { - "builder": "@angular-builders/custom-webpack:server", - "options": { - "customWebpackConfig": { - "path": "./webpack/webpack.prod.ts", - "mergeStrategies": { - "loaders": "prepend" - } - }, - "outputPath": "dist/server", - "main": "server.ts", - "tsConfig": "tsconfig.server.json" - }, - "configurations": { - "development": { - "sourceMap": true, - "optimization": false - }, - "production": { - "sourceMap": false, - "optimization": true, - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.production.ts" - }, - { - "replace": "src/config/store/devtools.ts", - "with": "src/config/store/devtools.prod.ts" - } - ] - } - } - }, - "serve-ssr": { - "builder": "@angular-devkit/build-angular:ssr-dev-server", - "options": { - "buildTarget": "dspace-angular:build", - "serverTarget": "dspace-angular:server", - "port": 4000 - }, - "configurations": { - "production": { - "buildTarget": "dspace-angular:build:production", - "serverTarget": "dspace-angular:server:production" - } - } - }, - "prerender": { - "builder": "@angular-devkit/build-angular:prerender", - "options": { - "buildTarget": "dspace-angular:build:production", - "serverTarget": "dspace-angular:server:production", - "routes": [ - "/" - ] - }, - "configurations": { - "production": {} - } - }, - "cypress-run": { - "builder": "@cypress/schematic:cypress", - "options": { - "devServerTarget": "dspace-angular:serve" - }, - "configurations": { - "production": { - "devServerTarget": "dspace-angular:serve:production" - } - } - }, - "cypress-open": { - "builder": "@cypress/schematic:cypress", - "options": { - "watch": true, - "headless": false - } - }, - "lint": { - "builder": "@angular-eslint/builder:lint", - "options": { - "lintFilePatterns": [ - "src/**/*.ts", - "cypress/**/*.ts", - "lint/**/*.ts", - "src/**/*.html", - "src/**/*.json5" - ] - } - } - } - } - }, - "cli": { - "analytics": false, - "schematicCollections": [ - "@angular-eslint/schematics" - ] - }, - "schematics": { - "@angular-eslint/schematics:application": { - "setParserOptionsProject": true - }, - "@angular-eslint/schematics:library": { - "setParserOptionsProject": true - } - } -} diff --git a/cypress/support/commands.ts b/cypress/support/commands.ts index 8cc2c5c721b..7b0cf477700 100644 --- a/cypress/support/commands.ts +++ b/cypress/support/commands.ts @@ -6,11 +6,11 @@ import { AuthTokenInfo, TOKENITEM, -} from 'src/app/core/auth/models/auth-token-info.model'; +} from '@dspace/core'; import { DSPACE_XSRF_COOKIE, XSRF_REQUEST_HEADER, -} from 'src/app/core/xsrf/xsrf.constants'; +} from '@dspace/core'; import { v4 as uuidv4 } from 'uuid'; // Declare Cypress namespace to help with Intellisense & code completion in IDEs diff --git a/cypress/support/e2e.ts b/cypress/support/e2e.ts index 48985e79115..153b0029919 100644 --- a/cypress/support/e2e.ts +++ b/cypress/support/e2e.ts @@ -19,7 +19,7 @@ import './commands'; // https://github.com/component-driven/cypress-axe import 'cypress-axe'; -import { DSPACE_XSRF_COOKIE } from 'src/app/core/xsrf/xsrf.constants'; +import { DSPACE_XSRF_COOKIE } from '@dspace/core'; // Runs once before all tests before(() => { diff --git a/jest.config.ts b/jest.config.ts new file mode 100644 index 00000000000..6b3f2d6e243 --- /dev/null +++ b/jest.config.ts @@ -0,0 +1,5 @@ +import { getJestProjectsAsync } from '@nx/jest'; + +export default async () => ({ + projects: await getJestProjectsAsync(), +}); diff --git a/jest.preset.js b/jest.preset.js new file mode 100644 index 00000000000..f078ddcec1e --- /dev/null +++ b/jest.preset.js @@ -0,0 +1,3 @@ +const nxPreset = require('@nx/jest/preset').default; + +module.exports = { ...nxPreset }; diff --git a/modules/core/README.md b/modules/core/README.md new file mode 100644 index 00000000000..c68e5a2c212 --- /dev/null +++ b/modules/core/README.md @@ -0,0 +1,7 @@ +# core + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test core` to execute the unit tests. diff --git a/modules/core/jest.config.ts b/modules/core/jest.config.ts new file mode 100644 index 00000000000..22eef2327ba --- /dev/null +++ b/modules/core/jest.config.ts @@ -0,0 +1,21 @@ +export default { + displayName: 'core', + preset: '../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../coverage/modules/core', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/modules/core/ng-package.json b/modules/core/ng-package.json new file mode 100644 index 00000000000..727a6cac369 --- /dev/null +++ b/modules/core/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../dist/modules/core", + "lib": { + "entryFile": "src/index.ts" + } +} diff --git a/modules/core/package.json b/modules/core/package.json new file mode 100644 index 00000000000..be1965f6e74 --- /dev/null +++ b/modules/core/package.json @@ -0,0 +1,9 @@ +{ + "name": "@dspace/core", + "version": "0.0.1", + "peerDependencies": { + "@angular/common": "^17.3.0", + "@angular/core": "^17.3.0" + }, + "sideEffects": false +} diff --git a/modules/core/project.json b/modules/core/project.json new file mode 100644 index 00000000000..7d1900dfb6c --- /dev/null +++ b/modules/core/project.json @@ -0,0 +1,36 @@ +{ + "name": "core", + "$schema": "../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "modules/core/src", + "prefix": "lib", + "projectType": "library", + "tags": [], + "targets": { + "build": { + "executor": "@nx/angular:ng-packagr-lite", + "outputs": ["{workspaceRoot}/dist/{projectRoot}"], + "options": { + "project": "modules/core/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "modules/core/tsconfig.lib.prod.json" + }, + "development": { + "tsConfig": "modules/core/tsconfig.lib.json" + } + }, + "defaultConfiguration": "production" + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "modules/core/jest.config.ts" + } + }, + "lint": { + "executor": "@nx/eslint:lint" + } + } +} diff --git a/modules/core/src/index.ts b/modules/core/src/index.ts new file mode 100644 index 00000000000..c46ab34d5f8 --- /dev/null +++ b/modules/core/src/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './lib'; diff --git a/src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model.ts b/modules/core/src/lib/core/access-status/access-status.model.ts similarity index 60% rename from src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model.ts rename to modules/core/src/lib/core/access-status/access-status.model.ts index f1b8001b210..975b95da21a 100644 --- a/src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model.ts +++ b/modules/core/src/lib/core/access-status/access-status.model.ts @@ -2,13 +2,12 @@ import { autoserialize, deserialize, } from 'cerialize'; -import { typedObject } from 'src/app/core/cache/builders/build-decorators'; -import { CacheableObject } from 'src/app/core/cache/cacheable-object.model'; -import { HALLink } from 'src/app/core/shared/hal-link.model'; -import { ResourceType } from 'src/app/core/shared/resource-type'; -import { excludeFromEquals } from 'src/app/core/utilities/equals.decorators'; + import { ACCESS_STATUS } from './access-status.resource-type'; +import { CacheableObject, typedObject } from '../cache'; +import { excludeFromEquals } from '../utilities'; +import { HALLink, ResourceType } from '../shared'; @typedObject export class AccessStatusObject implements CacheableObject { diff --git a/src/app/shared/object-collection/shared/badges/access-status-badge/access-status.resource-type.ts b/modules/core/src/lib/core/access-status/access-status.resource-type.ts similarity index 74% rename from src/app/shared/object-collection/shared/badges/access-status-badge/access-status.resource-type.ts rename to modules/core/src/lib/core/access-status/access-status.resource-type.ts index ead2afc0b16..95bd9f043c1 100644 --- a/src/app/shared/object-collection/shared/badges/access-status-badge/access-status.resource-type.ts +++ b/modules/core/src/lib/core/access-status/access-status.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from 'src/app/core/shared/resource-type'; +import { ResourceType } from '../shared'; /** * The resource type for Access Status diff --git a/modules/core/src/lib/core/access-status/index.ts b/modules/core/src/lib/core/access-status/index.ts new file mode 100644 index 00000000000..08722aad76a --- /dev/null +++ b/modules/core/src/lib/core/access-status/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './access-status.model'; +export * from './access-status.resource-type'; diff --git a/src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.spec.ts b/modules/core/src/lib/core/admin/admin-notify-message/admin-notify-messages.service.spec.ts similarity index 73% rename from src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.spec.ts rename to modules/core/src/lib/core/admin/admin-notify-message/admin-notify-messages.service.spec.ts index 6178b201330..baf4dfb812d 100644 --- a/src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.spec.ts +++ b/modules/core/src/lib/core/admin/admin-notify-message/admin-notify-messages.service.spec.ts @@ -6,21 +6,29 @@ import { } from 'rxjs'; import { take } from 'rxjs/operators'; -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { RestResponse } from '../../../core/cache/response.models'; -import { ItemDataService } from '../../../core/data/item-data.service'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { RequestEntry } from '../../../core/data/request-entry.model'; -import { RequestEntryState } from '../../../core/data/request-entry-state.model'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { LdnServicesService } from '../../admin-ldn-services/ldn-services-data/ldn-services-data.service'; -import { mockAdminNotifyMessages } from '../admin-notify-search-result/admin-notify-search-result.component.spec'; -import { AdminNotifyMessage } from '../models/admin-notify-message.model'; -import { AdminNotifyMessagesService } from './admin-notify-messages.service'; +import { mockAdminNotifyMessages } from '../../../../../../../src/app/admin/admin-notify-dashboard/admin-notify-search-result/admin-notify-search-result.component.spec'; +import { + createSuccessfulRemoteDataObject$, + NotificationsService, +} from '../../'; +import { + ObjectCacheService, + RemoteDataBuildService, + RestResponse, +} from '../../cache'; +import { + ItemDataService, + RemoteData, + RequestEntry, + RequestEntryState, + RequestService, +} from '../../data'; +import { HALEndpointService } from '../../shared'; +import { LdnServicesService } from '../'; +import { + AdminNotifyMessage, + AdminNotifyMessagesService, +} from './'; describe('AdminNotifyMessagesService test', () => { let service: AdminNotifyMessagesService; diff --git a/src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.ts b/modules/core/src/lib/core/admin/admin-notify-message/admin-notify-messages.service.ts similarity index 78% rename from src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.ts rename to modules/core/src/lib/core/admin/admin-notify-message/admin-notify-messages.service.ts index 2211facfc87..382b8661184 100644 --- a/src/app/admin/admin-notify-dashboard/services/admin-notify-messages.service.ts +++ b/modules/core/src/lib/core/admin/admin-notify-message/admin-notify-messages.service.ts @@ -13,21 +13,13 @@ import { tap, } from 'rxjs/operators'; -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { IdentifiableDataService } from '../../../core/data/base/identifiable-data.service'; -import { ItemDataService } from '../../../core/data/item-data.service'; -import { PostRequest } from '../../../core/data/request.models'; -import { RequestService } from '../../../core/data/request.service'; -import { RestRequest } from '../../../core/data/rest-request.model'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { - getAllSucceededRemoteDataPayload, - getFirstCompletedRemoteData, -} from '../../../core/shared/operators'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { LdnServicesService } from '../../admin-ldn-services/ldn-services-data/ldn-services-data.service'; -import { AdminNotifyMessage } from '../models/admin-notify-message.model'; + +import { IdentifiableDataService, ItemDataService, PostRequest, RequestService, RestRequest } from '../../data'; +import { ObjectCacheService, RemoteDataBuildService } from '../../cache'; +import { getAllSucceededRemoteDataPayload, getFirstCompletedRemoteData, HALEndpointService } from '../../shared'; +import { NotificationsService } from '../../notifications'; +import { AdminNotifyMessage } from './models/admin-notify-message.model'; +import { LdnServicesService } from '../ldn-services-data'; /** * Injectable service responsible for fetching/sending data from/to the REST API on the messages' endpoint. diff --git a/modules/core/src/lib/core/admin/admin-notify-message/index.ts b/modules/core/src/lib/core/admin/admin-notify-message/index.ts new file mode 100644 index 00000000000..a0d50d38028 --- /dev/null +++ b/modules/core/src/lib/core/admin/admin-notify-message/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './admin-notify-messages.service'; diff --git a/src/app/admin/admin-notify-dashboard/models/admin-notify-message-search-result.model.ts b/modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message-search-result.model.ts similarity index 64% rename from src/app/admin/admin-notify-dashboard/models/admin-notify-message-search-result.model.ts rename to modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message-search-result.model.ts index c4df75ef3ee..335736673a7 100644 --- a/src/app/admin/admin-notify-dashboard/models/admin-notify-message-search-result.model.ts +++ b/modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message-search-result.model.ts @@ -1,5 +1,5 @@ -import { SearchResult } from '../../../shared/search/models/search-result.model'; import { AdminNotifyMessage } from './admin-notify-message.model'; +import { SearchResult } from '../../../shared'; export class AdminNotifySearchResult extends SearchResult { } diff --git a/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts b/modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message.model.ts similarity index 87% rename from src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts rename to modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message.model.ts index 2524ffed9b8..68c105353ef 100644 --- a/src/app/admin/admin-notify-dashboard/models/admin-notify-message.model.ts +++ b/modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message.model.ts @@ -5,12 +5,11 @@ import { } from 'cerialize'; import { Observable } from 'rxjs'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { GenericConstructor } from '../../../core/shared/generic-constructor'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; -import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model'; import { ADMIN_NOTIFY_MESSAGE } from './admin-notify-message.resource-type'; +import { DSpaceObject, GenericConstructor } from '../../../shared'; +import { typedObject } from '../../../cache'; +import { excludeFromEquals } from '../../../utilities'; +import { ListableObject } from '../../../object-collection'; /** * A message that includes admin notify info diff --git a/src/app/admin/admin-notify-dashboard/models/admin-notify-message.resource-type.ts b/modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message.resource-type.ts similarity index 75% rename from src/app/admin/admin-notify-dashboard/models/admin-notify-message.resource-type.ts rename to modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message.resource-type.ts index 994146adb3d..08f5cf68337 100644 --- a/src/app/admin/admin-notify-dashboard/models/admin-notify-message.resource-type.ts +++ b/modules/core/src/lib/core/admin/admin-notify-message/models/admin-notify-message.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../core/shared/resource-type'; +import { ResourceType } from '../../../shared'; /** * The resource type for AdminNotifyMessage diff --git a/modules/core/src/lib/core/admin/admin-notify-message/models/index.ts b/modules/core/src/lib/core/admin/admin-notify-message/models/index.ts new file mode 100644 index 00000000000..b0482bd3cf5 --- /dev/null +++ b/modules/core/src/lib/core/admin/admin-notify-message/models/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './admin-notify-message-search-result.model'; +export * from './admin-notify-message.model'; +export * from './admin-notify-message.resource-type'; diff --git a/modules/core/src/lib/core/admin/index.ts b/modules/core/src/lib/core/admin/index.ts new file mode 100644 index 00000000000..6e3bbacf285 --- /dev/null +++ b/modules/core/src/lib/core/admin/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './admin-notify-message'; +export * from './ldn-services-data'; diff --git a/modules/core/src/lib/core/admin/ldn-services-data/index.ts b/modules/core/src/lib/core/admin/ldn-services-data/index.ts new file mode 100644 index 00000000000..b86b2ccc8c8 --- /dev/null +++ b/modules/core/src/lib/core/admin/ldn-services-data/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './ldn-itemfilters-data.service'; +export * from './ldn-services-data.service'; diff --git a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilter-data.service.spec.ts b/modules/core/src/lib/core/admin/ldn-services-data/ldn-itemfilter-data.service.spec.ts similarity index 71% rename from src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilter-data.service.spec.ts rename to modules/core/src/lib/core/admin/ldn-services-data/ldn-itemfilter-data.service.spec.ts index 110a0779fbd..89a11080773 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilter-data.service.spec.ts +++ b/modules/core/src/lib/core/admin/ldn-services-data/ldn-itemfilter-data.service.spec.ts @@ -4,20 +4,20 @@ import { } from 'jasmine-marbles'; import { of } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; - -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { RestResponse } from '../../../core/cache/response.models'; -import { FindAllData } from '../../../core/data/base/find-all-data'; -import { testFindAllDataImplementation } from '../../../core/data/base/find-all-data.spec'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { RequestEntry } from '../../../core/data/request-entry.model'; -import { RequestEntryState } from '../../../core/data/request-entry-state.model'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { LdnItemfiltersService } from './ldn-itemfilters-data.service'; +import { RequestService } from '../../data/request.service'; +import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../../cache/object-cache.service'; +import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { NotificationsService } from '../../notifications/notifications.service'; +import { RequestEntry } from '../../data/request-entry.model'; +import { RemoteData } from '../../data/remote-data'; +import { RequestEntryState } from '../../data/request-entry-state.model'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; +import { testFindAllDataImplementation } from '../../data/base/find-all-data.spec'; +import { RestResponse } from '../../cache/response.models'; + + describe('LdnItemfiltersService test', () => { let scheduler: TestScheduler; diff --git a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service.ts b/modules/core/src/lib/core/admin/ldn-services-data/ldn-itemfilters-data.service.ts similarity index 68% rename from src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service.ts rename to modules/core/src/lib/core/admin/ldn-services-data/ldn-itemfilters-data.service.ts index d64d2ed5cbc..8dabc2a2f10 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service.ts +++ b/modules/core/src/lib/core/admin/ldn-services-data/ldn-itemfilters-data.service.ts @@ -1,21 +1,18 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; + import { FindAllData, FindAllDataImpl, -} from '../../../core/data/base/find-all-data'; -import { IdentifiableDataService } from '../../../core/data/base/identifiable-data.service'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { Itemfilter } from '../ldn-services-model/ldn-service-itemfilters'; + FindListOptions, FollowLinkConfig, + IdentifiableDataService, + Itemfilter, PaginatedList, RemoteData, + RequestService +} from '../../data'; +import { ObjectCacheService, RemoteDataBuildService } from '../../cache'; +import { HALEndpointService } from '../../shared'; +import { NotificationsService } from '../../notifications'; /** * A service responsible for fetching/sending data from/to the REST API on the itemfilters endpoint diff --git a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.spec.ts b/modules/core/src/lib/core/admin/ldn-services-data/ldn-services-data.service.spec.ts similarity index 69% rename from src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.spec.ts rename to modules/core/src/lib/core/admin/ldn-services-data/ldn-services-data.service.spec.ts index 4ff781f629f..94f84a55a92 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.spec.ts +++ b/modules/core/src/lib/core/admin/ldn-services-data/ldn-services-data.service.spec.ts @@ -5,30 +5,30 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { RequestParam } from '../../../core/cache/models/request-param.model'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { RestResponse } from '../../../core/cache/response.models'; -import { CreateData } from '../../../core/data/base/create-data'; -import { testCreateDataImplementation } from '../../../core/data/base/create-data.spec'; -import { DeleteData } from '../../../core/data/base/delete-data'; -import { testDeleteDataImplementation } from '../../../core/data/base/delete-data.spec'; -import { FindAllData } from '../../../core/data/base/find-all-data'; -import { testFindAllDataImplementation } from '../../../core/data/base/find-all-data.spec'; -import { PatchData } from '../../../core/data/base/patch-data'; -import { testPatchDataImplementation } from '../../../core/data/base/patch-data.spec'; -import { SearchData } from '../../../core/data/base/search-data'; -import { testSearchDataImplementation } from '../../../core/data/base/search-data.spec'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { RequestEntry } from '../../../core/data/request-entry.model'; -import { RequestEntryState } from '../../../core/data/request-entry-state.model'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { createPaginatedList } from '../../../shared/testing/utils.test'; -import { mockLdnService } from '../ldn-service-serviceMock/ldnServicesRD$-mock'; +import { mockLdnService } from '../../../../../../../src/app/admin/admin-ldn-services/ldn-service-serviceMock/ldnServicesRD$-mock'; +import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; +import { RequestParam } from '../../cache/models/request-param.model'; +import { ObjectCacheService } from '../../cache/object-cache.service'; +import { RestResponse } from '../../cache/response.models'; +import { CreateData } from '../../data/base/create-data'; +import { testCreateDataImplementation } from '../../data/base/create-data.spec'; +import { DeleteData } from '../../data/base/delete-data'; +import { testDeleteDataImplementation } from '../../data/base/delete-data.spec'; +import { FindAllData } from '../../data/base/find-all-data'; +import { testFindAllDataImplementation } from '../../data/base/find-all-data.spec'; +import { PatchData } from '../../data/base/patch-data'; +import { testPatchDataImplementation } from '../../data/base/patch-data.spec'; +import { SearchData } from '../../data/base/search-data'; +import { testSearchDataImplementation } from '../../data/base/search-data.spec'; +import { FindListOptions } from '../../data/find-list-options.model'; +import { RemoteData } from '../../data/remote-data'; +import { RequestService } from '../../data/request.service'; +import { RequestEntry } from '../../data/request-entry.model'; +import { RequestEntryState } from '../../data/request-entry-state.model'; +import { NotificationsService } from '../../notifications/notifications.service'; +import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; +import { createPaginatedList } from '../../utilities/testing/utils.test'; import { LdnServicesService } from './ldn-services-data.service'; describe('LdnServicesService test', () => { diff --git a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.ts b/modules/core/src/lib/core/admin/ldn-services-data/ldn-services-data.service.ts similarity index 84% rename from src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.ts rename to modules/core/src/lib/core/admin/ldn-services-data/ldn-services-data.service.ts index 6e368dd6809..a918c15046f 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service.ts +++ b/modules/core/src/lib/core/admin/ldn-services-data/ldn-services-data.service.ts @@ -6,42 +6,21 @@ import { take, } from 'rxjs/operators'; -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { RequestParam } from '../../../core/cache/models/request-param.model'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { - CreateData, - CreateDataImpl, -} from '../../../core/data/base/create-data'; -import { - DeleteData, - DeleteDataImpl, -} from '../../../core/data/base/delete-data'; -import { - FindAllData, - FindAllDataImpl, -} from '../../../core/data/base/find-all-data'; -import { IdentifiableDataService } from '../../../core/data/base/identifiable-data.service'; + import { - PatchData, - PatchDataImpl, -} from '../../../core/data/base/patch-data'; -import { SearchDataImpl } from '../../../core/data/base/search-data'; -import { ChangeAnalyzer } from '../../../core/data/change-analyzer'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { MultipartPostRequest } from '../../../core/data/request.models'; -import { RequestService } from '../../../core/data/request.service'; -import { RestRequest } from '../../../core/data/rest-request.model'; -import { RestRequestMethod } from '../../../core/data/rest-request-method'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { NoContent } from '../../../core/shared/NoContent.model'; -import { URLCombiner } from '../../../core/url-combiner/url-combiner'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { LdnServiceConstrain } from '../ldn-services-model/ldn-service.constrain.model'; -import { LdnService } from '../ldn-services-model/ldn-services.model'; + ChangeAnalyzer, + CreateData, CreateDataImpl, + DeleteData, DeleteDataImpl, + FindAllData, FindAllDataImpl, FindListOptions, FollowLinkConfig, + IdentifiableDataService, + LdnServiceConstrain, MultipartPostRequest, PaginatedList, + PatchData, PatchDataImpl, RemoteData, RequestService, RestRequest, RestRequestMethod, SearchDataImpl +} from '../../data'; +import { LdnService } from '../../data'; +import { ObjectCacheService, RemoteDataBuildService, RequestParam } from '../../cache'; +import { HALEndpointService, NoContent } from '../../shared'; +import { NotificationsService } from '../../notifications'; +import { URLCombiner } from '../../url-combiner'; /** * Injectable service responsible for fetching/sending data from/to the REST API on the ldnservices endpoint. diff --git a/src/app/core/auth/auth-blocking.guard.spec.ts b/modules/core/src/lib/core/auth/auth-blocking.guard.spec.ts similarity index 87% rename from src/app/core/auth/auth-blocking.guard.spec.ts rename to modules/core/src/lib/core/auth/auth-blocking.guard.spec.ts index 295e5b1e751..d5a7928acd7 100644 --- a/src/app/core/auth/auth-blocking.guard.spec.ts +++ b/modules/core/src/lib/core/auth/auth-blocking.guard.spec.ts @@ -12,18 +12,17 @@ import { } from '@ngrx/store/testing'; import { cold } from 'jasmine-marbles'; -import { - AppState, - storeModuleConfig, -} from '../../app.reducer'; +import { CoreState } from '../core-state.model'; import { authReducer } from './auth.reducer'; import { authBlockingGuard } from './auth-blocking.guard'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; describe('authBlockingGuard', () => { let guard: any; let initialState; - let store: Store; - let mockStore: MockStore; + let store: Store; + let mockStore: MockStore; + initialState = { core: { @@ -40,7 +39,7 @@ describe('authBlockingGuard', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - StoreModule.forRoot(authReducer, storeModuleConfig), + StoreModule.forRoot(authReducer, mockStoreModuleConfig), ], providers: [ provideMockStore({ initialState }), @@ -51,7 +50,7 @@ describe('authBlockingGuard', () => { beforeEach(() => { store = TestBed.inject(Store); - mockStore = store as MockStore; + mockStore = store as MockStore; guard = authBlockingGuard; }); diff --git a/src/app/core/auth/auth-blocking.guard.ts b/modules/core/src/lib/core/auth/auth-blocking.guard.ts similarity index 89% rename from src/app/core/auth/auth-blocking.guard.ts rename to modules/core/src/lib/core/auth/auth-blocking.guard.ts index c76480ec0d2..b9d1495d75f 100644 --- a/src/app/core/auth/auth-blocking.guard.ts +++ b/modules/core/src/lib/core/auth/auth-blocking.guard.ts @@ -16,7 +16,7 @@ import { take, } from 'rxjs/operators'; -import { AppState } from '../../app.reducer'; +import { CoreState } from '../core-state.model'; import { isAuthenticationBlocking } from './selectors'; /** @@ -27,7 +27,7 @@ import { isAuthenticationBlocking } from './selectors'; export const authBlockingGuard: CanActivateFn = ( route: ActivatedRouteSnapshot, state: RouterStateSnapshot, - store: Store = inject(Store), + store: Store = inject(Store), ): Observable => { return store.pipe(select(isAuthenticationBlocking)).pipe( map((isBlocking: boolean) => isBlocking === false), diff --git a/src/app/core/auth/auth-request.service.spec.ts b/modules/core/src/lib/core/auth/auth-request.service.spec.ts similarity index 90% rename from src/app/core/auth/auth-request.service.spec.ts rename to modules/core/src/lib/core/auth/auth-request.service.spec.ts index 2220efe5faa..4688896af5e 100644 --- a/src/app/core/auth/auth-request.service.spec.ts +++ b/modules/core/src/lib/core/auth/auth-request.service.spec.ts @@ -4,18 +4,20 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RemoteData } from '../data/remote-data'; -import { PostRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RestRequestMethod } from '../data/rest-request-method'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { AuthRequestService } from './auth-request.service'; -import { AuthStatus } from './models/auth-status.model'; -import { ShortLivedToken } from './models/short-lived-token.model'; +import { RemoteDataBuildService } from '../cache'; +import { RemoteData } from '../data'; +import { PostRequest } from '../data'; +import { RequestService } from '../data'; +import { RestRequestMethod } from '../data'; + +import { HALEndpointService } from '../shared'; +import { createSuccessfulRemoteDataObject } from '../utilities'; + +import { AuthStatus } from './models'; +import { ShortLivedToken } from './models'; import objectContaining = jasmine.objectContaining; +import { AuthRequestService } from './auth-request.service'; +import { HttpOptions } from '../dspace-rest/dspace-rest.service'; describe(`AuthRequestService`, () => { let halService: HALEndpointService; diff --git a/src/app/core/auth/auth-request.service.ts b/modules/core/src/lib/core/auth/auth-request.service.ts similarity index 84% rename from src/app/core/auth/auth-request.service.ts rename to modules/core/src/lib/core/auth/auth-request.service.ts index 5d11b9f4cb0..62fa28868c7 100644 --- a/src/app/core/auth/auth-request.service.ts +++ b/modules/core/src/lib/core/auth/auth-request.service.ts @@ -1,3 +1,4 @@ +import { isNotEmpty } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -8,22 +9,21 @@ import { tap, } from 'rxjs/operators'; -import { isNotEmpty } from '../../shared/empty.util'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RemoteData } from '../data/remote-data'; +import { RemoteDataBuildService } from '../cache'; +import { FollowLinkConfig } from '../data'; +import { RemoteData } from '../data'; import { GetRequest, PostRequest, -} from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RestRequest } from '../data/rest-request.model'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { URLCombiner } from '../url-combiner/url-combiner'; -import { AuthStatus } from './models/auth-status.model'; -import { ShortLivedToken } from './models/short-lived-token.model'; +} from '../data'; +import { RequestService } from '../data'; +import { RestRequest } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { HALEndpointService } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { URLCombiner } from '../url-combiner'; +import { AuthStatus } from './models'; +import { ShortLivedToken } from './models'; /** * Abstract service to send authentication requests diff --git a/src/app/core/auth/auth.actions.ts b/modules/core/src/lib/core/auth/auth.actions.ts similarity index 98% rename from src/app/core/auth/auth.actions.ts rename to modules/core/src/lib/core/auth/auth.actions.ts index 03b6bc11910..538e0f6df62 100644 --- a/src/app/core/auth/auth.actions.ts +++ b/modules/core/src/lib/core/auth/auth.actions.ts @@ -3,11 +3,11 @@ import { Action } from '@ngrx/store'; // import type function -import { type } from '../../shared/ngrx/type'; -import { AuthMethod } from './models/auth.method'; -import { AuthStatus } from './models/auth-status.model'; +import { type } from '../shared'; +import { AuthMethod } from './models'; +import { AuthStatus } from './models'; // import models -import { AuthTokenInfo } from './models/auth-token-info.model'; +import { AuthTokenInfo } from './models'; export const AuthActionTypes = { AUTHENTICATE: type('dspace/auth/AUTHENTICATE'), diff --git a/src/app/core/auth/auth.effects.spec.ts b/modules/core/src/lib/core/auth/auth.effects.spec.ts similarity index 94% rename from src/app/core/auth/auth.effects.spec.ts rename to modules/core/src/lib/core/auth/auth.effects.spec.ts index a423455594a..cbce71f2f0a 100644 --- a/src/app/core/auth/auth.effects.spec.ts +++ b/modules/core/src/lib/core/auth/auth.effects.spec.ts @@ -22,17 +22,21 @@ import { throwError as observableThrow, } from 'rxjs'; +import { AuthorizationDataService } from '../data'; +import { type } from '../shared'; + + + +import { AuthStatus } from './models'; import { - AppState, - storeModuleConfig, -} from '../../app.reducer'; -import { - authMethodsMock, - AuthServiceStub, -} from '../../shared/testing/auth-service.stub'; -import { EPersonMock } from '../../shared/testing/eperson.mock'; -import { StoreActionTypes } from '../../store.actions'; -import { AuthorizationDataService } from '../data/feature-authorization/authorization-data.service'; + isAuthenticated, + isAuthenticatedLoaded, +} from './selectors'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; +import { AuthEffects } from './auth.effects'; +import { CoreState } from '../core-state.model'; +import { authReducer } from './auth.reducer'; +import { AuthService } from './auth.service'; import { AuthActionTypes, AuthenticatedAction, @@ -48,19 +52,11 @@ import { RetrieveAuthenticatedEpersonAction, RetrieveAuthenticatedEpersonErrorAction, RetrieveAuthenticatedEpersonSuccessAction, - RetrieveAuthMethodsAction, - RetrieveAuthMethodsErrorAction, - RetrieveAuthMethodsSuccessAction, - RetrieveTokenAction, + RetrieveAuthMethodsAction, RetrieveAuthMethodsErrorAction, RetrieveAuthMethodsSuccessAction, + RetrieveTokenAction } from './auth.actions'; -import { AuthEffects } from './auth.effects'; -import { authReducer } from './auth.reducer'; -import { AuthService } from './auth.service'; -import { AuthStatus } from './models/auth-status.model'; -import { - isAuthenticated, - isAuthenticatedLoaded, -} from './selectors'; +import { authMethodsMock, AuthServiceStub } from '../utilities/testing/auth-service.stub'; +import { EPersonMock } from '../utilities/testing/eperson.mock'; describe('AuthEffects', () => { let authEffects: AuthEffects; @@ -68,7 +64,7 @@ describe('AuthEffects', () => { let authServiceStub; let initialState; let token; - let store: MockStore; + let store: MockStore; const authorizationService = jasmine.createSpyObj(['invalidateAuthorizationsRequestCache']); @@ -91,7 +87,7 @@ describe('AuthEffects', () => { init(); TestBed.configureTestingModule({ imports: [ - StoreModule.forRoot({ auth: authReducer }, storeModuleConfig), + StoreModule.forRoot({ auth: authReducer }, mockStoreModuleConfig), ], providers: [ AuthEffects, @@ -426,7 +422,7 @@ describe('AuthEffects', () => { describe('when auth loaded is false', () => { it('should not call removeToken method', fakeAsync(() => { store.overrideSelector(isAuthenticatedLoaded, false); - actions = observableOf({ type: StoreActionTypes.REHYDRATE }); + actions = observableOf({ type: type('dspace/ngrx/REHYDRATE') }); spyOn(authServiceStub, 'removeToken'); authEffects.clearInvalidTokenOnRehydrate$.subscribe(() => { @@ -442,7 +438,7 @@ describe('AuthEffects', () => { spyOn(console, 'log').and.callThrough(); store.overrideSelector(isAuthenticatedLoaded, true); - actions = observableOf({ type: StoreActionTypes.REHYDRATE }); + actions = observableOf({ type: type('dspace/ngrx/REHYDRATE') }); spyOn(authServiceStub, 'removeToken'); authEffects.clearInvalidTokenOnRehydrate$.subscribe(() => { @@ -455,7 +451,7 @@ describe('AuthEffects', () => { describe('invalidateAuthorizationsRequestCache$', () => { it('should call invalidateAuthorizationsRequestCache method in response to a REHYDRATE action', (done) => { - actions = observableOf({ type: StoreActionTypes.REHYDRATE }); + actions = observableOf({ type: type('dspace/ngrx/REHYDRATE') }); authEffects.invalidateAuthorizationsRequestCache$.subscribe(() => { expect((authEffects as any).authorizationsService.invalidateAuthorizationsRequestCache).toHaveBeenCalled(); diff --git a/src/app/core/auth/auth.effects.ts b/modules/core/src/lib/core/auth/auth.effects.ts similarity index 92% rename from src/app/core/auth/auth.effects.ts rename to modules/core/src/lib/core/auth/auth.effects.ts index 2919a40fa85..3c89d63f808 100644 --- a/src/app/core/auth/auth.effects.ts +++ b/modules/core/src/lib/core/auth/auth.effects.ts @@ -1,8 +1,10 @@ import { + Inject, Injectable, NgZone, Type, } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; // import @ngrx import { Actions, @@ -32,16 +34,18 @@ import { tap, } from 'rxjs/operators'; -import { environment } from '../../../environments/environment'; -import { AppState } from '../../app.reducer'; -import { hasValue } from '../../shared/empty.util'; -import { NotificationsActionTypes } from '../../shared/notifications/notifications.actions'; -import { StoreActionTypes } from '../../store.actions'; -import { AuthorizationDataService } from '../data/feature-authorization/authorization-data.service'; -import { RequestActionTypes } from '../data/request.actions'; -import { EPerson } from '../eperson/models/eperson.model'; -import { EnterZoneScheduler } from '../utilities/enter-zone.scheduler'; -import { LeaveZoneScheduler } from '../utilities/leave-zone.scheduler'; +import { + APP_CONFIG, + AppConfig, +} from '../config'; +import { CoreState } from '../core-state.model'; +import { AuthorizationDataService } from '../data'; +import { RequestActionTypes } from '../data'; +import { EPerson } from '../eperson'; +import { NotificationsActionTypes } from '../notifications'; +import { StoreActionTypes } from '../store.actions'; +import { EnterZoneScheduler } from '../utilities'; +import { LeaveZoneScheduler } from '../utilities'; // import actions import { AuthActionTypes, @@ -70,9 +74,9 @@ import { } from './auth.actions'; // import services import { AuthService } from './auth.service'; -import { AuthMethod } from './models/auth.method'; -import { AuthStatus } from './models/auth-status.model'; -import { AuthTokenInfo } from './models/auth-token-info.model'; +import { AuthMethod } from './models'; +import { AuthStatus } from './models'; +import { AuthTokenInfo } from './models'; import { isAuthenticated, isAuthenticatedLoaded, @@ -303,7 +307,7 @@ export class AuthEffects { // in, and start a new timer switchMap(() => // Start a timer outside of Angular's zone - timer(environment.auth.ui.timeUntilIdle, new LeaveZoneScheduler(this.zone, asyncScheduler)), + timer(this.appConfig.auth.ui.timeUntilIdle, new LeaveZoneScheduler(this.zone, asyncScheduler)), ), // Re-enter the zone to dispatch the action observeOn(new EnterZoneScheduler(this.zone, queueScheduler)), @@ -317,11 +321,13 @@ export class AuthEffects { * @param {AuthorizationDataService} authorizationsService * @param {AuthService} authService * @param {Store} store + * @param appConfig */ constructor(private actions$: Actions, private zone: NgZone, private authorizationsService: AuthorizationDataService, private authService: AuthService, - private store: Store) { + private store: Store, + @Inject(APP_CONFIG) protected appConfig: AppConfig) { } } diff --git a/src/app/core/auth/auth.interceptor.spec.ts b/modules/core/src/lib/core/auth/auth.interceptor.spec.ts similarity index 91% rename from src/app/core/auth/auth.interceptor.spec.ts rename to modules/core/src/lib/core/auth/auth.interceptor.spec.ts index d824df472a2..411a7ab82a1 100644 --- a/src/app/core/auth/auth.interceptor.spec.ts +++ b/modules/core/src/lib/core/auth/auth.interceptor.spec.ts @@ -8,20 +8,20 @@ import { Router } from '@angular/router'; import { Store } from '@ngrx/store'; import { of as observableOf } from 'rxjs'; -import { AuthServiceStub } from '../../shared/testing/auth-service.stub'; -import { RouterStub } from '../../shared/testing/router.stub'; -import { TruncatablesState } from '../../shared/truncatable/truncatable.reducer'; -import { RestRequestMethod } from '../data/rest-request-method'; +import { RestRequestMethod } from '../data'; import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; -import { AuthInterceptor } from './auth.interceptor'; +import { AuthServiceStub } from '../utilities/testing/auth-service.stub'; import { AuthService } from './auth.service'; +import { RouterStub } from '../utilities/testing/router.stub'; +import { AuthInterceptor } from './auth.interceptor'; + describe(`AuthInterceptor`, () => { let service: DspaceRestService; let httpMock: HttpTestingController; const authServiceStub = new AuthServiceStub(); - const store: Store = jasmine.createSpyObj('store', { + const store: Store = jasmine.createSpyObj('store', { dispatch: {}, select: observableOf(true), }); diff --git a/src/app/core/auth/auth.interceptor.ts b/modules/core/src/lib/core/auth/auth.interceptor.ts similarity index 96% rename from src/app/core/auth/auth.interceptor.ts rename to modules/core/src/lib/core/auth/auth.interceptor.ts index d011d27059a..65e851a111f 100644 --- a/src/app/core/auth/auth.interceptor.ts +++ b/modules/core/src/lib/core/auth/auth.interceptor.ts @@ -13,6 +13,11 @@ import { Injector, } from '@angular/core'; import { Router } from '@angular/router'; +import { + hasValue, + isNotEmpty, + isNotNull, +} from '@dspace/shared/utils'; import { Store } from '@ngrx/store'; import { Observable, @@ -24,18 +29,13 @@ import { map, } from 'rxjs/operators'; -import { AppState } from '../../app.reducer'; -import { - hasValue, - isNotEmpty, - isNotNull, -} from '../../shared/empty.util'; +import { CoreState } from '../core-state.model'; import { RedirectWhenTokenExpiredAction } from './auth.actions'; import { AuthService } from './auth.service'; -import { AuthMethod } from './models/auth.method'; -import { AuthMethodType } from './models/auth.method-type'; -import { AuthStatus } from './models/auth-status.model'; -import { AuthTokenInfo } from './models/auth-token-info.model'; +import { AuthMethod } from './models'; +import { AuthMethodType } from './models'; +import { AuthStatus } from './models'; +import { AuthTokenInfo } from './models'; @Injectable() export class AuthInterceptor implements HttpInterceptor { @@ -45,7 +45,7 @@ export class AuthInterceptor implements HttpInterceptor { // we're creating a refresh token request list protected refreshTokenRequestUrls = []; - constructor(private inj: Injector, private router: Router, private store: Store) { + constructor(private inj: Injector, private router: Router, private store: Store) { } /** diff --git a/src/app/core/auth/auth.reducer.spec.ts b/modules/core/src/lib/core/auth/auth.reducer.spec.ts similarity index 97% rename from src/app/core/auth/auth.reducer.spec.ts rename to modules/core/src/lib/core/auth/auth.reducer.spec.ts index 7860744aa5b..67c2beb4b3e 100644 --- a/src/app/core/auth/auth.reducer.spec.ts +++ b/modules/core/src/lib/core/auth/auth.reducer.spec.ts @@ -1,4 +1,3 @@ -import { EPersonMock } from '../../shared/testing/eperson.mock'; import { AddAuthenticationMessageAction, AuthenticateAction, @@ -24,18 +23,14 @@ import { RetrieveAuthMethodsErrorAction, RetrieveAuthMethodsSuccessAction, SetAuthCookieStatus, - SetRedirectUrlAction, - SetUserAsIdleAction, - UnsetUserAsIdleAction, + SetRedirectUrlAction, SetUserAsIdleAction, UnsetUserAsIdleAction } from './auth.actions'; -import { - authReducer, - AuthState, -} from './auth.reducer'; -import { AuthMethod } from './models/auth.method'; -import { AuthMethodType } from './models/auth.method-type'; -import { AuthStatus } from './models/auth-status.model'; -import { AuthTokenInfo } from './models/auth-token-info.model'; +import { authReducer, AuthState } from './auth.reducer'; +import { AuthMethod } from './models'; +import { AuthMethodType } from './models'; +import { AuthStatus } from './models'; +import { AuthTokenInfo } from './models'; +import { EPersonMock } from '../utilities/testing/eperson.mock'; describe('authReducer', () => { diff --git a/src/app/core/auth/auth.reducer.ts b/modules/core/src/lib/core/auth/auth.reducer.ts similarity index 96% rename from src/app/core/auth/auth.reducer.ts rename to modules/core/src/lib/core/auth/auth.reducer.ts index 8a399710eae..e715e9f4f3f 100644 --- a/src/app/core/auth/auth.reducer.ts +++ b/modules/core/src/lib/core/auth/auth.reducer.ts @@ -1,5 +1,5 @@ // import actions -import { StoreActionTypes } from '../../store.actions'; +import { StoreActionTypes } from '../store.actions'; import { AddAuthenticationMessageAction, AuthActions, @@ -15,10 +15,10 @@ import { SetAuthCookieStatus, SetRedirectUrlAction, } from './auth.actions'; -import { AuthMethod } from './models/auth.method'; -import { AuthMethodType } from './models/auth.method-type'; +import { AuthMethod } from './models'; +import { AuthMethodType } from './models'; // import models -import { AuthTokenInfo } from './models/auth-token-info.model'; +import { AuthTokenInfo } from './models'; /** * The auth state. diff --git a/src/app/core/auth/auth.service.spec.ts b/modules/core/src/lib/core/auth/auth.service.spec.ts similarity index 88% rename from src/app/core/auth/auth.service.spec.ts rename to modules/core/src/lib/core/auth/auth.service.spec.ts index 66c80b9bf5a..48af11a91ac 100644 --- a/src/app/core/auth/auth.service.spec.ts +++ b/modules/core/src/lib/core/auth/auth.service.spec.ts @@ -19,50 +19,41 @@ import { of as observableOf, } from 'rxjs'; -import { REQUEST } from '../../../express.tokens'; -import { AppState } from '../../app.reducer'; -import { getMockTranslateService } from '../../shared/mocks/translate.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { ActivatedRouteStub } from '../../shared/testing/active-router.stub'; -import { AuthRequestServiceStub } from '../../shared/testing/auth-request-service.stub'; -import { authMethodsMock } from '../../shared/testing/auth-service.stub'; -import { EPersonMock } from '../../shared/testing/eperson.mock'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { routeServiceStub } from '../../shared/testing/route-service.stub'; -import { RouterStub } from '../../shared/testing/router.stub'; -import { - SpecialGroupDataMock, - SpecialGroupDataMock$, -} from '../../shared/testing/special-group.mock'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RemoteData } from '../data/remote-data'; -import { EPersonDataService } from '../eperson/eperson-data.service'; -import { EPerson } from '../eperson/models/eperson.model'; -import { ClientCookieService } from '../services/client-cookie.service'; -import { CookieService } from '../services/cookie.service'; -import { HardRedirectService } from '../services/hard-redirect.service'; -import { RouteService } from '../services/route.service'; +import { RemoteDataBuildService } from '../cache'; + +import { RemoteData } from '../data'; +import { EPersonDataService } from '../eperson'; +import { EPerson } from '../eperson'; + +import { ClientCookieService } from '../services'; +import { CookieService } from '../services'; +import { HardRedirectService } from '../services'; +import { RouteService } from '../services'; import { NativeWindowRef, NativeWindowService, -} from '../services/window.service'; -import { - SetUserAsIdleAction, - UnsetUserAsIdleAction, -} from './auth.actions'; -import { - authReducer, - AuthState, -} from './auth.reducer'; -import { - AuthService, - IMPERSONATING_COOKIE, -} from './auth.service'; +} from '../services'; +import { REQUEST } from '../tokens'; +import { createSuccessfulRemoteDataObject$ } from '../utilities'; + +import { AuthMethod } from './models'; +import { AuthStatus } from './models'; +import { AuthTokenInfo } from './models'; +import { EPersonMock } from '../utilities/testing/eperson.mock'; +import { SpecialGroupDataMock, SpecialGroupDataMock$ } from '../utilities/testing/special-group.mock'; +import { RouterStub } from '../utilities/testing/router.stub'; +import { AuthRequestServiceStub } from '../utilities/testing/auth-request-service.stub'; +import { ActivatedRouteStub } from '../utilities/testing/active-router.stub'; +import { routeServiceStub } from '../utilities/testing/route-service.stub'; +import { NotificationsServiceStub } from '../utilities/testing/notifications-service.stub'; +import { getMockTranslateService } from '../mocks/translate.service.mock'; +import { authMethodsMock } from '../utilities/testing/auth-service.stub'; +import { authReducer, AuthState } from './auth.reducer'; +import { AuthService, IMPERSONATING_COOKIE } from './auth.service'; import { AuthRequestService } from './auth-request.service'; -import { AuthMethod } from './models/auth.method'; -import { AuthStatus } from './models/auth-status.model'; -import { AuthTokenInfo } from './models/auth-token-info.model'; +import { NotificationsService } from '../notifications/notifications.service'; +import { SetUserAsIdleAction, UnsetUserAsIdleAction } from './auth.actions'; +import { CoreState } from '../core-state.model'; describe('AuthService test', () => { @@ -282,7 +273,7 @@ describe('AuthService test', () => { }).compileComponents(); })); - beforeEach(inject([CookieService, AuthRequestService, Store, Router, RouteService], (cookieService: CookieService, authReqService: AuthRequestService, store: Store, router: Router, routeService: RouteService, notificationsService: NotificationsService, translateService: TranslateService) => { + beforeEach(inject([CookieService, AuthRequestService, Store, Router, RouteService], (cookieService: CookieService, authReqService: AuthRequestService, store: Store, router: Router, routeService: RouteService, notificationsService: NotificationsService, translateService: TranslateService) => { store .subscribe((state) => { (state as any).core = Object.create({}); @@ -358,7 +349,7 @@ describe('AuthService test', () => { }).compileComponents(); })); - beforeEach(inject([ClientCookieService, AuthRequestService, Store, Router, RouteService], (cookieService: ClientCookieService, authReqService: AuthRequestService, store: Store, router: Router, routeService: RouteService, notificationsService: NotificationsService, translateService: TranslateService) => { + beforeEach(inject([ClientCookieService, AuthRequestService, Store, Router, RouteService], (cookieService: ClientCookieService, authReqService: AuthRequestService, store: Store, router: Router, routeService: RouteService, notificationsService: NotificationsService, translateService: TranslateService) => { const expiredToken: AuthTokenInfo = new AuthTokenInfo('test_token'); expiredToken.expires = Date.now() - (1000 * 60 * 60); authenticatedState = { @@ -587,7 +578,7 @@ describe('AuthService test', () => { }).compileComponents(); })); - beforeEach(inject([CookieService, AuthRequestService, Store, Router, RouteService], (cookieService: CookieService, authReqService: AuthRequestService, store: Store, router: Router, routeService: RouteService, notificationsService: NotificationsService, translateService: TranslateService) => { + beforeEach(inject([CookieService, AuthRequestService, Store, Router, RouteService], (cookieService: CookieService, authReqService: AuthRequestService, store: Store, router: Router, routeService: RouteService, notificationsService: NotificationsService, translateService: TranslateService) => { store .subscribe((state) => { (state as any).core = Object.create({}); @@ -627,7 +618,7 @@ describe('AuthService test', () => { }).compileComponents(); })); - beforeEach(inject([CookieService, AuthRequestService, Store, Router, RouteService], (cookieService: CookieService, authReqService: AuthRequestService, store: Store, router: Router, routeService: RouteService, notificationsService: NotificationsService, translateService: TranslateService) => { + beforeEach(inject([CookieService, AuthRequestService, Store, Router, RouteService], (cookieService: CookieService, authReqService: AuthRequestService, store: Store, router: Router, routeService: RouteService, notificationsService: NotificationsService, translateService: TranslateService) => { store .subscribe((state) => { (state as any).core = Object.create({}); diff --git a/src/app/core/auth/auth.service.ts b/modules/core/src/lib/core/auth/auth.service.ts similarity index 93% rename from src/app/core/auth/auth.service.ts rename to modules/core/src/lib/core/auth/auth.service.ts index cd773b68cfa..a675dffeff5 100644 --- a/src/app/core/auth/auth.service.ts +++ b/modules/core/src/lib/core/auth/auth.service.ts @@ -5,6 +5,15 @@ import { Optional, } from '@angular/core'; import { Router } from '@angular/router'; +import { + hasNoValue, + hasValue, + hasValueOperator, + isEmpty, + isNotEmpty, + isNotNull, + isNotUndefined, +} from '@dspace/shared/utils'; import { select, Store, @@ -23,45 +32,39 @@ import { take, } from 'rxjs/operators'; -import { environment } from '../../../environments/environment'; import { - REQUEST, - RESPONSE, -} from '../../../express.tokens'; -import { AppState } from '../../app.reducer'; -import { - hasNoValue, - hasValue, - hasValueOperator, - isEmpty, - isNotEmpty, - isNotNull, - isNotUndefined, -} from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { followLink } from '../../shared/utils/follow-link-config.model'; + APP_CONFIG, + AppConfig, +} from '../config'; +import { CoreState } from '../core-state.model'; +import { followLink } from '../data'; import { buildPaginatedList, PaginatedList, -} from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { EPersonDataService } from '../eperson/eperson-data.service'; -import { EPerson } from '../eperson/models/eperson.model'; -import { Group } from '../eperson/models/group.model'; -import { CookieService } from '../services/cookie.service'; -import { HardRedirectService } from '../services/hard-redirect.service'; -import { RouteService } from '../services/route.service'; +} from '../data'; +import { RemoteData } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { EPersonDataService } from '../eperson'; +import { EPerson } from '../eperson'; +import { Group } from '../eperson'; +import { NotificationsService } from '../notifications'; +import { CookieService } from '../services'; +import { HardRedirectService } from '../services'; +import { RouteService } from '../services'; import { NativeWindowRef, NativeWindowService, -} from '../services/window.service'; +} from '../services'; import { getAllSucceededRemoteDataPayload, getFirstCompletedRemoteData, -} from '../shared/operators'; -import { PageInfo } from '../shared/page-info.model'; +} from '../shared'; +import { PageInfo } from '../shared'; +import { + REQUEST, + RESPONSE, +} from '../tokens'; +import { createSuccessfulRemoteDataObject$ } from '../utilities'; import { CheckAuthenticationTokenAction, RefreshTokenAction, @@ -72,12 +75,12 @@ import { UnsetUserAsIdleAction, } from './auth.actions'; import { AuthRequestService } from './auth-request.service'; -import { AuthMethod } from './models/auth.method'; -import { AuthStatus } from './models/auth-status.model'; +import { AuthMethod } from './models'; +import { AuthStatus } from './models'; import { AuthTokenInfo, TOKENITEM, -} from './models/auth-token-info.model'; +} from './models'; import { getAuthenticatedUserId, getAuthenticationToken, @@ -119,10 +122,11 @@ export class AuthService { protected router: Router, protected routeService: RouteService, protected storage: CookieService, - protected store: Store, + protected store: Store, protected hardRedirectService: HardRedirectService, private notificationService: NotificationsService, private translateService: TranslateService, + @Inject(APP_CONFIG) protected appConfig: AppConfig, ) { this.store.pipe( // when this service is constructed the store is not fully initialized yet @@ -412,7 +416,7 @@ export class AuthService { if (!currentlyRefreshingToken) { token = authTokenInfo || null; if (token !== undefined && token !== null) { - let timeLeftBeforeRefresh = token.expires - new Date().getTime() - environment.auth.rest.timeLeftBeforeTokenRefresh; + let timeLeftBeforeRefresh = token.expires - new Date().getTime() - this.appConfig.auth.rest.timeLeftBeforeTokenRefresh; if (timeLeftBeforeRefresh < 0) { timeLeftBeforeRefresh = 0; } diff --git a/src/app/core/auth/authenticated.guard.ts b/modules/core/src/lib/core/auth/authenticated.guard.ts similarity index 93% rename from src/app/core/auth/authenticated.guard.ts rename to modules/core/src/lib/core/auth/authenticated.guard.ts index eba6dc89f9e..999d884727f 100644 --- a/src/app/core/auth/authenticated.guard.ts +++ b/modules/core/src/lib/core/auth/authenticated.guard.ts @@ -18,7 +18,7 @@ import { switchMap, } from 'rxjs/operators'; -import { AppState } from '../../app.reducer'; +import { CoreState } from '../core-state.model'; import { AuthService, LOGIN_ROUTE, @@ -39,7 +39,7 @@ export const authenticatedGuard: CanActivateFn = ( state: RouterStateSnapshot, authService: AuthService = inject(AuthService), router: Router = inject(Router), - store: Store = inject(Store), + store: Store = inject(Store), ): Observable => { const url = state.url; // redirect to sign in page if user is not authenticated diff --git a/src/app/core/auth/browser-auth-request.service.spec.ts b/modules/core/src/lib/core/auth/browser-auth-request.service.spec.ts similarity index 91% rename from src/app/core/auth/browser-auth-request.service.spec.ts rename to modules/core/src/lib/core/auth/browser-auth-request.service.spec.ts index 9649255b236..39e61b60636 100644 --- a/src/app/core/auth/browser-auth-request.service.spec.ts +++ b/modules/core/src/lib/core/auth/browser-auth-request.service.spec.ts @@ -1,9 +1,10 @@ import { Observable } from 'rxjs'; -import { PostRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { AuthRequestService } from './auth-request.service'; +import { PostRequest } from '../data'; +import { RequestService } from '../data'; import { BrowserAuthRequestService } from './browser-auth-request.service'; +import { AuthRequestService } from './auth-request.service'; + describe(`BrowserAuthRequestService`, () => { let href: string; diff --git a/src/app/core/auth/browser-auth-request.service.ts b/modules/core/src/lib/core/auth/browser-auth-request.service.ts similarity index 75% rename from src/app/core/auth/browser-auth-request.service.ts rename to modules/core/src/lib/core/auth/browser-auth-request.service.ts index d708cd8982a..fcb1c2744c9 100644 --- a/src/app/core/auth/browser-auth-request.service.ts +++ b/modules/core/src/lib/core/auth/browser-auth-request.service.ts @@ -4,10 +4,10 @@ import { of as observableOf, } from 'rxjs'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { PostRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { PostRequest } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { AuthRequestService } from './auth-request.service'; /** diff --git a/modules/core/src/lib/core/auth/index.ts b/modules/core/src/lib/core/auth/index.ts new file mode 100644 index 00000000000..16d08aaaa6d --- /dev/null +++ b/modules/core/src/lib/core/auth/index.ts @@ -0,0 +1,15 @@ + +export * from './models'; +export * from './auth-blocking.guard'; +export * from './auth-request.service'; +export * from './auth.actions'; +export * from './auth.effects'; +export * from './auth.interceptor'; +export * from './auth.reducer'; +export * from './auth.service'; +export * from './authenticated.guard'; +export * from './browser-auth-request.service'; +export * from './selectors'; +export * from './server-auth-request.service'; +export * from './server-auth.service'; +export * from './token-response-parsing.service'; diff --git a/src/app/core/auth/models/auth-error.model.ts b/modules/core/src/lib/core/auth/models/auth-error.model.ts similarity index 100% rename from src/app/core/auth/models/auth-error.model.ts rename to modules/core/src/lib/core/auth/models/auth-error.model.ts diff --git a/src/app/core/auth/models/auth-status.model.ts b/modules/core/src/lib/core/auth/models/auth-status.model.ts similarity index 74% rename from src/app/core/auth/models/auth-status.model.ts rename to modules/core/src/lib/core/auth/models/auth-status.model.ts index f25e5a48928..0b5846d092f 100644 --- a/src/app/core/auth/models/auth-status.model.ts +++ b/modules/core/src/lib/core/auth/models/auth-status.model.ts @@ -8,18 +8,18 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { EPerson } from '../../eperson/models/eperson.model'; -import { EPERSON } from '../../eperson/models/eperson.resource-type'; -import { Group } from '../../eperson/models/group.model'; -import { GROUP } from '../../eperson/models/group.resource-type'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +} from '../../cache'; +import { CacheableObject } from '../../cache'; +import { IDToUUIDSerializer } from '../../cache'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { EPerson } from '../../eperson'; +import { EPERSON } from '../../eperson'; +import { Group } from '../../eperson'; +import { GROUP } from '../../eperson'; +import { HALLink } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { AuthMethod } from './auth.method'; import { AuthError } from './auth-error.model'; import { AUTH_STATUS } from './auth-status.resource-type'; diff --git a/src/app/core/auth/models/auth-status.resource-type.ts b/modules/core/src/lib/core/auth/models/auth-status.resource-type.ts similarity index 75% rename from src/app/core/auth/models/auth-status.resource-type.ts rename to modules/core/src/lib/core/auth/models/auth-status.resource-type.ts index 2b7c7252fc8..1f1a98ff015 100644 --- a/src/app/core/auth/models/auth-status.resource-type.ts +++ b/modules/core/src/lib/core/auth/models/auth-status.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for AuthStatus diff --git a/src/app/core/auth/models/auth-token-info.model.ts b/modules/core/src/lib/core/auth/models/auth-token-info.model.ts similarity index 100% rename from src/app/core/auth/models/auth-token-info.model.ts rename to modules/core/src/lib/core/auth/models/auth-token-info.model.ts diff --git a/src/app/core/auth/models/auth.method-type.ts b/modules/core/src/lib/core/auth/models/auth.method-type.ts similarity index 100% rename from src/app/core/auth/models/auth.method-type.ts rename to modules/core/src/lib/core/auth/models/auth.method-type.ts diff --git a/src/app/core/auth/models/auth.method.ts b/modules/core/src/lib/core/auth/models/auth.method.ts similarity index 100% rename from src/app/core/auth/models/auth.method.ts rename to modules/core/src/lib/core/auth/models/auth.method.ts diff --git a/modules/core/src/lib/core/auth/models/index.ts b/modules/core/src/lib/core/auth/models/index.ts new file mode 100644 index 00000000000..43533a353e3 --- /dev/null +++ b/modules/core/src/lib/core/auth/models/index.ts @@ -0,0 +1,10 @@ +// created from 'create-ts-index' + +export * from './auth-error.model'; +export * from './auth-status.model'; +export * from './auth-status.resource-type'; +export * from './auth-token-info.model'; +export * from './auth.method-type'; +export * from './auth.method'; +export * from './short-lived-token.model'; +export * from './short-lived-token.resource-type'; diff --git a/src/app/core/auth/models/short-lived-token.model.ts b/modules/core/src/lib/core/auth/models/short-lived-token.model.ts similarity index 67% rename from src/app/core/auth/models/short-lived-token.model.ts rename to modules/core/src/lib/core/auth/models/short-lived-token.model.ts index 5e8587d02dd..f7ae20d75bf 100644 --- a/src/app/core/auth/models/short-lived-token.model.ts +++ b/modules/core/src/lib/core/auth/models/short-lived-token.model.ts @@ -4,11 +4,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { HALLink } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { SHORT_LIVED_TOKEN } from './short-lived-token.resource-type'; /** diff --git a/src/app/core/auth/models/short-lived-token.resource-type.ts b/modules/core/src/lib/core/auth/models/short-lived-token.resource-type.ts similarity index 77% rename from src/app/core/auth/models/short-lived-token.resource-type.ts rename to modules/core/src/lib/core/auth/models/short-lived-token.resource-type.ts index 608c1aca4ed..bd84fb00708 100644 --- a/src/app/core/auth/models/short-lived-token.resource-type.ts +++ b/modules/core/src/lib/core/auth/models/short-lived-token.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for ShortLivedToken diff --git a/src/app/core/auth/selectors.ts b/modules/core/src/lib/core/auth/selectors.ts similarity index 99% rename from src/app/core/auth/selectors.ts rename to modules/core/src/lib/core/auth/selectors.ts index 63603776263..c49035356c8 100644 --- a/src/app/core/auth/selectors.ts +++ b/modules/core/src/lib/core/auth/selectors.ts @@ -13,7 +13,7 @@ import { AuthState } from './auth.reducer'; /** * Returns the user state. * @function getUserState - * @param {AppState} state Top level state. + * @param {CoreState} state Top level state. * @return {AuthState} */ export const getAuthState = createSelector(coreSelector, (state: CoreState) => state.auth); diff --git a/src/app/core/auth/server-auth-request.service.spec.ts b/modules/core/src/lib/core/auth/server-auth-request.service.spec.ts similarity index 91% rename from src/app/core/auth/server-auth-request.service.spec.ts rename to modules/core/src/lib/core/auth/server-auth-request.service.spec.ts index b119f6b3b76..f85fb0dde16 100644 --- a/src/app/core/auth/server-auth-request.service.spec.ts +++ b/modules/core/src/lib/core/auth/server-auth-request.service.spec.ts @@ -8,16 +8,17 @@ import { of as observableOf, } from 'rxjs'; -import { PostRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { PostRequest } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { XSRF_REQUEST_HEADER, XSRF_RESPONSE_HEADER, -} from '../xsrf/xsrf.constants'; +} from '../xsrf'; import { AuthRequestService } from './auth-request.service'; import { ServerAuthRequestService } from './server-auth-request.service'; + describe(`ServerAuthRequestService`, () => { let href: string; let requestService: RequestService; diff --git a/src/app/core/auth/server-auth-request.service.ts b/modules/core/src/lib/core/auth/server-auth-request.service.ts similarity index 86% rename from src/app/core/auth/server-auth-request.service.ts rename to modules/core/src/lib/core/auth/server-auth-request.service.ts index 5f1828c71c5..f11f2db7001 100644 --- a/src/app/core/auth/server-auth-request.service.ts +++ b/modules/core/src/lib/core/auth/server-auth-request.service.ts @@ -7,15 +7,15 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { PostRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { PostRequest } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { DSPACE_XSRF_COOKIE, XSRF_REQUEST_HEADER, XSRF_RESPONSE_HEADER, -} from '../xsrf/xsrf.constants'; +} from '../xsrf'; import { AuthRequestService } from './auth-request.service'; /** diff --git a/src/app/core/auth/server-auth.service.ts b/modules/core/src/lib/core/auth/server-auth.service.ts similarity index 88% rename from src/app/core/auth/server-auth.service.ts rename to modules/core/src/lib/core/auth/server-auth.service.ts index f51215abada..eafe349ddac 100644 --- a/src/app/core/auth/server-auth.service.ts +++ b/modules/core/src/lib/core/auth/server-auth.service.ts @@ -1,17 +1,17 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; - import { hasValue, isNotEmpty, -} from '../../shared/empty.util'; -import { RemoteData } from '../data/remote-data'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +} from '@dspace/shared/utils'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { RemoteData } from '../data'; +import { HttpOptions } from '../dspace-rest'; import { AuthService } from './auth.service'; -import { AuthStatus } from './models/auth-status.model'; -import { AuthTokenInfo } from './models/auth-token-info.model'; +import { AuthStatus } from './models'; +import { AuthTokenInfo } from './models'; /** * The auth service. diff --git a/src/app/core/auth/token-response-parsing.service.spec.ts b/modules/core/src/lib/core/auth/token-response-parsing.service.spec.ts similarity index 96% rename from src/app/core/auth/token-response-parsing.service.spec.ts rename to modules/core/src/lib/core/auth/token-response-parsing.service.spec.ts index f4244e98b2c..8f5c5294621 100644 --- a/src/app/core/auth/token-response-parsing.service.spec.ts +++ b/modules/core/src/lib/core/auth/token-response-parsing.service.spec.ts @@ -1,4 +1,4 @@ -import { TokenResponse } from '../cache/response.models'; +import { TokenResponse } from '../cache'; import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; import { TokenResponseParsingService } from './token-response-parsing.service'; diff --git a/src/app/core/auth/token-response-parsing.service.ts b/modules/core/src/lib/core/auth/token-response-parsing.service.ts similarity index 71% rename from src/app/core/auth/token-response-parsing.service.ts rename to modules/core/src/lib/core/auth/token-response-parsing.service.ts index 03a45521e93..c4ca09ba75f 100644 --- a/src/app/core/auth/token-response-parsing.service.ts +++ b/modules/core/src/lib/core/auth/token-response-parsing.service.ts @@ -1,13 +1,13 @@ import { Injectable } from '@angular/core'; +import { isNotEmpty } from '@dspace/shared/utils'; -import { isNotEmpty } from '../../shared/empty.util'; import { RestResponse, TokenResponse, -} from '../cache/response.models'; -import { ResponseParsingService } from '../data/parsing.service'; -import { RestRequest } from '../data/rest-request.model'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +} from '../cache'; +import { ResponseParsingService } from '../data'; +import { RestRequest } from '../data'; +import { RawRestResponse } from '../dspace-rest'; @Injectable({ providedIn: 'root' }) /** diff --git a/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/bitstream-breadcrumb.resolver.ts similarity index 69% rename from src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/bitstream-breadcrumb.resolver.ts index 5628fe65837..78d046d6bb3 100644 --- a/src/app/core/breadcrumbs/bitstream-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/bitstream-breadcrumb.resolver.ts @@ -6,13 +6,13 @@ import { } from '@angular/router'; import { Observable } from 'rxjs'; -import { BITSTREAM_PAGE_LINKS_TO_FOLLOW } from '../../bitstream-page/bitstream-page.resolver'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { BitstreamDataService } from '../data/bitstream-data.service'; -import { Bitstream } from '../shared/bitstream.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; +import { BitstreamDataService } from '../data'; +import { FollowLinkConfig } from '../data'; +import { Bitstream } from '../shared'; +import { DSpaceObject } from '../shared'; +import { BITSTREAM_PAGE_LINKS_TO_FOLLOW } from '../shared'; import { BitstreamBreadcrumbsService } from './bitstream-breadcrumbs.service'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { DSOBreadcrumbResolver } from './dso-breadcrumb.resolver'; /** diff --git a/src/app/core/breadcrumbs/bitstream-breadcrumbs.service.ts b/modules/core/src/lib/core/breadcrumbs/bitstream-breadcrumbs.service.ts similarity index 75% rename from src/app/core/breadcrumbs/bitstream-breadcrumbs.service.ts rename to modules/core/src/lib/core/breadcrumbs/bitstream-breadcrumbs.service.ts index 11a3a743505..cc045644069 100644 --- a/src/app/core/breadcrumbs/bitstream-breadcrumbs.service.ts +++ b/modules/core/src/lib/core/breadcrumbs/bitstream-breadcrumbs.service.ts @@ -1,4 +1,8 @@ import { Injectable } from '@angular/core'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable, of as observableOf, @@ -8,25 +12,21 @@ import { switchMap, } from 'rxjs/operators'; -import { getDSORoute } from '../../app-routing-paths'; -import { BITSTREAM_PAGE_LINKS_TO_FOLLOW } from '../../bitstream-page/bitstream-page.resolver'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; -import { - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; -import { LinkService } from '../cache/builders/link.service'; -import { BitstreamDataService } from '../data/bitstream-data.service'; -import { RemoteData } from '../data/remote-data'; -import { Bitstream } from '../shared/bitstream.model'; -import { Bundle } from '../shared/bundle.model'; -import { ChildHALResource } from '../shared/child-hal-resource.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { Item } from '../shared/item.model'; +import { LinkService } from '../cache'; +import { BitstreamDataService } from '../data'; +import { RemoteData } from '../data'; +import { getDSpaceObjectRoute } from '../router'; +import { Bitstream } from '../shared'; +import { Bundle } from '../shared'; +import { ChildHALResource } from '../shared'; +import { DSpaceObject } from '../shared'; +import { Item } from '../shared'; import { getFirstCompletedRemoteData, getRemoteDataPayload, -} from '../shared/operators'; +} from '../shared'; +import { BITSTREAM_PAGE_LINKS_TO_FOLLOW } from '../shared'; +import { Breadcrumb } from './breadcrumb.model'; import { DSOBreadcrumbsService } from './dso-breadcrumbs.service'; import { DSONameService } from './dso-name.service'; @@ -59,7 +59,7 @@ export class BitstreamBreadcrumbsService extends DSOBreadcrumbsService { switchMap((parentRD: RemoteData) => { if (isNotEmpty(parentRD) && hasValue(parentRD.payload)) { const parent = parentRD.payload; - return super.getBreadcrumbs(parent, getDSORoute(parent)); + return super.getBreadcrumbs(parent, getDSpaceObjectRoute(parent)); } return observableOf([]); diff --git a/src/app/breadcrumbs/breadcrumb/breadcrumb-config.model.ts b/modules/core/src/lib/core/breadcrumbs/breadcrumb-config.model.ts similarity index 80% rename from src/app/breadcrumbs/breadcrumb/breadcrumb-config.model.ts rename to modules/core/src/lib/core/breadcrumbs/breadcrumb-config.model.ts index cc9277ee50b..33465ff1cc0 100644 --- a/src/app/breadcrumbs/breadcrumb/breadcrumb-config.model.ts +++ b/modules/core/src/lib/core/breadcrumbs/breadcrumb-config.model.ts @@ -1,4 +1,4 @@ -import { BreadcrumbsProviderService } from '../../core/breadcrumbs/breadcrumbsProviderService'; +import { BreadcrumbsProviderService } from './breadcrumbsProviderService'; /** * Interface for breadcrumb configuration objects diff --git a/src/app/breadcrumbs/breadcrumb/breadcrumb.model.ts b/modules/core/src/lib/core/breadcrumbs/breadcrumb.model.ts similarity index 100% rename from src/app/breadcrumbs/breadcrumb/breadcrumb.model.ts rename to modules/core/src/lib/core/breadcrumbs/breadcrumb.model.ts diff --git a/src/app/core/breadcrumbs/breadcrumbsProviderService.ts b/modules/core/src/lib/core/breadcrumbs/breadcrumbsProviderService.ts similarity index 84% rename from src/app/core/breadcrumbs/breadcrumbsProviderService.ts rename to modules/core/src/lib/core/breadcrumbs/breadcrumbsProviderService.ts index 83d9a2caaa9..c0f2c17ba47 100644 --- a/src/app/core/breadcrumbs/breadcrumbsProviderService.ts +++ b/modules/core/src/lib/core/breadcrumbs/breadcrumbsProviderService.ts @@ -1,6 +1,6 @@ import { Observable } from 'rxjs'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; +import { Breadcrumb } from './breadcrumb.model'; /** * Service to calculate breadcrumbs for a single part of the route diff --git a/src/app/core/breadcrumbs/collection-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/collection-breadcrumb.resolver.ts similarity index 69% rename from src/app/core/breadcrumbs/collection-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/collection-breadcrumb.resolver.ts index 7df656a9610..77694a9ce60 100644 --- a/src/app/core/breadcrumbs/collection-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/collection-breadcrumb.resolver.ts @@ -6,15 +6,24 @@ import { } from '@angular/router'; import { Observable } from 'rxjs'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; -import { COLLECTION_PAGE_LINKS_TO_FOLLOW } from '../../collection-page/collection-page.resolver'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { CollectionDataService } from '../data/collection-data.service'; -import { Collection } from '../shared/collection.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; +import { CollectionDataService } from '../data'; +import { + followLink, + FollowLinkConfig, +} from '../data'; +import { Collection } from '../shared'; +import { DSpaceObject } from '../shared'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { DSOBreadcrumbResolver } from './dso-breadcrumb.resolver'; import { DSOBreadcrumbsService } from './dso-breadcrumbs.service'; +const COLLECTION_PAGE_LINKS_TO_FOLLOW: FollowLinkConfig[] = [ + followLink('parentCommunity', {}, + followLink('parentCommunity'), + ), + followLink('logo'), +]; + /** * The resolve function that resolves the BreadcrumbConfig object for a Collection */ diff --git a/src/app/core/breadcrumbs/community-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/community-breadcrumb.resolver.ts similarity index 74% rename from src/app/core/breadcrumbs/community-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/community-breadcrumb.resolver.ts index 0c37b5ca4f2..f2d5912c569 100644 --- a/src/app/core/breadcrumbs/community-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/community-breadcrumb.resolver.ts @@ -4,21 +4,30 @@ import { ResolveFn, RouterStateSnapshot, } from '@angular/router'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; -import { COMMUNITY_PAGE_LINKS_TO_FOLLOW } from '../../community-page/community-page.resolver'; -import { hasValue } from '../../shared/empty.util'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { CommunityDataService } from '../data/community-data.service'; -import { Community } from '../shared/community.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; +import { CommunityDataService } from '../data'; +import { + followLink, + FollowLinkConfig, +} from '../data'; +import { Community } from '../shared'; +import { DSpaceObject } from '../shared'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { DSOBreadcrumbResolver, DSOBreadcrumbResolverByUuid, } from './dso-breadcrumb.resolver'; import { DSOBreadcrumbsService } from './dso-breadcrumbs.service'; +const COMMUNITY_PAGE_LINKS_TO_FOLLOW: FollowLinkConfig[] = [ + followLink('logo'), + followLink('subcommunities'), + followLink('collections'), + followLink('parentCommunity'), +]; + /** * The resolve function that resolves the BreadcrumbConfig object for a Community */ diff --git a/src/app/core/breadcrumbs/dso-breadcrumb.resolver.spec.ts b/modules/core/src/lib/core/breadcrumbs/dso-breadcrumb.resolver.spec.ts similarity index 90% rename from src/app/core/breadcrumbs/dso-breadcrumb.resolver.spec.ts rename to modules/core/src/lib/core/breadcrumbs/dso-breadcrumb.resolver.spec.ts index c40a14a3231..1e05636c2b9 100644 --- a/src/app/core/breadcrumbs/dso-breadcrumb.resolver.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/dso-breadcrumb.resolver.spec.ts @@ -1,7 +1,7 @@ import { getTestScheduler } from 'jasmine-marbles'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { Collection } from '../shared/collection.model'; +import { Collection } from '../shared'; +import { createSuccessfulRemoteDataObject$ } from '../utilities'; import { collectionBreadcrumbResolver } from './collection-breadcrumb.resolver'; describe('DSOBreadcrumbResolver', () => { diff --git a/src/app/core/breadcrumbs/dso-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/dso-breadcrumb.resolver.ts similarity index 85% rename from src/app/core/breadcrumbs/dso-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/dso-breadcrumb.resolver.ts index 992627ddfaa..3f08a9a3f9f 100644 --- a/src/app/core/breadcrumbs/dso-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/dso-breadcrumb.resolver.ts @@ -2,19 +2,19 @@ import { ActivatedRouteSnapshot, RouterStateSnapshot, } from '@angular/router'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { getDSORoute } from '../../app-routing-paths'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; -import { hasValue } from '../../shared/empty.util'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { DSpaceObject } from '../shared/dspace-object.model'; +import { IdentifiableDataService } from '../data'; +import { FollowLinkConfig } from '../data'; +import { getDSpaceObjectRoute } from '../router'; +import { DSpaceObject } from '../shared'; import { getFirstCompletedRemoteData, getRemoteDataPayload, -} from '../shared/operators'; +} from '../shared'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { DSOBreadcrumbsService } from './dso-breadcrumbs.service'; /** @@ -60,7 +60,7 @@ export const DSOBreadcrumbResolverByUuid: (route: ActivatedRouteSnapshot, state: getRemoteDataPayload(), map((object: DSpaceObject) => { if (hasValue(object)) { - return { provider: breadcrumbService, key: object, url: getDSORoute(object) }; + return { provider: breadcrumbService, key: object, url: getDSpaceObjectRoute(object) }; } else { return undefined; } diff --git a/src/app/core/breadcrumbs/dso-breadcrumbs.service.spec.ts b/modules/core/src/lib/core/breadcrumbs/dso-breadcrumbs.service.spec.ts similarity index 79% rename from src/app/core/breadcrumbs/dso-breadcrumbs.service.spec.ts rename to modules/core/src/lib/core/breadcrumbs/dso-breadcrumbs.service.spec.ts index 3869defa70d..b187589d695 100644 --- a/src/app/core/breadcrumbs/dso-breadcrumbs.service.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/dso-breadcrumbs.service.spec.ts @@ -2,23 +2,23 @@ import { TestBed, waitForAsync, } from '@angular/core/testing'; + import { getTestScheduler } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; -import { getDSORoute } from '../../app-routing-paths'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; -import { getMockLinkService } from '../../shared/mocks/link-service.mock'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { LinkService } from '../cache/builders/link.service'; -import { Collection } from '../shared/collection.model'; -import { Community } from '../shared/community.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { Item } from '../shared/item.model'; +import { LinkService } from '../cache'; + +import { getDSpaceObjectRoute } from '../router'; +import { Collection } from '../shared'; +import { Community } from '../shared'; +import { DSpaceObject } from '../shared'; +import { Item } from '../shared'; import { DSOBreadcrumbsService } from './dso-breadcrumbs.service'; +import { getMockLinkService } from '../mocks/link-service.mock'; import { DSONameService } from './dso-name.service'; +import { Breadcrumb } from './breadcrumb.model'; +import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; + describe('DSOBreadcrumbsService', () => { let service: DSOBreadcrumbsService; @@ -115,9 +115,9 @@ describe('DSOBreadcrumbsService', () => { it('should return the breadcrumbs based on an Item', () => { const breadcrumbs = service.getBreadcrumbs(testItem, testItem._links.self); const expectedCrumbs = [ - new Breadcrumb(getName(testCommunity), getDSORoute(testCommunity)), - new Breadcrumb(getName(testCollection), getDSORoute(testCollection)), - new Breadcrumb(getName(testItem), getDSORoute(testItem)), + new Breadcrumb(getName(testCommunity), getDSpaceObjectRoute(testCommunity)), + new Breadcrumb(getName(testCollection), getDSpaceObjectRoute(testCollection)), + new Breadcrumb(getName(testItem), getDSpaceObjectRoute(testItem)), ]; getTestScheduler().expectObservable(breadcrumbs).toBe('(a|)', { a: expectedCrumbs }); }); diff --git a/src/app/core/breadcrumbs/dso-breadcrumbs.service.ts b/modules/core/src/lib/core/breadcrumbs/dso-breadcrumbs.service.ts similarity index 75% rename from src/app/core/breadcrumbs/dso-breadcrumbs.service.ts rename to modules/core/src/lib/core/breadcrumbs/dso-breadcrumbs.service.ts index 7d2e3697e18..f43c0904b12 100644 --- a/src/app/core/breadcrumbs/dso-breadcrumbs.service.ts +++ b/modules/core/src/lib/core/breadcrumbs/dso-breadcrumbs.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable, of as observableOf, @@ -9,14 +10,13 @@ import { switchMap, } from 'rxjs/operators'; -import { getDSORoute } from '../../app-routing-paths'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; -import { hasValue } from '../../shared/empty.util'; -import { followLink } from '../../shared/utils/follow-link-config.model'; -import { LinkService } from '../cache/builders/link.service'; -import { RemoteData } from '../data/remote-data'; -import { ChildHALResource } from '../shared/child-hal-resource.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; +import { LinkService } from '../cache'; +import { followLink } from '../data'; +import { RemoteData } from '../data'; +import { getDSpaceObjectRoute } from '../router'; +import { ChildHALResource } from '../shared'; +import { DSpaceObject } from '../shared'; +import { Breadcrumb } from './breadcrumb.model'; import { BreadcrumbsProviderService } from './breadcrumbsProviderService'; import { DSONameService } from './dso-name.service'; @@ -49,7 +49,7 @@ export class DSOBreadcrumbsService implements BreadcrumbsProviderService) => { if (hasValue(parentRD) && hasValue(parentRD.payload)) { const parent = parentRD.payload; - return this.getBreadcrumbs(parent, getDSORoute(parent)); + return this.getBreadcrumbs(parent, getDSpaceObjectRoute(parent)); } return observableOf([]); diff --git a/src/app/core/breadcrumbs/dso-name.service.spec.ts b/modules/core/src/lib/core/breadcrumbs/dso-name.service.spec.ts similarity index 95% rename from src/app/core/breadcrumbs/dso-name.service.spec.ts rename to modules/core/src/lib/core/breadcrumbs/dso-name.service.spec.ts index 5f241b1a6cc..f4712273b09 100644 --- a/src/app/core/breadcrumbs/dso-name.service.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/dso-name.service.spec.ts @@ -1,10 +1,11 @@ -import { ListableObject } from '../../shared/object-collection/shared/listable-object.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { Item } from '../shared/item.model'; -import { MetadataValueFilter } from '../shared/metadata.models'; +import { ListableObject } from '../object-collection/listable-object.model'; +import { DSpaceObject } from '../shared'; +import { GenericConstructor } from '../shared'; +import { Item } from '../shared'; +import { MetadataValueFilter } from '../shared'; import { DSONameService } from './dso-name.service'; + describe(`DSONameService`, () => { let service: DSONameService; let mockPersonName: string; diff --git a/src/app/core/breadcrumbs/dso-name.service.ts b/modules/core/src/lib/core/breadcrumbs/dso-name.service.ts similarity index 95% rename from src/app/core/breadcrumbs/dso-name.service.ts rename to modules/core/src/lib/core/breadcrumbs/dso-name.service.ts index 988141209f4..153cfac9f82 100644 --- a/src/app/core/breadcrumbs/dso-name.service.ts +++ b/modules/core/src/lib/core/breadcrumbs/dso-name.service.ts @@ -1,12 +1,12 @@ import { Injectable } from '@angular/core'; -import { TranslateService } from '@ngx-translate/core'; - import { hasValue, isEmpty, -} from '../../shared/empty.util'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { Metadata } from '../shared/metadata.utils'; +} from '@dspace/shared/utils'; +import { TranslateService } from '@ngx-translate/core'; + +import { DSpaceObject } from '../shared'; +import { Metadata } from '../shared'; /** * Returns a name for a {@link DSpaceObject} based @@ -120,7 +120,7 @@ export class DSONameService { * * @param object * @param dso - * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]]. + * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[PolicyMetadata]]. * * @returns {string} the first matching string value, or `undefined`. */ diff --git a/src/app/core/breadcrumbs/i18n-breadcrumb.resolver.spec.ts b/modules/core/src/lib/core/breadcrumbs/i18n-breadcrumb.resolver.spec.ts similarity index 90% rename from src/app/core/breadcrumbs/i18n-breadcrumb.resolver.spec.ts rename to modules/core/src/lib/core/breadcrumbs/i18n-breadcrumb.resolver.spec.ts index a85338c4908..eb464f4aab1 100644 --- a/src/app/core/breadcrumbs/i18n-breadcrumb.resolver.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/i18n-breadcrumb.resolver.spec.ts @@ -1,5 +1,6 @@ -import { URLCombiner } from '../url-combiner/url-combiner'; -import { i18nBreadcrumbResolver } from './i18n-breadcrumb.resolver'; +import { URLCombiner } from "../url-combiner/url-combiner"; +import { i18nBreadcrumbResolver } from "./i18n-breadcrumb.resolver"; + describe('i18nBreadcrumbResolver', () => { describe('resolve', () => { diff --git a/src/app/core/breadcrumbs/i18n-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/i18n-breadcrumb.resolver.ts similarity index 83% rename from src/app/core/breadcrumbs/i18n-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/i18n-breadcrumb.resolver.ts index 5f5c779211f..e7109468045 100644 --- a/src/app/core/breadcrumbs/i18n-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/i18n-breadcrumb.resolver.ts @@ -4,10 +4,10 @@ import { ResolveFn, RouterStateSnapshot, } from '@angular/router'; +import { hasNoValue } from '@dspace/shared/utils'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; -import { hasNoValue } from '../../shared/empty.util'; -import { currentPathFromSnapshot } from '../../shared/utils/route.utils'; +import { currentPathFromSnapshot } from '../utilities'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { I18nBreadcrumbsService } from './i18n-breadcrumbs.service'; /** diff --git a/src/app/core/breadcrumbs/i18n-breadcrumbs.service.spec.ts b/modules/core/src/lib/core/breadcrumbs/i18n-breadcrumbs.service.spec.ts similarity index 83% rename from src/app/core/breadcrumbs/i18n-breadcrumbs.service.spec.ts rename to modules/core/src/lib/core/breadcrumbs/i18n-breadcrumbs.service.spec.ts index 3fcd911a464..a98f3af4086 100644 --- a/src/app/core/breadcrumbs/i18n-breadcrumbs.service.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/i18n-breadcrumbs.service.spec.ts @@ -3,12 +3,8 @@ import { waitForAsync, } from '@angular/core/testing'; import { getTestScheduler } from 'jasmine-marbles'; - -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; -import { - BREADCRUMB_MESSAGE_POSTFIX, - I18nBreadcrumbsService, -} from './i18n-breadcrumbs.service'; +import { BREADCRUMB_MESSAGE_POSTFIX, I18nBreadcrumbsService } from './i18n-breadcrumbs.service'; +import { Breadcrumb } from './breadcrumb.model'; describe('I18nBreadcrumbsService', () => { let service: I18nBreadcrumbsService; diff --git a/src/app/core/breadcrumbs/i18n-breadcrumbs.service.ts b/modules/core/src/lib/core/breadcrumbs/i18n-breadcrumbs.service.ts similarity index 91% rename from src/app/core/breadcrumbs/i18n-breadcrumbs.service.ts rename to modules/core/src/lib/core/breadcrumbs/i18n-breadcrumbs.service.ts index 5746f6faf26..b6f186f4f07 100644 --- a/src/app/core/breadcrumbs/i18n-breadcrumbs.service.ts +++ b/modules/core/src/lib/core/breadcrumbs/i18n-breadcrumbs.service.ts @@ -4,7 +4,7 @@ import { of as observableOf, } from 'rxjs'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; +import { Breadcrumb } from './breadcrumb.model'; import { BreadcrumbsProviderService } from './breadcrumbsProviderService'; /** diff --git a/modules/core/src/lib/core/breadcrumbs/index.ts b/modules/core/src/lib/core/breadcrumbs/index.ts new file mode 100644 index 00000000000..6d3aefe6662 --- /dev/null +++ b/modules/core/src/lib/core/breadcrumbs/index.ts @@ -0,0 +1,21 @@ +// created from 'create-ts-index' + +export * from './bitstream-breadcrumb.resolver'; +export * from './bitstream-breadcrumbs.service'; +export * from './breadcrumb-config.model'; +export * from './breadcrumb.model'; +export * from './breadcrumbsProviderService'; +export * from './collection-breadcrumb.resolver'; +export * from './community-breadcrumb.resolver'; +export * from './dso-breadcrumb.resolver'; +export * from './dso-breadcrumbs.service'; +export * from './dso-name.service'; +export * from './i18n-breadcrumb.resolver'; +export * from './i18n-breadcrumbs.service'; +export * from './item-breadcrumb.resolver'; +export * from './navigation-breadcrumb.resolver'; +export * from './navigation-breadcrumb.service'; +export * from './publication-claim-breadcrumb.resolver'; +export * from './publication-claim-breadcrumb.service'; +export * from './quality-assurance-breadcrumb.resolver'; +export * from './quality-assurance-breadcrumb.service'; diff --git a/src/app/core/breadcrumbs/item-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/item-breadcrumb.resolver.ts similarity index 66% rename from src/app/core/breadcrumbs/item-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/item-breadcrumb.resolver.ts index ef021123d42..114c1b2909f 100644 --- a/src/app/core/breadcrumbs/item-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/item-breadcrumb.resolver.ts @@ -6,12 +6,16 @@ import { } from '@angular/router'; import { Observable } from 'rxjs'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; -import { getItemPageLinksToFollow } from '../../item-page/item.resolver'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { ItemDataService } from '../data/item-data.service'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { Item } from '../shared/item.model'; +import { + APP_CONFIG, + AppConfig, +} from '../config'; +import { FollowLinkConfig } from '../data'; +import { ItemDataService } from '../data'; +import { DSpaceObject } from '../shared'; +import { Item } from '../shared'; +import { getItemPageLinksToFollow } from '../shared'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { DSOBreadcrumbResolver } from './dso-breadcrumb.resolver'; import { DSOBreadcrumbsService } from './dso-breadcrumbs.service'; @@ -23,8 +27,9 @@ export const itemBreadcrumbResolver: ResolveFn> = ( state: RouterStateSnapshot, breadcrumbService: DSOBreadcrumbsService = inject(DSOBreadcrumbsService), dataService: ItemDataService = inject(ItemDataService), + appConfig: AppConfig = inject(APP_CONFIG), ): Observable> => { - const linksToFollow: FollowLinkConfig[] = getItemPageLinksToFollow() as FollowLinkConfig[]; + const linksToFollow: FollowLinkConfig[] = getItemPageLinksToFollow(appConfig.item.showAccessStatuses) as FollowLinkConfig[]; return DSOBreadcrumbResolver( route, state, diff --git a/src/app/core/breadcrumbs/navigation-breadcrumb.resolver.spec.ts b/modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.resolver.spec.ts similarity index 94% rename from src/app/core/breadcrumbs/navigation-breadcrumb.resolver.spec.ts rename to modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.resolver.spec.ts index a6bbe49ddd9..0a9373886c1 100644 --- a/src/app/core/breadcrumbs/navigation-breadcrumb.resolver.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.resolver.spec.ts @@ -1,4 +1,3 @@ -import { navigationBreadcrumbResolver } from './navigation-breadcrumb.resolver'; describe('navigationBreadcrumbResolver', () => { describe('resolve', () => { diff --git a/src/app/core/breadcrumbs/navigation-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.resolver.ts similarity index 96% rename from src/app/core/breadcrumbs/navigation-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.resolver.ts index ac306ee3f5c..ce5b045a981 100644 --- a/src/app/core/breadcrumbs/navigation-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.resolver.ts @@ -5,7 +5,7 @@ import { RouterStateSnapshot, } from '@angular/router'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { NavigationBreadcrumbsService } from './navigation-breadcrumb.service'; /** diff --git a/src/app/core/breadcrumbs/navigation-breadcrumb.service.ts b/modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.service.ts similarity index 83% rename from src/app/core/breadcrumbs/navigation-breadcrumb.service.ts rename to modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.service.ts index 2da8b06eab7..8f787ac941d 100644 --- a/src/app/core/breadcrumbs/navigation-breadcrumb.service.ts +++ b/modules/core/src/lib/core/breadcrumbs/navigation-breadcrumb.service.ts @@ -4,13 +4,10 @@ import { of as observableOf, } from 'rxjs'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; +import { Breadcrumb } from './breadcrumb.model'; import { BreadcrumbsProviderService } from './breadcrumbsProviderService'; +import { BREADCRUMB_MESSAGE_POSTFIX } from "./i18n-breadcrumbs.service"; -/** - * The postfix for i18n breadcrumbs - */ -export const BREADCRUMB_MESSAGE_POSTFIX = '.breadcrumbs'; /** * Service to calculate i18n breadcrumbs for a single part of the route diff --git a/src/app/core/breadcrumbs/navigation-breadcrumbs.service.spec.ts b/modules/core/src/lib/core/breadcrumbs/navigation-breadcrumbs.service.spec.ts similarity index 94% rename from src/app/core/breadcrumbs/navigation-breadcrumbs.service.spec.ts rename to modules/core/src/lib/core/breadcrumbs/navigation-breadcrumbs.service.spec.ts index 646b967fe5b..9664a0d9f23 100644 --- a/src/app/core/breadcrumbs/navigation-breadcrumbs.service.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/navigation-breadcrumbs.service.spec.ts @@ -3,10 +3,9 @@ import { waitForAsync, } from '@angular/core/testing'; import { getTestScheduler } from 'jasmine-marbles'; - -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; -import { BREADCRUMB_MESSAGE_POSTFIX } from './i18n-breadcrumbs.service'; import { NavigationBreadcrumbsService } from './navigation-breadcrumb.service'; +import { Breadcrumb } from './breadcrumb.model'; +import { BREADCRUMB_MESSAGE_POSTFIX } from './i18n-breadcrumbs.service'; describe('NavigationBreadcrumbsService', () => { let service: NavigationBreadcrumbsService; diff --git a/src/app/core/breadcrumbs/publication-claim-breadcrumb.resolver.spec.ts b/modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.resolver.spec.ts similarity index 99% rename from src/app/core/breadcrumbs/publication-claim-breadcrumb.resolver.spec.ts rename to modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.resolver.spec.ts index 7c2c34d4790..cbb9d68c9b2 100644 --- a/src/app/core/breadcrumbs/publication-claim-breadcrumb.resolver.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.resolver.spec.ts @@ -1,5 +1,6 @@ import { publicationClaimBreadcrumbResolver } from './publication-claim-breadcrumb.resolver'; + describe('publicationClaimBreadcrumbResolver', () => { describe('resolve', () => { let resolver: any; diff --git a/src/app/core/breadcrumbs/publication-claim-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.resolver.ts similarity index 87% rename from src/app/core/breadcrumbs/publication-claim-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.resolver.ts index a1b52ce333f..b7e38b9db35 100644 --- a/src/app/core/breadcrumbs/publication-claim-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.resolver.ts @@ -5,7 +5,7 @@ import { RouterStateSnapshot, } from '@angular/router'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { PublicationClaimBreadcrumbService } from './publication-claim-breadcrumb.service'; export const publicationClaimBreadcrumbResolver: ResolveFn> = ( diff --git a/src/app/core/breadcrumbs/publication-claim-breadcrumb.service.spec.ts b/modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.service.spec.ts similarity index 90% rename from src/app/core/breadcrumbs/publication-claim-breadcrumb.service.spec.ts rename to modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.service.spec.ts index 8424b5edda8..f308e517dc2 100644 --- a/src/app/core/breadcrumbs/publication-claim-breadcrumb.service.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.service.spec.ts @@ -5,9 +5,9 @@ import { import { getTestScheduler } from 'jasmine-marbles'; import { of } from 'rxjs'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; +import { createSuccessfulRemoteDataObject$ } from '../utilities'; import { PublicationClaimBreadcrumbService } from './publication-claim-breadcrumb.service'; +import { Breadcrumb } from './breadcrumb.model'; describe('PublicationClaimBreadcrumbService', () => { let service: PublicationClaimBreadcrumbService; diff --git a/src/app/core/breadcrumbs/publication-claim-breadcrumb.service.ts b/modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.service.ts similarity index 82% rename from src/app/core/breadcrumbs/publication-claim-breadcrumb.service.ts rename to modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.service.ts index 43b7ed5761b..220f69e2ecf 100644 --- a/src/app/core/breadcrumbs/publication-claim-breadcrumb.service.ts +++ b/modules/core/src/lib/core/breadcrumbs/publication-claim-breadcrumb.service.ts @@ -6,11 +6,11 @@ import { } from 'rxjs'; import { map } from 'rxjs/operators'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; -import { AuthorizationDataService } from '../data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../data/feature-authorization/feature-id'; -import { ItemDataService } from '../data/item-data.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; +import { AuthorizationDataService } from '../data'; +import { FeatureID } from '../data'; +import { ItemDataService } from '../data'; +import { getFirstCompletedRemoteData } from '../shared'; +import { Breadcrumb } from './breadcrumb.model'; import { BreadcrumbsProviderService } from './breadcrumbsProviderService'; import { DSONameService } from './dso-name.service'; diff --git a/src/app/core/breadcrumbs/quality-assurance-breadcrumb.resolver.spec.ts b/modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.resolver.spec.ts similarity index 100% rename from src/app/core/breadcrumbs/quality-assurance-breadcrumb.resolver.spec.ts rename to modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.resolver.spec.ts diff --git a/src/app/core/breadcrumbs/quality-assurance-breadcrumb.resolver.ts b/modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.resolver.ts similarity index 90% rename from src/app/core/breadcrumbs/quality-assurance-breadcrumb.resolver.ts rename to modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.resolver.ts index 6507a75de66..2c95d6a90e3 100644 --- a/src/app/core/breadcrumbs/quality-assurance-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.resolver.ts @@ -5,7 +5,7 @@ import { RouterStateSnapshot, } from '@angular/router'; -import { BreadcrumbConfig } from '../../breadcrumbs/breadcrumb/breadcrumb-config.model'; +import { BreadcrumbConfig } from './breadcrumb-config.model'; import { QualityAssuranceBreadcrumbService } from './quality-assurance-breadcrumb.service'; export const qualityAssuranceBreadcrumbResolver: ResolveFn> = ( diff --git a/src/app/core/breadcrumbs/quality-assurance-breadcrumb.service.spec.ts b/modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.service.spec.ts similarity index 93% rename from src/app/core/breadcrumbs/quality-assurance-breadcrumb.service.spec.ts rename to modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.service.spec.ts index f8d30754cad..98357adc223 100644 --- a/src/app/core/breadcrumbs/quality-assurance-breadcrumb.service.spec.ts +++ b/modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.service.spec.ts @@ -3,8 +3,6 @@ import { waitForAsync, } from '@angular/core/testing'; import { getTestScheduler } from 'jasmine-marbles'; - -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; import { QualityAssuranceBreadcrumbService } from './quality-assurance-breadcrumb.service'; describe('QualityAssuranceBreadcrumbService', () => { diff --git a/src/app/core/breadcrumbs/quality-assurance-breadcrumb.service.ts b/modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.service.ts similarity index 94% rename from src/app/core/breadcrumbs/quality-assurance-breadcrumb.service.ts rename to modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.service.ts index 580a5e5f8ee..398bf98398c 100644 --- a/src/app/core/breadcrumbs/quality-assurance-breadcrumb.service.ts +++ b/modules/core/src/lib/core/breadcrumbs/quality-assurance-breadcrumb.service.ts @@ -5,7 +5,7 @@ import { of as observableOf, } from 'rxjs'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; +import { Breadcrumb } from './breadcrumb.model'; import { BreadcrumbsProviderService } from './breadcrumbsProviderService'; /** diff --git a/src/app/core/browse/browse-definition-data.service.spec.ts b/modules/core/src/lib/core/browse/browse-definition-data.service.spec.ts similarity index 80% rename from src/app/core/browse/browse-definition-data.service.spec.ts rename to modules/core/src/lib/core/browse/browse-definition-data.service.spec.ts index affa63a5480..b9124494600 100644 --- a/src/app/core/browse/browse-definition-data.service.spec.ts +++ b/modules/core/src/lib/core/browse/browse-definition-data.service.spec.ts @@ -1,12 +1,13 @@ import { EMPTY } from 'rxjs'; -import { getMockObjectCacheService } from '../../shared/mocks/object-cache.service.mock'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { followLink } from '../../shared/utils/follow-link-config.model'; -import { FindListOptions } from '../data/find-list-options.model'; -import { RequestService } from '../data/request.service'; +import { FindListOptions } from '../data'; +import { followLink } from '../data'; +import { RequestService } from '../data'; import { BrowseDefinitionDataService } from './browse-definition-data.service'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { getMockObjectCacheService } from '../mocks/object-cache.service.mock'; + describe(`BrowseDefinitionDataService`, () => { let requestService: RequestService; diff --git a/src/app/core/browse/browse-definition-data.service.ts b/modules/core/src/lib/core/browse/browse-definition-data.service.ts similarity index 88% rename from src/app/core/browse/browse-definition-data.service.ts rename to modules/core/src/lib/core/browse/browse-definition-data.service.ts index 9c0d0d16c95..e1532483598 100644 --- a/src/app/core/browse/browse-definition-data.service.ts +++ b/modules/core/src/lib/core/browse/browse-definition-data.service.ts @@ -1,36 +1,36 @@ // eslint-disable-next-line max-classes-per-file import { Injectable } from '@angular/core'; +import { + hasValue, + isNotEmpty, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { Observable, of as observableOf, } from 'rxjs'; import { take } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, - isNotEmptyOperator, -} from '../../shared/empty.util'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; import { FindAllData, FindAllDataImpl, -} from '../data/base/find-all-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +} from '../data'; +import { IdentifiableDataService } from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { BrowseDefinitionRestRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { BrowseDefinition } from '../shared/browse-definition.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +} from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { BrowseDefinitionRestRequest } from '../data'; +import { RequestService } from '../data'; +import { BrowseDefinition } from '../shared'; +import { HALEndpointService } from '../shared'; /** * Create a GET request for the given href, and send it. diff --git a/src/app/core/browse/browse-entry-search-options.model.ts b/modules/core/src/lib/core/browse/browse-entry-search-options.model.ts similarity index 83% rename from src/app/core/browse/browse-entry-search-options.model.ts rename to modules/core/src/lib/core/browse/browse-entry-search-options.model.ts index 1604c693e92..390925c0882 100644 --- a/src/app/core/browse/browse-entry-search-options.model.ts +++ b/modules/core/src/lib/core/browse/browse-entry-search-options.model.ts @@ -1,5 +1,5 @@ -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { SortOptions } from '../cache/models/sort-options.model'; +import { SortOptions } from '../cache'; +import { PaginationComponentOptions } from '../shared'; /** * A class that defines the search options to be used for fetching browse entries or items diff --git a/src/app/core/browse/browse.service.spec.ts b/modules/core/src/lib/core/browse/browse.service.spec.ts similarity index 92% rename from src/app/core/browse/browse.service.spec.ts rename to modules/core/src/lib/core/browse/browse.service.spec.ts index f3328c2bedd..19726f26366 100644 --- a/src/app/core/browse/browse.service.spec.ts +++ b/modules/core/src/lib/core/browse/browse.service.spec.ts @@ -6,23 +6,21 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; +import { RequestService } from '../data'; +import { RequestEntry } from '../data'; + +import { FlatBrowseDefinition } from '../shared'; +import { HierarchicalBrowseDefinition } from '../shared'; +import { ValueListBrowseDefinition } from '../shared'; import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { - createPaginatedList, - getFirstUsedArgumentOfSpyMethod, -} from '../../shared/testing/utils.test'; -import { RequestService } from '../data/request.service'; -import { RequestEntry } from '../data/request-entry.model'; -import { FlatBrowseDefinition } from '../shared/flat-browse-definition.model'; -import { HierarchicalBrowseDefinition } from '../shared/hierarchical-browse-definition.model'; -import { ValueListBrowseDefinition } from '../shared/value-list-browse-definition.model'; +} from '../utilities'; import { BrowseService } from './browse.service'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { createPaginatedList, getFirstUsedArgumentOfSpyMethod } from '../utilities/testing/utils.test'; +import { getMockHrefOnlyDataService } from '../mocks/href-only-data.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; import { BrowseEntrySearchOptions } from './browse-entry-search-options.model'; describe('BrowseService', () => { diff --git a/src/app/core/browse/browse.service.ts b/modules/core/src/lib/core/browse/browse.service.ts similarity index 86% rename from src/app/core/browse/browse.service.ts rename to modules/core/src/lib/core/browse/browse.service.ts index 5fe06a700e5..945eaa1a091 100644 --- a/src/app/core/browse/browse.service.ts +++ b/modules/core/src/lib/core/browse/browse.service.ts @@ -1,4 +1,13 @@ -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; +import { + hasValue, + hasValueOperator, + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -6,47 +15,36 @@ import { startWith, } from 'rxjs/operators'; -import { environment } from '../../../environments/environment'; +import { SortDirection } from '../cache'; import { - hasValue, - hasValueOperator, - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; + APP_CONFIG, + AppConfig, +} from '../config'; import { followLink, FollowLinkConfig, -} from '../../shared/utils/follow-link-config.model'; -import { SortDirection } from '../cache/models/sort-options.model'; -import { HrefOnlyDataService } from '../data/href-only-data.service'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { BrowseDefinition } from '../shared/browse-definition.model'; -import { BrowseEntry } from '../shared/browse-entry.model'; -import { FlatBrowseDefinition } from '../shared/flat-browse-definition.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; +} from '../data'; +import { HrefOnlyDataService } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { BrowseDefinition } from '../shared'; +import { BrowseEntry } from '../shared'; +import { FlatBrowseDefinition } from '../shared'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; import { getBrowseDefinitionLinks, getFirstOccurrence, getFirstSucceededRemoteData, getPaginatedListPayload, getRemoteDataPayload, -} from '../shared/operators'; -import { URLCombiner } from '../url-combiner/url-combiner'; +} from '../shared'; +import { URLCombiner } from '../url-combiner'; import { BrowseDefinitionDataService } from './browse-definition-data.service'; import { BrowseEntrySearchOptions } from './browse-entry-search-options.model'; -export function getBrowseLinksToFollow(): FollowLinkConfig[] { - const followLinks = [ - followLink('thumbnail'), - ]; - if (environment.item.showAccessStatuses) { - followLinks.push(followLink('accessStatus')); - } - return followLinks; -} + /** * The service handling all browse requests @@ -54,6 +52,7 @@ export function getBrowseLinksToFollow(): FollowLinkConfig[] @Injectable({ providedIn: 'root' }) export class BrowseService { protected linkPath = 'browses'; + private readonly appConfig: AppConfig = inject(APP_CONFIG); public static toSearchKeyArray(metadataKey: string): string[] { const keyParts = metadataKey.split('.'); @@ -76,6 +75,16 @@ export class BrowseService { ) { } + getBrowseLinksToFollow(): FollowLinkConfig[] { + const followLinks = [ + followLink('thumbnail'), + ]; + if (this.appConfig.item.showAccessStatuses) { + followLinks.push(followLink('accessStatus')); + } + return followLinks; + } + /** * Get all BrowseDefinitions */ @@ -122,7 +131,7 @@ export class BrowseService { }), ); if (options.fetchThumbnail ) { - return this.hrefOnlyDataService.findListByHref(href$, {}, undefined, undefined, ...getBrowseLinksToFollow()); + return this.hrefOnlyDataService.findListByHref(href$, {}, undefined, undefined, ...this.getBrowseLinksToFollow()); } return this.hrefOnlyDataService.findListByHref(href$); } @@ -170,7 +179,7 @@ export class BrowseService { }), ); if (options.fetchThumbnail) { - return this.hrefOnlyDataService.findListByHref(href$, {}, undefined, undefined, ...getBrowseLinksToFollow()); + return this.hrefOnlyDataService.findListByHref(href$, {}, undefined, undefined, ...this.getBrowseLinksToFollow()); } return this.hrefOnlyDataService.findListByHref(href$); } diff --git a/modules/core/src/lib/core/browse/index.ts b/modules/core/src/lib/core/browse/index.ts new file mode 100644 index 00000000000..7524a118d6d --- /dev/null +++ b/modules/core/src/lib/core/browse/index.ts @@ -0,0 +1,4 @@ + +export * from './browse-definition-data.service'; +export * from './browse-entry-search-options.model'; +export * from './browse.service'; diff --git a/src/app/core/cache/builders/build-decorators.spec.ts b/modules/core/src/lib/core/cache/builders/build-decorators.spec.ts similarity index 85% rename from src/app/core/cache/builders/build-decorators.spec.ts rename to modules/core/src/lib/core/cache/builders/build-decorators.spec.ts index 53f4cb2f7f3..5a53a2f2995 100644 --- a/src/app/core/cache/builders/build-decorators.spec.ts +++ b/modules/core/src/lib/core/cache/builders/build-decorators.spec.ts @@ -1,12 +1,7 @@ -import { HALLink } from '../../shared/hal-link.model'; -import { HALResource } from '../../shared/hal-resource.model'; -import { ResourceType } from '../../shared/resource-type'; -import { - dataService, - getDataServiceFor, - getLinkDefinition, - link, -} from './build-decorators'; +import { HALLink } from '../../shared'; +import { HALResource } from '../../shared'; +import { ResourceType } from '../../shared'; +import { dataService, getDataServiceFor, getLinkDefinition, link } from './build-decorators'; class TestHALResource implements HALResource { _links: { diff --git a/src/app/core/cache/builders/build-decorators.ts b/modules/core/src/lib/core/cache/builders/build-decorators.ts similarity index 94% rename from src/app/core/cache/builders/build-decorators.ts rename to modules/core/src/lib/core/cache/builders/build-decorators.ts index be3ffc0f4d7..c8c69537c8e 100644 --- a/src/app/core/cache/builders/build-decorators.ts +++ b/modules/core/src/lib/core/cache/builders/build-decorators.ts @@ -1,12 +1,12 @@ import { InjectionToken } from '@angular/core'; - import { hasNoValue, hasValue, -} from '../../../shared/empty.util'; -import { GenericConstructor } from '../../shared/generic-constructor'; -import { HALResource } from '../../shared/hal-resource.model'; -import { ResourceType } from '../../shared/resource-type'; +} from '@dspace/shared/utils'; + +import { GenericConstructor } from '../../shared'; +import { HALResource } from '../../shared'; +import { ResourceType } from '../../shared'; import { CacheableObject } from '../cacheable-object.model'; import { getResourceTypeValueFor } from '../object-cache.reducer'; import { TypedObject } from '../typed-object.model'; @@ -139,7 +139,7 @@ export const getLinkDefinitions = (source: GenericConstru }; /** - * Returns a specific LinkDefinition for a model class + * Returns a specific HeadLinkDefinition for a model class * * @param source the model class * @param linkName the name of the link diff --git a/modules/core/src/lib/core/cache/builders/index.ts b/modules/core/src/lib/core/cache/builders/index.ts new file mode 100644 index 00000000000..88606791e4d --- /dev/null +++ b/modules/core/src/lib/core/cache/builders/index.ts @@ -0,0 +1,4 @@ + +export * from './build-decorators'; +export * from './link.service'; +export * from './remote-data-build.service'; diff --git a/src/app/core/cache/builders/link.service.spec.ts b/modules/core/src/lib/core/cache/builders/link.service.spec.ts similarity index 94% rename from src/app/core/cache/builders/link.service.spec.ts rename to modules/core/src/lib/core/cache/builders/link.service.spec.ts index 122945ab6aa..8bc718fc803 100644 --- a/src/app/core/cache/builders/link.service.spec.ts +++ b/modules/core/src/lib/core/cache/builders/link.service.spec.ts @@ -5,17 +5,14 @@ import { take, } from 'rxjs/operators'; -import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; -import { TestDataService } from '../../../shared/testing/test-data-service.mock'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { HALResource } from '../../shared/hal-resource.model'; -import { ResourceType } from '../../shared/resource-type'; -import { - LINK_DEFINITION_FACTORY, - LINK_DEFINITION_MAP_FACTORY, -} from './build-decorators'; +import { APP_DATA_SERVICES_MAP } from '../../config'; +import { followLink } from '../../data'; +import { HALLink } from '../../shared'; +import { HALResource } from '../../shared'; +import { ResourceType } from '../../shared'; +import { TestDataService } from '../../utilities/testing/test-data-service.mock'; import { LinkService } from './link.service'; +import { LINK_DEFINITION_FACTORY, LINK_DEFINITION_MAP_FACTORY } from './build-decorators'; const TEST_MODEL = new ResourceType('testmodel'); let result: any; @@ -40,7 +37,7 @@ class TestModel implements HALResource { } const mockDataServiceMap: any = new Map([ - [TEST_MODEL.value, () => import('../../../shared/testing/test-data-service.mock').then(m => m.TestDataService)], + [TEST_MODEL.value, () => import('../../utilities/testing/test-data-service.mock').then(m => m.TestDataService)], ]); let testDataService: TestDataService; diff --git a/src/app/core/cache/builders/link.service.ts b/modules/core/src/lib/core/cache/builders/link.service.ts similarity index 90% rename from src/app/core/cache/builders/link.service.ts rename to modules/core/src/lib/core/cache/builders/link.service.ts index df3ccf1c87e..9e77916a662 100644 --- a/src/app/core/cache/builders/link.service.ts +++ b/modules/core/src/lib/core/cache/builders/link.service.ts @@ -3,6 +3,10 @@ import { Injectable, Injector, } from '@angular/core'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { EMPTY, Observable, @@ -12,21 +16,15 @@ import { switchMap, } from 'rxjs/operators'; -import { - APP_DATA_SERVICES_MAP, - LazyDataServicesMap, -} from '../../../../config/app-config.interface'; -import { - hasValue, - isNotEmpty, -} from '../../../shared/empty.util'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { HALDataService } from '../../data/base/hal-data-service.interface'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; +import { APP_DATA_SERVICES_MAP } from '../../config'; +import { HALDataService } from '../../data'; +import { FollowLinkConfig } from '../../data'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { LazyDataServicesMap } from '../../data-services-map'; import { lazyDataService } from '../../lazy-data-service'; -import { GenericConstructor } from '../../shared/generic-constructor'; -import { HALResource } from '../../shared/hal-resource.model'; +import { GenericConstructor } from '../../shared'; +import { HALResource } from '../../shared'; import { LINK_DEFINITION_FACTORY, LINK_DEFINITION_MAP_FACTORY, diff --git a/src/app/core/cache/builders/remote-data-build.service.spec.ts b/modules/core/src/lib/core/cache/builders/remote-data-build.service.spec.ts similarity index 97% rename from src/app/core/cache/builders/remote-data-build.service.spec.ts rename to modules/core/src/lib/core/cache/builders/remote-data-build.service.spec.ts index ec756ce85eb..7afaaf684e8 100644 --- a/src/app/core/cache/builders/remote-data-build.service.spec.ts +++ b/modules/core/src/lib/core/cache/builders/remote-data-build.service.spec.ts @@ -10,34 +10,37 @@ import { import { take } from 'rxjs/operators'; import { TestScheduler } from 'rxjs/testing'; -import { getMockLinkService } from '../../../shared/mocks/link-service.mock'; -import { getMockObjectCacheService } from '../../../shared/mocks/object-cache.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { - createFailedRemoteDataObject, - createPendingRemoteDataObject, - createSuccessfulRemoteDataObject, -} from '../../../shared/remote-data.utils'; import { followLink, FollowLinkConfig, -} from '../../../shared/utils/follow-link-config.model'; +} from '../../data'; import { buildPaginatedList, PaginatedList, -} from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { RequestService } from '../../data/request.service'; -import { RequestEntry } from '../../data/request-entry.model'; -import { RequestEntryState } from '../../data/request-entry-state.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { Item } from '../../shared/item.model'; -import { ITEM } from '../../shared/item.resource-type'; -import { PageInfo } from '../../shared/page-info.model'; -import { UnCacheableObject } from '../../shared/uncacheable-object.model'; -import { ObjectCacheService } from '../object-cache.service'; +} from '../../data'; +import { RemoteData } from '../../data'; +import { RequestService } from '../../data'; +import { RequestEntry } from '../../data'; +import { RequestEntryState } from '../../data'; + +import { HALLink } from '../../shared'; +import { Item } from '../../shared'; +import { ITEM } from '../../shared'; +import { PageInfo } from '../../shared'; +import { UnCacheableObject } from '../../shared'; import { LinkService } from './link.service'; +import { ObjectCacheService } from '../object-cache.service'; import { RemoteDataBuildService } from './remote-data-build.service'; +import { getMockObjectCacheService } from '../../mocks/object-cache.service.mock'; +import { getMockLinkService } from '../../mocks/link-service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; +import { + createFailedRemoteDataObject, + createPendingRemoteDataObject, + createSuccessfulRemoteDataObject +} from '../../utilities/remote-data.utils'; + + describe('RemoteDataBuildService', () => { let service: RemoteDataBuildService; diff --git a/src/app/core/cache/builders/remote-data-build.service.ts b/modules/core/src/lib/core/cache/builders/remote-data-build.service.ts similarity index 94% rename from src/app/core/cache/builders/remote-data-build.service.ts rename to modules/core/src/lib/core/cache/builders/remote-data-build.service.ts index 36305b4a0c4..70a4818bdf2 100644 --- a/src/app/core/cache/builders/remote-data-build.service.ts +++ b/modules/core/src/lib/core/cache/builders/remote-data-build.service.ts @@ -1,4 +1,11 @@ import { Injectable } from '@angular/core'; +import { + hasNoValue, + hasValue, + isEmpty, + isNotEmpty, + isUndefined, +} from '@dspace/shared/utils'; import { AsyncSubject, combineLatest as observableCombineLatest, @@ -13,38 +20,31 @@ import { switchMap, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, - isEmpty, - isNotEmpty, - isUndefined, -} from '../../../shared/empty.util'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { followLink, FollowLinkConfig, -} from '../../../shared/utils/follow-link-config.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { PAGINATED_LIST } from '../../data/paginated-list.resource-type'; -import { RemoteData } from '../../data/remote-data'; -import { RequestService } from '../../data/request.service'; -import { RequestEntry } from '../../data/request-entry.model'; +} from '../../data'; +import { PaginatedList } from '../../data'; +import { PAGINATED_LIST } from '../../data'; +import { RemoteData } from '../../data'; +import { RequestService } from '../../data'; +import { RequestEntry } from '../../data'; import { hasSucceeded, isStale, RequestEntryState, -} from '../../data/request-entry-state.model'; -import { ResponseState } from '../../data/response-state.model'; -import { getUrlWithoutEmbedParams } from '../../index/index.selectors'; -import { GenericConstructor } from '../../shared/generic-constructor'; -import { HALLink } from '../../shared/hal-link.model'; -import { HALResource } from '../../shared/hal-resource.model'; -import { getFirstCompletedRemoteData } from '../../shared/operators'; +} from '../../data'; +import { ResponseState } from '../../data'; +import { getUrlWithoutEmbedParams } from '../../index'; +import { GenericConstructor } from '../../shared'; +import { HALLink } from '../../shared'; +import { HALResource } from '../../shared'; +import { getFirstCompletedRemoteData } from '../../shared'; import { getRequestFromRequestHref, getRequestFromRequestUUID, -} from '../../shared/request.operators'; +} from '../../shared'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities'; import { getResourceTypeValueFor } from '../object-cache.reducer'; import { ObjectCacheService } from '../object-cache.service'; import { getClassForType } from './build-decorators'; diff --git a/src/app/core/cache/cache-entry.ts b/modules/core/src/lib/core/cache/cache-entry.ts similarity index 100% rename from src/app/core/cache/cache-entry.ts rename to modules/core/src/lib/core/cache/cache-entry.ts diff --git a/src/app/core/cache/cacheable-object.model.ts b/modules/core/src/lib/core/cache/cacheable-object.model.ts similarity index 81% rename from src/app/core/cache/cacheable-object.model.ts rename to modules/core/src/lib/core/cache/cacheable-object.model.ts index 86d041dab77..edde1ad0e71 100644 --- a/src/app/core/cache/cacheable-object.model.ts +++ b/modules/core/src/lib/core/cache/cacheable-object.model.ts @@ -1,6 +1,6 @@ /* tslint:disable:max-classes-per-file */ -import { HALLink } from '../shared/hal-link.model'; -import { HALResource } from '../shared/hal-resource.model'; +import { HALLink } from '../shared'; +import { HALResource } from '../shared'; import { TypedObject } from './typed-object.model'; /** diff --git a/src/app/core/cache/id-to-uuid-serializer.spec.ts b/modules/core/src/lib/core/cache/id-to-uuid-serializer.spec.ts similarity index 93% rename from src/app/core/cache/id-to-uuid-serializer.spec.ts rename to modules/core/src/lib/core/cache/id-to-uuid-serializer.spec.ts index bb23e310cc5..0fc534b8d65 100644 --- a/src/app/core/cache/id-to-uuid-serializer.spec.ts +++ b/modules/core/src/lib/core/cache/id-to-uuid-serializer.spec.ts @@ -1,4 +1,4 @@ -import { IDToUUIDSerializer } from './id-to-uuid-serializer'; +import { IDToUUIDSerializer } from "./id-to-uuid-serializer"; describe('IDToUUIDSerializer', () => { let serializer: IDToUUIDSerializer; diff --git a/src/app/core/cache/id-to-uuid-serializer.ts b/modules/core/src/lib/core/cache/id-to-uuid-serializer.ts similarity index 94% rename from src/app/core/cache/id-to-uuid-serializer.ts rename to modules/core/src/lib/core/cache/id-to-uuid-serializer.ts index 79576d448e2..1e821e71d00 100644 --- a/src/app/core/cache/id-to-uuid-serializer.ts +++ b/modules/core/src/lib/core/cache/id-to-uuid-serializer.ts @@ -1,4 +1,4 @@ -import { hasValue } from '../../shared/empty.util'; +import { hasValue } from '@dspace/shared/utils'; /** * Serializer to create unique fake UUID's from id's that might otherwise be the same across multiple object types diff --git a/modules/core/src/lib/core/cache/index.ts b/modules/core/src/lib/core/cache/index.ts new file mode 100644 index 00000000000..44e239944a1 --- /dev/null +++ b/modules/core/src/lib/core/cache/index.ts @@ -0,0 +1,16 @@ +// created from 'create-ts-index' + +export * from './builders'; +export * from './models'; +export * from './cache-entry'; +export * from './cacheable-object.model'; +export * from './id-to-uuid-serializer'; +export * from './object-cache.actions'; +export * from './object-cache.effects'; +export * from './object-cache.reducer'; +export * from './object-cache.service'; +export * from './response.models'; +export * from './server-sync-buffer.actions'; +export * from './server-sync-buffer.effects'; +export * from './server-sync-buffer.reducer'; +export * from './typed-object.model'; diff --git a/modules/core/src/lib/core/cache/models/index.ts b/modules/core/src/lib/core/cache/models/index.ts new file mode 100644 index 00000000000..5120535e05b --- /dev/null +++ b/modules/core/src/lib/core/cache/models/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './request-param.model'; +export * from './self-link.model'; +export * from './sort-options.model'; +export * from './support-level.model'; diff --git a/src/app/core/cache/models/request-param.model.ts b/modules/core/src/lib/core/cache/models/request-param.model.ts similarity index 100% rename from src/app/core/cache/models/request-param.model.ts rename to modules/core/src/lib/core/cache/models/request-param.model.ts diff --git a/src/app/core/cache/models/self-link.model.ts b/modules/core/src/lib/core/cache/models/self-link.model.ts similarity index 100% rename from src/app/core/cache/models/self-link.model.ts rename to modules/core/src/lib/core/cache/models/self-link.model.ts diff --git a/src/app/core/cache/models/sort-options.model.ts b/modules/core/src/lib/core/cache/models/sort-options.model.ts similarity index 100% rename from src/app/core/cache/models/sort-options.model.ts rename to modules/core/src/lib/core/cache/models/sort-options.model.ts diff --git a/src/app/core/cache/models/support-level.model.ts b/modules/core/src/lib/core/cache/models/support-level.model.ts similarity index 100% rename from src/app/core/cache/models/support-level.model.ts rename to modules/core/src/lib/core/cache/models/support-level.model.ts diff --git a/src/app/core/cache/object-cache.actions.ts b/modules/core/src/lib/core/cache/object-cache.actions.ts similarity index 99% rename from src/app/core/cache/object-cache.actions.ts rename to modules/core/src/lib/core/cache/object-cache.actions.ts index 5f8f60e1f1f..ebdd871e78e 100644 --- a/src/app/core/cache/object-cache.actions.ts +++ b/modules/core/src/lib/core/cache/object-cache.actions.ts @@ -2,7 +2,7 @@ import { Action } from '@ngrx/store'; import { Operation } from 'fast-json-patch'; -import { type } from '../../shared/ngrx/type'; +import { type } from '../shared'; import { CacheableObject } from './cacheable-object.model'; /** diff --git a/src/app/core/cache/object-cache.effects.spec.ts b/modules/core/src/lib/core/cache/object-cache.effects.spec.ts similarity index 95% rename from src/app/core/cache/object-cache.effects.spec.ts rename to modules/core/src/lib/core/cache/object-cache.effects.spec.ts index 66270be4c26..f1df60b6242 100644 --- a/src/app/core/cache/object-cache.effects.spec.ts +++ b/modules/core/src/lib/core/cache/object-cache.effects.spec.ts @@ -5,10 +5,9 @@ import { hot, } from 'jasmine-marbles'; import { Observable } from 'rxjs'; - -import { StoreActionTypes } from '../../store.actions'; -import { ResetObjectCacheTimestampsAction } from './object-cache.actions'; import { ObjectCacheEffects } from './object-cache.effects'; +import { StoreActionTypes } from '../store.actions'; +import { ResetObjectCacheTimestampsAction } from './object-cache.actions'; describe('ObjectCacheEffects', () => { let cacheEffects: ObjectCacheEffects; diff --git a/src/app/core/cache/object-cache.effects.ts b/modules/core/src/lib/core/cache/object-cache.effects.ts similarity index 93% rename from src/app/core/cache/object-cache.effects.ts rename to modules/core/src/lib/core/cache/object-cache.effects.ts index 0de59a152cb..f672ae6e0be 100644 --- a/src/app/core/cache/object-cache.effects.ts +++ b/modules/core/src/lib/core/cache/object-cache.effects.ts @@ -6,7 +6,7 @@ import { } from '@ngrx/effects'; import { map } from 'rxjs/operators'; -import { StoreActionTypes } from '../../store.actions'; +import { StoreActionTypes } from '../store.actions'; import { ResetObjectCacheTimestampsAction } from './object-cache.actions'; @Injectable() diff --git a/src/app/core/cache/object-cache.reducer.spec.ts b/modules/core/src/lib/core/cache/object-cache.reducer.spec.ts similarity index 98% rename from src/app/core/cache/object-cache.reducer.spec.ts rename to modules/core/src/lib/core/cache/object-cache.reducer.spec.ts index 7dda02a0f5d..2fd9a576cab 100644 --- a/src/app/core/cache/object-cache.reducer.spec.ts +++ b/modules/core/src/lib/core/cache/object-cache.reducer.spec.ts @@ -2,18 +2,17 @@ import * as deepFreeze from 'deep-freeze'; import { Operation } from 'fast-json-patch'; -import { Item } from '../shared/item.model'; +import { Item } from '../shared'; import { AddDependentsObjectCacheAction, AddPatchObjectCacheAction, - AddToObjectCacheAction, - ApplyPatchObjectCacheAction, - RemoveDependentsObjectCacheAction, + AddToObjectCacheAction, ApplyPatchObjectCacheAction, RemoveDependentsObjectCacheAction, RemoveFromObjectCacheAction, - ResetObjectCacheTimestampsAction, + ResetObjectCacheTimestampsAction } from './object-cache.actions'; import { objectCacheReducer } from './object-cache.reducer'; + class NullAction extends RemoveFromObjectCacheAction { type = null; payload = null; diff --git a/src/app/core/cache/object-cache.reducer.ts b/modules/core/src/lib/core/cache/object-cache.reducer.ts similarity index 99% rename from src/app/core/cache/object-cache.reducer.ts rename to modules/core/src/lib/core/cache/object-cache.reducer.ts index 1a780ff0083..164e799c6f9 100644 --- a/src/app/core/cache/object-cache.reducer.ts +++ b/modules/core/src/lib/core/cache/object-cache.reducer.ts @@ -1,13 +1,13 @@ /* eslint-disable max-classes-per-file */ +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { applyPatch, Operation, } from 'fast-json-patch'; -import { - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; import { CacheEntry } from './cache-entry'; import { CacheableObject } from './cacheable-object.model'; import { diff --git a/src/app/core/cache/object-cache.service.spec.ts b/modules/core/src/lib/core/cache/object-cache.service.spec.ts similarity index 98% rename from src/app/core/cache/object-cache.service.spec.ts rename to modules/core/src/lib/core/cache/object-cache.service.spec.ts index 3d27f7252c5..453fea9a094 100644 --- a/src/app/core/cache/object-cache.service.spec.ts +++ b/modules/core/src/lib/core/cache/object-cache.service.spec.ts @@ -19,25 +19,22 @@ import { } from 'rxjs'; import { first } from 'rxjs/operators'; import { TestScheduler } from 'rxjs/testing'; - -import { storeModuleConfig } from '../../app.reducer'; -import { coreReducers } from '../core.reducers'; +import { ObjectCacheService } from './object-cache.service'; import { CoreState } from '../core-state.model'; -import { RestRequestMethod } from '../data/rest-request-method'; -import { RemoveFromIndexBySubstringAction } from '../index/index.actions'; -import { IndexName } from '../index/index-name.model'; -import { HALLink } from '../shared/hal-link.model'; -import { Item } from '../shared/item.model'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; +import { coreReducers } from '../core.reducers'; import { AddDependentsObjectCacheAction, AddPatchObjectCacheAction, AddToObjectCacheAction, - ApplyPatchObjectCacheAction, - RemoveDependentsObjectCacheAction, - RemoveFromObjectCacheAction, + ApplyPatchObjectCacheAction, RemoveDependentsObjectCacheAction, + RemoveFromObjectCacheAction } from './object-cache.actions'; -import { Patch } from './object-cache.reducer'; -import { ObjectCacheService } from './object-cache.service'; +import { RemoveFromIndexBySubstringAction } from '../index/index.actions'; +import { IndexName } from '../index/index-name.model'; +import { HALLink } from '../shared/hal-link.model'; +import { Item } from '../shared/item.model'; +import { RestRequestMethod } from '../data/rest-request-method'; import { AddToSSBAction } from './server-sync-buffer.actions'; describe('ObjectCacheService', () => { @@ -116,7 +113,7 @@ describe('ObjectCacheService', () => { TestBed.configureTestingModule({ imports: [ - StoreModule.forRoot(coreReducers, storeModuleConfig), + StoreModule.forRoot(coreReducers, mockStoreModuleConfig), ], providers: [ provideMockStore({ initialState }), diff --git a/src/app/core/cache/object-cache.service.ts b/modules/core/src/lib/core/cache/object-cache.service.ts similarity index 96% rename from src/app/core/cache/object-cache.service.ts rename to modules/core/src/lib/core/cache/object-cache.service.ts index f645b5a878d..699b5ce7f5e 100644 --- a/src/app/core/cache/object-cache.service.ts +++ b/modules/core/src/lib/core/cache/object-cache.service.ts @@ -1,4 +1,10 @@ import { Injectable } from '@angular/core'; +import { + hasNoValue, + hasValue, + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { createSelector, MemoizedSelector, @@ -23,25 +29,19 @@ import { take, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; import { coreSelector } from '../core.selectors'; import { CoreState } from '../core-state.model'; -import { RestRequestMethod } from '../data/rest-request-method'; -import { RemoveFromIndexBySubstringAction } from '../index/index.actions'; +import { RestRequestMethod } from '../data'; +import { RemoveFromIndexBySubstringAction } from '../index'; import { selfLinkFromAlternativeLinkSelector, selfLinkFromUuidSelector, -} from '../index/index.selectors'; -import { IndexName } from '../index/index-name.model'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALLink } from '../shared/hal-link.model'; -import { getClassForType } from './builders/build-decorators'; -import { LinkService } from './builders/link.service'; +} from '../index'; +import { IndexName } from '../index'; +import { GenericConstructor } from '../shared'; +import { HALLink } from '../shared'; +import { getClassForType } from './builders'; +import { LinkService } from './builders'; import { CacheableObject } from './cacheable-object.model'; import { AddDependentsObjectCacheAction, diff --git a/src/app/core/cache/response.models.ts b/modules/core/src/lib/core/cache/response.models.ts similarity index 89% rename from src/app/core/cache/response.models.ts rename to modules/core/src/lib/core/cache/response.models.ts index 9a09a49bc81..29c67557545 100644 --- a/src/app/core/cache/response.models.ts +++ b/modules/core/src/lib/core/cache/response.models.ts @@ -1,10 +1,10 @@ /* eslint-disable max-classes-per-file */ -import { ConfigObject } from '../config/models/config.model'; -import { RequestError } from '../data/request-error.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { HALLink } from '../shared/hal-link.model'; -import { PageInfo } from '../shared/page-info.model'; -import { UnCacheableObject } from '../shared/uncacheable-object.model'; +import { ConfigObject } from '../config'; +import { RequestError } from '../data'; +import { DSpaceObject } from '../shared'; +import { HALLink } from '../shared'; +import { PageInfo } from '../shared'; +import { UnCacheableObject } from '../shared'; export class RestResponse { public toCache = true; diff --git a/src/app/core/cache/server-sync-buffer.actions.ts b/modules/core/src/lib/core/cache/server-sync-buffer.actions.ts similarity index 94% rename from src/app/core/cache/server-sync-buffer.actions.ts rename to modules/core/src/lib/core/cache/server-sync-buffer.actions.ts index c07c4e6adfc..1a5119d2500 100644 --- a/src/app/core/cache/server-sync-buffer.actions.ts +++ b/modules/core/src/lib/core/cache/server-sync-buffer.actions.ts @@ -1,8 +1,8 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; -import { RestRequestMethod } from '../data/rest-request-method'; +import { RestRequestMethod } from '../data'; +import { type } from '../shared'; /** * The list of ServerSyncBufferAction type definitions diff --git a/src/app/core/cache/server-sync-buffer.effects.spec.ts b/modules/core/src/lib/core/cache/server-sync-buffer.effects.spec.ts similarity index 91% rename from src/app/core/cache/server-sync-buffer.effects.spec.ts rename to modules/core/src/lib/core/cache/server-sync-buffer.effects.spec.ts index 889b3b7454a..138aedfb834 100644 --- a/src/app/core/cache/server-sync-buffer.effects.spec.ts +++ b/modules/core/src/lib/core/cache/server-sync-buffer.effects.spec.ts @@ -14,21 +14,17 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { storeModuleConfig } from '../../app.reducer'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { NoOpAction } from '../../shared/ngrx/no-op.action'; -import { StoreMock } from '../../shared/testing/store.mock'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { ServerSyncBufferEffects } from './server-sync-buffer.effects'; +import { ObjectCacheService } from './object-cache.service'; +import { StoreMock } from '../utilities/testing/store.mock'; import { RequestService } from '../data/request.service'; -import { RestRequestMethod } from '../data/rest-request-method'; import { DSpaceObject } from '../shared/dspace-object.model'; +import { CommitSSBAction, EmptySSBAction, ServerSyncBufferActionTypes } from './server-sync-buffer.actions'; +import { RestRequestMethod } from '../data/rest-request-method'; import { ApplyPatchObjectCacheAction } from './object-cache.actions'; -import { ObjectCacheService } from './object-cache.service'; -import { - CommitSSBAction, - EmptySSBAction, - ServerSyncBufferActionTypes, -} from './server-sync-buffer.actions'; -import { ServerSyncBufferEffects } from './server-sync-buffer.effects'; +import { NoOpAction } from '../shared/ngrx/no-op.action'; describe('ServerSyncBufferEffects', () => { let ssbEffects: ServerSyncBufferEffects; @@ -50,7 +46,7 @@ describe('ServerSyncBufferEffects', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [ - StoreModule.forRoot({}, storeModuleConfig), + StoreModule.forRoot({}, mockStoreModuleConfig), ], providers: [ ServerSyncBufferEffects, diff --git a/src/app/core/cache/server-sync-buffer.effects.ts b/modules/core/src/lib/core/cache/server-sync-buffer.effects.ts similarity index 91% rename from src/app/core/cache/server-sync-buffer.effects.ts rename to modules/core/src/lib/core/cache/server-sync-buffer.effects.ts index 6f346d5bb3f..3f4a8117d48 100644 --- a/src/app/core/cache/server-sync-buffer.effects.ts +++ b/modules/core/src/lib/core/cache/server-sync-buffer.effects.ts @@ -1,4 +1,12 @@ -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; +import { + hasValue, + isNotEmpty, + isNotUndefined, +} from '@dspace/shared/utils'; import { Actions, createEffect, @@ -25,18 +33,16 @@ import { take, } from 'rxjs/operators'; -import { environment } from '../../../environments/environment'; import { - hasValue, - isNotEmpty, - isNotUndefined, -} from '../../shared/empty.util'; -import { NoOpAction } from '../../shared/ngrx/no-op.action'; + APP_CONFIG, + AppConfig, +} from '../config'; import { coreSelector } from '../core.selectors'; import { CoreState } from '../core-state.model'; -import { PatchRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RestRequestMethod } from '../data/rest-request-method'; +import { PatchRequest } from '../data'; +import { RequestService } from '../data'; +import { RestRequestMethod } from '../data'; +import { NoOpAction } from '../shared'; import { ApplyPatchObjectCacheAction } from './object-cache.actions'; import { ObjectCacheEntry } from './object-cache.reducer'; import { ObjectCacheService } from './object-cache.service'; @@ -53,6 +59,7 @@ import { @Injectable() export class ServerSyncBufferEffects { + private readonly appConfig: AppConfig = inject(APP_CONFIG); /** * When an ADDToSSBAction is dispatched @@ -64,7 +71,7 @@ export class ServerSyncBufferEffects { .pipe( ofType(ServerSyncBufferActionTypes.ADD), exhaustMap((action: AddToSSBAction) => { - const autoSyncConfig = environment.cache.autoSync; + const autoSyncConfig = this.appConfig.cache.autoSync; const timeoutInSeconds = autoSyncConfig.timePerMethod[action.payload.method] || autoSyncConfig.defaultTime; return observableOf(new CommitSSBAction(action.payload.method)).pipe( delay(timeoutInSeconds * 1000), diff --git a/src/app/core/cache/server-sync-buffer.reducer.spec.ts b/modules/core/src/lib/core/cache/server-sync-buffer.reducer.spec.ts similarity index 97% rename from src/app/core/cache/server-sync-buffer.reducer.spec.ts rename to modules/core/src/lib/core/cache/server-sync-buffer.reducer.spec.ts index d986581ce2e..eb7169e8f47 100644 --- a/src/app/core/cache/server-sync-buffer.reducer.spec.ts +++ b/modules/core/src/lib/core/cache/server-sync-buffer.reducer.spec.ts @@ -1,13 +1,11 @@ // eslint-disable-next-line import/no-namespace import * as deepFreeze from 'deep-freeze'; - -import { RestRequestMethod } from '../data/rest-request-method'; import { RemoveFromObjectCacheAction } from './object-cache.actions'; -import { - AddToSSBAction, - EmptySSBAction, -} from './server-sync-buffer.actions'; +import { RestRequestMethod } from '../data/rest-request-method'; import { serverSyncBufferReducer } from './server-sync-buffer.reducer'; +import { AddToSSBAction } from './server-sync-buffer.actions'; + + class NullAction extends RemoveFromObjectCacheAction { type = null; diff --git a/src/app/core/cache/server-sync-buffer.reducer.ts b/modules/core/src/lib/core/cache/server-sync-buffer.reducer.ts similarity index 96% rename from src/app/core/cache/server-sync-buffer.reducer.ts rename to modules/core/src/lib/core/cache/server-sync-buffer.reducer.ts index f1ae8943151..0b661124d67 100644 --- a/src/app/core/cache/server-sync-buffer.reducer.ts +++ b/modules/core/src/lib/core/cache/server-sync-buffer.reducer.ts @@ -1,8 +1,9 @@ import { hasNoValue, hasValue, -} from '../../shared/empty.util'; -import { RestRequestMethod } from '../data/rest-request-method'; +} from '@dspace/shared/utils'; + +import { RestRequestMethod } from '../data'; import { AddToSSBAction, EmptySSBAction, diff --git a/src/app/core/cache/typed-object.model.ts b/modules/core/src/lib/core/cache/typed-object.model.ts similarity index 61% rename from src/app/core/cache/typed-object.model.ts rename to modules/core/src/lib/core/cache/typed-object.model.ts index 02a530941a0..42060458f50 100644 --- a/src/app/core/cache/typed-object.model.ts +++ b/modules/core/src/lib/core/cache/typed-object.model.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../shared/resource-type'; +import { ResourceType } from '../shared'; export abstract class TypedObject { static type: ResourceType; diff --git a/src/app/submission/sections/section-coar-notify/coar-notify-config-data.service.spec.ts b/modules/core/src/lib/core/coar-notify/coar-notify-config-data.service.spec.ts similarity index 66% rename from src/app/submission/sections/section-coar-notify/coar-notify-config-data.service.spec.ts rename to modules/core/src/lib/core/coar-notify/coar-notify-config-data.service.spec.ts index cfad518b852..7b7410296d5 100644 --- a/src/app/submission/sections/section-coar-notify/coar-notify-config-data.service.spec.ts +++ b/modules/core/src/lib/core/coar-notify/coar-notify-config-data.service.spec.ts @@ -4,26 +4,27 @@ import { } from 'jasmine-marbles'; import { of } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; - -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { RestResponse } from '../../../core/cache/response.models'; -import { CreateData } from '../../../core/data/base/create-data'; -import { testCreateDataImplementation } from '../../../core/data/base/create-data.spec'; -import { DeleteData } from '../../../core/data/base/delete-data'; -import { testDeleteDataImplementation } from '../../../core/data/base/delete-data.spec'; -import { FindAllData } from '../../../core/data/base/find-all-data'; -import { testFindAllDataImplementation } from '../../../core/data/base/find-all-data.spec'; -import { PatchData } from '../../../core/data/base/patch-data'; -import { testPatchDataImplementation } from '../../../core/data/base/patch-data.spec'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { RequestEntry } from '../../../core/data/request-entry.model'; -import { RequestEntryState } from '../../../core/data/request-entry-state.model'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { CoarNotifyConfigDataService } from './coar-notify-config-data.service'; +import { RequestService } from '../data/request.service'; +import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../cache/object-cache.service'; +import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { NotificationsService } from '../notifications/notifications.service'; +import { RequestEntry } from '../data/request-entry.model'; +import { RequestEntryState } from '../data/request-entry-state.model'; +import { RemoteData } from '../data/remote-data'; +import { RestResponse } from '../cache/response.models'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { CreateData } from '../data/base/create-data'; +import { FindAllData } from '../data/base/find-all-data'; +import { DeleteData } from '../data/base/delete-data'; +import { PatchData } from '../data/base/patch-data'; +import { testCreateDataImplementation } from '../data/base/create-data.spec'; +import { testFindAllDataImplementation } from '../data/base/find-all-data.spec'; +import { testPatchDataImplementation } from '../data/base/patch-data.spec'; +import { testDeleteDataImplementation } from '../data/base/delete-data.spec'; + + describe('CoarNotifyConfigDataService test', () => { let scheduler: TestScheduler; diff --git a/src/app/submission/sections/section-coar-notify/coar-notify-config-data.service.ts b/modules/core/src/lib/core/coar-notify/coar-notify-config-data.service.ts similarity index 72% rename from src/app/submission/sections/section-coar-notify/coar-notify-config-data.service.ts rename to modules/core/src/lib/core/coar-notify/coar-notify-config-data.service.ts index 74b2f0b97ea..a6eea8f5789 100644 --- a/src/app/submission/sections/section-coar-notify/coar-notify-config-data.service.ts +++ b/modules/core/src/lib/core/coar-notify/coar-notify-config-data.service.ts @@ -6,40 +6,28 @@ import { take, } from 'rxjs/operators'; -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { RequestParam } from '../../../core/cache/models/request-param.model'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { - CreateData, - CreateDataImpl, -} from '../../../core/data/base/create-data'; -import { - DeleteData, - DeleteDataImpl, -} from '../../../core/data/base/delete-data'; -import { - FindAllData, - FindAllDataImpl, -} from '../../../core/data/base/find-all-data'; -import { IdentifiableDataService } from '../../../core/data/base/identifiable-data.service'; -import { - PatchData, - PatchDataImpl, -} from '../../../core/data/base/patch-data'; -import { ChangeAnalyzer } from '../../../core/data/change-analyzer'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { MultipartPostRequest } from '../../../core/data/request.models'; -import { RequestService } from '../../../core/data/request.service'; -import { RestRequest } from '../../../core/data/rest-request.model'; -import { RestRequestMethod } from '../../../core/data/rest-request-method'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { NoContent } from '../../../core/shared/NoContent.model'; -import { URLCombiner } from '../../../core/url-combiner/url-combiner'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; import { SubmissionCoarNotifyConfig } from './submission-coar-notify.config'; +import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +import { CreateData, CreateDataImpl } from '../data/base/create-data'; +import { FindAllData, FindAllDataImpl } from '../data/base/find-all-data'; +import { DeleteData, DeleteDataImpl } from '../data/base/delete-data'; +import { PatchData, PatchDataImpl } from '../data/base/patch-data'; +import { ChangeAnalyzer } from '../data/change-analyzer'; +import { RequestService } from '../data/request.service'; +import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../cache/object-cache.service'; +import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { NotificationsService } from '../notifications/notifications.service'; +import { RequestParam } from '../cache/models/request-param.model'; +import { RemoteData } from '../data/remote-data'; +import { RestRequestMethod } from '../data/rest-request-method'; +import { FindListOptions } from '../data/find-list-options.model'; +import { FollowLinkConfig } from '../data/follow-link-config.model'; +import { NoContent } from '../shared/NoContent.model'; +import { URLCombiner } from '../url-combiner/url-combiner'; +import { MultipartPostRequest } from '../data/request.models'; +import { RestRequest } from '../data/rest-request.model'; +import { PaginatedList } from '../data/paginated-list.model'; /** diff --git a/modules/core/src/lib/core/coar-notify/index.ts b/modules/core/src/lib/core/coar-notify/index.ts new file mode 100644 index 00000000000..77765d65fc7 --- /dev/null +++ b/modules/core/src/lib/core/coar-notify/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './notify-info'; +export * from './coar-notify-config-data.service'; +export * from './section-coar-notify-service.resource-type'; +export * from './submission-coar-notify.config'; diff --git a/modules/core/src/lib/core/coar-notify/notify-info/index.ts b/modules/core/src/lib/core/coar-notify/notify-info/index.ts new file mode 100644 index 00000000000..de933d1f29a --- /dev/null +++ b/modules/core/src/lib/core/coar-notify/notify-info/index.ts @@ -0,0 +1,3 @@ + +export * from './notify-info.guard'; +export * from './notify-info.service'; diff --git a/src/app/core/coar-notify/notify-info/notify-info.guard.spec.ts b/modules/core/src/lib/core/coar-notify/notify-info/notify-info.guard.spec.ts similarity index 99% rename from src/app/core/coar-notify/notify-info/notify-info.guard.spec.ts rename to modules/core/src/lib/core/coar-notify/notify-info/notify-info.guard.spec.ts index 706c8f684b9..8c92b77f447 100644 --- a/src/app/core/coar-notify/notify-info/notify-info.guard.spec.ts +++ b/modules/core/src/lib/core/coar-notify/notify-info/notify-info.guard.spec.ts @@ -1,5 +1,4 @@ import { of } from 'rxjs'; - import { notifyInfoGuard } from './notify-info.guard'; describe('notifyInfoGuard', () => { diff --git a/src/app/core/coar-notify/notify-info/notify-info.guard.ts b/modules/core/src/lib/core/coar-notify/notify-info/notify-info.guard.ts similarity index 100% rename from src/app/core/coar-notify/notify-info/notify-info.guard.ts rename to modules/core/src/lib/core/coar-notify/notify-info/notify-info.guard.ts diff --git a/src/app/core/coar-notify/notify-info/notify-info.service.spec.ts b/modules/core/src/lib/core/coar-notify/notify-info/notify-info.service.spec.ts similarity index 93% rename from src/app/core/coar-notify/notify-info/notify-info.service.spec.ts rename to modules/core/src/lib/core/coar-notify/notify-info/notify-info.service.spec.ts index 6fa8295be06..88e077dff23 100644 --- a/src/app/core/coar-notify/notify-info/notify-info.service.spec.ts +++ b/modules/core/src/lib/core/coar-notify/notify-info/notify-info.service.spec.ts @@ -2,11 +2,11 @@ import { TestBed } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { of } from 'rxjs'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub'; +import { NotifyInfoService } from './notify-info.service'; import { ConfigurationDataService } from '../../data/configuration-data.service'; import { AuthorizationDataService } from '../../data/feature-authorization/authorization-data.service'; -import { NotifyInfoService } from './notify-info.service'; +import { ActivatedRouteStub } from '../../utilities/testing/active-router.stub'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; describe('NotifyInfoService', () => { let service: NotifyInfoService; diff --git a/src/app/core/coar-notify/notify-info/notify-info.service.ts b/modules/core/src/lib/core/coar-notify/notify-info/notify-info.service.ts similarity index 73% rename from src/app/core/coar-notify/notify-info/notify-info.service.ts rename to modules/core/src/lib/core/coar-notify/notify-info/notify-info.service.ts index 455c7902ee4..d0264751207 100644 --- a/src/app/core/coar-notify/notify-info/notify-info.service.ts +++ b/modules/core/src/lib/core/coar-notify/notify-info/notify-info.service.ts @@ -4,12 +4,12 @@ import { Observable, } from 'rxjs'; -import { ConfigurationDataService } from '../../data/configuration-data.service'; -import { AuthorizationDataService } from '../../data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../../data/feature-authorization/feature-id'; -import { RemoteData } from '../../data/remote-data'; -import { ConfigurationProperty } from '../../shared/configuration-property.model'; -import { getFirstCompletedRemoteData } from '../../shared/operators'; +import { ConfigurationDataService } from '../../data'; +import { AuthorizationDataService } from '../../data'; +import { FeatureID } from '../../data'; +import { RemoteData } from '../../data'; +import { ConfigurationProperty } from '../../shared'; +import { getFirstCompletedRemoteData } from '../../shared'; /** * Service to check COAR availability and LDN services information for the COAR Notify functionalities diff --git a/src/app/submission/sections/section-coar-notify/section-coar-notify-service.resource-type.ts b/modules/core/src/lib/core/coar-notify/section-coar-notify-service.resource-type.ts similarity index 81% rename from src/app/submission/sections/section-coar-notify/section-coar-notify-service.resource-type.ts rename to modules/core/src/lib/core/coar-notify/section-coar-notify-service.resource-type.ts index 53e41783ced..02a9686d1eb 100644 --- a/src/app/submission/sections/section-coar-notify/section-coar-notify-service.resource-type.ts +++ b/modules/core/src/lib/core/coar-notify/section-coar-notify-service.resource-type.ts @@ -4,7 +4,9 @@ * Needs to be in a separate file to prevent circular * dependencies in webpack. */ -import { ResourceType } from '../../../core/shared/resource-type'; + +import { ResourceType } from "../shared/resource-type"; + export const SUBMISSION_COAR_NOTIFY_CONFIG = new ResourceType('submissioncoarnotifyconfig'); diff --git a/src/app/submission/sections/section-coar-notify/submission-coar-notify.config.ts b/modules/core/src/lib/core/coar-notify/submission-coar-notify.config.ts similarity index 73% rename from src/app/submission/sections/section-coar-notify/submission-coar-notify.config.ts rename to modules/core/src/lib/core/coar-notify/submission-coar-notify.config.ts index 04decc64599..b818f07e545 100644 --- a/src/app/submission/sections/section-coar-notify/submission-coar-notify.config.ts +++ b/modules/core/src/lib/core/coar-notify/submission-coar-notify.config.ts @@ -5,11 +5,11 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../../core/cache/cacheable-object.model'; -import { ResourceType } from '../../../core/shared/resource-type'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; import { SUBMISSION_COAR_NOTIFY_CONFIG } from './section-coar-notify-service.resource-type'; +import { CacheableObject } from '../cache/cacheable-object.model'; +import { typedObject } from '../cache/builders/build-decorators'; +import { excludeFromEquals } from '../utilities/equals.decorators'; +import { ResourceType } from '../shared/resource-type'; export interface LdnPattern { pattern: string, diff --git a/src/config/actuators.config.ts b/modules/core/src/lib/core/config/actuators.config.ts similarity index 100% rename from src/config/actuators.config.ts rename to modules/core/src/lib/core/config/actuators.config.ts diff --git a/src/config/advance-search-config.interface.ts b/modules/core/src/lib/core/config/advance-search-config.interface.ts similarity index 100% rename from src/config/advance-search-config.interface.ts rename to modules/core/src/lib/core/config/advance-search-config.interface.ts diff --git a/src/config/app-config.interface.ts b/modules/core/src/lib/core/config/app-config.interface.ts similarity index 85% rename from src/config/app-config.interface.ts rename to modules/core/src/lib/core/config/app-config.interface.ts index 7f5f0199582..0a9a62e7018 100644 --- a/src/config/app-config.interface.ts +++ b/modules/core/src/lib/core/config/app-config.interface.ts @@ -1,12 +1,9 @@ import { InjectionToken, makeStateKey, - Type, } from '@angular/core'; -import { AdminNotifyMetricsRow } from '../app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model'; -import { HALDataService } from '../app/core/data/base/hal-data-service.interface'; -import { LiveRegionConfig } from '../app/shared/live-region/live-region.config'; +import { LazyDataServicesMap } from '../data-services-map'; import { ActuatorsConfig } from './actuators.config'; import { AuthConfig } from './auth-config.interfaces'; import { BrowseByConfig } from './browse-by-config.interface'; @@ -23,11 +20,13 @@ import { HomeConfig } from './homepage-config.interface'; import { InfoConfig } from './info-config.interface'; import { ItemConfig } from './item-config.interface'; import { LangConfig } from './lang-config.interface'; +import { LiveRegionConfig } from './live-region.config'; import { MarkdownConfig } from './markdown-config.interface'; import { MediaViewerConfig } from './media-viewer-config.interface'; +import { AdminNotifyMetricsRow } from './models'; import { INotificationBoardOptions } from './notifications-config.interfaces'; import { QualityAssuranceConfig } from './quality-assurance.config'; -import { SearchConfig } from './search-page-config.interface'; +import { SearchPageConfig } from './search-page-config.interface'; import { ServerConfig } from './server-config.interface'; import { SubmissionConfig } from './submission-config.interface'; import { SuggestionConfig } from './suggestion-config.interfaces'; @@ -63,7 +62,7 @@ interface AppConfig extends Config { vocabularies: FilterVocabularyConfig[]; comcolSelectionSort: DiscoverySortConfig; qualityAssuranceConfig: QualityAssuranceConfig; - search: SearchConfig; + search: SearchPageConfig; notifyMetrics: AdminNotifyMetricsRow[]; liveRegion: LiveRegionConfig; } @@ -76,8 +75,6 @@ const APP_CONFIG = new InjectionToken('APP_CONFIG'); const APP_CONFIG_STATE = makeStateKey('APP_CONFIG_STATE'); -export type LazyDataServicesMap = Map Promise> | { default: HALDataService }>>; - export const APP_DATA_SERVICES_MAP: InjectionToken = new InjectionToken('APP_DATA_SERVICES_MAP'); export { diff --git a/src/config/auth-config.interfaces.ts b/modules/core/src/lib/core/config/auth-config.interfaces.ts similarity index 100% rename from src/config/auth-config.interfaces.ts rename to modules/core/src/lib/core/config/auth-config.interfaces.ts diff --git a/src/config/auto-sync-config.interface.ts b/modules/core/src/lib/core/config/auto-sync-config.interface.ts similarity index 89% rename from src/config/auto-sync-config.interface.ts rename to modules/core/src/lib/core/config/auto-sync-config.interface.ts index b737314f56c..f38913324e1 100644 --- a/src/config/auto-sync-config.interface.ts +++ b/modules/core/src/lib/core/config/auto-sync-config.interface.ts @@ -1,4 +1,4 @@ -import { RestRequestMethod } from '../app/core/data/rest-request-method'; +import { RestRequestMethod } from '../data'; /** * The number of seconds between automatic syncs to the diff --git a/src/config/browse-by-config.interface.ts b/modules/core/src/lib/core/config/browse-by-config.interface.ts similarity index 100% rename from src/config/browse-by-config.interface.ts rename to modules/core/src/lib/core/config/browse-by-config.interface.ts diff --git a/src/config/build-config.interface.ts b/modules/core/src/lib/core/config/build-config.interface.ts similarity index 100% rename from src/config/build-config.interface.ts rename to modules/core/src/lib/core/config/build-config.interface.ts diff --git a/src/app/core/config/bulk-access-config-data.service.ts b/modules/core/src/lib/core/config/bulk-access-config-data.service.ts similarity index 68% rename from src/app/core/config/bulk-access-config-data.service.ts rename to modules/core/src/lib/core/config/bulk-access-config-data.service.ts index 8023e58489b..308abd81b44 100644 --- a/src/app/core/config/bulk-access-config-data.service.ts +++ b/modules/core/src/lib/core/config/bulk-access-config-data.service.ts @@ -1,9 +1,9 @@ import { Injectable } from '@angular/core'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { ConfigDataService } from './config-data.service'; /** diff --git a/src/config/bundle-config.interface.ts b/modules/core/src/lib/core/config/bundle-config.interface.ts similarity index 100% rename from src/config/bundle-config.interface.ts rename to modules/core/src/lib/core/config/bundle-config.interface.ts diff --git a/src/config/cache-config.interface.ts b/modules/core/src/lib/core/config/cache-config.interface.ts similarity index 100% rename from src/config/cache-config.interface.ts rename to modules/core/src/lib/core/config/cache-config.interface.ts diff --git a/src/config/collection-page-config.interface.ts b/modules/core/src/lib/core/config/collection-page-config.interface.ts similarity index 100% rename from src/config/collection-page-config.interface.ts rename to modules/core/src/lib/core/config/collection-page-config.interface.ts diff --git a/src/config/community-list-config.interface.ts b/modules/core/src/lib/core/config/community-list-config.interface.ts similarity index 100% rename from src/config/community-list-config.interface.ts rename to modules/core/src/lib/core/config/community-list-config.interface.ts diff --git a/src/config/community-page-config.interface.ts b/modules/core/src/lib/core/config/community-page-config.interface.ts similarity index 100% rename from src/config/community-page-config.interface.ts rename to modules/core/src/lib/core/config/community-page-config.interface.ts diff --git a/src/app/core/config/config-data.service.spec.ts b/modules/core/src/lib/core/config/config-data.service.spec.ts similarity index 78% rename from src/app/core/config/config-data.service.spec.ts rename to modules/core/src/lib/core/config/config-data.service.spec.ts index a9979f1bb5b..9cb472a561d 100644 --- a/src/app/core/config/config-data.service.spec.ts +++ b/modules/core/src/lib/core/config/config-data.service.spec.ts @@ -1,16 +1,17 @@ import { getTestScheduler } from 'jasmine-marbles'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { FindListOptions } from '../data/find-list-options.model'; -import { GetRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { FindListOptions } from '../data'; +import { GetRequest } from '../data'; +import { RequestService } from '../data'; import { ConfigDataService } from './config-data.service'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { HALEndpointService } from '../shared/hal-endpoint.service'; + const LINK_NAME = 'test'; const BROWSE = 'search/findByCollection'; diff --git a/src/app/core/config/config-data.service.ts b/modules/core/src/lib/core/config/config-data.service.ts similarity index 89% rename from src/app/core/config/config-data.service.ts rename to modules/core/src/lib/core/config/config-data.service.ts index 51ca6559219..eb51eebf883 100644 --- a/src/app/core/config/config-data.service.ts +++ b/modules/core/src/lib/core/config/config-data.service.ts @@ -1,11 +1,11 @@ import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { RemoteData } from '../data/remote-data'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { ConfigObject } from './models/config.model'; +import { IdentifiableDataService } from '../data'; +import { FollowLinkConfig } from '../data'; +import { RemoteData } from '../data'; +import { getFirstCompletedRemoteData } from '../shared'; +import { ConfigObject } from './models'; /** * Abstract data service to retrieve configuration objects from the REST server. diff --git a/src/config/config.interface.ts b/modules/core/src/lib/core/config/config.interface.ts similarity index 100% rename from src/config/config.interface.ts rename to modules/core/src/lib/core/config/config.interface.ts diff --git a/src/config/discovery-sort.config.ts b/modules/core/src/lib/core/config/discovery-sort.config.ts similarity index 100% rename from src/config/discovery-sort.config.ts rename to modules/core/src/lib/core/config/discovery-sort.config.ts diff --git a/src/config/filter-vocabulary-config.ts b/modules/core/src/lib/core/config/filter-vocabulary-config.ts similarity index 100% rename from src/config/filter-vocabulary-config.ts rename to modules/core/src/lib/core/config/filter-vocabulary-config.ts diff --git a/src/config/form-config.interfaces.ts b/modules/core/src/lib/core/config/form-config.interfaces.ts similarity index 100% rename from src/config/form-config.interfaces.ts rename to modules/core/src/lib/core/config/form-config.interfaces.ts diff --git a/src/config/homepage-config.interface.ts b/modules/core/src/lib/core/config/homepage-config.interface.ts similarity index 100% rename from src/config/homepage-config.interface.ts rename to modules/core/src/lib/core/config/homepage-config.interface.ts diff --git a/modules/core/src/lib/core/config/index.ts b/modules/core/src/lib/core/config/index.ts new file mode 100644 index 00000000000..0b7be30f3a8 --- /dev/null +++ b/modules/core/src/lib/core/config/index.ts @@ -0,0 +1,41 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './actuators.config'; +export * from './advance-search-config.interface'; +export * from './app-config.interface'; +export * from './auth-config.interfaces'; +export * from './auto-sync-config.interface'; +export * from './browse-by-config.interface'; +export * from './build-config.interface'; +export * from './bulk-access-config-data.service'; +export * from './bundle-config.interface'; +export * from './cache-config.interface'; +export * from './collection-page-config.interface'; +export * from './community-list-config.interface'; +export * from './community-page-config.interface'; +export * from './config-data.service'; +export * from './config.interface'; +export * from './discovery-sort.config'; +export * from './filter-vocabulary-config'; +export * from './form-config.interfaces'; +export * from './homepage-config.interface'; +export * from './info-config.interface'; +export * from './item-config.interface'; +export * from './lang-config.interface'; +export * from './live-region.config'; +export * from './markdown-config.interface'; +export * from './media-viewer-config.interface'; +export * from './notifications-config.interfaces'; +export * from './quality-assurance.config'; +export * from './search-page-config.interface'; +export * from './server-config.interface'; +export * from './ssr-config.interface'; +export * from './submission-accesses-config-data.service'; +export * from './submission-config.interface'; +export * from './submission-forms-config-data.service'; +export * from './submission-uploads-config-data.service'; +export * from './suggestion-config.interfaces'; +export * from './theme.config'; +export * from './theme.constants'; +export * from './ui-server-config.interface'; diff --git a/src/config/info-config.interface.ts b/modules/core/src/lib/core/config/info-config.interface.ts similarity index 100% rename from src/config/info-config.interface.ts rename to modules/core/src/lib/core/config/info-config.interface.ts diff --git a/src/config/item-config.interface.ts b/modules/core/src/lib/core/config/item-config.interface.ts similarity index 100% rename from src/config/item-config.interface.ts rename to modules/core/src/lib/core/config/item-config.interface.ts diff --git a/src/config/lang-config.interface.ts b/modules/core/src/lib/core/config/lang-config.interface.ts similarity index 100% rename from src/config/lang-config.interface.ts rename to modules/core/src/lib/core/config/lang-config.interface.ts diff --git a/src/app/shared/live-region/live-region.config.ts b/modules/core/src/lib/core/config/live-region.config.ts similarity index 74% rename from src/app/shared/live-region/live-region.config.ts rename to modules/core/src/lib/core/config/live-region.config.ts index e545bfd2543..05d379b8957 100644 --- a/src/app/shared/live-region/live-region.config.ts +++ b/modules/core/src/lib/core/config/live-region.config.ts @@ -1,4 +1,4 @@ -import { Config } from '../../../config/config.interface'; +import { Config } from './config.interface'; /** * Configuration interface used by the LiveRegionService diff --git a/src/config/markdown-config.interface.ts b/modules/core/src/lib/core/config/markdown-config.interface.ts similarity index 100% rename from src/config/markdown-config.interface.ts rename to modules/core/src/lib/core/config/markdown-config.interface.ts diff --git a/src/config/media-viewer-config.interface.ts b/modules/core/src/lib/core/config/media-viewer-config.interface.ts similarity index 100% rename from src/config/media-viewer-config.interface.ts rename to modules/core/src/lib/core/config/media-viewer-config.interface.ts diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts b/modules/core/src/lib/core/config/models/admin-notify-metrics.model.ts similarity index 100% rename from src/app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model.ts rename to modules/core/src/lib/core/config/models/admin-notify-metrics.model.ts diff --git a/src/app/core/config/models/bulk-access-condition-options.model.ts b/modules/core/src/lib/core/config/models/bulk-access-condition-options.model.ts similarity index 77% rename from src/app/core/config/models/bulk-access-condition-options.model.ts rename to modules/core/src/lib/core/config/models/bulk-access-condition-options.model.ts index 514c682b4e5..b9da4a4ff14 100644 --- a/src/app/core/config/models/bulk-access-condition-options.model.ts +++ b/modules/core/src/lib/core/config/models/bulk-access-condition-options.model.ts @@ -4,10 +4,10 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { HALLink } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { ConfigObject } from './config.model'; import { AccessesConditionOption } from './config-accesses-conditions-options.model'; import { BULK_ACCESS_CONDITION_OPTIONS } from './config-type'; diff --git a/src/app/core/config/models/config-access-condition-option.model.ts b/modules/core/src/lib/core/config/models/config-access-condition-option.model.ts similarity index 100% rename from src/app/core/config/models/config-access-condition-option.model.ts rename to modules/core/src/lib/core/config/models/config-access-condition-option.model.ts diff --git a/src/app/core/config/models/config-accesses-conditions-options.model.ts b/modules/core/src/lib/core/config/models/config-accesses-conditions-options.model.ts similarity index 100% rename from src/app/core/config/models/config-accesses-conditions-options.model.ts rename to modules/core/src/lib/core/config/models/config-accesses-conditions-options.model.ts diff --git a/src/app/core/config/models/config-submission-access.model.ts b/modules/core/src/lib/core/config/models/config-submission-access.model.ts similarity index 89% rename from src/app/core/config/models/config-submission-access.model.ts rename to modules/core/src/lib/core/config/models/config-submission-access.model.ts index 2e9a9291835..1c4815e89a0 100644 --- a/src/app/core/config/models/config-submission-access.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-access.model.ts @@ -4,8 +4,8 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { HALLink } from '../../shared/hal-link.model'; +import { typedObject } from '../../cache'; +import { HALLink } from '../../shared'; import { ConfigObject } from './config.model'; import { AccessesConditionOption } from './config-accesses-conditions-options.model'; import { SUBMISSION_ACCESSES_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-submission-accesses.model.ts b/modules/core/src/lib/core/config/models/config-submission-accesses.model.ts similarity index 83% rename from src/app/core/config/models/config-submission-accesses.model.ts rename to modules/core/src/lib/core/config/models/config-submission-accesses.model.ts index b3c097cc8ac..b5feb0ebf57 100644 --- a/src/app/core/config/models/config-submission-accesses.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-accesses.model.ts @@ -1,6 +1,6 @@ import { inheritSerialization } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; +import { typedObject } from '../../cache'; import { SubmissionAccessModel } from './config-submission-access.model'; import { SUBMISSION_ACCESSES_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-submission-definition.model.ts b/modules/core/src/lib/core/config/models/config-submission-definition.model.ts similarity index 84% rename from src/app/core/config/models/config-submission-definition.model.ts rename to modules/core/src/lib/core/config/models/config-submission-definition.model.ts index eda4f54340b..c6427c182bc 100644 --- a/src/app/core/config/models/config-submission-definition.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-definition.model.ts @@ -4,9 +4,9 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { HALLink } from '../../shared/hal-link.model'; +import { typedObject } from '../../cache'; +import { PaginatedList } from '../../data'; +import { HALLink } from '../../shared'; import { ConfigObject } from './config.model'; import { SubmissionSectionModel } from './config-submission-section.model'; import { SUBMISSION_DEFINITION_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-submission-definitions.model.ts b/modules/core/src/lib/core/config/models/config-submission-definitions.model.ts similarity index 84% rename from src/app/core/config/models/config-submission-definitions.model.ts rename to modules/core/src/lib/core/config/models/config-submission-definitions.model.ts index 790334da9bd..e96074b050a 100644 --- a/src/app/core/config/models/config-submission-definitions.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-definitions.model.ts @@ -1,6 +1,6 @@ import { inheritSerialization } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; +import { typedObject } from '../../cache'; import { SubmissionDefinitionModel } from './config-submission-definition.model'; import { SUBMISSION_DEFINITIONS_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-submission-form.model.ts b/modules/core/src/lib/core/config/models/config-submission-form.model.ts similarity index 79% rename from src/app/core/config/models/config-submission-form.model.ts rename to modules/core/src/lib/core/config/models/config-submission-form.model.ts index c524a839160..fe1ed4fe8c7 100644 --- a/src/app/core/config/models/config-submission-form.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-form.model.ts @@ -3,8 +3,8 @@ import { inheritSerialization, } from 'cerialize'; -import { FormFieldModel } from '../../../shared/form/builder/models/form-field.model'; -import { typedObject } from '../../cache/builders/build-decorators'; +import { typedObject } from '../../cache'; +import { FormFieldModel } from '../../shared'; import { ConfigObject } from './config.model'; import { SUBMISSION_FORM_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-submission-forms.model.ts b/modules/core/src/lib/core/config/models/config-submission-forms.model.ts similarity index 84% rename from src/app/core/config/models/config-submission-forms.model.ts rename to modules/core/src/lib/core/config/models/config-submission-forms.model.ts index 4cf71d85d9a..acdc68c75a1 100644 --- a/src/app/core/config/models/config-submission-forms.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-forms.model.ts @@ -1,6 +1,6 @@ import { inheritSerialization } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; +import { typedObject } from '../../cache'; import { SubmissionFormModel } from './config-submission-form.model'; import { SUBMISSION_FORMS_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-submission-section.model.ts b/modules/core/src/lib/core/config/models/config-submission-section.model.ts similarity index 80% rename from src/app/core/config/models/config-submission-section.model.ts rename to modules/core/src/lib/core/config/models/config-submission-section.model.ts index 13e19544dcf..6342f343d2a 100644 --- a/src/app/core/config/models/config-submission-section.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-section.model.ts @@ -7,10 +7,10 @@ import { import { SectionScope, SectionVisibility, -} from '../../../submission/objects/section-visibility.model'; -import { SectionsType } from '../../../submission/sections/sections-type'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { HALLink } from '../../shared/hal-link.model'; +} from '../../submission'; +import { SectionsType } from '../../submission'; +import { typedObject } from '../../cache'; +import { HALLink } from '../../shared'; import { ConfigObject } from './config.model'; import { SUBMISSION_SECTION_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-submission-sections.model.ts b/modules/core/src/lib/core/config/models/config-submission-sections.model.ts similarity index 83% rename from src/app/core/config/models/config-submission-sections.model.ts rename to modules/core/src/lib/core/config/models/config-submission-sections.model.ts index 86894b6e44b..9fcb1c75e8b 100644 --- a/src/app/core/config/models/config-submission-sections.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-sections.model.ts @@ -1,6 +1,6 @@ import { inheritSerialization } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; +import { typedObject } from '../../cache'; import { SubmissionSectionModel } from './config-submission-section.model'; import { SUBMISSION_SECTIONS_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-submission-upload.model.ts b/modules/core/src/lib/core/config/models/config-submission-upload.model.ts similarity index 87% rename from src/app/core/config/models/config-submission-upload.model.ts rename to modules/core/src/lib/core/config/models/config-submission-upload.model.ts index cabc84d0f55..863b6827585 100644 --- a/src/app/core/config/models/config-submission-upload.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-upload.model.ts @@ -8,9 +8,9 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { RemoteData } from '../../data/remote-data'; -import { HALLink } from '../../shared/hal-link.model'; +} from '../../cache'; +import { RemoteData } from '../../data'; +import { HALLink } from '../../shared'; import { ConfigObject } from './config.model'; import { AccessConditionOption } from './config-access-condition-option.model'; import { SubmissionFormsModel } from './config-submission-forms.model'; diff --git a/src/app/core/config/models/config-submission-uploads.model.ts b/modules/core/src/lib/core/config/models/config-submission-uploads.model.ts similarity index 83% rename from src/app/core/config/models/config-submission-uploads.model.ts rename to modules/core/src/lib/core/config/models/config-submission-uploads.model.ts index 235cdd31a1e..64c5f54d495 100644 --- a/src/app/core/config/models/config-submission-uploads.model.ts +++ b/modules/core/src/lib/core/config/models/config-submission-uploads.model.ts @@ -1,6 +1,6 @@ import { inheritSerialization } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; +import { typedObject } from '../../cache'; import { SubmissionUploadModel } from './config-submission-upload.model'; import { SUBMISSION_UPLOADS_TYPE } from './config-type'; diff --git a/src/app/core/config/models/config-type.ts b/modules/core/src/lib/core/config/models/config-type.ts similarity index 93% rename from src/app/core/config/models/config-type.ts rename to modules/core/src/lib/core/config/models/config-type.ts index 5733f5bfadc..7aad628b1cc 100644 --- a/src/app/core/config/models/config-type.ts +++ b/modules/core/src/lib/core/config/models/config-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; export const SUBMISSION_DEFINITIONS_TYPE = new ResourceType('submissiondefinitions'); diff --git a/src/app/core/config/models/config.model.ts b/modules/core/src/lib/core/config/models/config.model.ts similarity index 69% rename from src/app/core/config/models/config.model.ts rename to modules/core/src/lib/core/config/models/config.model.ts index 74d090b89db..a001313c5aa 100644 --- a/src/app/core/config/models/config.model.ts +++ b/modules/core/src/lib/core/config/models/config.model.ts @@ -3,10 +3,10 @@ import { deserialize, } from 'cerialize'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { CacheableObject } from '../../cache'; +import { HALLink } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; export abstract class ConfigObject implements CacheableObject { diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-constants.ts b/modules/core/src/lib/core/config/models/ds-dynamic-form-constants.ts similarity index 100% rename from src/app/shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-constants.ts rename to modules/core/src/lib/core/config/models/ds-dynamic-form-constants.ts diff --git a/src/app/shared/form/builder/models/form-field-language-value.model.ts b/modules/core/src/lib/core/config/models/form-field-language-value.model.ts similarity index 100% rename from src/app/shared/form/builder/models/form-field-language-value.model.ts rename to modules/core/src/lib/core/config/models/form-field-language-value.model.ts diff --git a/src/app/shared/form/builder/models/form-field-metadata-value.model.ts b/modules/core/src/lib/core/config/models/form-field-metadata-value.model.ts similarity index 92% rename from src/app/shared/form/builder/models/form-field-metadata-value.model.ts rename to modules/core/src/lib/core/config/models/form-field-metadata-value.model.ts index b36e793f446..0973dce40a4 100644 --- a/src/app/shared/form/builder/models/form-field-metadata-value.model.ts +++ b/modules/core/src/lib/core/config/models/form-field-metadata-value.model.ts @@ -1,15 +1,16 @@ -import { ConfidenceType } from '../../../../core/shared/confidence-type'; -import { - MetadataValueInterface, - VIRTUAL_METADATA_PREFIX, -} from '../../../../core/shared/metadata.models'; import { hasValue, isEmpty, isNotEmpty, isNotNull, -} from '../../../empty.util'; -import { PLACEHOLDER_PARENT_METADATA } from '../ds-dynamic-form-ui/ds-dynamic-form-constants'; +} from '@dspace/shared/utils'; + +import { ConfidenceType } from '../../shared'; +import { + MetadataValueInterface, + VIRTUAL_METADATA_PREFIX, +} from '../../shared'; +import { PLACEHOLDER_PARENT_METADATA } from './ds-dynamic-form-constants'; export interface OtherInformation { [name: string]: string; diff --git a/modules/core/src/lib/core/config/models/index.ts b/modules/core/src/lib/core/config/models/index.ts new file mode 100644 index 00000000000..818f038dcc2 --- /dev/null +++ b/modules/core/src/lib/core/config/models/index.ts @@ -0,0 +1,24 @@ +// created from 'create-ts-index' + +export * from './admin-notify-metrics.model'; +export * from './bulk-access-condition-options.model'; +export * from './config-access-condition-option.model'; +export * from './config-accesses-conditions-options.model'; +export * from './config-submission-access.model'; +export * from './config-submission-accesses.model'; +export * from './config-submission-definition.model'; +export * from './config-submission-definitions.model'; +export * from './config-submission-form.model'; +export * from './config-submission-forms.model'; +export * from './config-submission-section.model'; +export * from './config-submission-sections.model'; +export * from './config-submission-upload.model'; +export * from './config-submission-uploads.model'; +export * from './config-type'; +export * from './config.model'; +export * from './ds-dynamic-form-constants'; +export * from './form-field-language-value.model'; +export * from './form-field-metadata-value.model'; +export * from './input-suggestions.model'; +export * from './key-value-pair.model'; +export * from './search-result-element-decorator'; diff --git a/src/app/shared/input-suggestions/input-suggestions.model.ts b/modules/core/src/lib/core/config/models/input-suggestions.model.ts similarity index 100% rename from src/app/shared/input-suggestions/input-suggestions.model.ts rename to modules/core/src/lib/core/config/models/input-suggestions.model.ts diff --git a/src/app/shared/key-value-pair.model.ts b/modules/core/src/lib/core/config/models/key-value-pair.model.ts similarity index 100% rename from src/app/shared/key-value-pair.model.ts rename to modules/core/src/lib/core/config/models/key-value-pair.model.ts diff --git a/modules/core/src/lib/core/config/models/search-result-element-decorator.ts b/modules/core/src/lib/core/config/models/search-result-element-decorator.ts new file mode 100644 index 00000000000..734d995d823 --- /dev/null +++ b/modules/core/src/lib/core/config/models/search-result-element-decorator.ts @@ -0,0 +1,43 @@ +import { AdminNotifySearchResult } from '../../admin/admin-notify-message/models/admin-notify-message-search-result.model'; +import { AdminNotifyMessage } from '../../admin/admin-notify-message/models/admin-notify-message.model'; +import { ClaimedTaskSearchResult } from '../../object-collection/claimed-task-search-result.model'; +import { CollectionSearchResult } from '../../object-collection/collection-search-result.model'; +import { CommunitySearchResult } from '../../object-collection/community-search-result.model'; +import { ItemSearchResult } from '../../object-collection/item-search-result.model'; +import { ListableObject } from '../../object-collection/listable-object.model'; +import { PoolTaskSearchResult } from '../../object-collection/pool-task-search-result.model'; +import { WorkflowItemSearchResult } from '../../object-collection/workflow-item-search-result.model'; +import { WorkspaceItemSearchResult } from '../../object-collection/workspace-item-search-result.model'; +import { Collection } from '../../shared/collection.model'; +import { Community } from '../../shared/community.model'; +import { GenericConstructor } from '../../shared/generic-constructor'; +import { Item } from '../../shared/item.model'; +import { WorkflowItem } from '../../submission/models/workflowitem.model'; +import { WorkspaceItem } from '../../submission/models/workspaceitem.model'; +import { ClaimedTask } from '../../tasks/models/claimed-task-object.model'; +import { PoolTask } from '../../tasks/models/pool-task-object.model'; + + +/** + * Contains the mapping between a search result component and a DSpaceObject + */ +export const SEARCH_RESULT_MAP = new Map, GenericConstructor>([ + [AdminNotifyMessage, AdminNotifySearchResult], + [ClaimedTask, ClaimedTaskSearchResult], + [PoolTask, PoolTaskSearchResult], + [Collection, CollectionSearchResult], + [Community, CommunitySearchResult], + [Item, ItemSearchResult], + [WorkflowItem, WorkflowItemSearchResult], + [WorkspaceItem, WorkspaceItemSearchResult], +]); + + +/** + * Requests the matching component based on a given DSpaceObject's constructor + * @param {GenericConstructor} domainConstructor The DSpaceObject's constructor for which the search result component is requested + * @returns The component's constructor that matches the given DSpaceObject + */ +export function getSearchResultFor(domainConstructor: GenericConstructor) { + return SEARCH_RESULT_MAP.get(domainConstructor); +} diff --git a/src/config/notifications-config.interfaces.ts b/modules/core/src/lib/core/config/notifications-config.interfaces.ts similarity index 73% rename from src/config/notifications-config.interfaces.ts rename to modules/core/src/lib/core/config/notifications-config.interfaces.ts index e57907c1bf7..bd286cdfbe9 100644 --- a/src/config/notifications-config.interfaces.ts +++ b/modules/core/src/lib/core/config/notifications-config.interfaces.ts @@ -1,4 +1,4 @@ -import { NotificationAnimationsType } from '../app/shared/notifications/models/notification-animations-type'; +import { NotificationAnimationsType } from '../notifications'; import { Config } from './config.interface'; export interface INotificationBoardOptions extends Config { diff --git a/src/config/quality-assurance.config.ts b/modules/core/src/lib/core/config/quality-assurance.config.ts similarity index 100% rename from src/config/quality-assurance.config.ts rename to modules/core/src/lib/core/config/quality-assurance.config.ts diff --git a/src/config/search-page-config.interface.ts b/modules/core/src/lib/core/config/search-page-config.interface.ts similarity index 93% rename from src/config/search-page-config.interface.ts rename to modules/core/src/lib/core/config/search-page-config.interface.ts index 55733c98e4d..658b76f7f0a 100644 --- a/src/config/search-page-config.interface.ts +++ b/modules/core/src/lib/core/config/search-page-config.interface.ts @@ -1,7 +1,7 @@ import { AdvancedSearchConfig } from './advance-search-config.interface'; import { Config } from './config.interface'; -export interface SearchConfig extends Config { +export interface SearchPageConfig extends Config { /** * List of standard filter to select in adding advanced Search diff --git a/src/config/server-config.interface.ts b/modules/core/src/lib/core/config/server-config.interface.ts similarity index 100% rename from src/config/server-config.interface.ts rename to modules/core/src/lib/core/config/server-config.interface.ts diff --git a/src/config/ssr-config.interface.ts b/modules/core/src/lib/core/config/ssr-config.interface.ts similarity index 100% rename from src/config/ssr-config.interface.ts rename to modules/core/src/lib/core/config/ssr-config.interface.ts diff --git a/src/app/core/config/submission-accesses-config-data.service.ts b/modules/core/src/lib/core/config/submission-accesses-config-data.service.ts similarity index 77% rename from src/app/core/config/submission-accesses-config-data.service.ts rename to modules/core/src/lib/core/config/submission-accesses-config-data.service.ts index bc7a7e66d3c..52eb78e0384 100644 --- a/src/app/core/config/submission-accesses-config-data.service.ts +++ b/modules/core/src/lib/core/config/submission-accesses-config-data.service.ts @@ -1,15 +1,15 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { FollowLinkConfig } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { ConfigDataService } from './config-data.service'; -import { ConfigObject } from './models/config.model'; -import { SubmissionAccessesModel } from './models/config-submission-accesses.model'; +import { ConfigObject } from './models'; +import { SubmissionAccessesModel } from './models'; /** * Provides methods to retrieve, from REST server, bitstream access conditions configurations applicable during the submission process. diff --git a/src/config/submission-config.interface.ts b/modules/core/src/lib/core/config/submission-config.interface.ts similarity index 100% rename from src/config/submission-config.interface.ts rename to modules/core/src/lib/core/config/submission-config.interface.ts diff --git a/src/app/core/config/submission-forms-config-data.service.ts b/modules/core/src/lib/core/config/submission-forms-config-data.service.ts similarity index 78% rename from src/app/core/config/submission-forms-config-data.service.ts rename to modules/core/src/lib/core/config/submission-forms-config-data.service.ts index fe1234defb3..da00bd7fd02 100644 --- a/src/app/core/config/submission-forms-config-data.service.ts +++ b/modules/core/src/lib/core/config/submission-forms-config-data.service.ts @@ -1,15 +1,15 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { FollowLinkConfig } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { ConfigDataService } from './config-data.service'; -import { ConfigObject } from './models/config.model'; -import { SubmissionFormsModel } from './models/config-submission-forms.model'; +import { ConfigObject } from './models'; +import { SubmissionFormsModel } from './models'; /** * Data service to retrieve submission form configuration objects from the REST server. diff --git a/src/app/core/config/submission-uploads-config-data.service.ts b/modules/core/src/lib/core/config/submission-uploads-config-data.service.ts similarity index 65% rename from src/app/core/config/submission-uploads-config-data.service.ts rename to modules/core/src/lib/core/config/submission-uploads-config-data.service.ts index 10d749080e4..631d26c9d84 100644 --- a/src/app/core/config/submission-uploads-config-data.service.ts +++ b/modules/core/src/lib/core/config/submission-uploads-config-data.service.ts @@ -1,15 +1,15 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { FollowLinkConfig } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { ConfigDataService } from './config-data.service'; -import { ConfigObject } from './models/config.model'; -import { SubmissionUploadsModel } from './models/config-submission-uploads.model'; +import { ConfigObject } from './models'; +import { SubmissionUploadsModel } from './models'; /** * Provides methods to retrieve, from REST server, bitstream access conditions configurations applicable during the submission process. diff --git a/src/config/suggestion-config.interfaces.ts b/modules/core/src/lib/core/config/suggestion-config.interfaces.ts similarity index 100% rename from src/config/suggestion-config.interfaces.ts rename to modules/core/src/lib/core/config/suggestion-config.interfaces.ts diff --git a/src/config/theme.config.ts b/modules/core/src/lib/core/config/theme.config.ts similarity index 100% rename from src/config/theme.config.ts rename to modules/core/src/lib/core/config/theme.config.ts diff --git a/src/app/shared/theme-support/theme.constants.ts b/modules/core/src/lib/core/config/theme.constants.ts similarity index 100% rename from src/app/shared/theme-support/theme.constants.ts rename to modules/core/src/lib/core/config/theme.constants.ts diff --git a/src/config/ui-server-config.interface.ts b/modules/core/src/lib/core/config/ui-server-config.interface.ts similarity index 100% rename from src/config/ui-server-config.interface.ts rename to modules/core/src/lib/core/config/ui-server-config.interface.ts diff --git a/modules/core/src/lib/core/core-state.model.ts b/modules/core/src/lib/core/core-state.model.ts new file mode 100644 index 00000000000..f45859ff807 --- /dev/null +++ b/modules/core/src/lib/core/core-state.model.ts @@ -0,0 +1,39 @@ +import { MetadataRegistryState } from './states'; +import { AuthState } from './auth'; +import { ObjectCacheState } from './cache'; +import { ServerSyncBufferState } from './cache'; +import { ObjectUpdatesState } from './data'; +import { RequestState } from './data'; +import { HistoryState } from './history'; +import { MetaIndexState } from './index'; +import { JsonPatchOperationsState } from './json-patch'; +import { MetaTagState } from './metadata'; +import { RouteState } from './services'; +import { BitstreamFormatRegistryState } from './states'; +import { EPeopleRegistryState } from './states'; +import { GroupRegistryState } from './states'; +import { NameVariantListsState } from './states'; +import { NotificationsState } from "./notifications"; + +/** + * The core sub-state in the NgRx store + */ +export interface CoreState { + 'bitstreamFormats': BitstreamFormatRegistryState; + 'cache/object': ObjectCacheState; + 'cache/syncbuffer': ServerSyncBufferState; + 'cache/object-updates': ObjectUpdatesState; + 'data/request': RequestState; + 'history': HistoryState; + 'index': MetaIndexState; + 'auth': AuthState; + 'json/patch': JsonPatchOperationsState; + 'metaTag': MetaTagState; + 'route': RouteState; + 'epeopleRegistry': EPeopleRegistryState; + 'relationshipLists': NameVariantListsState; + 'metadataRegistry': MetadataRegistryState; + 'groupRegistry': GroupRegistryState; + 'correlationId': string; + 'notifications': NotificationsState; +} diff --git a/modules/core/src/lib/core/core.effects.ts b/modules/core/src/lib/core/core.effects.ts new file mode 100644 index 00000000000..e5fb6f04b8a --- /dev/null +++ b/modules/core/src/lib/core/core.effects.ts @@ -0,0 +1,23 @@ +import { MenuEffects } from './states'; +import { AuthEffects } from './auth'; +import { ObjectCacheEffects } from './cache'; +import { ServerSyncBufferEffects } from './cache'; +import { ObjectUpdatesEffects } from './data'; +import { RequestEffects } from './data'; +import { UUIDIndexEffects } from './index'; +import { JsonPatchOperationsEffects } from './json-patch'; +import { RouterEffects } from './router'; +import { RouteEffects } from './services'; + +export const coreEffects = [ + RequestEffects, + ObjectCacheEffects, + UUIDIndexEffects, + AuthEffects, + JsonPatchOperationsEffects, + ServerSyncBufferEffects, + ObjectUpdatesEffects, + RouteEffects, + RouterEffects, + MenuEffects, +]; diff --git a/modules/core/src/lib/core/core.reducers.ts b/modules/core/src/lib/core/core.reducers.ts new file mode 100644 index 00000000000..7425f1b3830 --- /dev/null +++ b/modules/core/src/lib/core/core.reducers.ts @@ -0,0 +1,40 @@ +import { ActionReducerMap } from '@ngrx/store'; + +import { metadataRegistryReducer } from './states'; +import { authReducer } from './auth'; +import { objectCacheReducer } from './cache'; +import { serverSyncBufferReducer } from './cache'; +import { CoreState } from './core-state.model'; +import { objectUpdatesReducer } from './data'; +import { requestReducer } from './data'; +import { historyReducer } from './history'; +import { indexReducer } from './index'; +import { jsonPatchOperationsReducer } from './json-patch'; +import { metaTagReducer } from './metadata'; +import { routeReducer } from './services'; +import { bitstreamFormatReducer } from './states'; +import { correlationIdReducer } from './states'; +import { ePeopleRegistryReducer } from './states'; +import { groupRegistryReducer } from './states'; +import { nameVariantReducer } from './states'; +import { notificationsReducer } from "./notifications"; + +export const coreReducers: ActionReducerMap = { + 'bitstreamFormats': bitstreamFormatReducer, + 'cache/object': objectCacheReducer, + 'cache/syncbuffer': serverSyncBufferReducer, + 'cache/object-updates': objectUpdatesReducer, + 'data/request': requestReducer, + 'history': historyReducer, + 'index': indexReducer, + 'auth': authReducer, + 'json/patch': jsonPatchOperationsReducer, + 'metaTag': metaTagReducer, + 'route': routeReducer, + 'epeopleRegistry': ePeopleRegistryReducer, + 'relationshipLists': nameVariantReducer, + 'metadataRegistry': metadataRegistryReducer, + 'groupRegistry': groupRegistryReducer, + 'correlationId': correlationIdReducer, + 'notifications': notificationsReducer, +}; diff --git a/src/app/core/core.selectors.ts b/modules/core/src/lib/core/core.selectors.ts similarity index 100% rename from src/app/core/core.selectors.ts rename to modules/core/src/lib/core/core.selectors.ts diff --git a/src/app/correlation-id/correlation-id.service.spec.ts b/modules/core/src/lib/core/correlation-id/correlation-id.service.spec.ts similarity index 82% rename from src/app/correlation-id/correlation-id.service.spec.ts rename to modules/core/src/lib/core/correlation-id/correlation-id.service.spec.ts index 5108ee1713d..2e36b73f3e8 100644 --- a/src/app/correlation-id/correlation-id.service.spec.ts +++ b/modules/core/src/lib/core/correlation-id/correlation-id.service.spec.ts @@ -5,15 +5,13 @@ import { } from '@ngrx/store'; import { MockStore } from '@ngrx/store/testing'; -import { - appReducers, - AppState, - storeModuleConfig, -} from '../app.reducer'; -import { UUIDService } from '../core/shared/uuid.service'; -import { CookieServiceMock } from '../shared/mocks/cookie.service.mock'; -import { SetCorrelationIdAction } from './correlation-id.actions'; import { CorrelationIdService } from './correlation-id.service'; +import { coreReducers } from '../core.reducers'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; +import { CookieServiceMock } from '../mocks/cookie.service.mock'; +import { UUIDService } from '../shared/uuid.service'; +import { CoreState } from '../core-state.model'; +import { SetCorrelationIdAction } from '../states/correlation-id/correlation-id.actions'; describe('CorrelationIdService', () => { let service: CorrelationIdService; @@ -25,7 +23,7 @@ describe('CorrelationIdService', () => { beforeEach(async () => { await TestBed.configureTestingModule({ imports: [ - StoreModule.forRoot(appReducers, storeModuleConfig), + StoreModule.forRoot(coreReducers, mockStoreModuleConfig), ], }).compileComponents(); }); @@ -33,7 +31,7 @@ describe('CorrelationIdService', () => { beforeEach(() => { cookieService = new CookieServiceMock(); uuidService = new UUIDService(); - store = TestBed.inject(Store) as MockStore; + store = TestBed.inject(Store) as MockStore; service = new CorrelationIdService(cookieService, uuidService, store); }); diff --git a/src/app/correlation-id/correlation-id.service.ts b/modules/core/src/lib/core/correlation-id/correlation-id.service.ts similarity index 79% rename from src/app/correlation-id/correlation-id.service.ts rename to modules/core/src/lib/core/correlation-id/correlation-id.service.ts index 057708b9547..d4da605ba99 100644 --- a/src/app/correlation-id/correlation-id.service.ts +++ b/modules/core/src/lib/core/correlation-id/correlation-id.service.ts @@ -1,16 +1,16 @@ import { Injectable } from '@angular/core'; +import { isEmpty } from '@dspace/shared/utils'; import { select, Store, } from '@ngrx/store'; import { take } from 'rxjs/operators'; -import { AppState } from '../app.reducer'; -import { CookieService } from '../core/services/cookie.service'; -import { UUIDService } from '../core/shared/uuid.service'; -import { isEmpty } from '../shared/empty.util'; -import { SetCorrelationIdAction } from './correlation-id.actions'; -import { correlationIdSelector } from './correlation-id.selector'; +import { CoreState } from '../core-state.model'; +import { CookieService } from '../services'; +import { UUIDService } from '../shared'; +import { SetCorrelationIdAction } from '../states'; +import { correlationIdSelector } from '../states'; /** * Service to manage the correlation id, an id used to give context to server side logs @@ -23,7 +23,7 @@ export class CorrelationIdService { constructor( protected cookieService: CookieService, protected uuidService: UUIDService, - protected store: Store, + protected store: Store, ) { } diff --git a/modules/core/src/lib/core/correlation-id/index.ts b/modules/core/src/lib/core/correlation-id/index.ts new file mode 100644 index 00000000000..6a7a36ada87 --- /dev/null +++ b/modules/core/src/lib/core/correlation-id/index.ts @@ -0,0 +1,2 @@ + +export * from './correlation-id.service'; diff --git a/src/app/core/data-services-map.ts b/modules/core/src/lib/core/data-services-map.ts similarity index 58% rename from src/app/core/data-services-map.ts rename to modules/core/src/lib/core/data-services-map.ts index c9ebbc5ffc3..b4840752bc3 100644 --- a/src/app/core/data-services-map.ts +++ b/modules/core/src/lib/core/data-services-map.ts @@ -1,73 +1,78 @@ -import { LazyDataServicesMap } from '../../config/app-config.interface'; +import { Type } from '@angular/core'; + import { LDN_SERVICE, LDN_SERVICE_CONSTRAINT_FILTERS, -} from '../admin/admin-ldn-services/ldn-services-model/ldn-service.resource-type'; -import { ADMIN_NOTIFY_MESSAGE } from '../admin/admin-notify-dashboard/models/admin-notify-message.resource-type'; -import { NOTIFYREQUEST } from '../item-page/simple/notify-requests-status/notify-requests-status.resource-type'; -import { PROCESS } from '../process-page/processes/process.resource-type'; -import { SCRIPT } from '../process-page/scripts/script.resource-type'; -import { ACCESS_STATUS } from '../shared/object-collection/shared/badges/access-status-badge/access-status.resource-type'; -import { DUPLICATE } from '../shared/object-list/duplicate-data/duplicate.resource-type'; -import { IDENTIFIERS } from '../shared/object-list/identifier-data/identifier-data.resource-type'; -import { SUBSCRIPTION } from '../shared/subscriptions/models/subscription.resource-type'; -import { SUBMISSION_COAR_NOTIFY_CONFIG } from '../submission/sections/section-coar-notify/section-coar-notify-service.resource-type'; -import { SYSTEMWIDEALERT } from '../system-wide-alert/system-wide-alert.resource-type'; +} from './data'; +import { ADMIN_NOTIFY_MESSAGE } from './admin'; +import { NOTIFYREQUEST } from './notify-requests'; +import { ACCESS_STATUS } from './access-status'; +import { DUPLICATE } from './data'; +import { SUBSCRIPTION } from './data'; +import { SUBMISSION_COAR_NOTIFY_CONFIG } from './coar-notify'; import { BULK_ACCESS_CONDITION_OPTIONS, SUBMISSION_ACCESSES_TYPE, SUBMISSION_FORMS_TYPE, SUBMISSION_UPLOADS_TYPE, -} from './config/models/config-type'; -import { ROOT } from './data/root.resource-type'; -import { EPERSON } from './eperson/models/eperson.resource-type'; -import { GROUP } from './eperson/models/group.resource-type'; -import { WORKFLOWITEM } from './eperson/models/workflowitem.resource-type'; -import { WORKSPACEITEM } from './eperson/models/workspaceitem.resource-type'; -import { FEEDBACK } from './feedback/models/feedback.resource-type'; -import { METADATA_FIELD } from './metadata/metadata-field.resource-type'; -import { METADATA_SCHEMA } from './metadata/metadata-schema.resource-type'; -import { QUALITY_ASSURANCE_EVENT_OBJECT } from './notifications/qa/models/quality-assurance-event-object.resource-type'; -import { QUALITY_ASSURANCE_SOURCE_OBJECT } from './notifications/qa/models/quality-assurance-source-object.resource-type'; -import { QUALITY_ASSURANCE_TOPIC_OBJECT } from './notifications/qa/models/quality-assurance-topic-object.resource-type'; -import { SUGGESTION } from './notifications/suggestions/models/suggestion-objects.resource-type'; -import { SUGGESTION_SOURCE } from './notifications/suggestions/models/suggestion-source-object.resource-type'; -import { SUGGESTION_TARGET } from './notifications/suggestions/models/suggestion-target-object.resource-type'; -import { ORCID_HISTORY } from './orcid/model/orcid-history.resource-type'; -import { ORCID_QUEUE } from './orcid/model/orcid-queue.resource-type'; -import { RESEARCHER_PROFILE } from './profile/model/researcher-profile.resource-type'; -import { RESOURCE_POLICY } from './resource-policy/models/resource-policy.resource-type'; -import { AUTHORIZATION } from './shared/authorization.resource-type'; -import { BITSTREAM } from './shared/bitstream.resource-type'; -import { BITSTREAM_FORMAT } from './shared/bitstream-format.resource-type'; -import { BROWSE_DEFINITION } from './shared/browse-definition.resource-type'; -import { BUNDLE } from './shared/bundle.resource-type'; -import { COLLECTION } from './shared/collection.resource-type'; -import { COMMUNITY } from './shared/community.resource-type'; -import { CONFIG_PROPERTY } from './shared/config-property.resource-type'; -import { DSPACE_OBJECT } from './shared/dspace-object.resource-type'; -import { FEATURE } from './shared/feature.resource-type'; -import { ITEM } from './shared/item.resource-type'; -import { ITEM_TYPE } from './shared/item-relationships/item-type.resource-type'; -import { RELATIONSHIP } from './shared/item-relationships/relationship.resource-type'; -import { RELATIONSHIP_TYPE } from './shared/item-relationships/relationship-type.resource-type'; -import { LICENSE } from './shared/license.resource-type'; -import { SITE } from './shared/site.resource-type'; -import { VERSION } from './shared/version.resource-type'; -import { VERSION_HISTORY } from './shared/version-history.resource-type'; -import { USAGE_REPORT } from './statistics/models/usage-report.resource-type'; -import { CorrectionType } from './submission/models/correctiontype.model'; -import { SUBMISSION_CC_LICENSE } from './submission/models/submission-cc-licence.resource-type'; -import { SUBMISSION_CC_LICENSE_URL } from './submission/models/submission-cc-licence-link.resource-type'; +} from './config'; +import { HALDataService } from './data'; +import { IDENTIFIERS } from './data'; +import { ROOT } from './data'; +import { EPERSON } from './eperson'; +import { GROUP } from './eperson'; +import { WORKFLOWITEM } from './eperson'; +import { WORKSPACEITEM } from './eperson'; +import { FEEDBACK } from './feedback'; +import { METADATA_FIELD } from './metadata'; +import { METADATA_SCHEMA } from './metadata'; +import { QUALITY_ASSURANCE_EVENT_OBJECT } from './notifications'; +import { QUALITY_ASSURANCE_SOURCE_OBJECT } from './notifications'; +import { QUALITY_ASSURANCE_TOPIC_OBJECT } from './notifications'; +import { SUGGESTION } from './notifications'; +import { SUGGESTION_SOURCE } from './notifications'; +import { SUGGESTION_TARGET } from './notifications'; +import { ORCID_HISTORY } from './orcid'; +import { ORCID_QUEUE } from './orcid'; +import { PROCESS } from './processes'; +import { RESEARCHER_PROFILE } from './profile'; +import { RESOURCE_POLICY } from './resource-policy'; +import { SCRIPT } from './scripts'; +import { AUTHORIZATION } from './shared'; +import { BITSTREAM } from './shared'; +import { BITSTREAM_FORMAT } from './shared'; +import { BROWSE_DEFINITION } from './shared'; +import { BUNDLE } from './shared'; +import { COLLECTION } from './shared'; +import { COMMUNITY } from './shared'; +import { CONFIG_PROPERTY } from './shared'; +import { DSPACE_OBJECT } from './shared'; +import { FEATURE } from './shared'; +import { ITEM } from './shared'; +import { ITEM_TYPE } from './shared'; +import { RELATIONSHIP } from './shared'; +import { RELATIONSHIP_TYPE } from './shared'; +import { LICENSE } from './shared'; +import { SITE } from './shared'; +import { VERSION } from './shared'; +import { VERSION_HISTORY } from './shared'; +import { USAGE_REPORT } from './statistics'; +import { CorrectionType } from './submission'; +import { SUBMISSION_CC_LICENSE } from './submission'; +import { SUBMISSION_CC_LICENSE_URL } from './submission'; import { VOCABULARY, VOCABULARY_ENTRY, VOCABULARY_ENTRY_DETAIL, -} from './submission/vocabularies/models/vocabularies.resource-type'; -import { SUPERVISION_ORDER } from './supervision-order/models/supervision-order.resource-type'; -import { CLAIMED_TASK } from './tasks/models/claimed-task-object.resource-type'; -import { POOL_TASK } from './tasks/models/pool-task-object.resource-type'; -import { WORKFLOW_ACTION } from './tasks/models/workflow-action-object.resource-type'; +} from './submission'; +import { SUPERVISION_ORDER } from './supervision-order'; +import { SYSTEMWIDEALERT } from './system-wide-alert'; +import { CLAIMED_TASK } from './tasks'; +import { POOL_TASK } from './tasks'; +import { WORKFLOW_ACTION } from './tasks'; + +export type LazyDataServicesMap = Map Promise> | { default: HALDataService }>>; + export const LAZY_DATA_SERVICES: LazyDataServicesMap = new Map([ [AUTHORIZATION.value, () => import('./data/feature-authorization/authorization-data.service').then(m => m.AuthorizationDataService)], @@ -85,7 +90,7 @@ export const LAZY_DATA_SERVICES: LazyDataServicesMap = new Map([ [VOCABULARY_ENTRY.value, () => import('./data/href-only-data.service').then(m => m.HrefOnlyDataService)], [ITEM_TYPE.value, () => import('./data/href-only-data.service').then(m => m.HrefOnlyDataService)], [LICENSE.value, () => import('./data/href-only-data.service').then(m => m.HrefOnlyDataService)], - [SUBSCRIPTION.value, () => import('../shared/subscriptions/subscriptions-data.service').then(m => m.SubscriptionsDataService)], + [SUBSCRIPTION.value, () => import('./data/subscriptions-data.service').then(m => m.SubscriptionsDataService)], [COMMUNITY.value, () => import('./data/community-data.service').then(m => m.CommunityDataService)], [VOCABULARY.value, () => import('./submission/vocabularies/vocabulary.data.service').then(m => m.VocabularyDataService)], [BUNDLE.value, () => import('./data/bundle-data.service').then(m => m.BundleDataService)], @@ -122,10 +127,10 @@ export const LAZY_DATA_SERVICES: LazyDataServicesMap = new Map([ [FEATURE.value, () => import('./data/feature-authorization/authorization-data.service').then(m => m.AuthorizationDataService)], [DSPACE_OBJECT.value, () => import('./data/dspace-object-data.service').then(m => m.DSpaceObjectDataService)], [BITSTREAM_FORMAT.value, () => import('./data/bitstream-format-data.service').then(m => m.BitstreamFormatDataService)], - [SUBMISSION_COAR_NOTIFY_CONFIG.value, () => import('../submission/sections/section-coar-notify/coar-notify-config-data.service').then(m => m.CoarNotifyConfigDataService)], - [LDN_SERVICE_CONSTRAINT_FILTERS.value, () => import('../admin/admin-ldn-services/ldn-services-data/ldn-itemfilters-data.service').then(m => m.LdnItemfiltersService)], - [LDN_SERVICE.value, () => import('../admin/admin-ldn-services/ldn-services-data/ldn-services-data.service').then(m => m.LdnServicesService)], - [ADMIN_NOTIFY_MESSAGE.value, () => import('../admin/admin-notify-dashboard/services/admin-notify-messages.service').then(m => m.AdminNotifyMessagesService)], + [SUBMISSION_COAR_NOTIFY_CONFIG.value, () => import('./coar-notify/coar-notify-config-data.service').then(m => m.CoarNotifyConfigDataService)], + [LDN_SERVICE_CONSTRAINT_FILTERS.value, () => import('./admin/ldn-services-data/ldn-itemfilters-data.service').then(m => m.LdnItemfiltersService)], + [LDN_SERVICE.value, () => import('./admin/ldn-services-data/ldn-services-data.service').then(m => m.LdnServicesService)], + [ADMIN_NOTIFY_MESSAGE.value, () => import('./admin/admin-notify-message/admin-notify-messages.service').then(m => m.AdminNotifyMessagesService)], [SUBMISSION_FORMS_TYPE.value, () => import('./config/submission-forms-config-data.service').then(m => m.SubmissionFormsConfigDataService)], [NOTIFYREQUEST.value, () => import('./data/notify-services-status-data.service').then(m => m.NotifyRequestsStatusDataService)], [QUALITY_ASSURANCE_EVENT_OBJECT.value, () => import('./notifications/qa/events/quality-assurance-event-data.service').then(m => m.QualityAssuranceEventDataService)], diff --git a/src/app/core/data/access-status-data.service.spec.ts b/modules/core/src/lib/core/data/access-status-data.service.spec.ts similarity index 88% rename from src/app/core/data/access-status-data.service.spec.ts rename to modules/core/src/lib/core/data/access-status-data.service.spec.ts index ed587c26d2f..016a81b266b 100644 --- a/src/app/core/data/access-status-data.service.spec.ts +++ b/modules/core/src/lib/core/data/access-status-data.service.spec.ts @@ -2,16 +2,16 @@ import { fakeAsync, tick, } from '@angular/core/testing'; +import { hasNoValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; -import { hasNoValue } from '../../shared/empty.util'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { getMockRequestService } from '../mocks/request.service.mock'; import { Item } from '../shared/item.model'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { NotificationsServiceStub } from '../utilities/testing/notifications-service.stub'; import { AccessStatusDataService } from './access-status-data.service'; import { RemoteData } from './remote-data'; import { GetRequest } from './request.models'; diff --git a/src/app/core/data/access-status-data.service.ts b/modules/core/src/lib/core/data/access-status-data.service.ts similarity index 68% rename from src/app/core/data/access-status-data.service.ts rename to modules/core/src/lib/core/data/access-status-data.service.ts index 6d8acb1c8b4..f74d7d0bc64 100644 --- a/src/app/core/data/access-status-data.service.ts +++ b/modules/core/src/lib/core/data/access-status-data.service.ts @@ -1,12 +1,12 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { AccessStatusObject } from 'src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model'; +import { AccessStatusObject } from '../access-status'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; -import { BaseDataService } from './base/base-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; +import { BaseDataService } from './base'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/array-move-change-analyzer.service.spec.ts b/modules/core/src/lib/core/data/array-move-change-analyzer.service.spec.ts similarity index 99% rename from src/app/core/data/array-move-change-analyzer.service.spec.ts rename to modules/core/src/lib/core/data/array-move-change-analyzer.service.spec.ts index cf11decde4c..75465cc7721 100644 --- a/src/app/core/data/array-move-change-analyzer.service.spec.ts +++ b/modules/core/src/lib/core/data/array-move-change-analyzer.service.spec.ts @@ -3,6 +3,8 @@ import { Operation } from 'fast-json-patch'; import { ArrayMoveChangeAnalyzer } from './array-move-change-analyzer.service'; + + /** * Helper class for creating move tests * Define a "from" and "to" index to move objects within the array before comparing diff --git a/src/app/core/data/array-move-change-analyzer.service.ts b/modules/core/src/lib/core/data/array-move-change-analyzer.service.ts similarity index 96% rename from src/app/core/data/array-move-change-analyzer.service.ts rename to modules/core/src/lib/core/data/array-move-change-analyzer.service.ts index bd5fc8dedb3..5c338163948 100644 --- a/src/app/core/data/array-move-change-analyzer.service.ts +++ b/modules/core/src/lib/core/data/array-move-change-analyzer.service.ts @@ -1,9 +1,8 @@ import { moveItemInArray } from '@angular/cdk/drag-drop'; import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { MoveOperation } from 'fast-json-patch'; -import { hasValue } from '../../shared/empty.util'; - /** * A class to determine move operations between two arrays */ diff --git a/src/app/core/data/base-response-parsing.service.spec.ts b/modules/core/src/lib/core/data/base-response-parsing.service.spec.ts similarity index 100% rename from src/app/core/data/base-response-parsing.service.spec.ts rename to modules/core/src/lib/core/data/base-response-parsing.service.spec.ts diff --git a/src/app/core/data/base-response-parsing.service.ts b/modules/core/src/lib/core/data/base-response-parsing.service.ts similarity index 91% rename from src/app/core/data/base-response-parsing.service.ts rename to modules/core/src/lib/core/data/base-response-parsing.service.ts index 63b4961b313..3c7fb0f6f6a 100644 --- a/src/app/core/data/base-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/base-response-parsing.service.ts @@ -1,17 +1,22 @@ /* eslint-disable max-classes-per-file */ -import { environment } from '../../../environments/environment'; +import { inject } from '@angular/core'; import { hasNoValue, hasValue, isNotEmpty, -} from '../../shared/empty.util'; -import { getClassForType } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; +} from '@dspace/shared/utils'; + +import { getClassForType } from '../cache'; +import { CacheableObject } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { + APP_CONFIG, + AppConfig, +} from '../config'; +import { DSpaceSerializer } from '../dspace-rest'; import { Serializer } from '../serializer'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { PageInfo } from '../shared/page-info.model'; +import { GenericConstructor } from '../shared'; +import { PageInfo } from '../shared'; import { buildPaginatedList, PaginatedList, @@ -48,6 +53,9 @@ export abstract class BaseResponseParsingService { protected shouldDirectlyAttachEmbeds = false; protected serializerConstructor: GenericConstructor> = DSpaceSerializer; + private readonly appConfig: AppConfig = inject(APP_CONFIG); + + protected process(data: any, request: RestRequest, alternativeURL?: string): any { if (isNotEmpty(data)) { if (hasNoValue(data) || (typeof data !== 'object')) { @@ -155,7 +163,7 @@ export abstract class BaseResponseParsingService { return; } - this.objectCache.add(co, hasValue(request.responseMsToLive) ? request.responseMsToLive : environment.cache.msToLive.default, request.uuid, alternativeURL); + this.objectCache.add(co, hasValue(request.responseMsToLive) ? request.responseMsToLive : this.appConfig.cache.msToLive.default, request.uuid, alternativeURL); } processPageInfo(payload: any): PageInfo { diff --git a/src/app/core/data/base/base-data.service.spec.ts b/modules/core/src/lib/core/data/base/base-data.service.spec.ts similarity index 98% rename from src/app/core/data/base/base-data.service.spec.ts rename to modules/core/src/lib/core/data/base/base-data.service.spec.ts index 6f323956672..d3535cd2450 100644 --- a/src/app/core/data/base/base-data.service.spec.ts +++ b/modules/core/src/lib/core/data/base/base-data.service.spec.ts @@ -17,16 +17,6 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject$, -} from '../../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../../shared/testing/hal-endpoint-service.stub'; -import { ObjectCacheServiceStub } from '../../../shared/testing/object-cache-service.stub'; -import { createPaginatedList } from '../../../shared/testing/utils.test'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; import { link, typedObject, @@ -34,12 +24,22 @@ import { import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { ObjectCacheEntry } from '../../cache/object-cache.reducer'; import { ObjectCacheService } from '../../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; import { BITSTREAM } from '../../shared/bitstream.resource-type'; import { COLLECTION } from '../../shared/collection.resource-type'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; import { HALLink } from '../../shared/hal-link.model'; import { ResourceType } from '../../shared/resource-type'; +import { + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject$, +} from '../../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../../utilities/testing/hal-endpoint-service.stub'; +import { ObjectCacheServiceStub } from '../../utilities/testing/object-cache-service.stub'; +import { createPaginatedList } from '../../utilities/testing/utils.test'; import { FindListOptions } from '../find-list-options.model'; +import { followLink } from '../follow-link-config.model'; import { PaginatedList } from '../paginated-list.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/base/base-data.service.ts b/modules/core/src/lib/core/data/base/base-data.service.ts similarity index 96% rename from src/app/core/data/base/base-data.service.ts rename to modules/core/src/lib/core/data/base/base-data.service.ts index da36461240a..cc6eabde7d8 100644 --- a/src/app/core/data/base/base-data.service.ts +++ b/modules/core/src/lib/core/data/base/base-data.service.ts @@ -6,6 +6,11 @@ * http://www.dspace.org/license/ */ +import { + hasValue, + isNotEmpty, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { AsyncSubject, from as observableFrom, @@ -23,27 +28,22 @@ import { toArray, } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, - isNotEmptyOperator, -} from '../../../shared/empty.util'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; import { getLinkDefinition, LinkDefinition, -} from '../../cache/builders/build-decorators'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { RequestParam } from '../../cache/models/request-param.model'; -import { ObjectCacheEntry } from '../../cache/object-cache.reducer'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { GenericConstructor } from '../../shared/generic-constructor'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { HALLink } from '../../shared/hal-link.model'; -import { getFirstCompletedRemoteData } from '../../shared/operators'; -import { URLCombiner } from '../../url-combiner/url-combiner'; +} from '../../cache'; +import { RemoteDataBuildService } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { RequestParam } from '../../cache'; +import { ObjectCacheEntry } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { GenericConstructor } from '../../shared'; +import { HALEndpointService } from '../../shared'; +import { HALLink } from '../../shared'; +import { getFirstCompletedRemoteData } from '../../shared'; +import { URLCombiner } from '../../url-combiner'; import { FindListOptions } from '../find-list-options.model'; +import { FollowLinkConfig } from '../follow-link-config.model'; import { PaginatedList } from '../paginated-list.model'; import { RemoteData } from '../remote-data'; import { GetRequest } from '../request.models'; diff --git a/src/app/core/data/base/create-data.spec.ts b/modules/core/src/lib/core/data/base/create-data.spec.ts similarity index 95% rename from src/app/core/data/base/create-data.spec.ts rename to modules/core/src/lib/core/data/base/create-data.spec.ts index 1248c5ffe49..5521907cdb2 100644 --- a/src/app/core/data/base/create-data.spec.ts +++ b/modules/core/src/lib/core/data/base/create-data.spec.ts @@ -10,19 +10,19 @@ import { of as observableOf, } from 'rxjs'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { - createFailedRemoteDataObject, - createSuccessfulRemoteDataObject, -} from '../../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../../shared/testing/hal-endpoint-service.stub'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { RequestParam } from '../../cache/models/request-param.model'; import { ObjectCacheService } from '../../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; +import { NotificationsService } from '../../notifications/notifications.service'; import { DSpaceObject } from '../../shared/dspace-object.model'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { + createFailedRemoteDataObject, + createSuccessfulRemoteDataObject, +} from '../../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../../utilities/testing/hal-endpoint-service.stub'; import { FindListOptions } from '../find-list-options.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; @@ -33,6 +33,8 @@ import { CreateDataImpl, } from './create-data'; + + /** * Tests whether calls to `CreateData` methods are correctly patched through in a concrete data service that implements it */ diff --git a/src/app/core/data/base/create-data.ts b/modules/core/src/lib/core/data/base/create-data.ts similarity index 83% rename from src/app/core/data/base/create-data.ts rename to modules/core/src/lib/core/data/base/create-data.ts index 13216f8796d..bd7aa03859d 100644 --- a/src/app/core/data/base/create-data.ts +++ b/modules/core/src/lib/core/data/base/create-data.ts @@ -5,6 +5,10 @@ * * http://www.dspace.org/license/ */ +import { + hasValue, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -13,19 +17,15 @@ import { takeWhile, } from 'rxjs/operators'; -import { - hasValue, - isNotEmptyOperator, -} from '../../../shared/empty.util'; -import { NotificationOptions } from '../../../shared/notifications/models/notification-options.model'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { getClassForType } from '../../cache/builders/build-decorators'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { RequestParam } from '../../cache/models/request-param.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { DSpaceSerializer } from '../../dspace-rest/dspace.serializer'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { getClassForType } from '../../cache'; +import { RemoteDataBuildService } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { RequestParam } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { DSpaceSerializer } from '../../dspace-rest'; +import { NotificationOptions } from '../../notifications'; +import { NotificationsService } from '../../notifications'; +import { HALEndpointService } from '../../shared'; import { RemoteData } from '../remote-data'; import { CreateRequest } from '../request.models'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/base/delete-data.spec.ts b/modules/core/src/lib/core/data/base/delete-data.spec.ts similarity index 94% rename from src/app/core/data/base/delete-data.spec.ts rename to modules/core/src/lib/core/data/base/delete-data.spec.ts index f3fa72a285a..ee0a665d88b 100644 --- a/src/app/core/data/base/delete-data.spec.ts +++ b/modules/core/src/lib/core/data/base/delete-data.spec.ts @@ -11,20 +11,20 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; +import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; +import { NotificationsService } from '../../notifications/notifications.service'; +import { HALEndpointService } from '../../shared/hal-endpoint.service'; import { createFailedRemoteDataObject, createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$, -} from '../../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../../shared/testing/hal-endpoint-service.stub'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +} from '../../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../../utilities/testing/hal-endpoint-service.stub'; import { FindListOptions } from '../find-list-options.model'; +import { followLink } from '../follow-link-config.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; import { RequestEntryState } from '../request-entry-state.model'; @@ -35,6 +35,8 @@ import { } from './delete-data'; import { constructIdEndpointDefault } from './identifiable-data.service'; + + /** * Tests whether calls to `DeleteData` methods are correctly patched through in a concrete data service that implements it */ diff --git a/src/app/core/data/base/delete-data.ts b/modules/core/src/lib/core/data/base/delete-data.ts similarity index 88% rename from src/app/core/data/base/delete-data.ts rename to modules/core/src/lib/core/data/base/delete-data.ts index c47a6af8474..e245651e175 100644 --- a/src/app/core/data/base/delete-data.ts +++ b/modules/core/src/lib/core/data/base/delete-data.ts @@ -5,19 +5,19 @@ * * http://www.dspace.org/license/ */ -import { Observable } from 'rxjs'; -import { switchMap } from 'rxjs/operators'; - import { hasNoValue, hasValue, -} from '../../../shared/empty.util'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { NoContent } from '../../shared/NoContent.model'; +} from '@dspace/shared/utils'; +import { Observable } from 'rxjs'; +import { switchMap } from 'rxjs/operators'; + +import { RemoteDataBuildService } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { NotificationsService } from '../../notifications'; +import { HALEndpointService } from '../../shared'; +import { NoContent } from '../../shared'; import { RemoteData } from '../remote-data'; import { DeleteRequest } from '../request.models'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/base/find-all-data.spec.ts b/modules/core/src/lib/core/data/base/find-all-data.spec.ts similarity index 97% rename from src/app/core/data/base/find-all-data.spec.ts rename to modules/core/src/lib/core/data/base/find-all-data.spec.ts index f2c48feb76c..e29b0233dbf 100644 --- a/src/app/core/data/base/find-all-data.spec.ts +++ b/modules/core/src/lib/core/data/base/find-all-data.spec.ts @@ -11,10 +11,6 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { HALEndpointServiceStub } from '../../../shared/testing/hal-endpoint-service.stub'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { RequestParam } from '../../cache/models/request-param.model'; import { @@ -22,8 +18,12 @@ import { SortOptions, } from '../../cache/models/sort-options.model'; import { ObjectCacheService } from '../../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { HALEndpointServiceStub } from '../../utilities/testing/hal-endpoint-service.stub'; import { FindListOptions } from '../find-list-options.model'; +import { followLink } from '../follow-link-config.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; import { RequestEntryState } from '../request-entry-state.model'; diff --git a/src/app/core/data/base/find-all-data.ts b/modules/core/src/lib/core/data/base/find-all-data.ts similarity index 91% rename from src/app/core/data/base/find-all-data.ts rename to modules/core/src/lib/core/data/base/find-all-data.ts index 0d68689e611..478481bd5ae 100644 --- a/src/app/core/data/base/find-all-data.ts +++ b/modules/core/src/lib/core/data/base/find-all-data.ts @@ -6,6 +6,7 @@ * http://www.dspace.org/license/ */ +import { isNotEmpty } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -13,13 +14,12 @@ import { map, } from 'rxjs/operators'; -import { isNotEmpty } from '../../../shared/empty.util'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { HALEndpointService } from '../../shared'; import { FindListOptions } from '../find-list-options.model'; +import { FollowLinkConfig } from '../follow-link-config.model'; import { PaginatedList } from '../paginated-list.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/base/hal-data-service.interface.ts b/modules/core/src/lib/core/data/base/hal-data-service.interface.ts similarity index 94% rename from src/app/core/data/base/hal-data-service.interface.ts rename to modules/core/src/lib/core/data/base/hal-data-service.interface.ts index 1ffdffaa7c5..758ee4d85f9 100644 --- a/src/app/core/data/base/hal-data-service.interface.ts +++ b/modules/core/src/lib/core/data/base/hal-data-service.interface.ts @@ -7,9 +7,9 @@ */ import { Observable } from 'rxjs'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { HALResource } from '../../shared/hal-resource.model'; +import { HALResource } from '../../shared'; import { FindListOptions } from '../find-list-options.model'; +import { FollowLinkConfig } from '../follow-link-config.model'; import { PaginatedList } from '../paginated-list.model'; import { RemoteData } from '../remote-data'; diff --git a/src/app/core/data/base/identifiable-data.service.spec.ts b/modules/core/src/lib/core/data/base/identifiable-data.service.spec.ts similarity index 94% rename from src/app/core/data/base/identifiable-data.service.spec.ts rename to modules/core/src/lib/core/data/base/identifiable-data.service.spec.ts index 9281a5c0eb0..372dd76a92f 100644 --- a/src/app/core/data/base/identifiable-data.service.spec.ts +++ b/modules/core/src/lib/core/data/base/identifiable-data.service.spec.ts @@ -8,13 +8,13 @@ import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { HALEndpointServiceStub } from '../../../shared/testing/hal-endpoint-service.stub'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { HALEndpointServiceStub } from '../../utilities/testing/hal-endpoint-service.stub'; +import { followLink } from '../follow-link-config.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; import { RequestEntryState } from '../request-entry-state.model'; diff --git a/src/app/core/data/base/identifiable-data.service.ts b/modules/core/src/lib/core/data/base/identifiable-data.service.ts similarity index 91% rename from src/app/core/data/base/identifiable-data.service.ts rename to modules/core/src/lib/core/data/base/identifiable-data.service.ts index ba368d21ca1..0083679c8fe 100644 --- a/src/app/core/data/base/identifiable-data.service.ts +++ b/modules/core/src/lib/core/data/base/identifiable-data.service.ts @@ -12,11 +12,11 @@ import { take, } from 'rxjs/operators'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { HALEndpointService } from '../../shared'; +import { FollowLinkConfig } from '../follow-link-config.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; import { BaseDataService } from './base-data.service'; diff --git a/modules/core/src/lib/core/data/base/index.ts b/modules/core/src/lib/core/data/base/index.ts new file mode 100644 index 00000000000..b0874167bdc --- /dev/null +++ b/modules/core/src/lib/core/data/base/index.ts @@ -0,0 +1,11 @@ +// created from 'create-ts-index' + +export * from './base-data.service'; +export * from './create-data'; +export * from './delete-data'; +export * from './find-all-data'; +export * from './hal-data-service.interface'; +export * from './identifiable-data.service'; +export * from './patch-data'; +export * from './put-data'; +export * from './search-data'; diff --git a/src/app/core/data/base/patch-data.spec.ts b/modules/core/src/lib/core/data/base/patch-data.spec.ts similarity index 95% rename from src/app/core/data/base/patch-data.spec.ts rename to modules/core/src/lib/core/data/base/patch-data.spec.ts index 03c15199a7c..57a549e8370 100644 --- a/src/app/core/data/base/patch-data.spec.ts +++ b/modules/core/src/lib/core/data/base/patch-data.spec.ts @@ -16,18 +16,18 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../../shared/testing/hal-endpoint-service.stub'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; import { DSpaceObject } from '../../shared/dspace-object.model'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; import { Item } from '../../shared/item.model'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../../utilities/testing/hal-endpoint-service.stub'; import { ChangeAnalyzer } from '../change-analyzer'; import { FindListOptions } from '../find-list-options.model'; +import { followLink } from '../follow-link-config.model'; import { RemoteData } from '../remote-data'; import { PatchRequest } from '../request.models'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/base/patch-data.ts b/modules/core/src/lib/core/data/base/patch-data.ts similarity index 93% rename from src/app/core/data/base/patch-data.ts rename to modules/core/src/lib/core/data/base/patch-data.ts index adcf98ef947..f8c45d90653 100644 --- a/src/app/core/data/base/patch-data.ts +++ b/modules/core/src/lib/core/data/base/patch-data.ts @@ -5,6 +5,11 @@ * * http://www.dspace.org/license/ */ +import { + hasNoValue, + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Operation } from 'fast-json-patch'; import { Observable } from 'rxjs'; import { @@ -13,19 +18,14 @@ import { mergeMap, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, - isNotEmpty, -} from '../../../shared/empty.util'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { HALEndpointService } from '../../shared'; import { getFirstSucceededRemoteData, getRemoteDataPayload, -} from '../../shared/operators'; +} from '../../shared'; import { ChangeAnalyzer } from '../change-analyzer'; import { RemoteData } from '../remote-data'; import { PatchRequest } from '../request.models'; diff --git a/src/app/core/data/base/put-data.spec.ts b/modules/core/src/lib/core/data/base/put-data.spec.ts similarity index 95% rename from src/app/core/data/base/put-data.spec.ts rename to modules/core/src/lib/core/data/base/put-data.spec.ts index 1430bb31061..a444f6e6987 100644 --- a/src/app/core/data/base/put-data.spec.ts +++ b/modules/core/src/lib/core/data/base/put-data.spec.ts @@ -11,13 +11,13 @@ import { of as observableOf, } from 'rxjs'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { HALEndpointServiceStub } from '../../../shared/testing/hal-endpoint-service.stub'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; import { DSpaceObject } from '../../shared/dspace-object.model'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { HALEndpointServiceStub } from '../../utilities/testing/hal-endpoint-service.stub'; import { FindListOptions } from '../find-list-options.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/base/put-data.ts b/modules/core/src/lib/core/data/base/put-data.ts similarity index 80% rename from src/app/core/data/base/put-data.ts rename to modules/core/src/lib/core/data/base/put-data.ts index e9d2b01eb83..172a5520c14 100644 --- a/src/app/core/data/base/put-data.ts +++ b/modules/core/src/lib/core/data/base/put-data.ts @@ -5,15 +5,15 @@ * * http://www.dspace.org/license/ */ +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; -import { hasValue } from '../../../shared/empty.util'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { DSpaceSerializer } from '../../dspace-rest/dspace.serializer'; -import { GenericConstructor } from '../../shared/generic-constructor'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { DSpaceSerializer } from '../../dspace-rest'; +import { GenericConstructor } from '../../shared'; +import { HALEndpointService } from '../../shared'; import { RemoteData } from '../remote-data'; import { PutRequest } from '../request.models'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/base/search-data.spec.ts b/modules/core/src/lib/core/data/base/search-data.spec.ts similarity index 94% rename from src/app/core/data/base/search-data.spec.ts rename to modules/core/src/lib/core/data/base/search-data.spec.ts index af9f87bf2cf..b59f2272181 100644 --- a/src/app/core/data/base/search-data.spec.ts +++ b/modules/core/src/lib/core/data/base/search-data.spec.ts @@ -7,10 +7,10 @@ */ import { of as observableOf } from 'rxjs'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; import { FindListOptions } from '../find-list-options.model'; +import { followLink } from '../follow-link-config.model'; import { constructSearchEndpointDefault, SearchData, diff --git a/src/app/core/data/base/search-data.ts b/modules/core/src/lib/core/data/base/search-data.ts similarity index 93% rename from src/app/core/data/base/search-data.ts rename to modules/core/src/lib/core/data/base/search-data.ts index f758affa280..17becaf4130 100644 --- a/src/app/core/data/base/search-data.ts +++ b/modules/core/src/lib/core/data/base/search-data.ts @@ -5,22 +5,22 @@ * * http://www.dspace.org/license/ */ +import { + hasNoValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { filter, map, } from 'rxjs/operators'; -import { - hasNoValue, - isNotEmpty, -} from '../../../shared/empty.util'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { HALEndpointService } from '../../shared'; import { FindListOptions } from '../find-list-options.model'; +import { FollowLinkConfig } from '../follow-link-config.model'; import { PaginatedList } from '../paginated-list.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/bitstream-data.service.spec.ts b/modules/core/src/lib/core/data/bitstream-data.service.spec.ts similarity index 94% rename from src/app/core/data/bitstream-data.service.spec.ts rename to modules/core/src/lib/core/data/bitstream-data.service.spec.ts index 6aa75065d4d..b3e5e02b1ba 100644 --- a/src/app/core/data/bitstream-data.service.spec.ts +++ b/modules/core/src/lib/core/data/bitstream-data.service.spec.ts @@ -4,25 +4,25 @@ import { Observable, of as observableOf, } from 'rxjs'; -import { ItemMock } from 'src/app/shared/mocks/item.mock'; -import { - createFailedRemoteDataObject, - createSuccessfulRemoteDataObject, -} from 'src/app/shared/remote-data.utils'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; +import objectContaining = jasmine.objectContaining; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RequestParam } from '../cache/models/request-param.model'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { ItemMock } from '../mocks/item.mock'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { Bitstream } from '../shared/bitstream.model'; import { BitstreamFormat } from '../shared/bitstream-format.model'; import { BitstreamFormatSupportLevel } from '../shared/bitstream-format-support-level'; import { Bundle } from '../shared/bundle.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { + createFailedRemoteDataObject, + createSuccessfulRemoteDataObject, +} from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testPatchDataImplementation } from './base/patch-data.spec'; import { testSearchDataImplementation } from './base/search-data.spec'; @@ -30,13 +30,13 @@ import { BitstreamDataService } from './bitstream-data.service'; import { BitstreamFormatDataService } from './bitstream-format-data.service'; import { BundleDataService } from './bundle-data.service'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; +import { FollowLinkConfig } from './follow-link-config.model'; import { RemoteData } from './remote-data'; import { PatchRequest, PutRequest, } from './request.models'; import { RequestService } from './request.service'; -import objectContaining = jasmine.objectContaining; describe('BitstreamDataService', () => { let service: BitstreamDataService; diff --git a/src/app/core/data/bitstream-data.service.ts b/modules/core/src/lib/core/data/bitstream-data.service.ts similarity index 92% rename from src/app/core/data/bitstream-data.service.ts rename to modules/core/src/lib/core/data/bitstream-data.service.ts index 9455a456fa7..9a74ca0d73e 100644 --- a/src/app/core/data/bitstream-data.service.ts +++ b/modules/core/src/lib/core/data/bitstream-data.service.ts @@ -1,5 +1,6 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Operation, RemoveOperation, @@ -16,43 +17,42 @@ import { take, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { - followLink, - FollowLinkConfig, -} from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { Bitstream } from '../shared/bitstream.model'; -import { BitstreamFormat } from '../shared/bitstream-format.model'; -import { Bundle } from '../shared/bundle.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; -import { NoContent } from '../shared/NoContent.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { PageInfo } from '../shared/page-info.model'; -import { sendRequest } from '../shared/request.operators'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HttpOptions } from '../dspace-rest'; +import { NotificationsService } from '../notifications'; +import { Bitstream } from '../shared'; +import { BitstreamFormat } from '../shared'; +import { Bundle } from '../shared'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; +import { NoContent } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { PageInfo } from '../shared'; +import { sendRequest } from '../shared'; +import { createSuccessfulRemoteDataObject$ } from '../utilities'; import { DeleteData, DeleteDataImpl, -} from './base/delete-data'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from './base'; +import { IdentifiableDataService } from './base'; import { PatchData, PatchDataImpl, -} from './base/patch-data'; +} from './base'; import { SearchData, SearchDataImpl, -} from './base/search-data'; +} from './base'; import { BitstreamFormatDataService } from './bitstream-format-data.service'; import { BundleDataService } from './bundle-data.service'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; import { FindListOptions } from './find-list-options.model'; +import { + followLink, + FollowLinkConfig, +} from './follow-link-config.model'; import { buildPaginatedList, PaginatedList, diff --git a/src/app/core/data/bitstream-format-data.service.spec.ts b/modules/core/src/lib/core/data/bitstream-format-data.service.spec.ts similarity index 97% rename from src/app/core/data/bitstream-format-data.service.spec.ts rename to modules/core/src/lib/core/data/bitstream-format-data.service.spec.ts index 234326d453b..da5b1b2ee8b 100644 --- a/src/app/core/data/bitstream-format-data.service.spec.ts +++ b/modules/core/src/lib/core/data/bitstream-format-data.service.spec.ts @@ -14,19 +14,19 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { - BitstreamFormatsRegistryDeselectAction, - BitstreamFormatsRegistryDeselectAllAction, - BitstreamFormatsRegistrySelectAction, -} from '../../admin/admin-registries/bitstream-formats/bitstream-format.actions'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { RestResponse } from '../cache/response.models'; import { CoreState } from '../core-state.model'; +import { NotificationsService } from '../notifications/notifications.service'; import { BitstreamFormat } from '../shared/bitstream-format.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { + BitstreamFormatsRegistryDeselectAction, + BitstreamFormatsRegistryDeselectAllAction, + BitstreamFormatsRegistrySelectAction, +} from '../states/bitstream-format/bitstream-format.actions'; +import { createSuccessfulRemoteDataObject } from '../utilities/remote-data.utils'; import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testFindAllDataImplementation } from './base/find-all-data.spec'; import { BitstreamFormatDataService } from './bitstream-format-data.service'; diff --git a/src/app/core/data/bitstream-format-data.service.ts b/modules/core/src/lib/core/data/bitstream-format-data.service.ts similarity index 89% rename from src/app/core/data/bitstream-format-data.service.ts rename to modules/core/src/lib/core/data/bitstream-format-data.service.ts index 97b0fa961a9..b2bff4f15d9 100644 --- a/src/app/core/data/bitstream-format-data.service.ts +++ b/modules/core/src/lib/core/data/bitstream-format-data.service.ts @@ -10,34 +10,34 @@ import { map, tap, } from 'rxjs/operators'; -import { FollowLinkConfig } from 'src/app/shared/utils/follow-link-config.model'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { coreSelector } from '../core.selectors'; +import { CoreState } from '../core-state.model'; +import { NotificationsService } from '../notifications'; +import { Bitstream } from '../shared'; +import { BitstreamFormat } from '../shared'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; +import { sendRequest } from '../shared'; import { BitstreamFormatsRegistryDeselectAction, BitstreamFormatsRegistryDeselectAllAction, BitstreamFormatsRegistrySelectAction, -} from '../../admin/admin-registries/bitstream-formats/bitstream-format.actions'; -import { BitstreamFormatRegistryState } from '../../admin/admin-registries/bitstream-formats/bitstream-format.reducers'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { coreSelector } from '../core.selectors'; -import { CoreState } from '../core-state.model'; -import { Bitstream } from '../shared/bitstream.model'; -import { BitstreamFormat } from '../shared/bitstream-format.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; -import { sendRequest } from '../shared/request.operators'; +} from '../states'; +import { BitstreamFormatRegistryState } from '../states'; import { DeleteData, DeleteDataImpl, -} from './base/delete-data'; +} from './base'; import { FindAllData, FindAllDataImpl, -} from './base/find-all-data'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from './base'; +import { IdentifiableDataService } from './base'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { diff --git a/src/app/core/data/browse-response-parsing.service.spec.ts b/modules/core/src/lib/core/data/browse-response-parsing.service.spec.ts similarity index 95% rename from src/app/core/data/browse-response-parsing.service.spec.ts rename to modules/core/src/lib/core/data/browse-response-parsing.service.spec.ts index 53d2ec20fc8..835cd4cb7b8 100644 --- a/src/app/core/data/browse-response-parsing.service.spec.ts +++ b/modules/core/src/lib/core/data/browse-response-parsing.service.spec.ts @@ -1,5 +1,5 @@ -import { getMockObjectCacheService } from '../../shared/mocks/object-cache.service.mock'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { getMockObjectCacheService } from '../mocks/object-cache.service.mock'; import { FLAT_BROWSE_DEFINITION } from '../shared/flat-browse-definition.resource-type'; import { HIERARCHICAL_BROWSE_DEFINITION } from '../shared/hierarchical-browse-definition.resource-type'; import { VALUE_LIST_BROWSE_DEFINITION } from '../shared/value-list-browse-definition.resource-type'; diff --git a/src/app/core/data/browse-response-parsing.service.ts b/modules/core/src/lib/core/data/browse-response-parsing.service.ts similarity index 63% rename from src/app/core/data/browse-response-parsing.service.ts rename to modules/core/src/lib/core/data/browse-response-parsing.service.ts index e01fa17f1fb..011012c908e 100644 --- a/src/app/core/data/browse-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/browse-response-parsing.service.ts @@ -1,16 +1,16 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; -import { hasValue } from '../../shared/empty.util'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { ObjectCacheService } from '../cache'; import { Serializer } from '../serializer'; -import { BrowseDefinition } from '../shared/browse-definition.model'; -import { BROWSE_DEFINITION } from '../shared/browse-definition.resource-type'; -import { FlatBrowseDefinition } from '../shared/flat-browse-definition.model'; -import { FLAT_BROWSE_DEFINITION } from '../shared/flat-browse-definition.resource-type'; -import { HierarchicalBrowseDefinition } from '../shared/hierarchical-browse-definition.model'; -import { HIERARCHICAL_BROWSE_DEFINITION } from '../shared/hierarchical-browse-definition.resource-type'; -import { ValueListBrowseDefinition } from '../shared/value-list-browse-definition.model'; -import { VALUE_LIST_BROWSE_DEFINITION } from '../shared/value-list-browse-definition.resource-type'; +import { BrowseDefinition } from '../shared'; +import { BROWSE_DEFINITION } from '../shared'; +import { FlatBrowseDefinition } from '../shared'; +import { FLAT_BROWSE_DEFINITION } from '../shared'; +import { HierarchicalBrowseDefinition } from '../shared'; +import { HIERARCHICAL_BROWSE_DEFINITION } from '../shared'; +import { ValueListBrowseDefinition } from '../shared'; +import { VALUE_LIST_BROWSE_DEFINITION } from '../shared'; import { DspaceRestResponseParsingService } from './dspace-rest-response-parsing.service'; /** diff --git a/src/app/core/data/bundle-data.service.spec.ts b/modules/core/src/lib/core/data/bundle-data.service.spec.ts similarity index 91% rename from src/app/core/data/bundle-data.service.spec.ts rename to modules/core/src/lib/core/data/bundle-data.service.spec.ts index b2c8be06af1..702f2a3cff1 100644 --- a/src/app/core/data/bundle-data.service.spec.ts +++ b/modules/core/src/lib/core/data/bundle-data.service.spec.ts @@ -5,20 +5,21 @@ import { Operation, } from 'fast-json-patch'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { CoreState } from '../core-state.model'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { Bundle } from '../shared/bundle.model'; import { HALLink } from '../shared/hal-link.model'; import { Item } from '../shared/item.model'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { testPatchDataImplementation } from './base/patch-data.spec'; import { BundleDataService } from './bundle-data.service'; import { ChangeAnalyzer } from './change-analyzer'; + class DummyChangeAnalyzer implements ChangeAnalyzer { diff(object1: Item, object2: Item): Operation[] { return compare((object1 as any).metadata, (object2 as any).metadata); diff --git a/src/app/core/data/bundle-data.service.ts b/modules/core/src/lib/core/data/bundle-data.service.ts similarity index 91% rename from src/app/core/data/bundle-data.service.ts rename to modules/core/src/lib/core/data/bundle-data.service.ts index 79f877fadd7..727ae592f5d 100644 --- a/src/app/core/data/bundle-data.service.ts +++ b/modules/core/src/lib/core/data/bundle-data.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Operation } from 'fast-json-patch'; import { Observable } from 'rxjs'; import { @@ -7,22 +8,21 @@ import { take, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { Bitstream } from '../shared/bitstream.model'; -import { Bundle } from '../shared/bundle.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { Bitstream } from '../shared'; +import { Bundle } from '../shared'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; +import { PaginatedSearchOptions } from '../shared'; +import { IdentifiableDataService } from './base'; import { PatchData, PatchDataImpl, -} from './base/patch-data'; +} from './base'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { GetRequest } from './request.models'; diff --git a/src/app/core/data/change-analyzer.ts b/modules/core/src/lib/core/data/change-analyzer.ts similarity index 89% rename from src/app/core/data/change-analyzer.ts rename to modules/core/src/lib/core/data/change-analyzer.ts index 45fd9b7e84b..8d24eb30051 100644 --- a/src/app/core/data/change-analyzer.ts +++ b/modules/core/src/lib/core/data/change-analyzer.ts @@ -1,6 +1,6 @@ import { Operation } from 'fast-json-patch'; -import { TypedObject } from '../cache/typed-object.model'; +import { TypedObject } from '../cache'; /** * An interface to determine what differs between two diff --git a/src/app/core/data/collection-data.service.spec.ts b/modules/core/src/lib/core/data/collection-data.service.spec.ts similarity index 94% rename from src/app/core/data/collection-data.service.spec.ts rename to modules/core/src/lib/core/data/collection-data.service.spec.ts index f27695c3261..4c582b64f86 100644 --- a/src/app/core/data/collection-data.service.spec.ts +++ b/modules/core/src/lib/core/data/collection-data.service.spec.ts @@ -2,6 +2,7 @@ import { fakeAsync, tick, } from '@angular/core/testing'; +import { hasNoValue } from '@dspace/shared/utils'; import { TranslateService } from '@ngx-translate/core'; import { cold, @@ -11,22 +12,21 @@ import { import { Observable } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { hasNoValue } from '../../shared/empty.util'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { getMockTranslateService } from '../../shared/mocks/translate.service.mock'; -import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { ObjectCacheServiceStub } from '../../shared/testing/object-cache-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { getMockTranslateService } from '../mocks/translate.service.mock'; import { Collection } from '../shared/collection.model'; import { ContentSource } from '../shared/content-source.model'; import { PageInfo } from '../shared/page-info.model'; +import { + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { NotificationsServiceStub } from '../utilities/testing/notifications-service.stub'; +import { ObjectCacheServiceStub } from '../utilities/testing/object-cache-service.stub'; import { testCreateDataImplementation } from './base/create-data.spec'; import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testFindAllDataImplementation } from './base/find-all-data.spec'; diff --git a/src/app/core/data/collection-data.service.ts b/modules/core/src/lib/core/data/collection-data.service.ts similarity index 91% rename from src/app/core/data/collection-data.service.ts rename to modules/core/src/lib/core/data/collection-data.service.ts index b2d5476d21a..e6a5fb12d53 100644 --- a/src/app/core/data/collection-data.service.ts +++ b/modules/core/src/lib/core/data/collection-data.service.ts @@ -1,5 +1,10 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { + hasValue, + isNotEmpty, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { TranslateService } from '@ngx-translate/core'; import { Observable } from 'rxjs'; import { @@ -9,34 +14,29 @@ import { take, } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, - isNotEmptyOperator, -} from '../../shared/empty.util'; -import { INotification } from '../../shared/notifications/models/notification.model'; -import { NotificationOptions } from '../../shared/notifications/models/notification-options.model'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { Collection } from '../shared/collection.model'; -import { Community } from '../shared/community.model'; -import { ContentSource } from '../shared/content-source.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { DSpaceSerializer } from '../dspace-rest'; +import { HttpOptions } from '../dspace-rest'; +import { INotification } from '../notifications'; +import { NotificationOptions } from '../notifications'; +import { NotificationsService } from '../notifications'; +import { Collection } from '../shared'; +import { Community } from '../shared'; +import { ContentSource } from '../shared'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; import { getAllCompletedRemoteData, getFirstCompletedRemoteData, -} from '../shared/operators'; +} from '../shared'; import { BitstreamDataService } from './bitstream-data.service'; import { ComColDataService } from './comcol-data.service'; import { CommunityDataService } from './community-data.service'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { diff --git a/src/app/core/data/comcol-data.service.spec.ts b/modules/core/src/lib/core/data/comcol-data.service.spec.ts similarity index 98% rename from src/app/core/data/comcol-data.service.spec.ts rename to modules/core/src/lib/core/data/comcol-data.service.spec.ts index e1fe48c0762..73955fb9587 100644 --- a/src/app/core/data/comcol-data.service.spec.ts +++ b/modules/core/src/lib/core/data/comcol-data.service.spec.ts @@ -7,20 +7,20 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { - createFailedRemoteDataObject, - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { CoreState } from '../core-state.model'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { Bitstream } from '../shared/bitstream.model'; import { Community } from '../shared/community.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { + createFailedRemoteDataObject, + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; import { testCreateDataImplementation } from './base/create-data.spec'; import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testFindAllDataImplementation } from './base/find-all-data.spec'; diff --git a/src/app/core/data/comcol-data.service.ts b/modules/core/src/lib/core/data/comcol-data.service.ts similarity index 91% rename from src/app/core/data/comcol-data.service.ts rename to modules/core/src/lib/core/data/comcol-data.service.ts index de0d1a31570..ca4d0ce21d5 100644 --- a/src/app/core/data/comcol-data.service.ts +++ b/modules/core/src/lib/core/data/comcol-data.service.ts @@ -1,3 +1,8 @@ +import { + hasValue, + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { Operation } from 'fast-json-patch'; import { combineLatest as observableCombineLatest, @@ -11,49 +16,44 @@ import { take, } from 'rxjs/operators'; -import { - hasValue, - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createFailedRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { Bitstream } from '../shared/bitstream.model'; -import { Collection } from '../shared/collection.model'; -import { Community } from '../shared/community.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { HALLink } from '../shared/hal-link.model'; -import { NoContent } from '../shared/NoContent.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { URLCombiner } from '../url-combiner/url-combiner'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { NotificationsService } from '../notifications'; +import { Bitstream } from '../shared'; +import { Collection } from '../shared'; +import { Community } from '../shared'; +import { HALEndpointService } from '../shared'; +import { HALLink } from '../shared'; +import { NoContent } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { URLCombiner } from '../url-combiner'; +import { createFailedRemoteDataObject$ } from '../utilities'; import { CreateData, CreateDataImpl, -} from './base/create-data'; +} from './base'; import { DeleteData, DeleteDataImpl, -} from './base/delete-data'; +} from './base'; import { FindAllData, FindAllDataImpl, -} from './base/find-all-data'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from './base'; +import { IdentifiableDataService } from './base'; import { PatchData, PatchDataImpl, -} from './base/patch-data'; +} from './base'; import { SearchData, SearchDataImpl, -} from './base/search-data'; +} from './base'; import { BitstreamDataService } from './bitstream-data.service'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/community-data.service.ts b/modules/core/src/lib/core/data/community-data.service.ts similarity index 81% rename from src/app/core/data/community-data.service.ts rename to modules/core/src/lib/core/data/community-data.service.ts index 79dedf0c842..4fe4f744ac8 100644 --- a/src/app/core/data/community-data.service.ts +++ b/modules/core/src/lib/core/data/community-data.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { filter, @@ -7,17 +8,16 @@ import { take, } from 'rxjs/operators'; -import { isNotEmpty } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { Community } from '../shared/community.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { NotificationsService } from '../notifications'; +import { Community } from '../shared'; +import { HALEndpointService } from '../shared'; import { BitstreamDataService } from './bitstream-data.service'; import { ComColDataService } from './comcol-data.service'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/configuration-data.service.spec.ts b/modules/core/src/lib/core/data/configuration-data.service.spec.ts similarity index 100% rename from src/app/core/data/configuration-data.service.spec.ts rename to modules/core/src/lib/core/data/configuration-data.service.spec.ts diff --git a/src/app/core/data/configuration-data.service.ts b/modules/core/src/lib/core/data/configuration-data.service.ts similarity index 69% rename from src/app/core/data/configuration-data.service.ts rename to modules/core/src/lib/core/data/configuration-data.service.ts index bb1bd19ff14..f069ac69560 100644 --- a/src/app/core/data/configuration-data.service.ts +++ b/modules/core/src/lib/core/data/configuration-data.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { ConfigurationProperty } from '../shared/configuration-property.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { ConfigurationProperty } from '../shared'; +import { HALEndpointService } from '../shared'; +import { IdentifiableDataService } from './base'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/content-source-response-parsing.service.ts b/modules/core/src/lib/core/data/content-source-response-parsing.service.ts similarity index 76% rename from src/app/core/data/content-source-response-parsing.service.ts rename to modules/core/src/lib/core/data/content-source-response-parsing.service.ts index 4c0fd789fbf..a9bc7ea6fa3 100644 --- a/src/app/core/data/content-source-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/content-source-response-parsing.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; -import { ParsedResponse } from '../cache/response.models'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; -import { ContentSource } from '../shared/content-source.model'; -import { MetadataConfig } from '../shared/metadata-config.model'; +import { ParsedResponse } from '../cache'; +import { DSpaceSerializer } from '../dspace-rest'; +import { RawRestResponse } from '../dspace-rest'; +import { ContentSource } from '../shared'; +import { MetadataConfig } from '../shared'; import { DspaceRestResponseParsingService } from './dspace-rest-response-parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/debug-response-parsing.service.ts b/modules/core/src/lib/core/data/debug-response-parsing.service.ts similarity index 76% rename from src/app/core/data/debug-response-parsing.service.ts rename to modules/core/src/lib/core/data/debug-response-parsing.service.ts index d6aeca7965b..5670675507c 100644 --- a/src/app/core/data/debug-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/debug-response-parsing.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; -import { RestResponse } from '../cache/response.models'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { RestResponse } from '../cache'; +import { RawRestResponse } from '../dspace-rest'; import { ResponseParsingService } from './parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/default-change-analyzer.service.ts b/modules/core/src/lib/core/data/default-change-analyzer.service.ts similarity index 81% rename from src/app/core/data/default-change-analyzer.service.ts rename to modules/core/src/lib/core/data/default-change-analyzer.service.ts index fa08af018a2..14f96b989f7 100644 --- a/src/app/core/data/default-change-analyzer.service.ts +++ b/modules/core/src/lib/core/data/default-change-analyzer.service.ts @@ -4,9 +4,9 @@ import { Operation, } from 'fast-json-patch'; -import { getClassForType } from '../cache/builders/build-decorators'; -import { TypedObject } from '../cache/typed-object.model'; -import { DSpaceNotNullSerializer } from '../dspace-rest/dspace-not-null.serializer'; +import { getClassForType } from '../cache'; +import { TypedObject } from '../cache'; +import { DSpaceNotNullSerializer } from '../dspace-rest'; import { ChangeAnalyzer } from './change-analyzer'; /** diff --git a/src/app/core/data/dso-change-analyzer.service.ts b/modules/core/src/lib/core/data/dso-change-analyzer.service.ts similarity index 91% rename from src/app/core/data/dso-change-analyzer.service.ts rename to modules/core/src/lib/core/data/dso-change-analyzer.service.ts index 95e7b5d69f4..38ff410d191 100644 --- a/src/app/core/data/dso-change-analyzer.service.ts +++ b/modules/core/src/lib/core/data/dso-change-analyzer.service.ts @@ -5,8 +5,8 @@ import { } from 'fast-json-patch'; import cloneDeep from 'lodash/cloneDeep'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { MetadataMap } from '../shared/metadata.models'; +import { DSpaceObject } from '../shared'; +import { MetadataMap } from '../shared'; import { ChangeAnalyzer } from './change-analyzer'; /** diff --git a/src/app/core/data/dso-redirect.service.spec.ts b/modules/core/src/lib/core/data/dso-redirect.service.spec.ts similarity index 96% rename from src/app/core/data/dso-redirect.service.spec.ts rename to modules/core/src/lib/core/data/dso-redirect.service.spec.ts index b6b72583ea6..af6108e64e2 100644 --- a/src/app/core/data/dso-redirect.service.spec.ts +++ b/modules/core/src/lib/core/data/dso-redirect.service.spec.ts @@ -4,17 +4,16 @@ import { } from 'jasmine-marbles'; import { TestScheduler } from 'rxjs/testing'; -import { AppConfig } from '../../../config/app-config.interface'; -import { environment } from '../../../environments/environment.test'; -import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; -import { followLink } from '../../shared/utils/follow-link-config.model'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { AppConfig } from '../config/app-config.interface'; import { HardRedirectService } from '../services/hard-redirect.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; +import { createSuccessfulRemoteDataObject } from '../utilities/remote-data.utils'; import { EMBED_SEPARATOR } from './base/base-data.service'; import { DsoRedirectService } from './dso-redirect.service'; +import { followLink } from './follow-link-config.model'; import { GetRequest, IdentifierType, @@ -37,6 +36,11 @@ describe('DsoRedirectService', () => { const requestUUIDURL = `https://rest.api/rest/api/pid/find?id=${dsoUUID}`; const requestUUID = '34cfed7c-f597-49ef-9cbe-ea351f0023c2'; const objectCache = {} as ObjectCacheService; + const environment = { + ui: { + nameSpace: '/', + }, + }; beforeEach(() => { scheduler = getTestScheduler(); @@ -65,7 +69,7 @@ describe('DsoRedirectService', () => { }); service = new DsoRedirectService( - environment as AppConfig, + environment as any as AppConfig, requestService, rdbService, objectCache, diff --git a/src/app/core/data/dso-redirect.service.ts b/modules/core/src/lib/core/data/dso-redirect.service.ts similarity index 83% rename from src/app/core/data/dso-redirect.service.ts rename to modules/core/src/lib/core/data/dso-redirect.service.ts index 28628a62464..1a09496e6f7 100644 --- a/src/app/core/data/dso-redirect.service.ts +++ b/modules/core/src/lib/core/data/dso-redirect.service.ts @@ -10,22 +10,22 @@ import { Inject, Injectable, } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { tap } from 'rxjs/operators'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; import { APP_CONFIG, AppConfig, -} from '../../../config/app-config.interface'; -import { getDSORoute } from '../../app-routing-paths'; -import { hasValue } from '../../shared/empty.util'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HardRedirectService } from '../services/hard-redirect.service'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from '../config'; +import { getDSpaceObjectRoute } from '../router'; +import { HardRedirectService } from '../services'; +import { DSpaceObject } from '../shared'; +import { HALEndpointService } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { IdentifiableDataService } from './base'; import { RemoteData } from './remote-data'; import { IdentifierType } from './request.models'; import { RequestService } from './request.service'; @@ -104,7 +104,7 @@ export class DsoRedirectService { if (response.hasSucceeded) { const dso = response.payload; if (hasValue(dso.uuid)) { - const newRoute = getDSORoute(dso); + const newRoute = getDSpaceObjectRoute(dso); if (hasValue(newRoute)) { // Use a "301 Moved Permanently" redirect for SEO purposes this.hardRedirectService.redirect(this.appConfig.ui.nameSpace.replace(/\/$/, '') + newRoute, 301); diff --git a/src/app/core/data/dso-response-parsing.service.ts b/modules/core/src/lib/core/data/dso-response-parsing.service.ts similarity index 86% rename from src/app/core/data/dso-response-parsing.service.ts rename to modules/core/src/lib/core/data/dso-response-parsing.service.ts index 5cabba29eb2..26568a807cf 100644 --- a/src/app/core/data/dso-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/dso-response-parsing.service.ts @@ -1,16 +1,16 @@ import { Injectable } from '@angular/core'; - import { hasNoValue, hasValue, -} from '../../shared/empty.util'; -import { ObjectCacheService } from '../cache/object-cache.service'; +} from '@dspace/shared/utils'; + +import { ObjectCacheService } from '../cache'; import { DSOSuccessResponse, RestResponse, -} from '../cache/response.models'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; +} from '../cache'; +import { RawRestResponse } from '../dspace-rest'; +import { DSpaceObject } from '../shared'; import { BaseResponseParsingService } from './base-response-parsing.service'; import { ResponseParsingService } from './parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/dspace-object-data.service.spec.ts b/modules/core/src/lib/core/data/dspace-object-data.service.spec.ts similarity index 100% rename from src/app/core/data/dspace-object-data.service.spec.ts rename to modules/core/src/lib/core/data/dspace-object-data.service.spec.ts diff --git a/src/app/core/data/dspace-object-data.service.ts b/modules/core/src/lib/core/data/dspace-object-data.service.ts similarity index 66% rename from src/app/core/data/dspace-object-data.service.ts rename to modules/core/src/lib/core/data/dspace-object-data.service.ts index bdebbd0582c..945fc8fcc88 100644 --- a/src/app/core/data/dspace-object-data.service.ts +++ b/modules/core/src/lib/core/data/dspace-object-data.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { DSpaceObject } from '../shared'; +import { HALEndpointService } from '../shared'; +import { IdentifiableDataService } from './base'; import { RequestService } from './request.service'; @Injectable({ providedIn: 'root' }) diff --git a/src/app/core/data/dspace-rest-response-parsing.service.ts b/modules/core/src/lib/core/data/dspace-rest-response-parsing.service.ts similarity index 86% rename from src/app/core/data/dspace-rest-response-parsing.service.ts rename to modules/core/src/lib/core/data/dspace-rest-response-parsing.service.ts index 1cd286427f3..87e03adbab8 100644 --- a/src/app/core/data/dspace-rest-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/dspace-rest-response-parsing.service.ts @@ -1,27 +1,33 @@ /* eslint-disable max-classes-per-file */ -import { Injectable } from '@angular/core'; - -import { environment } from '../../../environments/environment'; +import { + inject, + Injectable, +} from '@angular/core'; import { hasNoValue, hasValue, isNotEmpty, -} from '../../shared/empty.util'; -import { getClassForType } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { ParsedResponse } from '../cache/response.models'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +} from '@dspace/shared/utils'; + +import { getClassForType } from '../cache'; +import { CacheableObject } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { ParsedResponse } from '../cache'; +import { + APP_CONFIG, + AppConfig, +} from '../config'; +import { DSpaceSerializer } from '../dspace-rest'; +import { RawRestResponse } from '../dspace-rest'; import { getEmbedSizeParams, - getUrlWithoutEmbedParams, -} from '../index/index.selectors'; + getUrlWithoutEmbedParams, isRestPaginatedList, +} from '../index'; import { Serializer } from '../serializer'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { PageInfo } from '../shared/page-info.model'; -import { URLCombiner } from '../url-combiner/url-combiner'; +import { DSpaceObject } from '../shared'; +import { GenericConstructor } from '../shared'; +import { PageInfo } from '../shared'; +import { URLCombiner } from '../url-combiner'; import { buildPaginatedList, PaginatedList, @@ -40,19 +46,6 @@ export function isCacheableObject(obj: any): boolean { return hasValue(obj) && hasValue(obj._links) && hasValue(obj._links.self) && hasValue(obj._links.self.href); } -/** - * Return true if halObj has a value for `page` with properties - * `size`, `totalElements`, `totalPages`, `number` - * - * @param {any} halObj The object to test - */ -export function isRestPaginatedList(halObj: any): boolean { - return hasValue(halObj.page) && - hasValue(halObj.page.size) && - hasValue(halObj.page.totalElements) && - hasValue(halObj.page.totalPages) && - hasValue(halObj.page.number); -} /** * Split a url into parts @@ -68,6 +61,7 @@ const splitUrlInParts = (url: string): string[] => { @Injectable({ providedIn: 'root' }) export class DspaceRestResponseParsingService implements ResponseParsingService { protected serializerConstructor: GenericConstructor> = DSpaceSerializer; + protected readonly appConfig: AppConfig = inject(APP_CONFIG); constructor( protected objectCache: ObjectCacheService, @@ -125,7 +119,7 @@ export class DspaceRestResponseParsingService implements ResponseParsingService this.addToObjectCache(null, request, data, embedAltUrl); } else if (!isCacheableObject(data._embedded[property])) { // Embedded object exists, but doesn't contain a self link -> cache it using the alternative link instead - this.objectCache.add(data._embedded[property], hasValue(request.responseMsToLive) ? request.responseMsToLive : environment.cache.msToLive.default, request.uuid, embedAltUrl); + this.objectCache.add(data._embedded[property], hasValue(request.responseMsToLive) ? request.responseMsToLive : this.appConfig.cache.msToLive.default, request.uuid, embedAltUrl); } this.process(data._embedded[property], request, embedAltUrl); }); @@ -262,7 +256,7 @@ export class DspaceRestResponseParsingService implements ResponseParsingService alternativeURL = undefined; } - this.objectCache.add(co, hasValue(request.responseMsToLive) ? request.responseMsToLive : environment.cache.msToLive.default, request.uuid, alternativeURL); + this.objectCache.add(co, hasValue(request.responseMsToLive) ? request.responseMsToLive : this.appConfig.cache.msToLive.default, request.uuid, alternativeURL); } processPageInfo(payload: any): PageInfo { diff --git a/src/app/shared/object-list/duplicate-data/duplicate.model.ts b/modules/core/src/lib/core/data/duplicate-data/duplicate.model.ts similarity index 76% rename from src/app/shared/object-list/duplicate-data/duplicate.model.ts rename to modules/core/src/lib/core/data/duplicate-data/duplicate.model.ts index 4524418343f..1c68e0122eb 100644 --- a/src/app/shared/object-list/duplicate-data/duplicate.model.ts +++ b/modules/core/src/lib/core/data/duplicate-data/duplicate.model.ts @@ -3,10 +3,10 @@ import { deserialize, } from 'cerialize'; -import { CacheableObject } from '../../../core/cache/cacheable-object.model'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { MetadataMap } from '../../../core/shared/metadata.models'; -import { ResourceType } from '../../../core/shared/resource-type'; +import { CacheableObject } from '../../cache/cacheable-object.model'; +import { HALLink } from '../../shared/hal-link.model'; +import { MetadataMap } from '../../shared/metadata.models'; +import { ResourceType } from '../../shared/resource-type'; import { DUPLICATE } from './duplicate.resource-type'; /** @@ -43,7 +43,7 @@ export class Duplicate implements CacheableObject { @autoserialize owningCollection: string; /** - * Metadata for the preview item (e.g. dc.title) + * PolicyMetadata for the preview item (e.g. dc.title) */ @autoserialize metadata: MetadataMap; diff --git a/src/app/shared/object-list/duplicate-data/duplicate.resource-type.ts b/modules/core/src/lib/core/data/duplicate-data/duplicate.resource-type.ts similarity index 75% rename from src/app/shared/object-list/duplicate-data/duplicate.resource-type.ts rename to modules/core/src/lib/core/data/duplicate-data/duplicate.resource-type.ts index 588ca2da55e..bc3ffe4ab7c 100644 --- a/src/app/shared/object-list/duplicate-data/duplicate.resource-type.ts +++ b/modules/core/src/lib/core/data/duplicate-data/duplicate.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from 'src/app/core/shared/resource-type'; +import { ResourceType } from '../../shared/resource-type'; /** * The resource type for Duplicate preview stubs diff --git a/modules/core/src/lib/core/data/duplicate-data/index.ts b/modules/core/src/lib/core/data/duplicate-data/index.ts new file mode 100644 index 00000000000..78cf52e568e --- /dev/null +++ b/modules/core/src/lib/core/data/duplicate-data/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './duplicate.model'; +export * from './duplicate.resource-type'; diff --git a/src/app/core/data/endpoint-map-response-parsing.service.ts b/modules/core/src/lib/core/data/endpoint-map-response-parsing.service.ts similarity index 86% rename from src/app/core/data/endpoint-map-response-parsing.service.ts rename to modules/core/src/lib/core/data/endpoint-map-response-parsing.service.ts index c7dd40b98bd..c567bc8bebc 100644 --- a/src/app/core/data/endpoint-map-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/endpoint-map-response-parsing.service.ts @@ -1,13 +1,12 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; -import { environment } from '../../../environments/environment'; -import { hasValue } from '../../shared/empty.util'; -import { getClassForType } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { ParsedResponse } from '../cache/response.models'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { GenericConstructor } from '../shared/generic-constructor'; +import { getClassForType } from '../cache'; +import { CacheableObject } from '../cache'; +import { ParsedResponse } from '../cache'; +import { RawRestResponse } from '../dspace-rest'; +import { DSpaceObject } from '../shared'; +import { GenericConstructor } from '../shared'; import { DspaceRestResponseParsingService, isCacheableObject, @@ -22,7 +21,6 @@ import { RestRequest } from './rest-request.model'; */ @Injectable({ providedIn: 'root' }) export class EndpointMapResponseParsingService extends DspaceRestResponseParsingService { - /** * Parse an endpoint map response. * @@ -111,7 +109,7 @@ export class EndpointMapResponseParsingService extends DspaceRestResponseParsing } if (hasValue(this.getConstructorFor((co as any).type))) { - this.objectCache.add(co, hasValue(request.responseMsToLive) ? request.responseMsToLive : environment.cache.msToLive.default, request.uuid, alternativeURL); + this.objectCache.add(co, hasValue(request.responseMsToLive) ? request.responseMsToLive : this.appConfig.cache.msToLive.default, request.uuid, alternativeURL); } } diff --git a/src/app/core/data/entity-type-data.service.spec.ts b/modules/core/src/lib/core/data/entity-type-data.service.spec.ts similarity index 99% rename from src/app/core/data/entity-type-data.service.spec.ts rename to modules/core/src/lib/core/data/entity-type-data.service.spec.ts index cf164adb847..0006c2fca0e 100644 --- a/src/app/core/data/entity-type-data.service.spec.ts +++ b/modules/core/src/lib/core/data/entity-type-data.service.spec.ts @@ -5,7 +5,6 @@ * * http://www.dspace.org/license/ */ - import { testFindAllDataImplementation } from './base/find-all-data.spec'; import { testSearchDataImplementation } from './base/search-data.spec'; import { EntityTypeDataService } from './entity-type-data.service'; diff --git a/src/app/core/data/entity-type-data.service.ts b/modules/core/src/lib/core/data/entity-type-data.service.ts similarity index 93% rename from src/app/core/data/entity-type-data.service.ts rename to modules/core/src/lib/core/data/entity-type-data.service.ts index d47fadce172..aa4c7a3df93 100644 --- a/src/app/core/data/entity-type-data.service.ts +++ b/modules/core/src/lib/core/data/entity-type-data.service.ts @@ -6,27 +6,27 @@ import { take, } from 'rxjs/operators'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { ItemType } from '../shared/item-relationships/item-type.model'; -import { RelationshipType } from '../shared/item-relationships/relationship-type.model'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HALEndpointService } from '../shared'; +import { ItemType } from '../shared'; +import { RelationshipType } from '../shared'; import { getAllCompletedRemoteData, getFirstSucceededRemoteData, getRemoteDataPayload, -} from '../shared/operators'; -import { BaseDataService } from './base/base-data.service'; +} from '../shared'; +import { BaseDataService } from './base'; import { FindAllData, FindAllDataImpl, -} from './base/find-all-data'; +} from './base'; import { SearchData, SearchDataImpl, -} from './base/search-data'; +} from './base'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RelationshipTypeDataService } from './relationship-type-data.service'; import { RemoteData } from './remote-data'; diff --git a/src/app/core/data/eperson-registration.service.spec.ts b/modules/core/src/lib/core/data/eperson-registration.service.spec.ts similarity index 97% rename from src/app/core/data/eperson-registration.service.spec.ts rename to modules/core/src/lib/core/data/eperson-registration.service.spec.ts index a60cef121a8..856ee7edbde 100644 --- a/src/app/core/data/eperson-registration.service.spec.ts +++ b/modules/core/src/lib/core/data/eperson-registration.service.spec.ts @@ -3,11 +3,11 @@ import { cold } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { RestResponse } from '../cache/response.models'; import { HttpOptions } from '../dspace-rest/dspace-rest.service'; import { Registration } from '../shared/registration.model'; +import { createSuccessfulRemoteDataObject } from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { EpersonRegistrationService } from './eperson-registration.service'; import { PostRequest } from './request.models'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/eperson-registration.service.ts b/modules/core/src/lib/core/data/eperson-registration.service.ts similarity index 88% rename from src/app/core/data/eperson-registration.service.ts rename to modules/core/src/lib/core/data/eperson-registration.service.ts index 90a3fab83a9..04d0747ce3b 100644 --- a/src/app/core/data/eperson-registration.service.ts +++ b/modules/core/src/lib/core/data/eperson-registration.service.ts @@ -3,6 +3,10 @@ import { HttpParams, } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { filter, @@ -10,16 +14,12 @@ import { map, } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { Registration } from '../shared/registration.model'; +import { RemoteDataBuildService } from '../cache'; +import { HttpOptions } from '../dspace-rest'; +import { GenericConstructor } from '../shared'; +import { HALEndpointService } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { Registration } from '../shared'; import { ResponseParsingService } from './parsing.service'; import { RegistrationResponseParsingService } from './registration-response-parsing.service'; import { RemoteData } from './remote-data'; @@ -39,6 +39,7 @@ export class EpersonRegistrationService { protected linkPath = 'registrations'; protected searchByTokenPath = '/search/findByToken?token='; + protected responseMsToLive: number; constructor( protected requestService: RequestService, diff --git a/src/app/core/data/external-source-data.service.spec.ts b/modules/core/src/lib/core/data/external-source-data.service.spec.ts similarity index 95% rename from src/app/core/data/external-source-data.service.spec.ts rename to modules/core/src/lib/core/data/external-source-data.service.spec.ts index 5e643cc5491..a3b2d0d014a 100644 --- a/src/app/core/data/external-source-data.service.spec.ts +++ b/modules/core/src/lib/core/data/external-source-data.service.spec.ts @@ -1,9 +1,9 @@ import { of as observableOf } from 'rxjs'; import { take } from 'rxjs/operators'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { ExternalSourceEntry } from '../shared/external-source-entry.model'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { testSearchDataImplementation } from './base/search-data.spec'; import { ExternalSourceDataService } from './external-source-data.service'; import { GetRequest } from './request.models'; diff --git a/src/app/core/data/external-source-data.service.ts b/modules/core/src/lib/core/data/external-source-data.service.ts similarity index 87% rename from src/app/core/data/external-source-data.service.ts rename to modules/core/src/lib/core/data/external-source-data.service.ts index e7f123dd18d..ccbd086f273 100644 --- a/src/app/core/data/external-source-data.service.ts +++ b/modules/core/src/lib/core/data/external-source-data.service.ts @@ -1,4 +1,8 @@ import { Injectable } from '@angular/core'; +import { + hasValue, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -7,23 +11,19 @@ import { take, } from 'rxjs/operators'; -import { - hasValue, - isNotEmptyOperator, -} from '../../shared/empty.util'; -import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { ExternalSource } from '../shared/external-source.model'; -import { ExternalSourceEntry } from '../shared/external-source-entry.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { ExternalSource } from '../shared'; +import { ExternalSourceEntry } from '../shared'; +import { HALEndpointService } from '../shared'; +import { PaginatedSearchOptions } from '../shared'; +import { IdentifiableDataService } from './base'; import { SearchData, SearchDataImpl, -} from './base/search-data'; +} from './base'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/facet-config-response-parsing.service.ts b/modules/core/src/lib/core/data/facet-config-response-parsing.service.ts similarity index 73% rename from src/app/core/data/facet-config-response-parsing.service.ts rename to modules/core/src/lib/core/data/facet-config-response-parsing.service.ts index 4ae22c34d87..cf263a33495 100644 --- a/src/app/core/data/facet-config-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/facet-config-response-parsing.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; -import { FacetConfigResponse } from '../../shared/search/models/facet-config-response.model'; -import { SearchFilterConfig } from '../../shared/search/models/search-filter-config.model'; -import { ParsedResponse } from '../cache/response.models'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { ParsedResponse } from '../cache'; +import { DSpaceSerializer } from '../dspace-rest'; +import { RawRestResponse } from '../dspace-rest'; +import { FacetConfigResponse } from '../shared'; +import { SearchFilterConfig } from '../shared'; import { DspaceRestResponseParsingService } from './dspace-rest-response-parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/facet-value-response-parsing.service.ts b/modules/core/src/lib/core/data/facet-value-response-parsing.service.ts similarity index 69% rename from src/app/core/data/facet-value-response-parsing.service.ts rename to modules/core/src/lib/core/data/facet-value-response-parsing.service.ts index 5cd24770d8b..c78f277fde9 100644 --- a/src/app/core/data/facet-value-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/facet-value-response-parsing.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; -import { FacetValue } from '../../shared/search/models/facet-value.model'; -import { FacetValues } from '../../shared/search/models/facet-values.model'; -import { ParsedResponse } from '../cache/response.models'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { ParsedResponse } from '../cache'; +import { DSpaceSerializer } from '../dspace-rest'; +import { RawRestResponse } from '../dspace-rest'; +import { FacetValue } from '../shared'; +import { FacetValues } from '../shared'; import { DspaceRestResponseParsingService } from './dspace-rest-response-parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/feature-authorization/authorization-data.service.spec.ts b/modules/core/src/lib/core/data/feature-authorization/authorization-data.service.spec.ts similarity index 97% rename from src/app/core/data/feature-authorization/authorization-data.service.spec.ts rename to modules/core/src/lib/core/data/feature-authorization/authorization-data.service.spec.ts index 4ada344bebb..7139ef604a2 100644 --- a/src/app/core/data/feature-authorization/authorization-data.service.spec.ts +++ b/modules/core/src/lib/core/data/feature-authorization/authorization-data.service.spec.ts @@ -1,21 +1,21 @@ +import { hasValue } from '@dspace/shared/utils'; import { combineLatest as observableCombineLatest, Observable, of as observableOf, } from 'rxjs'; -import { hasValue } from '../../../shared/empty.util'; -import { getMockObjectCacheService } from '../../../shared/mocks/object-cache.service.mock'; -import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject$, -} from '../../../shared/remote-data.utils'; -import { createPaginatedList } from '../../../shared/testing/utils.test'; import { RequestParam } from '../../cache/models/request-param.model'; import { EPerson } from '../../eperson/models/eperson.model'; +import { getMockObjectCacheService } from '../../mocks/object-cache.service.mock'; import { Authorization } from '../../shared/authorization.model'; import { Feature } from '../../shared/feature.model'; import { Site } from '../../shared/site.model'; +import { + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject$, +} from '../../utilities/remote-data.utils'; +import { createPaginatedList } from '../../utilities/testing/utils.test'; import { testSearchDataImplementation } from '../base/search-data.spec'; import { FindListOptions } from '../find-list-options.model'; import { SiteDataService } from '../site-data.service'; diff --git a/src/app/core/data/feature-authorization/authorization-data.service.ts b/modules/core/src/lib/core/data/feature-authorization/authorization-data.service.ts similarity index 93% rename from src/app/core/data/feature-authorization/authorization-data.service.ts rename to modules/core/src/lib/core/data/feature-authorization/authorization-data.service.ts index e5efbae671c..3274d9a03e8 100644 --- a/src/app/core/data/feature-authorization/authorization-data.service.ts +++ b/modules/core/src/lib/core/data/feature-authorization/authorization-data.service.ts @@ -1,4 +1,9 @@ import { Injectable } from '@angular/core'; +import { + hasNoValue, + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable, of as observableOf, @@ -9,27 +14,22 @@ import { switchMap, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, - isNotEmpty, -} from '../../../shared/empty.util'; -import { - followLink, - FollowLinkConfig, -} from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { RequestParam } from '../../cache/models/request-param.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { Authorization } from '../../shared/authorization.model'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../../shared/operators'; -import { BaseDataService } from '../base/base-data.service'; +import { RemoteDataBuildService } from '../../cache'; +import { RequestParam } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { Authorization } from '../../shared'; +import { HALEndpointService } from '../../shared'; +import { getFirstCompletedRemoteData } from '../../shared'; +import { BaseDataService } from '../base'; import { SearchData, SearchDataImpl, -} from '../base/search-data'; +} from '../base'; import { FindListOptions } from '../find-list-options.model'; +import { + followLink, + FollowLinkConfig, +} from '../follow-link-config.model'; import { PaginatedList } from '../paginated-list.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/feature-authorization/authorization-search-params.ts b/modules/core/src/lib/core/data/feature-authorization/authorization-search-params.ts similarity index 100% rename from src/app/core/data/feature-authorization/authorization-search-params.ts rename to modules/core/src/lib/core/data/feature-authorization/authorization-search-params.ts diff --git a/src/app/core/data/feature-authorization/authorization-utils.ts b/modules/core/src/lib/core/data/feature-authorization/authorization-utils.ts similarity index 94% rename from src/app/core/data/feature-authorization/authorization-utils.ts rename to modules/core/src/lib/core/data/feature-authorization/authorization-utils.ts index cd4bc452a5e..5cce3f0779c 100644 --- a/src/app/core/data/feature-authorization/authorization-utils.ts +++ b/modules/core/src/lib/core/data/feature-authorization/authorization-utils.ts @@ -1,3 +1,8 @@ +import { + hasNoValue, + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { combineLatest as observableCombineLatest, Observable, @@ -8,15 +13,10 @@ import { switchMap, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, - isNotEmpty, -} from '../../../shared/empty.util'; -import { AuthService } from '../../auth/auth.service'; -import { Authorization } from '../../shared/authorization.model'; -import { Feature } from '../../shared/feature.model'; -import { getFirstSucceededRemoteDataPayload } from '../../shared/operators'; +import { AuthService } from '../../auth'; +import { Authorization } from '../../shared'; +import { Feature } from '../../shared'; +import { getFirstSucceededRemoteDataPayload } from '../../shared'; import { SiteDataService } from '../site-data.service'; import { AuthorizationSearchParams } from './authorization-search-params'; import { FeatureID } from './feature-id'; diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/collection-administrator.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/collection-administrator.guard.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-authorization-guard/collection-administrator.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/collection-administrator.guard.ts diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/community-administrator.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/community-administrator.guard.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-authorization-guard/community-administrator.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/community-administrator.guard.ts diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.spec.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.spec.ts similarity index 97% rename from src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.spec.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.spec.ts index 18292bb943b..c84d400b429 100644 --- a/src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.spec.ts +++ b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.spec.ts @@ -9,9 +9,9 @@ import { of as observableOf, } from 'rxjs'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { AuthService } from '../../../auth/auth.service'; import { DSpaceObject } from '../../../shared/dspace-object.model'; +import { createSuccessfulRemoteDataObject$ } from '../../../utilities/remote-data.utils'; import { RemoteData } from '../../remote-data'; import { AuthorizationDataService } from '../authorization-data.service'; import { FeatureID } from '../feature-id'; @@ -22,6 +22,8 @@ import { } from './dso-page-some-feature.guard'; + + describe('DsoPageSingleFeatureGuard', () => { let authorizationService: AuthorizationDataService; let router: Router; diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.ts similarity index 94% rename from src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.ts index 5073a386532..0ec953bb0ab 100644 --- a/src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.ts +++ b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard.ts @@ -7,7 +7,7 @@ import { import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { DSpaceObject } from '../../../shared/dspace-object.model'; +import { DSpaceObject } from '../../../shared'; import { RemoteData } from '../../remote-data'; import { FeatureID } from '../feature-id'; import { dsoPageSomeFeatureGuard } from './dso-page-some-feature.guard'; diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.spec.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.spec.ts similarity index 97% rename from src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.spec.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.spec.ts index 08f1c96b299..129f5f50c6a 100644 --- a/src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.spec.ts +++ b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.spec.ts @@ -9,9 +9,9 @@ import { of as observableOf, } from 'rxjs'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { AuthService } from '../../../auth/auth.service'; import { DSpaceObject } from '../../../shared/dspace-object.model'; +import { createSuccessfulRemoteDataObject$ } from '../../../utilities/remote-data.utils'; import { RemoteData } from '../../remote-data'; import { AuthorizationDataService } from '../authorization-data.service'; import { FeatureID } from '../feature-id'; @@ -22,6 +22,8 @@ import { } from './dso-page-some-feature.guard'; + + describe('dsoPageSomeFeatureGuard and its functions', () => { let authorizationService: AuthorizationDataService; let router: Router; diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.ts similarity index 94% rename from src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.ts index 7469f113b49..bf969183a67 100644 --- a/src/app/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.ts +++ b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/dso-page-some-feature.guard.ts @@ -4,15 +4,15 @@ import { ResolveFn, RouterStateSnapshot, } from '@angular/router'; -import { Observable } from 'rxjs'; -import { map } from 'rxjs/operators'; - import { hasNoValue, hasValue, -} from '../../../../shared/empty.util'; -import { DSpaceObject } from '../../../shared/dspace-object.model'; -import { getAllSucceededRemoteDataPayload } from '../../../shared/operators'; +} from '@dspace/shared/utils'; +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + +import { DSpaceObject } from '../../../shared'; +import { getAllSucceededRemoteDataPayload } from '../../../shared'; import { RemoteData } from '../../remote-data'; import { FeatureID } from '../feature-id'; import { diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/group-administrator.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/group-administrator.guard.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-authorization-guard/group-administrator.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/group-administrator.guard.ts diff --git a/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/index.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/index.ts new file mode 100644 index 00000000000..d02ae472d5b --- /dev/null +++ b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/index.ts @@ -0,0 +1,12 @@ +// created from 'create-ts-index' + +export * from './collection-administrator.guard'; +export * from './community-administrator.guard'; +export * from './dso-page-single-feature.guard'; +export * from './dso-page-some-feature.guard'; +export * from './group-administrator.guard'; +export * from './single-feature-authorization.guard'; +export * from './site-administrator.guard'; +export * from './site-register.guard'; +export * from './some-feature-authorization.guard'; +export * from './statistics-administrator.guard'; diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.spec.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.spec.ts similarity index 99% rename from src/app/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.spec.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.spec.ts index 7c15fa4cdff..6633813f71f 100644 --- a/src/app/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.spec.ts +++ b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.spec.ts @@ -16,6 +16,8 @@ import { AuthorizationDataService } from '../authorization-data.service'; import { FeatureID } from '../feature-id'; import { singleFeatureAuthorizationGuard } from './single-feature-authorization.guard'; + + describe('singleFeatureAuthorizationGuard', () => { let authorizationService: AuthorizationDataService; let router: Router; diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard.ts diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/site-administrator.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/site-administrator.guard.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-authorization-guard/site-administrator.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/site-administrator.guard.ts diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/site-register.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/site-register.guard.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-authorization-guard/site-register.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/site-register.guard.ts diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.spec.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.spec.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.spec.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.spec.ts diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.ts similarity index 96% rename from src/app/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.ts index 53e5e582eb8..cd28bae21c9 100644 --- a/src/app/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.ts +++ b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/some-feature-authorization.guard.ts @@ -13,8 +13,8 @@ import { } from 'rxjs'; import { switchMap } from 'rxjs/operators'; -import { AuthService } from '../../../auth/auth.service'; -import { returnForbiddenUrlTreeOrLoginOnAllFalse } from '../../../shared/authorized.operators'; +import { AuthService } from '../../../auth'; +import { returnForbiddenUrlTreeOrLoginOnAllFalse } from '../../../shared'; import { AuthorizationDataService } from '../authorization-data.service'; import { FeatureID } from '../feature-id'; diff --git a/src/app/core/data/feature-authorization/feature-authorization-guard/statistics-administrator.guard.ts b/modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/statistics-administrator.guard.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-authorization-guard/statistics-administrator.guard.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-authorization-guard/statistics-administrator.guard.ts diff --git a/src/app/core/data/feature-authorization/feature-data.service.ts b/modules/core/src/lib/core/data/feature-authorization/feature-data.service.ts similarity index 63% rename from src/app/core/data/feature-authorization/feature-data.service.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-data.service.ts index 191d8b002ca..f6d62cfa54d 100644 --- a/src/app/core/data/feature-authorization/feature-data.service.ts +++ b/modules/core/src/lib/core/data/feature-authorization/feature-data.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { Feature } from '../../shared/feature.model'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { BaseDataService } from '../base/base-data.service'; +import { RemoteDataBuildService } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { Feature } from '../../shared'; +import { HALEndpointService } from '../../shared'; +import { BaseDataService } from '../base'; import { RequestService } from '../request.service'; /** diff --git a/src/app/core/data/feature-authorization/feature-id.ts b/modules/core/src/lib/core/data/feature-authorization/feature-id.ts similarity index 100% rename from src/app/core/data/feature-authorization/feature-id.ts rename to modules/core/src/lib/core/data/feature-authorization/feature-id.ts diff --git a/modules/core/src/lib/core/data/feature-authorization/index.ts b/modules/core/src/lib/core/data/feature-authorization/index.ts new file mode 100644 index 00000000000..4702cda54f9 --- /dev/null +++ b/modules/core/src/lib/core/data/feature-authorization/index.ts @@ -0,0 +1,8 @@ +// created from 'create-ts-index' + +export * from './feature-authorization-guard'; +export * from './authorization-data.service'; +export * from './authorization-search-params'; +export * from './authorization-utils'; +export * from './feature-data.service'; +export * from './feature-id'; diff --git a/src/app/core/data/filtered-discovery-page-response-parsing.service.spec.ts b/modules/core/src/lib/core/data/filtered-discovery-page-response-parsing.service.spec.ts similarity index 94% rename from src/app/core/data/filtered-discovery-page-response-parsing.service.spec.ts rename to modules/core/src/lib/core/data/filtered-discovery-page-response-parsing.service.spec.ts index 6966e6a6311..04ef683415a 100644 --- a/src/app/core/data/filtered-discovery-page-response-parsing.service.spec.ts +++ b/modules/core/src/lib/core/data/filtered-discovery-page-response-parsing.service.spec.ts @@ -1,6 +1,6 @@ -import { getMockObjectCacheService } from '../../shared/mocks/object-cache.service.mock'; import { FilteredDiscoveryQueryResponse } from '../cache/response.models'; import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { getMockObjectCacheService } from '../mocks/object-cache.service.mock'; import { GenericConstructor } from '../shared/generic-constructor'; import { FilteredDiscoveryPageResponseParsingService } from './filtered-discovery-page-response-parsing.service'; import { ResponseParsingService } from './parsing.service'; diff --git a/src/app/core/data/filtered-discovery-page-response-parsing.service.ts b/modules/core/src/lib/core/data/filtered-discovery-page-response-parsing.service.ts similarity index 86% rename from src/app/core/data/filtered-discovery-page-response-parsing.service.ts rename to modules/core/src/lib/core/data/filtered-discovery-page-response-parsing.service.ts index e07f46e9160..86417da5a3a 100644 --- a/src/app/core/data/filtered-discovery-page-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/filtered-discovery-page-response-parsing.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@angular/core'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { ObjectCacheService } from '../cache'; import { FilteredDiscoveryQueryResponse, RestResponse, -} from '../cache/response.models'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +} from '../cache'; +import { RawRestResponse } from '../dspace-rest'; import { BaseResponseParsingService } from './base-response-parsing.service'; import { ResponseParsingService } from './parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/find-list-options.model.ts b/modules/core/src/lib/core/data/find-list-options.model.ts similarity index 65% rename from src/app/core/data/find-list-options.model.ts rename to modules/core/src/lib/core/data/find-list-options.model.ts index 78fe26fcab9..6c456f992fd 100644 --- a/src/app/core/data/find-list-options.model.ts +++ b/modules/core/src/lib/core/data/find-list-options.model.ts @@ -1,5 +1,5 @@ -import { RequestParam } from '../cache/models/request-param.model'; -import { SortOptions } from '../cache/models/sort-options.model'; +import { RequestParam } from '../cache'; +import { SortOptions } from '../cache'; /** * The options for a find list request diff --git a/src/app/shared/utils/follow-link-config.model.ts b/modules/core/src/lib/core/data/follow-link-config.model.ts similarity index 94% rename from src/app/shared/utils/follow-link-config.model.ts rename to modules/core/src/lib/core/data/follow-link-config.model.ts index 0eb1ad0cae3..19e57703796 100644 --- a/src/app/shared/utils/follow-link-config.model.ts +++ b/modules/core/src/lib/core/data/follow-link-config.model.ts @@ -1,6 +1,7 @@ -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { HALResource } from '../../core/shared/hal-resource.model'; -import { hasValue } from '../empty.util'; +import { hasValue } from '@dspace/shared/utils'; + +import { HALResource } from '../shared'; +import { FindListOptions } from './find-list-options.model'; /** * A class to send the retrieval of a {@link HALLink} diff --git a/src/app/core/data/href-only-data.service.spec.ts b/modules/core/src/lib/core/data/href-only-data.service.spec.ts similarity index 96% rename from src/app/core/data/href-only-data.service.spec.ts rename to modules/core/src/lib/core/data/href-only-data.service.spec.ts index cba85d5de65..ddf23b189d2 100644 --- a/src/app/core/data/href-only-data.service.spec.ts +++ b/modules/core/src/lib/core/data/href-only-data.service.spec.ts @@ -1,10 +1,10 @@ -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { BaseDataService } from './base/base-data.service'; +import { FindListOptions } from './find-list-options.model'; import { followLink, FollowLinkConfig, -} from '../../shared/utils/follow-link-config.model'; -import { BaseDataService } from './base/base-data.service'; -import { FindListOptions } from './find-list-options.model'; +} from './follow-link-config.model'; import { HrefOnlyDataService } from './href-only-data.service'; describe(`HrefOnlyDataService`, () => { diff --git a/src/app/core/data/href-only-data.service.ts b/modules/core/src/lib/core/data/href-only-data.service.ts similarity index 89% rename from src/app/core/data/href-only-data.service.ts rename to modules/core/src/lib/core/data/href-only-data.service.ts index dd40be8f7df..336de3454c3 100644 --- a/src/app/core/data/href-only-data.service.ts +++ b/modules/core/src/lib/core/data/href-only-data.service.ts @@ -1,14 +1,14 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { BaseDataService } from './base/base-data.service'; -import { HALDataService } from './base/hal-data-service.interface'; +import { RemoteDataBuildService } from '../cache'; +import { CacheableObject } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HALEndpointService } from '../shared'; +import { BaseDataService } from './base'; +import { HALDataService } from './base'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/shared/object-list/identifier-data/identifier-data.model.ts b/modules/core/src/lib/core/data/identifier-data.model.ts similarity index 61% rename from src/app/shared/object-list/identifier-data/identifier-data.model.ts rename to modules/core/src/lib/core/data/identifier-data.model.ts index 51695416e1b..5abecf8bb98 100644 --- a/src/app/shared/object-list/identifier-data/identifier-data.model.ts +++ b/modules/core/src/lib/core/data/identifier-data.model.ts @@ -2,12 +2,12 @@ import { autoserialize, deserialize, } from 'cerialize'; -import { typedObject } from 'src/app/core/cache/builders/build-decorators'; -import { CacheableObject } from 'src/app/core/cache/cacheable-object.model'; -import { HALLink } from 'src/app/core/shared/hal-link.model'; -import { ResourceType } from 'src/app/core/shared/resource-type'; -import { excludeFromEquals } from 'src/app/core/utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { HALLink } from '../shared'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; import { Identifier } from './identifier.model'; import { IDENTIFIERS } from './identifier-data.resource-type'; diff --git a/src/app/shared/object-list/identifier-data/identifier-data.resource-type.ts b/modules/core/src/lib/core/data/identifier-data.resource-type.ts similarity index 74% rename from src/app/shared/object-list/identifier-data/identifier-data.resource-type.ts rename to modules/core/src/lib/core/data/identifier-data.resource-type.ts index 823a43eff95..89c67120624 100644 --- a/src/app/shared/object-list/identifier-data/identifier-data.resource-type.ts +++ b/modules/core/src/lib/core/data/identifier-data.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from 'src/app/core/shared/resource-type'; +import { ResourceType } from '../shared'; /** * The resource type for Identifiers diff --git a/src/app/core/data/identifier-data.service.ts b/modules/core/src/lib/core/data/identifier-data.service.ts similarity index 79% rename from src/app/core/data/identifier-data.service.ts rename to modules/core/src/lib/core/data/identifier-data.service.ts index 502b1fe7107..a484b840398 100644 --- a/src/app/core/data/identifier-data.service.ts +++ b/modules/core/src/lib/core/data/identifier-data.service.ts @@ -11,20 +11,20 @@ import { switchMap, } from 'rxjs/operators'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { IdentifierData } from '../../shared/object-list/identifier-data/identifier-data.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; import { CoreState } from '../core-state.model'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { ConfigurationProperty } from '../shared/configuration-property.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { sendRequest } from '../shared/request.operators'; -import { BaseDataService } from './base/base-data.service'; +import { HttpOptions } from '../dspace-rest'; +import { NotificationsService } from '../notifications'; +import { ConfigurationProperty } from '../shared'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { sendRequest } from '../shared'; +import { BaseDataService } from './base'; import { ConfigurationDataService } from './configuration-data.service'; import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; +import { IdentifierData } from './identifier-data.model'; import { RemoteData } from './remote-data'; import { PostRequest } from './request.models'; import { RequestService } from './request.service'; diff --git a/src/app/shared/object-list/identifier-data/identifier.model.ts b/modules/core/src/lib/core/data/identifier.model.ts similarity index 100% rename from src/app/shared/object-list/identifier-data/identifier.model.ts rename to modules/core/src/lib/core/data/identifier.model.ts diff --git a/modules/core/src/lib/core/data/index.ts b/modules/core/src/lib/core/data/index.ts new file mode 100644 index 00000000000..5635278622c --- /dev/null +++ b/modules/core/src/lib/core/data/index.ts @@ -0,0 +1,86 @@ +// created from 'create-ts-index' + +export * from './base'; +export * from './duplicate-data'; +export * from './feature-authorization'; +export * from './ldn'; +export * from './object-updates'; +export * from './processes'; +export * from './access-status-data.service'; +export * from './array-move-change-analyzer.service'; +export * from './base-response-parsing.service'; +export * from './bitstream-data.service'; +export * from './bitstream-format-data.service'; +export * from './browse-response-parsing.service'; +export * from './bundle-data.service'; +export * from './change-analyzer'; +export * from './collection-data.service'; +export * from './comcol-data.service'; +export * from './community-data.service'; +export * from './configuration-data.service'; +export * from './content-source-response-parsing.service'; +export * from './debug-response-parsing.service'; +export * from './default-change-analyzer.service'; +export * from './dso-change-analyzer.service'; +export * from './dso-redirect.service'; +export * from './dso-response-parsing.service'; +export * from './dspace-object-data.service'; +export * from './dspace-rest-response-parsing.service'; +export * from './endpoint-map-response-parsing.service'; +export * from './entity-type-data.service'; +export * from './eperson-registration.service'; +export * from './external-source-data.service'; +export * from './facet-config-response-parsing.service'; +export * from './facet-value-response-parsing.service'; +export * from './filtered-discovery-page-response-parsing.service'; +export * from './find-list-options.model'; +export * from './follow-link-config.model'; +export * from './href-only-data.service'; +export * from './identifier-data.model'; +export * from './identifier-data.resource-type'; +export * from './identifier-data.service'; +export * from './identifier.model'; +export * from './item-data.service'; +export * from './item-request-data.service'; +export * from './item-template-data.service'; +export * from './lookup-relation.service'; +export * from './metadata-field-data.service'; +export * from './metadata-schema-data.service'; +export * from './mydspace-response-parsing.service'; +export * from './notify-services-status-data.service'; +export * from './paginated-list.model'; +export * from './paginated-list.resource-type'; +export * from './parsing.service'; +export * from './primary-bitstream.service'; +export * from './registration-response-parsing.service'; +export * from './relationship-data.service'; +export * from './relationship-type-data.service'; +export * from './remote-data'; +export * from './request-entry-state.model'; +export * from './request-entry.model'; +export * from './request-error.model'; +export * from './request-state.model'; +export * from './request.actions'; +export * from './request.effects'; +export * from './request.models'; +export * from './request.reducer'; +export * from './request.service'; +export * from './response-state.model'; +export * from './rest-request-method'; +export * from './rest-request-with-response-parser.model'; +export * from './rest-request.model'; +export * from './root-data.service'; +export * from './root.model'; +export * from './root.resource-type'; +export * from './search-response-parsing.service'; +export * from './signposting-data.service'; +export * from './signposting-links.model'; +export * from './site-data.service'; +export * from './status-code-only-response-parsing.service'; +export * from './subscription.resource-type'; +export * from './subscriptions-data.service'; +export * from './system-wide-alert-data.service'; +export * from './update-data.service'; +export * from './version-data.service'; +export * from './version-history-data.service'; +export * from './workflow-action-data.service'; diff --git a/src/app/core/data/item-data.service.spec.ts b/modules/core/src/lib/core/data/item-data.service.spec.ts similarity index 95% rename from src/app/core/data/item-data.service.spec.ts rename to modules/core/src/lib/core/data/item-data.service.spec.ts index dd60d940702..51ea419153f 100644 --- a/src/app/core/data/item-data.service.spec.ts +++ b/modules/core/src/lib/core/data/item-data.service.spec.ts @@ -7,15 +7,15 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { BrowseService } from '../browse/browse.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { RestResponse } from '../cache/response.models'; import { CoreState } from '../core-state.model'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { ExternalSourceEntry } from '../shared/external-source-entry.model'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { testCreateDataImplementation } from './base/create-data.spec'; import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testPatchDataImplementation } from './base/patch-data.spec'; diff --git a/src/app/core/data/item-data.service.ts b/modules/core/src/lib/core/data/item-data.service.ts similarity index 92% rename from src/app/core/data/item-data.service.ts rename to modules/core/src/lib/core/data/item-data.service.ts index e1f789b5da7..69a8735128d 100644 --- a/src/app/core/data/item-data.service.ts +++ b/modules/core/src/lib/core/data/item-data.service.ts @@ -8,6 +8,11 @@ /* eslint-disable max-classes-per-file */ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { + hasValue, + isNotEmpty, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { Operation } from 'fast-json-patch'; import { Observable } from 'rxjs'; import { @@ -19,44 +24,39 @@ import { take, } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, - isNotEmptyOperator, -} from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; -import { BrowseService } from '../browse/browse.service'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { Bundle } from '../shared/bundle.model'; -import { Collection } from '../shared/collection.model'; -import { ExternalSourceEntry } from '../shared/external-source-entry.model'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; -import { MetadataMap } from '../shared/metadata.models'; -import { NoContent } from '../shared/NoContent.model'; -import { sendRequest } from '../shared/request.operators'; -import { URLCombiner } from '../url-combiner/url-combiner'; +import { BrowseService } from '../browse'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HttpOptions } from '../dspace-rest'; +import { NotificationsService } from '../notifications'; +import { Bundle } from '../shared'; +import { Collection } from '../shared'; +import { ExternalSourceEntry } from '../shared'; +import { GenericConstructor } from '../shared'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; +import { MetadataMap } from '../shared'; +import { NoContent } from '../shared'; +import { PaginatedSearchOptions } from '../shared'; +import { sendRequest } from '../shared'; +import { URLCombiner } from '../url-combiner'; import { CreateData, CreateDataImpl, -} from './base/create-data'; +} from './base'; import { DeleteData, DeleteDataImpl, -} from './base/delete-data'; +} from './base'; import { ConstructIdEndpoint, IdentifiableDataService, -} from './base/identifiable-data.service'; +} from './base'; import { PatchData, PatchDataImpl, -} from './base/patch-data'; +} from './base'; import { BundleDataService } from './bundle-data.service'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; import { FindListOptions } from './find-list-options.model'; diff --git a/src/app/core/data/item-request-data.service.spec.ts b/modules/core/src/lib/core/data/item-request-data.service.spec.ts similarity index 95% rename from src/app/core/data/item-request-data.service.spec.ts rename to modules/core/src/lib/core/data/item-request-data.service.spec.ts index 68577ae6e26..6b4f9bb1935 100644 --- a/src/app/core/data/item-request-data.service.spec.ts +++ b/modules/core/src/lib/core/data/item-request-data.service.spec.ts @@ -1,10 +1,10 @@ import { of as observableOf } from 'rxjs'; -import { RequestCopyEmail } from '../../request-copy/email-request-copy/request-copy-email.model'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; +import { RequestCopyEmail } from '../request-copy/request-copy-email.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { ItemRequest } from '../shared/item-request.model'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; import { ItemRequestDataService } from './item-request-data.service'; import { PostRequest } from './request.models'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/item-request-data.service.ts b/modules/core/src/lib/core/data/item-request-data.service.ts similarity index 85% rename from src/app/core/data/item-request-data.service.ts rename to modules/core/src/lib/core/data/item-request-data.service.ts index 5c85ed1471d..c5ede7ec461 100644 --- a/src/app/core/data/item-request-data.service.ts +++ b/modules/core/src/lib/core/data/item-request-data.service.ts @@ -1,5 +1,9 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -8,19 +12,15 @@ import { map, } from 'rxjs/operators'; -import { RequestCopyEmail } from '../../request-copy/email-request-copy/request-copy-email.model'; -import { - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { ItemRequest } from '../shared/item-request.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { sendRequest } from '../shared/request.operators'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HttpOptions } from '../dspace-rest'; +import { RequestCopyEmail } from '../request-copy'; +import { HALEndpointService } from '../shared'; +import { ItemRequest } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { sendRequest } from '../shared'; +import { IdentifiableDataService } from './base'; import { RemoteData } from './remote-data'; import { PostRequest, diff --git a/src/app/core/data/item-template-data.service.spec.ts b/modules/core/src/lib/core/data/item-template-data.service.spec.ts similarity index 98% rename from src/app/core/data/item-template-data.service.spec.ts rename to modules/core/src/lib/core/data/item-template-data.service.spec.ts index 27db819861c..1fab51ff902 100644 --- a/src/app/core/data/item-template-data.service.spec.ts +++ b/modules/core/src/lib/core/data/item-template-data.service.spec.ts @@ -5,11 +5,12 @@ import { of as observableOf, } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; +import createSpyObj = jasmine.createSpyObj; import { BrowseService } from '../browse/browse.service'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RestResponse } from '../cache/response.models'; import { CoreState } from '../core-state.model'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; import { testCreateDataImplementation } from './base/create-data.spec'; @@ -21,7 +22,6 @@ import { RequestService } from './request.service'; import { RequestEntry } from './request-entry.model'; import { RestRequest } from './rest-request.model'; import { RestRequestMethod } from './rest-request-method'; -import createSpyObj = jasmine.createSpyObj; describe('ItemTemplateDataService', () => { let service: ItemTemplateDataService; diff --git a/src/app/core/data/item-template-data.service.ts b/modules/core/src/lib/core/data/item-template-data.service.ts similarity index 88% rename from src/app/core/data/item-template-data.service.ts rename to modules/core/src/lib/core/data/item-template-data.service.ts index f89a297fad9..563840e2be2 100644 --- a/src/app/core/data/item-template-data.service.ts +++ b/modules/core/src/lib/core/data/item-template-data.service.ts @@ -3,18 +3,18 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { switchMap } from 'rxjs/operators'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { BrowseService } from '../browse/browse.service'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; -import { CreateDataImpl } from './base/create-data'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { BrowseService } from '../browse'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; +import { CreateDataImpl } from './base'; +import { IdentifiableDataService } from './base'; import { BundleDataService } from './bundle-data.service'; import { CollectionDataService } from './collection-data.service'; import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; +import { FollowLinkConfig } from './follow-link-config.model'; import { BaseItemDataService } from './item-data.service'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/modules/core/src/lib/core/data/ldn/index.ts b/modules/core/src/lib/core/data/ldn/index.ts new file mode 100644 index 00000000000..a2364ce9f11 --- /dev/null +++ b/modules/core/src/lib/core/data/ldn/index.ts @@ -0,0 +1,7 @@ +// created from 'create-ts-index' + +export * from './ldn-service-itemfilters'; +export * from './ldn-service-patterns.model'; +export * from './ldn-service.constrain.model'; +export * from './ldn-service.resource-type'; +export * from './ldn-services.model'; diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters.ts b/modules/core/src/lib/core/data/ldn/ldn-service-itemfilters.ts similarity index 66% rename from src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters.ts rename to modules/core/src/lib/core/data/ldn/ldn-service-itemfilters.ts index 25fb9e70dd4..f7c8522874f 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters.ts +++ b/modules/core/src/lib/core/data/ldn/ldn-service-itemfilters.ts @@ -4,10 +4,10 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../../core/cache/cacheable-object.model'; -import { ResourceType } from '../../../core/shared/resource-type'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; +import { typedObject } from '../../cache/builders/build-decorators'; +import { CacheableObject } from '../../cache/cacheable-object.model'; +import { ResourceType } from '../../shared/resource-type'; +import { excludeFromEquals } from '../../utilities/equals.decorators'; import { LDN_SERVICE_CONSTRAINT_FILTER } from './ldn-service.resource-type'; /** A single filter value and its properties. */ diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-patterns.model.ts b/modules/core/src/lib/core/data/ldn/ldn-service-patterns.model.ts similarity index 100% rename from src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-patterns.model.ts rename to modules/core/src/lib/core/data/ldn/ldn-service-patterns.model.ts diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.constrain.model.ts b/modules/core/src/lib/core/data/ldn/ldn-service.constrain.model.ts similarity index 100% rename from src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.constrain.model.ts rename to modules/core/src/lib/core/data/ldn/ldn-service.constrain.model.ts diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.resource-type.ts b/modules/core/src/lib/core/data/ldn/ldn-service.resource-type.ts similarity index 83% rename from src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.resource-type.ts rename to modules/core/src/lib/core/data/ldn/ldn-service.resource-type.ts index 05a881e7e74..f6db39ab859 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service.resource-type.ts +++ b/modules/core/src/lib/core/data/ldn/ldn-service.resource-type.ts @@ -4,7 +4,7 @@ * Needs to be in a separate file to prevent circular * dependencies in webpack. */ -import { ResourceType } from '../../../core/shared/resource-type'; +import { ResourceType } from '../../shared/resource-type'; export const LDN_SERVICE = new ResourceType('ldnservice'); export const LDN_SERVICE_CONSTRAINT_FILTERS = new ResourceType('itemfilters'); diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-services.model.ts b/modules/core/src/lib/core/data/ldn/ldn-services.model.ts similarity index 80% rename from src/app/admin/admin-ldn-services/ldn-services-model/ldn-services.model.ts rename to modules/core/src/lib/core/data/ldn/ldn-services.model.ts index 1497b618f0e..e66db2d6fed 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-services.model.ts +++ b/modules/core/src/lib/core/data/ldn/ldn-services.model.ts @@ -5,10 +5,10 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../../core/cache/cacheable-object.model'; -import { ResourceType } from '../../../core/shared/resource-type'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; +import { typedObject } from '../../cache/builders/build-decorators'; +import { CacheableObject } from '../../cache/cacheable-object.model'; +import { ResourceType } from '../../shared/resource-type'; +import { excludeFromEquals } from '../../utilities/equals.decorators'; import { LDN_SERVICE } from './ldn-service.resource-type'; import { NotifyServicePattern } from './ldn-service-patterns.model'; diff --git a/src/app/core/data/lookup-relation.service.spec.ts b/modules/core/src/lib/core/data/lookup-relation.service.spec.ts similarity index 91% rename from src/app/core/data/lookup-relation.service.spec.ts rename to modules/core/src/lib/core/data/lookup-relation.service.spec.ts index 93b4ed66968..ed1b1eca445 100644 --- a/src/app/core/data/lookup-relation.service.spec.ts +++ b/modules/core/src/lib/core/data/lookup-relation.service.spec.ts @@ -4,15 +4,15 @@ import { take, } from 'rxjs/operators'; -import { RelationshipOptions } from '../../shared/form/builder/models/relationship-options.model'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; -import { SearchResult } from '../../shared/search/models/search-result.model'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { ExternalSource } from '../shared/external-source.model'; +import { RelationshipOptions } from '../shared/form/relationship-options.model'; import { Item } from '../shared/item.model'; import { PageInfo } from '../shared/page-info.model'; +import { PaginatedSearchOptions } from '../shared/paginated-search-options.model'; +import { SearchResult } from '../shared/search/models/search-result.model'; import { SearchService } from '../shared/search/search.service'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { ExternalSourceDataService } from './external-source-data.service'; import { LookupRelationService } from './lookup-relation.service'; import { buildPaginatedList } from './paginated-list.model'; diff --git a/src/app/core/data/lookup-relation.service.ts b/modules/core/src/lib/core/data/lookup-relation.service.ts similarity index 85% rename from src/app/core/data/lookup-relation.service.ts rename to modules/core/src/lib/core/data/lookup-relation.service.ts index 55b68afa652..9cc0171663a 100644 --- a/src/app/core/data/lookup-relation.service.ts +++ b/modules/core/src/lib/core/data/lookup-relation.service.ts @@ -13,19 +13,19 @@ import { takeWhile, } from 'rxjs/operators'; -import { RelationshipOptions } from '../../shared/form/builder/models/relationship-options.model'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; -import { SearchResult } from '../../shared/search/models/search-result.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { ExternalSource } from '../shared/external-source.model'; -import { ExternalSourceEntry } from '../shared/external-source-entry.model'; -import { Item } from '../shared/item.model'; +import { DSpaceObject } from '../shared'; +import { ExternalSource } from '../shared'; +import { ExternalSourceEntry } from '../shared'; +import { RelationshipOptions } from '../shared'; +import { Item } from '../shared'; import { getAllSucceededRemoteData, getRemoteDataPayload, -} from '../shared/operators'; -import { SearchService } from '../shared/search/search.service'; +} from '../shared'; +import { PaginatedSearchOptions } from '../shared'; +import { PaginationComponentOptions } from '../shared'; +import { SearchResult } from '../shared'; +import { SearchService } from '../shared'; import { ExternalSourceDataService } from './external-source-data.service'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; diff --git a/src/app/core/data/metadata-field-data.service.spec.ts b/modules/core/src/lib/core/data/metadata-field-data.service.spec.ts similarity index 92% rename from src/app/core/data/metadata-field-data.service.spec.ts rename to modules/core/src/lib/core/data/metadata-field-data.service.spec.ts index 8d65038060d..dd4e51f2cf8 100644 --- a/src/app/core/data/metadata-field-data.service.spec.ts +++ b/modules/core/src/lib/core/data/metadata-field-data.service.spec.ts @@ -1,14 +1,14 @@ import { of as observableOf } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RequestParam } from '../cache/models/request-param.model'; import { RestResponse } from '../cache/response.models'; import { MetadataSchema } from '../metadata/metadata-schema.model'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { testCreateDataImplementation } from './base/create-data.spec'; import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testPutDataImplementation } from './base/put-data.spec'; diff --git a/src/app/core/data/metadata-field-data.service.ts b/modules/core/src/lib/core/data/metadata-field-data.service.ts similarity index 91% rename from src/app/core/data/metadata-field-data.service.ts rename to modules/core/src/lib/core/data/metadata-field-data.service.ts index aa79ef517ee..2af8ce8ac5c 100644 --- a/src/app/core/data/metadata-field-data.service.ts +++ b/modules/core/src/lib/core/data/metadata-field-data.service.ts @@ -1,35 +1,35 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { take } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { MetadataField } from '../metadata/metadata-field.model'; -import { MetadataSchema } from '../metadata/metadata-schema.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { MetadataField } from '../metadata'; +import { MetadataSchema } from '../metadata'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; import { CreateData, CreateDataImpl, -} from './base/create-data'; +} from './base'; import { DeleteData, DeleteDataImpl, -} from './base/delete-data'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from './base'; +import { IdentifiableDataService } from './base'; import { PutData, PutDataImpl, -} from './base/put-data'; +} from './base'; import { SearchData, SearchDataImpl, -} from './base/search-data'; +} from './base'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/metadata-schema-data.service.spec.ts b/modules/core/src/lib/core/data/metadata-schema-data.service.spec.ts similarity index 93% rename from src/app/core/data/metadata-schema-data.service.spec.ts rename to modules/core/src/lib/core/data/metadata-schema-data.service.spec.ts index 02fbc016e7f..5427b825b30 100644 --- a/src/app/core/data/metadata-schema-data.service.spec.ts +++ b/modules/core/src/lib/core/data/metadata-schema-data.service.spec.ts @@ -1,12 +1,12 @@ import { of as observableOf } from 'rxjs'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RestResponse } from '../cache/response.models'; import { MetadataSchema } from '../metadata/metadata-schema.model'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testFindAllDataImplementation } from './base/find-all-data.spec'; import { MetadataSchemaDataService } from './metadata-schema-data.service'; diff --git a/src/app/core/data/metadata-schema-data.service.ts b/modules/core/src/lib/core/data/metadata-schema-data.service.ts similarity index 88% rename from src/app/core/data/metadata-schema-data.service.ts rename to modules/core/src/lib/core/data/metadata-schema-data.service.ts index e893cb5404b..52ad36fceb3 100644 --- a/src/app/core/data/metadata-schema-data.service.ts +++ b/modules/core/src/lib/core/data/metadata-schema-data.service.ts @@ -1,33 +1,33 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { tap } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { MetadataSchema } from '../metadata/metadata-schema.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { MetadataSchema } from '../metadata'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; import { CreateData, CreateDataImpl, -} from './base/create-data'; +} from './base'; import { DeleteData, DeleteDataImpl, -} from './base/delete-data'; +} from './base'; import { FindAllData, FindAllDataImpl, -} from './base/find-all-data'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from './base'; +import { IdentifiableDataService } from './base'; import { PutData, PutDataImpl, -} from './base/put-data'; +} from './base'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/mydspace-response-parsing.service.ts b/modules/core/src/lib/core/data/mydspace-response-parsing.service.ts similarity index 88% rename from src/app/core/data/mydspace-response-parsing.service.ts rename to modules/core/src/lib/core/data/mydspace-response-parsing.service.ts index f824be7f56b..d5ee7072f22 100644 --- a/src/app/core/data/mydspace-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/mydspace-response-parsing.service.ts @@ -1,14 +1,14 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; -import { hasValue } from '../../shared/empty.util'; -import { SearchObjects } from '../../shared/search/models/search-objects.model'; -import { ParsedResponse } from '../cache/response.models'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { ParsedResponse } from '../cache'; +import { DSpaceSerializer } from '../dspace-rest'; +import { RawRestResponse } from '../dspace-rest'; import { MetadataMap, MetadataValue, -} from '../shared/metadata.models'; +} from '../shared'; +import { SearchObjects } from '../shared'; import { DspaceRestResponseParsingService } from './dspace-rest-response-parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/notify-services-status-data.service.spec.ts b/modules/core/src/lib/core/data/notify-services-status-data.service.spec.ts similarity index 94% rename from src/app/core/data/notify-services-status-data.service.spec.ts rename to modules/core/src/lib/core/data/notify-services-status-data.service.spec.ts index e3368435052..1406bad99be 100644 --- a/src/app/core/data/notify-services-status-data.service.spec.ts +++ b/modules/core/src/lib/core/data/notify-services-status-data.service.spec.ts @@ -5,15 +5,15 @@ import { import { of } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotifyRequestsStatus } from '../../item-page/simple/notify-requests-status/notify-requests-status.model'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { RestResponse } from '../cache/response.models'; +import { NotifyRequestsStatus } from '../notify-requests/notify-requests-status.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; import { NotifyRequestsStatusDataService } from './notify-services-status-data.service'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/notify-services-status-data.service.ts b/modules/core/src/lib/core/data/notify-services-status-data.service.ts similarity index 76% rename from src/app/core/data/notify-services-status-data.service.ts rename to modules/core/src/lib/core/data/notify-services-status-data.service.ts index deeaad967a7..b9714be4055 100644 --- a/src/app/core/data/notify-services-status-data.service.ts +++ b/modules/core/src/lib/core/data/notify-services-status-data.service.ts @@ -5,11 +5,11 @@ import { take, } from 'rxjs'; -import { NotifyRequestsStatus } from '../../item-page/simple/notify-requests-status/notify-requests-status.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { NotifyRequestsStatus } from '../notify-requests'; +import { HALEndpointService } from '../shared'; +import { IdentifiableDataService } from './base'; import { RemoteData } from './remote-data'; import { GetRequest } from './request.models'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/object-updates/field-change-type.model.ts b/modules/core/src/lib/core/data/object-updates/field-change-type.model.ts similarity index 100% rename from src/app/core/data/object-updates/field-change-type.model.ts rename to modules/core/src/lib/core/data/object-updates/field-change-type.model.ts diff --git a/src/app/core/data/object-updates/field-update.model.ts b/modules/core/src/lib/core/data/object-updates/field-update.model.ts similarity index 100% rename from src/app/core/data/object-updates/field-update.model.ts rename to modules/core/src/lib/core/data/object-updates/field-update.model.ts diff --git a/src/app/core/data/object-updates/field-updates.model.ts b/modules/core/src/lib/core/data/object-updates/field-updates.model.ts similarity index 100% rename from src/app/core/data/object-updates/field-updates.model.ts rename to modules/core/src/lib/core/data/object-updates/field-updates.model.ts diff --git a/src/app/core/data/object-updates/identifiable.model.ts b/modules/core/src/lib/core/data/object-updates/identifiable.model.ts similarity index 100% rename from src/app/core/data/object-updates/identifiable.model.ts rename to modules/core/src/lib/core/data/object-updates/identifiable.model.ts diff --git a/modules/core/src/lib/core/data/object-updates/index.ts b/modules/core/src/lib/core/data/object-updates/index.ts new file mode 100644 index 00000000000..dfca8b748e8 --- /dev/null +++ b/modules/core/src/lib/core/data/object-updates/index.ts @@ -0,0 +1,11 @@ +// created from 'create-ts-index' + +export * from './patch-operation-service'; +export * from './field-change-type.model'; +export * from './field-update.model'; +export * from './field-updates.model'; +export * from './identifiable.model'; +export * from './object-updates.actions'; +export * from './object-updates.effects'; +export * from './object-updates.reducer'; +export * from './object-updates.service'; diff --git a/src/app/core/data/object-updates/object-updates.actions.ts b/modules/core/src/lib/core/data/object-updates/object-updates.actions.ts similarity index 97% rename from src/app/core/data/object-updates/object-updates.actions.ts rename to modules/core/src/lib/core/data/object-updates/object-updates.actions.ts index 8a95a7827ce..facd8ce6c3c 100644 --- a/src/app/core/data/object-updates/object-updates.actions.ts +++ b/modules/core/src/lib/core/data/object-updates/object-updates.actions.ts @@ -1,12 +1,12 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../../shared/ngrx/type'; -import { INotification } from '../../../shared/notifications/models/notification.model'; -import { GenericConstructor } from '../../shared/generic-constructor'; +import { INotification } from '../../notifications'; +import { GenericConstructor } from '../../shared'; +import { type } from '../../shared'; import { FieldChangeType } from './field-change-type.model'; import { Identifiable } from './identifiable.model'; -import { PatchOperationService } from './patch-operation-service/patch-operation.service'; +import { PatchOperationService } from './patch-operation-service'; /** * The list of ObjectUpdatesAction type definitions diff --git a/src/app/core/data/object-updates/object-updates.effects.spec.ts b/modules/core/src/lib/core/data/object-updates/object-updates.effects.spec.ts similarity index 93% rename from src/app/core/data/object-updates/object-updates.effects.spec.ts rename to modules/core/src/lib/core/data/object-updates/object-updates.effects.spec.ts index 10f37d78cb1..0e31ff10a8c 100644 --- a/src/app/core/data/object-updates/object-updates.effects.spec.ts +++ b/modules/core/src/lib/core/data/object-updates/object-updates.effects.spec.ts @@ -14,14 +14,11 @@ import { } from 'rxjs'; import { take } from 'rxjs/operators'; -import { NoOpAction } from '../../../shared/ngrx/no-op.action'; -import { - INotification, - Notification, -} from '../../../shared/notifications/models/notification.model'; -import { NotificationType } from '../../../shared/notifications/models/notification-type'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; +import { INotification } from '../../notifications/models/notification.model'; +import { NotificationType } from '../../notifications/models/notification-type'; +import { NotificationsService } from '../../notifications/notifications.service'; +import { NoOpAction } from '../../shared/ngrx/no-op.action'; +import { NotificationsServiceStub } from '../../utilities/testing/notifications-service.stub'; import { DiscardObjectUpdatesAction, ObjectUpdatesAction, diff --git a/src/app/core/data/object-updates/object-updates.effects.ts b/modules/core/src/lib/core/data/object-updates/object-updates.effects.ts similarity index 94% rename from src/app/core/data/object-updates/object-updates.effects.ts rename to modules/core/src/lib/core/data/object-updates/object-updates.effects.ts index 5ef86dbbec3..32f002f8b8d 100644 --- a/src/app/core/data/object-updates/object-updates.effects.ts +++ b/modules/core/src/lib/core/data/object-updates/object-updates.effects.ts @@ -1,4 +1,8 @@ import { Injectable } from '@angular/core'; +import { + hasNoValue, + hasValue, +} from '@dspace/shared/utils'; import { Actions, createEffect, @@ -19,18 +23,14 @@ import { tap, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, -} from '../../../shared/empty.util'; -import { NoOpAction } from '../../../shared/ngrx/no-op.action'; -import { INotification } from '../../../shared/notifications/models/notification.model'; +import { INotification } from '../../notifications'; import { NotificationsActions, NotificationsActionTypes, RemoveNotificationAction, -} from '../../../shared/notifications/notifications.actions'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; +} from '../../notifications'; +import { NotificationsService } from '../../notifications'; +import { NoOpAction } from '../../shared'; import { DiscardObjectUpdatesAction, ObjectUpdatesAction, diff --git a/src/app/core/data/object-updates/object-updates.reducer.spec.ts b/modules/core/src/lib/core/data/object-updates/object-updates.reducer.spec.ts similarity index 100% rename from src/app/core/data/object-updates/object-updates.reducer.spec.ts rename to modules/core/src/lib/core/data/object-updates/object-updates.reducer.spec.ts diff --git a/src/app/core/data/object-updates/object-updates.reducer.ts b/modules/core/src/lib/core/data/object-updates/object-updates.reducer.ts similarity index 97% rename from src/app/core/data/object-updates/object-updates.reducer.ts rename to modules/core/src/lib/core/data/object-updates/object-updates.reducer.ts index cadae9ae838..cc40fb8b7a6 100644 --- a/src/app/core/data/object-updates/object-updates.reducer.ts +++ b/modules/core/src/lib/core/data/object-updates/object-updates.reducer.ts @@ -1,11 +1,12 @@ import { hasNoValue, hasValue, -} from '../../../shared/empty.util'; -import { GenericConstructor } from '../../shared/generic-constructor'; -import { Item } from '../../shared/item.model'; -import { Relationship } from '../../shared/item-relationships/relationship.model'; -import { RelationshipType } from '../../shared/item-relationships/relationship-type.model'; +} from '@dspace/shared/utils'; + +import { GenericConstructor } from '../../shared'; +import { Item } from '../../shared'; +import { Relationship } from '../../shared'; +import { RelationshipType } from '../../shared'; import { FieldChangeType } from './field-change-type.model'; import { FieldUpdates } from './field-updates.model'; import { Identifiable } from './identifiable.model'; @@ -22,7 +23,7 @@ import { SetEditableFieldUpdateAction, SetValidFieldUpdateAction, } from './object-updates.actions'; -import { PatchOperationService } from './patch-operation-service/patch-operation.service'; +import { PatchOperationService } from './patch-operation-service'; /** * Path where discarded objects are saved diff --git a/src/app/core/data/object-updates/object-updates.service.spec.ts b/modules/core/src/lib/core/data/object-updates/object-updates.service.spec.ts similarity index 98% rename from src/app/core/data/object-updates/object-updates.service.spec.ts rename to modules/core/src/lib/core/data/object-updates/object-updates.service.spec.ts index 6602cda080c..fa3dea997b0 100644 --- a/src/app/core/data/object-updates/object-updates.service.spec.ts +++ b/modules/core/src/lib/core/data/object-updates/object-updates.service.spec.ts @@ -3,9 +3,8 @@ import { Store } from '@ngrx/store'; import { createMockStore } from '@ngrx/store/testing'; import { of as observableOf } from 'rxjs'; -import { Notification } from '../../../shared/notifications/models/notification.model'; -import { NotificationType } from '../../../shared/notifications/models/notification-type'; import { CoreState } from '../../core-state.model'; +import { NotificationType } from '../../notifications/models/notification-type'; import { Relationship } from '../../shared/item-relationships/relationship.model'; import { FieldChangeType } from './field-change-type.model'; import { diff --git a/src/app/core/data/object-updates/object-updates.service.stub.ts b/modules/core/src/lib/core/data/object-updates/object-updates.service.stub.ts similarity index 100% rename from src/app/core/data/object-updates/object-updates.service.stub.ts rename to modules/core/src/lib/core/data/object-updates/object-updates.service.stub.ts diff --git a/src/app/core/data/object-updates/object-updates.service.ts b/modules/core/src/lib/core/data/object-updates/object-updates.service.ts similarity index 98% rename from src/app/core/data/object-updates/object-updates.service.ts rename to modules/core/src/lib/core/data/object-updates/object-updates.service.ts index 75b554d87b1..725866a7358 100644 --- a/src/app/core/data/object-updates/object-updates.service.ts +++ b/modules/core/src/lib/core/data/object-updates/object-updates.service.ts @@ -2,6 +2,13 @@ import { Injectable, Injector, } from '@angular/core'; +import { + hasNoValue, + hasValue, + hasValueOperator, + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { createSelector, MemoizedSelector, @@ -18,17 +25,10 @@ import { take, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, - hasValueOperator, - isEmpty, - isNotEmpty, -} from '../../../shared/empty.util'; -import { INotification } from '../../../shared/notifications/models/notification.model'; import { coreSelector } from '../../core.selectors'; import { CoreState } from '../../core-state.model'; -import { GenericConstructor } from '../../shared/generic-constructor'; +import { INotification } from '../../notifications'; +import { GenericConstructor } from '../../shared'; import { FieldChangeType } from './field-change-type.model'; import { FieldUpdates } from './field-updates.model'; import { Identifiable } from './identifiable.model'; @@ -49,7 +49,7 @@ import { ObjectUpdatesState, VirtualMetadataSource, } from './object-updates.reducer'; -import { PatchOperationService } from './patch-operation-service/patch-operation.service'; +import { PatchOperationService } from './patch-operation-service'; function objectUpdatesStateSelector(): MemoizedSelector { return createSelector(coreSelector, (state: CoreState) => state['cache/object-updates']); diff --git a/modules/core/src/lib/core/data/object-updates/patch-operation-service/index.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/index.ts new file mode 100644 index 00000000000..cbb4922747d --- /dev/null +++ b/modules/core/src/lib/core/data/object-updates/patch-operation-service/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './operations'; +export * from './metadata-patch-operation.service'; +export * from './patch-operation.service'; diff --git a/src/app/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.spec.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.spec.ts similarity index 100% rename from src/app/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.spec.ts rename to modules/core/src/lib/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.spec.ts diff --git a/src/app/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.ts similarity index 88% rename from src/app/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.ts rename to modules/core/src/lib/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.ts index b6dccb759b2..ea1f31d58f6 100644 --- a/src/app/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.ts +++ b/modules/core/src/lib/core/data/object-updates/patch-operation-service/metadata-patch-operation.service.ts @@ -1,14 +1,14 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Operation } from 'fast-json-patch'; -import { hasValue } from '../../../../shared/empty.util'; -import { MetadatumViewModel } from '../../../shared/metadata.models'; +import { MetadatumViewModel } from '../../../shared'; import { FieldChangeType } from '../field-change-type.model'; import { FieldUpdates } from '../field-updates.model'; -import { MetadataPatchAddOperation } from './operations/metadata/metadata-patch-add-operation.model'; -import { MetadataPatchOperation } from './operations/metadata/metadata-patch-operation.model'; -import { MetadataPatchRemoveOperation } from './operations/metadata/metadata-patch-remove-operation.model'; -import { MetadataPatchReplaceOperation } from './operations/metadata/metadata-patch-replace-operation.model'; +import { MetadataPatchAddOperation } from './operations'; +import { MetadataPatchOperation } from './operations'; +import { MetadataPatchRemoveOperation } from './operations'; +import { MetadataPatchReplaceOperation } from './operations'; import { PatchOperationService } from './patch-operation.service'; /** diff --git a/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/index.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/index.ts new file mode 100644 index 00000000000..83fcf6a1f7d --- /dev/null +++ b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './metadata'; diff --git a/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/index.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/index.ts new file mode 100644 index 00000000000..b115234ed3a --- /dev/null +++ b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/index.ts @@ -0,0 +1,7 @@ +// created from 'create-ts-index' + +export * from './metadata-patch-add-operation.model'; +export * from './metadata-patch-move-operation.model'; +export * from './metadata-patch-operation.model'; +export * from './metadata-patch-remove-operation.model'; +export * from './metadata-patch-replace-operation.model'; diff --git a/src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-add-operation.model.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-add-operation.model.ts similarity index 100% rename from src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-add-operation.model.ts rename to modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-add-operation.model.ts diff --git a/src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-move-operation.model.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-move-operation.model.ts similarity index 100% rename from src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-move-operation.model.ts rename to modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-move-operation.model.ts diff --git a/src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-operation.model.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-operation.model.ts similarity index 100% rename from src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-operation.model.ts rename to modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-operation.model.ts diff --git a/src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-remove-operation.model.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-remove-operation.model.ts similarity index 100% rename from src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-remove-operation.model.ts rename to modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-remove-operation.model.ts diff --git a/src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-replace-operation.model.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-replace-operation.model.ts similarity index 100% rename from src/app/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-replace-operation.model.ts rename to modules/core/src/lib/core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-replace-operation.model.ts diff --git a/src/app/core/data/object-updates/patch-operation-service/patch-operation.service.ts b/modules/core/src/lib/core/data/object-updates/patch-operation-service/patch-operation.service.ts similarity index 100% rename from src/app/core/data/object-updates/patch-operation-service/patch-operation.service.ts rename to modules/core/src/lib/core/data/object-updates/patch-operation-service/patch-operation.service.ts diff --git a/src/app/core/data/paginated-list.model.ts b/modules/core/src/lib/core/data/paginated-list.model.ts similarity index 91% rename from src/app/core/data/paginated-list.model.ts rename to modules/core/src/lib/core/data/paginated-list.model.ts index ef2819afd8f..55c13850c6b 100644 --- a/src/app/core/data/paginated-list.model.ts +++ b/modules/core/src/lib/core/data/paginated-list.model.ts @@ -1,21 +1,21 @@ -import { - autoserialize, - deserialize, -} from 'cerialize'; - import { hasNoValue, hasValue, isEmpty, isUndefined, -} from '../../shared/empty.util'; -import { typedObject } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { HALLink } from '../shared/hal-link.model'; -import { HALResource } from '../shared/hal-resource.model'; -import { PageInfo } from '../shared/page-info.model'; -import { ResourceType } from '../shared/resource-type'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +} from '@dspace/shared/utils'; +import { + autoserialize, + deserialize, +} from 'cerialize'; + +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { HALLink } from '../shared'; +import { HALResource } from '../shared'; +import { PageInfo } from '../shared'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; import { PAGINATED_LIST } from './paginated-list.resource-type'; /** diff --git a/src/app/core/data/paginated-list.resource-type.ts b/modules/core/src/lib/core/data/paginated-list.resource-type.ts similarity index 54% rename from src/app/core/data/paginated-list.resource-type.ts rename to modules/core/src/lib/core/data/paginated-list.resource-type.ts index e58b6cc95d8..89ef1168a19 100644 --- a/src/app/core/data/paginated-list.resource-type.ts +++ b/modules/core/src/lib/core/data/paginated-list.resource-type.ts @@ -1,3 +1,3 @@ -import { ResourceType } from '../shared/resource-type'; +import { ResourceType } from '../shared'; export const PAGINATED_LIST = new ResourceType('paginated-list'); diff --git a/src/app/core/data/parsing.service.ts b/modules/core/src/lib/core/data/parsing.service.ts similarity index 55% rename from src/app/core/data/parsing.service.ts rename to modules/core/src/lib/core/data/parsing.service.ts index 9bf91121cc4..3e8b156fb1e 100644 --- a/src/app/core/data/parsing.service.ts +++ b/modules/core/src/lib/core/data/parsing.service.ts @@ -1,5 +1,5 @@ -import { ParsedResponse } from '../cache/response.models'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { ParsedResponse } from '../cache'; +import { RawRestResponse } from '../dspace-rest'; import { RestRequest } from './rest-request.model'; export interface ResponseParsingService { diff --git a/src/app/core/data/primary-bitstream.service.spec.ts b/modules/core/src/lib/core/data/primary-bitstream.service.spec.ts similarity index 94% rename from src/app/core/data/primary-bitstream.service.spec.ts rename to modules/core/src/lib/core/data/primary-bitstream.service.spec.ts index 6a9c89f7968..d075102290b 100644 --- a/src/app/core/data/primary-bitstream.service.spec.ts +++ b/modules/core/src/lib/core/data/primary-bitstream.service.spec.ts @@ -1,21 +1,21 @@ import { getTestScheduler } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { - createFailedRemoteDataObject, - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { Bitstream } from '../shared/bitstream.model'; import { Bundle } from '../shared/bundle.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { + createFailedRemoteDataObject, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { NotificationsServiceStub } from '../utilities/testing/notifications-service.stub'; import { BundleDataService } from './bundle-data.service'; import { PrimaryBitstreamService } from './primary-bitstream.service'; import { diff --git a/src/app/core/data/primary-bitstream.service.ts b/modules/core/src/lib/core/data/primary-bitstream.service.ts similarity index 83% rename from src/app/core/data/primary-bitstream.service.ts rename to modules/core/src/lib/core/data/primary-bitstream.service.ts index a5367e67ed4..3b173cfea8a 100644 --- a/src/app/core/data/primary-bitstream.service.ts +++ b/modules/core/src/lib/core/data/primary-bitstream.service.ts @@ -5,16 +5,16 @@ import { switchMap, } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { Bitstream } from '../shared/bitstream.model'; -import { Bundle } from '../shared/bundle.model'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; -import { getAllCompletedRemoteData } from '../shared/operators'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HttpOptions } from '../dspace-rest'; +import { NotificationsService } from '../notifications'; +import { Bitstream } from '../shared'; +import { Bundle } from '../shared'; +import { GenericConstructor } from '../shared'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; +import { getAllCompletedRemoteData } from '../shared'; import { BundleDataService } from './bundle-data.service'; import { RemoteData } from './remote-data'; import { diff --git a/modules/core/src/lib/core/data/processes/index.ts b/modules/core/src/lib/core/data/processes/index.ts new file mode 100644 index 00000000000..57568e453c5 --- /dev/null +++ b/modules/core/src/lib/core/data/processes/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './process-data.service'; +export * from './script-data.service'; diff --git a/src/app/core/data/processes/process-data.service.spec.ts b/modules/core/src/lib/core/data/processes/process-data.service.spec.ts similarity index 95% rename from src/app/core/data/processes/process-data.service.spec.ts rename to modules/core/src/lib/core/data/processes/process-data.service.spec.ts index 217567776c2..c64257730d1 100644 --- a/src/app/core/data/processes/process-data.service.spec.ts +++ b/modules/core/src/lib/core/data/processes/process-data.service.spec.ts @@ -16,12 +16,12 @@ import { ReducerManager } from '@ngrx/store'; import { of } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { Process } from '../../../process-page/processes/process.model'; -import { ProcessStatus } from '../../../process-page/processes/process-status.model'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../../cache/object-cache.service'; +import { getMockRequestService } from '../../mocks/request.service.mock'; +import { NotificationsService } from '../../notifications/notifications.service'; +import { Process } from '../../processes/process.model'; +import { ProcessStatus } from '../../processes/process-status.model'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; import { testDeleteDataImplementation } from '../base/delete-data.spec'; import { testFindAllDataImplementation } from '../base/find-all-data.spec'; diff --git a/src/app/core/data/processes/process-data.service.ts b/modules/core/src/lib/core/data/processes/process-data.service.ts similarity index 92% rename from src/app/core/data/processes/process-data.service.ts rename to modules/core/src/lib/core/data/processes/process-data.service.ts index b39a500c804..c1a70e2202c 100644 --- a/src/app/core/data/processes/process-data.service.ts +++ b/modules/core/src/lib/core/data/processes/process-data.service.ts @@ -4,6 +4,7 @@ import { InjectionToken, NgZone, } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable, Subscription, @@ -14,33 +15,32 @@ import { find, switchMap, } from 'rxjs/operators'; -import { ProcessStatus } from 'src/app/process-page/processes/process-status.model'; -import { Process } from '../../../process-page/processes/process.model'; -import { hasValue } from '../../../shared/empty.util'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { Bitstream } from '../../shared/bitstream.model'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { NoContent } from '../../shared/NoContent.model'; -import { getAllCompletedRemoteData } from '../../shared/operators'; +import { RemoteDataBuildService } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { NotificationsService } from '../../notifications'; +import { Process } from '../../processes'; +import { ProcessStatus } from '../../processes'; +import { Bitstream } from '../../shared'; +import { HALEndpointService } from '../../shared'; +import { NoContent } from '../../shared'; +import { getAllCompletedRemoteData } from '../../shared'; import { DeleteData, DeleteDataImpl, -} from '../base/delete-data'; +} from '../base'; import { FindAllData, FindAllDataImpl, -} from '../base/find-all-data'; -import { IdentifiableDataService } from '../base/identifiable-data.service'; +} from '../base'; +import { IdentifiableDataService } from '../base'; import { SearchData, SearchDataImpl, -} from '../base/search-data'; +} from '../base'; import { BitstreamDataService } from '../bitstream-data.service'; import { FindListOptions } from '../find-list-options.model'; +import { FollowLinkConfig } from '../follow-link-config.model'; import { PaginatedList } from '../paginated-list.model'; import { RemoteData } from '../remote-data'; import { RequestService } from '../request.service'; diff --git a/src/app/core/data/processes/script-data.service.spec.ts b/modules/core/src/lib/core/data/processes/script-data.service.spec.ts similarity index 99% rename from src/app/core/data/processes/script-data.service.spec.ts rename to modules/core/src/lib/core/data/processes/script-data.service.spec.ts index 0aee3cfb464..e7ce41b0e93 100644 --- a/src/app/core/data/processes/script-data.service.spec.ts +++ b/modules/core/src/lib/core/data/processes/script-data.service.spec.ts @@ -5,7 +5,6 @@ * * http://www.dspace.org/license/ */ - import { testFindAllDataImplementation } from '../base/find-all-data.spec'; import { ScriptDataService } from './script-data.service'; diff --git a/src/app/core/data/processes/script-data.service.ts b/modules/core/src/lib/core/data/processes/script-data.service.ts similarity index 82% rename from src/app/core/data/processes/script-data.service.ts rename to modules/core/src/lib/core/data/processes/script-data.service.ts index e61da4db636..6a3f1c7cc4e 100644 --- a/src/app/core/data/processes/script-data.service.ts +++ b/modules/core/src/lib/core/data/processes/script-data.service.ts @@ -1,26 +1,26 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { map, take, } from 'rxjs/operators'; -import { Process } from '../../../process-page/processes/process.model'; -import { ProcessParameter } from '../../../process-page/processes/process-parameter.model'; -import { Script } from '../../../process-page/scripts/script.model'; -import { hasValue } from '../../../shared/empty.util'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../cache/object-cache.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../../shared/operators'; -import { URLCombiner } from '../../url-combiner/url-combiner'; +import { RemoteDataBuildService } from '../../cache'; +import { ObjectCacheService } from '../../cache'; +import { Process } from '../../processes'; +import { ProcessParameter } from '../../processes'; +import { Script } from '../../scripts'; +import { HALEndpointService } from '../../shared'; +import { getFirstCompletedRemoteData } from '../../shared'; +import { URLCombiner } from '../../url-combiner'; import { FindAllData, FindAllDataImpl, -} from '../base/find-all-data'; -import { IdentifiableDataService } from '../base/identifiable-data.service'; +} from '../base'; +import { IdentifiableDataService } from '../base'; import { FindListOptions } from '../find-list-options.model'; +import { FollowLinkConfig } from '../follow-link-config.model'; import { PaginatedList } from '../paginated-list.model'; import { RemoteData } from '../remote-data'; import { MultipartPostRequest } from '../request.models'; diff --git a/src/app/core/data/registration-response-parsing.service.spec.ts b/modules/core/src/lib/core/data/registration-response-parsing.service.spec.ts similarity index 100% rename from src/app/core/data/registration-response-parsing.service.spec.ts rename to modules/core/src/lib/core/data/registration-response-parsing.service.spec.ts diff --git a/src/app/core/data/registration-response-parsing.service.ts b/modules/core/src/lib/core/data/registration-response-parsing.service.ts similarity index 75% rename from src/app/core/data/registration-response-parsing.service.ts rename to modules/core/src/lib/core/data/registration-response-parsing.service.ts index 2984550447e..b89510e618b 100644 --- a/src/app/core/data/registration-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/registration-response-parsing.service.ts @@ -1,8 +1,8 @@ import { Injectable } from '@angular/core'; -import { ParsedResponse } from '../cache/response.models'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; -import { Registration } from '../shared/registration.model'; +import { ParsedResponse } from '../cache'; +import { RawRestResponse } from '../dspace-rest'; +import { Registration } from '../shared'; import { ResponseParsingService } from './parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/relationship-data.service.spec.ts b/modules/core/src/lib/core/data/relationship-data.service.spec.ts similarity index 95% rename from src/app/core/data/relationship-data.service.spec.ts rename to modules/core/src/lib/core/data/relationship-data.service.spec.ts index d4a6658f477..9f9045949cf 100644 --- a/src/app/core/data/relationship-data.service.spec.ts +++ b/modules/core/src/lib/core/data/relationship-data.service.spec.ts @@ -3,31 +3,30 @@ import { Store } from '@ngrx/store'; import { provideMockStore } from '@ngrx/store/testing'; import { of as observableOf } from 'rxjs'; -import { APP_CONFIG } from '../../../config/app-config.interface'; -import { environment } from '../../../environments/environment.test'; -import { PAGINATED_RELATIONS_TO_ITEMS_OPERATOR } from '../../item-page/simple/item-types/shared/item-relationships-utils'; -import { getMockRemoteDataBuildServiceHrefMap } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { ObjectCacheServiceStub } from '../../shared/testing/object-cache-service.stub'; -import { createPaginatedList } from '../../shared/testing/utils.test'; -import { followLink } from '../../shared/utils/follow-link-config.model'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { APP_CONFIG } from '../config/app-config.interface'; +import { getMockRemoteDataBuildServiceHrefMap } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; +import { PAGINATED_RELATIONS_TO_ITEMS_OPERATOR } from '../shared/item-relationships/item-relationships-utils'; import { Relationship } from '../shared/item-relationships/relationship.model'; import { RelationshipType } from '../shared/item-relationships/relationship-type.model'; import { MetadataValue } from '../shared/metadata.models'; import { MetadataRepresentationType } from '../shared/metadata-representation/metadata-representation.model'; import { PageInfo } from '../shared/page-info.model'; +import { + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { ObjectCacheServiceStub } from '../utilities/testing/object-cache-service.stub'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { testSearchDataImplementation } from './base/search-data.spec'; import { FindListOptions } from './find-list-options.model'; +import { followLink } from './follow-link-config.model'; import { ItemDataService } from './item-data.service'; import { buildPaginatedList } from './paginated-list.model'; import { RelationshipDataService } from './relationship-data.service'; @@ -139,6 +138,8 @@ describe('RelationshipDataService', () => { } as RequestEntry); }; + const environment = { item: { showAccessStatuses: false } } as any; + beforeEach(() => { requestService = getMockRequestService(getRequestEntry$(true)); diff --git a/src/app/core/data/relationship-data.service.ts b/modules/core/src/lib/core/data/relationship-data.service.ts similarity index 91% rename from src/app/core/data/relationship-data.service.ts rename to modules/core/src/lib/core/data/relationship-data.service.ts index d52c14f0a76..fd88a418d64 100644 --- a/src/app/core/data/relationship-data.service.ts +++ b/modules/core/src/lib/core/data/relationship-data.service.ts @@ -4,6 +4,13 @@ import { Injectable, } from '@angular/core'; import { + hasValue, + hasValueOperator, + isNotEmpty, + isNotEmptyOperator, +} from '@dspace/shared/utils'; +import { + createSelector, MemoizedSelector, select, Store, @@ -24,68 +31,59 @@ import { tap, } from 'rxjs/operators'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; import { APP_CONFIG, AppConfig, -} from '../../../config/app-config.interface'; -import { - AppState, - keySelector, -} from '../../app.reducer'; +} from '../config'; +import { CoreState } from '../core-state.model'; +import { HttpOptions } from '../dspace-rest'; +import { MetadataService } from '../metadata'; +import { DSpaceObject } from '../shared'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; import { compareArraysUsingIds, PAGINATED_RELATIONS_TO_ITEMS_OPERATOR, relationsToItems, -} from '../../item-page/simple/item-types/shared/item-relationships-utils'; -import { - hasValue, - hasValueOperator, - isNotEmpty, - isNotEmptyOperator, -} from '../../shared/empty.util'; -import { ReorderableRelationship } from '../../shared/form/builder/ds-dynamic-form-ui/existing-metadata-list-element/existing-metadata-list-element.component'; -import { - RemoveNameVariantAction, - SetNameVariantAction, -} from '../../shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.actions'; -import { NameVariantListState } from '../../shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.reducer'; -import { - followLink, - FollowLinkConfig, -} from '../../shared/utils/follow-link-config.model'; -import { itemLinksToFollow } from '../../shared/utils/relation-query.utils'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { MetadataService } from '../metadata/metadata.service'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; -import { Relationship } from '../shared/item-relationships/relationship.model'; -import { RelationshipType } from '../shared/item-relationships/relationship-type.model'; -import { MetadataValue } from '../shared/metadata.models'; -import { ItemMetadataRepresentation } from '../shared/metadata-representation/item/item-metadata-representation.model'; -import { MetadataRepresentation } from '../shared/metadata-representation/metadata-representation.model'; -import { MetadatumRepresentation } from '../shared/metadata-representation/metadatum/metadatum-representation.model'; -import { NoContent } from '../shared/NoContent.model'; +} from '../shared'; +import { Relationship } from '../shared'; +import { RelationshipType } from '../shared'; +import { ReorderableRelationship } from '../shared'; +import { MetadataValue } from '../shared'; +import { ItemMetadataRepresentation } from '../shared'; +import { MetadataRepresentation } from '../shared'; +import { MetadatumRepresentation } from '../shared'; +import { NoContent } from '../shared'; import { getFirstCompletedRemoteData, getFirstSucceededRemoteData, getFirstSucceededRemoteDataPayload, getRemoteDataPayload, -} from '../shared/operators'; -import { sendRequest } from '../shared/request.operators'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from '../shared'; +import { sendRequest } from '../shared'; +import { + RemoveNameVariantAction, + SetNameVariantAction, +} from '../states'; +import { NameVariantListState } from '../states'; +import { itemLinksToFollow } from '../utilities'; +import { IdentifiableDataService } from './base'; import { PutData, PutDataImpl, -} from './base/put-data'; +} from './base'; import { SearchData, SearchDataImpl, -} from './base/search-data'; +} from './base'; import { FindListOptions } from './find-list-options.model'; +import { + followLink, + FollowLinkConfig, +} from './follow-link-config.model'; import { ItemDataService } from './item-data.service'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; @@ -97,14 +95,24 @@ import { RequestService } from './request.service'; import { RequestEntryState } from './request-entry-state.model'; import { RestRequest } from './rest-request.model'; -const relationshipListsStateSelector = (state: AppState) => state.relationshipLists; +function relationshipKeySelector(key: string, selector): MemoizedSelector { + return createSelector(selector, (state) => { + if (hasValue(state)) { + return state[key]; + } else { + return undefined; + } + }); +} + +const relationshipListsStateSelector = (state: any) => state.core.relationshipLists; -const relationshipListStateSelector = (listID: string): MemoizedSelector => { - return keySelector(listID, relationshipListsStateSelector); +const relationshipListStateSelector = (listID: string): MemoizedSelector => { + return relationshipKeySelector(listID, relationshipListsStateSelector); }; -const relationshipStateSelector = (listID: string, itemID: string): MemoizedSelector => { - return keySelector(itemID, relationshipListStateSelector(listID)); +const relationshipStateSelector = (listID: string, itemID: string): MemoizedSelector => { + return relationshipKeySelector(itemID, relationshipListStateSelector(listID)); }; /** @@ -135,7 +143,7 @@ export class RelationshipDataService extends IdentifiableDataService, + protected appStore: Store, @Inject(PAGINATED_RELATIONS_TO_ITEMS_OPERATOR) private paginatedRelationsToItems: (thisId: string) => (source: Observable>>) => Observable>>, @Inject(APP_CONFIG) private appConfig: AppConfig, ) { diff --git a/src/app/core/data/relationship-type-data.service.spec.ts b/modules/core/src/lib/core/data/relationship-type-data.service.spec.ts similarity index 86% rename from src/app/core/data/relationship-type-data.service.spec.ts rename to modules/core/src/lib/core/data/relationship-type-data.service.spec.ts index c82a2789ce1..9971c68733c 100644 --- a/src/app/core/data/relationship-type-data.service.spec.ts +++ b/modules/core/src/lib/core/data/relationship-type-data.service.spec.ts @@ -1,18 +1,18 @@ +import { hasValueOperator } from '@dspace/shared/utils'; import { of as observableOf } from 'rxjs'; -import { hasValueOperator } from '../../shared/empty.util'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { ObjectCacheServiceStub } from '../../shared/testing/object-cache-service.stub'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; import { ItemType } from '../shared/item-relationships/item-type.model'; import { RelationshipType } from '../shared/item-relationships/relationship-type.model'; +import { + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { ObjectCacheServiceStub } from '../utilities/testing/object-cache-service.stub'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { RelationshipTypeDataService } from './relationship-type-data.service'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/relationship-type-data.service.ts b/modules/core/src/lib/core/data/relationship-type-data.service.ts similarity index 88% rename from src/app/core/data/relationship-type-data.service.ts rename to modules/core/src/lib/core/data/relationship-type-data.service.ts index 43c018bbce2..6698573060c 100644 --- a/src/app/core/data/relationship-type-data.service.ts +++ b/modules/core/src/lib/core/data/relationship-type-data.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { combineLatest as observableCombineLatest, Observable, @@ -10,25 +11,24 @@ import { toArray, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { - followLink, - FollowLinkConfig, -} from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { ItemType } from '../shared/item-relationships/item-type.model'; -import { RelationshipType } from '../shared/item-relationships/relationship-type.model'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HALEndpointService } from '../shared'; +import { ItemType } from '../shared'; +import { RelationshipType } from '../shared'; import { getFirstCompletedRemoteData, getFirstSucceededRemoteData, getRemoteDataPayload, -} from '../shared/operators'; -import { BaseDataService } from './base/base-data.service'; -import { FindAllDataImpl } from './base/find-all-data'; -import { SearchDataImpl } from './base/search-data'; +} from '../shared'; +import { BaseDataService } from './base'; +import { FindAllDataImpl } from './base'; +import { SearchDataImpl } from './base'; +import { + followLink, + FollowLinkConfig, +} from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/remote-data.ts b/modules/core/src/lib/core/data/remote-data.ts similarity index 100% rename from src/app/core/data/remote-data.ts rename to modules/core/src/lib/core/data/remote-data.ts diff --git a/src/app/core/data/request-entry-state.model.spec.ts b/modules/core/src/lib/core/data/request-entry-state.model.spec.ts similarity index 99% rename from src/app/core/data/request-entry-state.model.spec.ts rename to modules/core/src/lib/core/data/request-entry-state.model.spec.ts index f78318149a8..82a06e733b6 100644 --- a/src/app/core/data/request-entry-state.model.spec.ts +++ b/modules/core/src/lib/core/data/request-entry-state.model.spec.ts @@ -14,6 +14,7 @@ import { RequestEntryState, } from './request-entry-state.model'; + describe(`isRequestPending`, () => { it(`should only return true if the given state is RequestPending`, () => { expect(isRequestPending(RequestEntryState.RequestPending)).toBeTrue(); diff --git a/src/app/core/data/request-entry-state.model.ts b/modules/core/src/lib/core/data/request-entry-state.model.ts similarity index 100% rename from src/app/core/data/request-entry-state.model.ts rename to modules/core/src/lib/core/data/request-entry-state.model.ts diff --git a/src/app/core/data/request-entry.model.ts b/modules/core/src/lib/core/data/request-entry.model.ts similarity index 100% rename from src/app/core/data/request-entry.model.ts rename to modules/core/src/lib/core/data/request-entry.model.ts diff --git a/src/app/core/data/request-error.model.ts b/modules/core/src/lib/core/data/request-error.model.ts similarity index 100% rename from src/app/core/data/request-error.model.ts rename to modules/core/src/lib/core/data/request-error.model.ts diff --git a/src/app/core/data/request-state.model.ts b/modules/core/src/lib/core/data/request-state.model.ts similarity index 100% rename from src/app/core/data/request-state.model.ts rename to modules/core/src/lib/core/data/request-state.model.ts diff --git a/src/app/core/data/request.actions.ts b/modules/core/src/lib/core/data/request.actions.ts similarity index 96% rename from src/app/core/data/request.actions.ts rename to modules/core/src/lib/core/data/request.actions.ts index 183c090b751..8105ed9e55e 100644 --- a/src/app/core/data/request.actions.ts +++ b/modules/core/src/lib/core/data/request.actions.ts @@ -1,9 +1,9 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; -import { HALLink } from '../shared/hal-link.model'; -import { UnCacheableObject } from '../shared/uncacheable-object.model'; +import { HALLink } from '../shared'; +import { type } from '../shared'; +import { UnCacheableObject } from '../shared'; import { RestRequest } from './rest-request.model'; /** diff --git a/src/app/core/data/request.effects.ts b/modules/core/src/lib/core/data/request.effects.ts similarity index 87% rename from src/app/core/data/request.effects.ts rename to modules/core/src/lib/core/data/request.effects.ts index bc403bc2717..b07e40ffe34 100644 --- a/src/app/core/data/request.effects.ts +++ b/modules/core/src/lib/core/data/request.effects.ts @@ -2,6 +2,10 @@ import { Injectable, Injector, } from '@angular/core'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Actions, createEffect, @@ -16,17 +20,13 @@ import { withLatestFrom, } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; -import { StoreActionTypes } from '../../store.actions'; -import { getClassForType } from '../cache/builders/build-decorators'; -import { ParsedResponse } from '../cache/response.models'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; -import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; -import { XSRFService } from '../xsrf/xsrf.service'; +import { getClassForType } from '../cache'; +import { ParsedResponse } from '../cache'; +import { DSpaceSerializer } from '../dspace-rest'; +import { DspaceRestService } from '../dspace-rest'; +import { RawRestResponse } from '../dspace-rest'; +import { StoreActionTypes } from '../store.actions'; +import { XSRFService } from '../xsrf'; import { RequestActionTypes, RequestErrorAction, diff --git a/src/app/core/data/request.models.ts b/modules/core/src/lib/core/data/request.models.ts similarity index 83% rename from src/app/core/data/request.models.ts rename to modules/core/src/lib/core/data/request.models.ts index c46d9b82422..446b604f20a 100644 --- a/src/app/core/data/request.models.ts +++ b/modules/core/src/lib/core/data/request.models.ts @@ -1,8 +1,8 @@ /* eslint-disable max-classes-per-file */ -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { SubmissionResponseParsingService } from '../submission/submission-response-parsing.service'; -import { TaskResponseParsingService } from '../tasks/task-response-parsing.service'; +import { HttpOptions } from '../dspace-rest'; +import { GenericConstructor } from '../shared'; +import { SubmissionResponseParsingService } from '../submission'; +import { TaskResponseParsingService } from '../tasks'; import { BrowseResponseParsingService } from './browse-response-parsing.service'; import { ContentSourceResponseParsingService } from './content-source-response-parsing.service'; import { DspaceRestResponseParsingService } from './dspace-rest-response-parsing.service'; @@ -31,8 +31,9 @@ export class GetRequest extends DSpaceRestRequest { public href: string, public body?: any, public options?: HttpOptions, + public responseMsToLive?: number, ) { - super(uuid, href, RestRequestMethod.GET, body, options); + super(uuid, href, RestRequestMethod.GET, body, options, responseMsToLive); } } @@ -131,8 +132,9 @@ export class FindListRequest extends GetRequest { uuid: string, href: string, public body?: FindListOptions, + public responseMsToLive?: number, ) { - super(uuid, href); + super(uuid, href, body, null, responseMsToLive); } } @@ -146,8 +148,8 @@ export class EndpointMapRequest extends GetRequest { * Class representing a submission HTTP GET request object */ export class SubmissionRequest extends GetRequest { - constructor(uuid: string, href: string) { - super(uuid, href); + constructor(uuid: string, href: string, public responseMsToLive?: number) { + super(uuid, href, null, null, responseMsToLive); } getResponseParser(): GenericConstructor { @@ -159,8 +161,10 @@ export class SubmissionRequest extends GetRequest { * Class representing a submission HTTP DELETE request object */ export class SubmissionDeleteRequest extends DeleteRequest { - constructor(public uuid: string, - public href: string) { + constructor( + public uuid: string, + public href: string, + ) { super(uuid, href); } @@ -173,9 +177,12 @@ export class SubmissionDeleteRequest extends DeleteRequest { * Class representing a submission HTTP PATCH request object */ export class SubmissionPatchRequest extends PatchRequest { - constructor(public uuid: string, - public href: string, - public body?: any) { + constructor( + public uuid: string, + public href: string, + public body?: any, + public responseMsToLive?: number, + ) { super(uuid, href, body); } @@ -188,10 +195,13 @@ export class SubmissionPatchRequest extends PatchRequest { * Class representing a submission HTTP POST request object */ export class SubmissionPostRequest extends PostRequest { - constructor(public uuid: string, - public href: string, - public body?: any, - public options?: HttpOptions) { + constructor( + public uuid: string, + public href: string, + public body?: any, + public options?: HttpOptions, + public responseMsToLive?: number, + ) { super(uuid, href, body, options); } @@ -201,14 +211,14 @@ export class SubmissionPostRequest extends PostRequest { } export class CreateRequest extends PostRequest { - constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions) { + constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions, public responseMsToLive?: number) { super(uuid, href, body, options); } } export class ContentSourceRequest extends GetRequest { - constructor(uuid: string, href: string) { - super(uuid, href); + constructor(uuid: string, href: string, public responseMsToLive?: number) { + super(uuid, href, null, null, responseMsToLive); } getResponseParser(): GenericConstructor { @@ -240,7 +250,7 @@ export class DeleteByIDRequest extends DeleteRequest { } export class TaskPostRequest extends PostRequest { - constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions) { + constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions, public responseMsToLive?: number) { super(uuid, href, body, options); } @@ -250,7 +260,7 @@ export class TaskPostRequest extends PostRequest { } export class TaskDeleteRequest extends DeleteRequest { - constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions) { + constructor(uuid: string, href: string, public body?: any, public options?: HttpOptions, public responseMsToLive?: number) { super(uuid, href, body, options); } diff --git a/src/app/core/data/request.reducer.spec.ts b/modules/core/src/lib/core/data/request.reducer.spec.ts similarity index 100% rename from src/app/core/data/request.reducer.spec.ts rename to modules/core/src/lib/core/data/request.reducer.spec.ts diff --git a/src/app/core/data/request.reducer.ts b/modules/core/src/lib/core/data/request.reducer.ts similarity index 99% rename from src/app/core/data/request.reducer.ts rename to modules/core/src/lib/core/data/request.reducer.ts index cccb47442f2..92b479281eb 100644 --- a/src/app/core/data/request.reducer.ts +++ b/modules/core/src/lib/core/data/request.reducer.ts @@ -1,5 +1,6 @@ /* eslint-disable max-classes-per-file */ -import { isNull } from '../../shared/empty.util'; +import { isNull } from '@dspace/shared/utils'; + import { RequestAction, RequestActionTypes, diff --git a/src/app/core/data/request.service.spec.ts b/modules/core/src/lib/core/data/request.service.spec.ts similarity index 98% rename from src/app/core/data/request.service.spec.ts rename to modules/core/src/lib/core/data/request.service.spec.ts index d8fa04973e2..1d346473985 100644 --- a/src/app/core/data/request.service.spec.ts +++ b/modules/core/src/lib/core/data/request.service.spec.ts @@ -23,16 +23,16 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { storeModuleConfig } from '../../app.reducer'; -import { getMockObjectCacheService } from '../../shared/mocks/object-cache.service.mock'; -import { - defaultUUID, - getMockUUIDService, -} from '../../shared/mocks/uuid.service.mock'; import { ObjectCacheService } from '../cache/object-cache.service'; import { coreReducers } from '../core.reducers'; import { CoreState } from '../core-state.model'; +import { getMockObjectCacheService } from '../mocks/object-cache.service.mock'; +import { + defaultUUID, + getMockUUIDService, +} from '../mocks/uuid.service.mock'; import { UUIDService } from '../shared/uuid.service'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; import { RequestConfigureAction, RequestExecuteAction, @@ -85,7 +85,7 @@ describe('RequestService', () => { TestBed.configureTestingModule({ imports: [ - StoreModule.forRoot(coreReducers, storeModuleConfig), + StoreModule.forRoot(coreReducers, mockStoreModuleConfig), ], providers: [ provideMockStore({ initialState }), diff --git a/src/app/core/data/request.service.ts b/modules/core/src/lib/core/data/request.service.ts similarity index 91% rename from src/app/core/data/request.service.ts rename to modules/core/src/lib/core/data/request.service.ts index 52ec9b56e27..b9a415cee31 100644 --- a/src/app/core/data/request.service.ts +++ b/modules/core/src/lib/core/data/request.service.ts @@ -1,5 +1,14 @@ import { HttpHeaders } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; +import { + hasNoValue, + hasValue, + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { createSelector, MemoizedSelector, @@ -23,23 +32,18 @@ import { toArray, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; -import { ObjectCacheEntry } from '../cache/object-cache.reducer'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { CommitSSBAction } from '../cache/server-sync-buffer.actions'; +import { ObjectCacheEntry } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { CommitSSBAction } from '../cache'; +import { APP_CONFIG } from '../config'; import { coreSelector } from '../core.selectors'; import { CoreState } from '../core-state.model'; -import { IndexState } from '../index/index.reducer'; +import { IndexState } from '../index'; import { getUrlWithoutEmbedParams, requestIndexSelector, -} from '../index/index.selectors'; -import { UUIDService } from '../shared/uuid.service'; +} from '../index'; +import { UUIDService } from '../shared'; import { RequestConfigureAction, RequestExecuteAction, @@ -122,38 +126,6 @@ const getUuidsFromHrefSubstring = (state: IndexState, href: string): string[] => return result; }; -/** - * Check whether a cached entry exists and isn't stale - * - * @param entry - * the entry to check - * @return boolean - * false if the entry has no value, or its time to live has exceeded, - * true otherwise - */ -const isValid = (entry: RequestEntry): boolean => { - if (hasNoValue(entry)) { - // undefined entries are invalid - return false; - } else { - if (isLoading(entry.state)) { - // entries that are still loading are always valid - return true; - } else { - if (isStale(entry.state)) { - // entries that are stale are always invalid - return false; - } else { - // check whether it should be stale - const timeOutdated = entry.response.timeCompleted + entry.request.responseMsToLive; - const now = new Date().getTime(); - const isOutDated = now > timeOutdated; - return !isOutDated; - } - } - } -}; - /** * A service to interact with the request state in the store */ @@ -162,6 +134,7 @@ const isValid = (entry: RequestEntry): boolean => { }) export class RequestService { private requestsOnTheirWayToTheStore: string[] = []; + private defaultResponseMsToLive = inject(APP_CONFIG).cache.msToLive.default; constructor(private objectCache: ObjectCacheService, private uuidService: UUIDService, @@ -172,6 +145,38 @@ export class RequestService { return `client/${this.uuidService.generate()}`; } + /** + * Check whether a cached entry exists and isn't stale + * + * @param entry + * the entry to check + * @return boolean + * false if the entry has no value, or its time to live has exceeded, + * true otherwise + */ + isValid = (entry: RequestEntry): boolean => { + if (hasNoValue(entry)) { + // undefined entries are invalid + return false; + } else { + if (isLoading(entry.state)) { + // entries that are still loading are always valid + return true; + } else { + if (isStale(entry.state)) { + // entries that are stale are always invalid + return false; + } else { + // check whether it should be stale + const timeOutdated = entry.response.timeCompleted + (entry.request.responseMsToLive ?? this.defaultResponseMsToLive); + const now = new Date().getTime(); + const isOutDated = now > timeOutdated; + return !isOutDated; + } + } + } + }; + /** * Check if a GET request is currently pending */ @@ -237,7 +242,7 @@ export class RequestService { return (source: Observable): Observable => { return source.pipe( tap((entry: RequestEntry) => { - if (hasValue(entry) && hasValue(entry.request) && !isStale(entry.state) && !isValid(entry)) { + if (hasValue(entry) && hasValue(entry.request) && !isStale(entry.state) && !this.isValid(entry)) { asapScheduler.schedule(() => this.store.dispatch(new RequestStaleAction(entry.request.uuid))); } }), @@ -511,7 +516,7 @@ export class RequestService { */ hasByHref$(href: string, checkValidity = true): Observable { return this.getByHref(href).pipe( - map((requestEntry: RequestEntry) => checkValidity ? isValid(requestEntry) : hasValue(requestEntry)), + map((requestEntry: RequestEntry) => checkValidity ? this.isValid(requestEntry) : hasValue(requestEntry)), ); } @@ -548,7 +553,7 @@ export class RequestService { */ hasByUUID$(uuid: string, checkValidity = true): Observable { return this.getByUUID(uuid).pipe( - map((requestEntry: RequestEntry) => checkValidity ? isValid(requestEntry) : hasValue(requestEntry)), + map((requestEntry: RequestEntry) => checkValidity ? this.isValid(requestEntry) : hasValue(requestEntry)), ); } diff --git a/src/app/core/data/response-state.model.ts b/modules/core/src/lib/core/data/response-state.model.ts similarity index 64% rename from src/app/core/data/response-state.model.ts rename to modules/core/src/lib/core/data/response-state.model.ts index 1f7863e9c8a..89b402f442b 100644 --- a/src/app/core/data/response-state.model.ts +++ b/modules/core/src/lib/core/data/response-state.model.ts @@ -1,5 +1,5 @@ -import { HALLink } from '../shared/hal-link.model'; -import { UnCacheableObject } from '../shared/uncacheable-object.model'; +import { HALLink } from '../shared'; +import { UnCacheableObject } from '../shared'; /** * The response substate in the NgRx store diff --git a/src/app/core/data/rest-request-method.ts b/modules/core/src/lib/core/data/rest-request-method.ts similarity index 100% rename from src/app/core/data/rest-request-method.ts rename to modules/core/src/lib/core/data/rest-request-method.ts diff --git a/src/app/core/data/rest-request-with-response-parser.model.ts b/modules/core/src/lib/core/data/rest-request-with-response-parser.model.ts similarity index 87% rename from src/app/core/data/rest-request-with-response-parser.model.ts rename to modules/core/src/lib/core/data/rest-request-with-response-parser.model.ts index d05bcb19cf4..8550b69f47d 100644 --- a/src/app/core/data/rest-request-with-response-parser.model.ts +++ b/modules/core/src/lib/core/data/rest-request-with-response-parser.model.ts @@ -1,4 +1,4 @@ -import { GenericConstructor } from '../shared/generic-constructor'; +import { GenericConstructor } from '../shared'; import { ResponseParsingService } from './parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/rest-request.model.ts b/modules/core/src/lib/core/data/rest-request.model.ts similarity index 66% rename from src/app/core/data/rest-request.model.ts rename to modules/core/src/lib/core/data/rest-request.model.ts index 95e605711be..390bc043717 100644 --- a/src/app/core/data/rest-request.model.ts +++ b/modules/core/src/lib/core/data/rest-request.model.ts @@ -1,12 +1,10 @@ -import { environment } from '../../../environments/environment'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { HttpOptions } from '../dspace-rest'; import { RestRequestMethod } from './rest-request-method'; /** * A request to the DSpace REST API */ export abstract class RestRequest { - public responseMsToLive = environment.cache.msToLive.default; public isMultipart = false; constructor( @@ -15,6 +13,7 @@ export abstract class RestRequest { public method: RestRequestMethod = RestRequestMethod.GET, public body?: any, public options?: HttpOptions, + public responseMsToLive?: number, ) { } } diff --git a/src/app/core/data/root-data.service.spec.ts b/modules/core/src/lib/core/data/root-data.service.spec.ts similarity index 98% rename from src/app/core/data/root-data.service.spec.ts rename to modules/core/src/lib/core/data/root-data.service.spec.ts index d6298832207..5ddd5a08d4c 100644 --- a/src/app/core/data/root-data.service.spec.ts +++ b/modules/core/src/lib/core/data/root-data.service.spec.ts @@ -1,11 +1,11 @@ import { cold } from 'jasmine-marbles'; import { Observable } from 'rxjs'; +import { HALEndpointService } from '../shared/hal-endpoint.service'; import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +} from '../utilities/remote-data.utils'; import { RemoteData } from './remote-data'; import { Root } from './root.model'; import { RootDataService } from './root-data.service'; diff --git a/src/app/core/data/root-data.service.ts b/modules/core/src/lib/core/data/root-data.service.ts similarity index 83% rename from src/app/core/data/root-data.service.ts rename to modules/core/src/lib/core/data/root-data.service.ts index 7d02fb0060e..d187abb47b9 100644 --- a/src/app/core/data/root-data.service.ts +++ b/modules/core/src/lib/core/data/root-data.service.ts @@ -8,12 +8,12 @@ import { map, } from 'rxjs/operators'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { BaseDataService } from './base/base-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HALEndpointService } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { BaseDataService } from './base'; +import { FollowLinkConfig } from './follow-link-config.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; import { Root } from './root.model'; diff --git a/src/app/core/data/root.model.ts b/modules/core/src/lib/core/data/root.model.ts similarity index 72% rename from src/app/core/data/root.model.ts rename to modules/core/src/lib/core/data/root.model.ts index ced115b0554..bb29c66bd5a 100644 --- a/src/app/core/data/root.model.ts +++ b/modules/core/src/lib/core/data/root.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { HALLink } from '../shared/hal-link.model'; -import { ResourceType } from '../shared/resource-type'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { HALLink } from '../shared'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; import { ROOT } from './root.resource-type'; /** diff --git a/src/app/core/data/root.resource-type.ts b/modules/core/src/lib/core/data/root.resource-type.ts similarity index 76% rename from src/app/core/data/root.resource-type.ts rename to modules/core/src/lib/core/data/root.resource-type.ts index 6f94e2ceaf1..967fb431cde 100644 --- a/src/app/core/data/root.resource-type.ts +++ b/modules/core/src/lib/core/data/root.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../shared/resource-type'; +import { ResourceType } from '../shared'; /** * The resource type for the root endpoint diff --git a/src/app/core/data/search-response-parsing.service.ts b/modules/core/src/lib/core/data/search-response-parsing.service.ts similarity index 85% rename from src/app/core/data/search-response-parsing.service.ts rename to modules/core/src/lib/core/data/search-response-parsing.service.ts index c6858251feb..53086acf598 100644 --- a/src/app/core/data/search-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/search-response-parsing.service.ts @@ -1,14 +1,14 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; -import { hasValue } from '../../shared/empty.util'; -import { SearchObjects } from '../../shared/search/models/search-objects.model'; -import { ParsedResponse } from '../cache/response.models'; -import { DSpaceSerializer } from '../dspace-rest/dspace.serializer'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { ParsedResponse } from '../cache'; +import { DSpaceSerializer } from '../dspace-rest'; +import { RawRestResponse } from '../dspace-rest'; import { MetadataMap, MetadataValue, -} from '../shared/metadata.models'; +} from '../shared'; +import { SearchObjects } from '../shared'; import { DspaceRestResponseParsingService } from './dspace-rest-response-parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/core/data/signposting-data.service.spec.ts b/modules/core/src/lib/core/data/signposting-data.service.spec.ts similarity index 97% rename from src/app/core/data/signposting-data.service.spec.ts rename to modules/core/src/lib/core/data/signposting-data.service.spec.ts index 2b10bba89bb..49adcf4ae44 100644 --- a/src/app/core/data/signposting-data.service.spec.ts +++ b/modules/core/src/lib/core/data/signposting-data.service.spec.ts @@ -5,7 +5,7 @@ import { } from '@angular/core/testing'; import { of } from 'rxjs'; -import { APP_CONFIG } from '../../../config/app-config.interface'; +import { APP_CONFIG } from '../config/app-config.interface'; import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; import { SignpostingDataService } from './signposting-data.service'; import { SignpostingLink } from './signposting-links.model'; diff --git a/src/app/core/data/signposting-data.service.ts b/modules/core/src/lib/core/data/signposting-data.service.ts similarity index 84% rename from src/app/core/data/signposting-data.service.ts rename to modules/core/src/lib/core/data/signposting-data.service.ts index d78f75bd11b..02dd80c8bd0 100644 --- a/src/app/core/data/signposting-data.service.ts +++ b/modules/core/src/lib/core/data/signposting-data.service.ts @@ -14,9 +14,9 @@ import { import { APP_CONFIG, AppConfig, -} from '../../../config/app-config.interface'; -import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +} from '../config'; +import { DspaceRestService } from '../dspace-rest'; +import { RawRestResponse } from '../dspace-rest'; import { SignpostingLink } from './signposting-links.model'; /** diff --git a/src/app/core/data/signposting-links.model.ts b/modules/core/src/lib/core/data/signposting-links.model.ts similarity index 100% rename from src/app/core/data/signposting-links.model.ts rename to modules/core/src/lib/core/data/signposting-links.model.ts diff --git a/src/app/core/data/site-data.service.spec.ts b/modules/core/src/lib/core/data/site-data.service.spec.ts similarity index 95% rename from src/app/core/data/site-data.service.spec.ts rename to modules/core/src/lib/core/data/site-data.service.spec.ts index 253d1a6f15e..1e650b5aaec 100644 --- a/src/app/core/data/site-data.service.spec.ts +++ b/modules/core/src/lib/core/data/site-data.service.spec.ts @@ -4,12 +4,12 @@ import { } from 'jasmine-marbles'; import { TestScheduler } from 'rxjs/testing'; -import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Site } from '../shared/site.model'; +import { createSuccessfulRemoteDataObject } from '../utilities/remote-data.utils'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { testFindAllDataImplementation } from './base/find-all-data.spec'; import { FindListOptions } from './find-list-options.model'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/site-data.service.ts b/modules/core/src/lib/core/data/site-data.service.ts similarity index 83% rename from src/app/core/data/site-data.service.ts rename to modules/core/src/lib/core/data/site-data.service.ts index 2da80ed2762..050f7a1cc37 100644 --- a/src/app/core/data/site-data.service.ts +++ b/modules/core/src/lib/core/data/site-data.service.ts @@ -1,19 +1,19 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { FollowLinkConfig } from 'src/app/shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstSucceededRemoteData } from '../shared/operators'; -import { Site } from '../shared/site.model'; -import { BaseDataService } from './base/base-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HALEndpointService } from '../shared'; +import { getFirstSucceededRemoteData } from '../shared'; +import { Site } from '../shared'; +import { BaseDataService } from './base'; import { FindAllData, FindAllDataImpl, -} from './base/find-all-data'; +} from './base'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/status-code-only-response-parsing.service.spec.ts b/modules/core/src/lib/core/data/status-code-only-response-parsing.service.spec.ts similarity index 100% rename from src/app/core/data/status-code-only-response-parsing.service.spec.ts rename to modules/core/src/lib/core/data/status-code-only-response-parsing.service.spec.ts diff --git a/src/app/core/data/status-code-only-response-parsing.service.ts b/modules/core/src/lib/core/data/status-code-only-response-parsing.service.ts similarity index 86% rename from src/app/core/data/status-code-only-response-parsing.service.ts rename to modules/core/src/lib/core/data/status-code-only-response-parsing.service.ts index 919891dedc3..d61810c11d2 100644 --- a/src/app/core/data/status-code-only-response-parsing.service.ts +++ b/modules/core/src/lib/core/data/status-code-only-response-parsing.service.ts @@ -1,7 +1,7 @@ import { Injectable } from '@angular/core'; -import { RestResponse } from '../cache/response.models'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { RestResponse } from '../cache'; +import { RawRestResponse } from '../dspace-rest'; import { ResponseParsingService } from './parsing.service'; import { RestRequest } from './rest-request.model'; diff --git a/src/app/shared/subscriptions/models/subscription.resource-type.ts b/modules/core/src/lib/core/data/subscription.resource-type.ts similarity index 74% rename from src/app/shared/subscriptions/models/subscription.resource-type.ts rename to modules/core/src/lib/core/data/subscription.resource-type.ts index a1dad5cba0e..7efe3145e87 100644 --- a/src/app/shared/subscriptions/models/subscription.resource-type.ts +++ b/modules/core/src/lib/core/data/subscription.resource-type.ts @@ -1,10 +1,9 @@ -import { ResourceType } from '../../../core/shared/resource-type'; - /** * The resource type for Subscription * * Needs to be in a separate file to prevent circular * dependencies in webpack. */ +import { ResourceType } from '../shared/resource-type'; export const SUBSCRIPTION = new ResourceType('subscription'); diff --git a/src/app/shared/subscriptions/subscriptions-data.service.spec.ts b/modules/core/src/lib/core/data/subscriptions-data.service.spec.ts similarity index 82% rename from src/app/shared/subscriptions/subscriptions-data.service.spec.ts rename to modules/core/src/lib/core/data/subscriptions-data.service.spec.ts index 860d3ad5ef5..705257c93d3 100644 --- a/src/app/shared/subscriptions/subscriptions-data.service.spec.ts +++ b/modules/core/src/lib/core/data/subscriptions-data.service.spec.ts @@ -1,23 +1,23 @@ import { HttpClient } from '@angular/common/http'; import { Store } from '@ngrx/store'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { RemoteDataBuildService } from '../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../core/cache/object-cache.service'; -import { DSOChangeAnalyzer } from '../../core/data/dso-change-analyzer.service'; -import { RequestService } from '../../core/data/request.service'; -import { HALEndpointService } from '../../core/shared/hal-endpoint.service'; +import { DSONameService } from '../breadcrumbs/dso-name.service'; +import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; +import { ObjectCacheService } from '../cache/object-cache.service'; import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; import { getMockRequestService } from '../mocks/request.service.mock'; import { NotificationsService } from '../notifications/notifications.service'; +import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { Subscription } from '../subscription/subscription.model'; import { createNoContentRemoteDataObject$, createSuccessfulRemoteDataObject$, -} from '../remote-data.utils'; -import { HALEndpointServiceStub } from '../testing/hal-endpoint-service.stub'; -import { NotificationsServiceStub } from '../testing/notifications-service.stub'; -import { createPaginatedList } from '../testing/utils.test'; -import { Subscription } from './models/subscription.model'; +} from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { NotificationsServiceStub } from '../utilities/testing/notifications-service.stub'; +import { createPaginatedList } from '../utilities/testing/utils.test'; +import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; +import { RequestService } from './request.service'; import { SubscriptionsDataService } from './subscriptions-data.service'; describe('SubscriptionsDataService', () => { diff --git a/src/app/shared/subscriptions/subscriptions-data.service.ts b/modules/core/src/lib/core/data/subscriptions-data.service.ts similarity index 79% rename from src/app/shared/subscriptions/subscriptions-data.service.ts rename to modules/core/src/lib/core/data/subscriptions-data.service.ts index 81e258d017e..2d800ab566e 100644 --- a/src/app/shared/subscriptions/subscriptions-data.service.ts +++ b/modules/core/src/lib/core/data/subscriptions-data.service.ts @@ -1,5 +1,9 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { + isNotEmpty, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; import { @@ -9,36 +13,33 @@ import { switchMap, take, } from 'rxjs/operators'; -import { sendRequest } from 'src/app/core/shared/request.operators'; - -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { RemoteDataBuildService } from '../../core/cache/builders/remote-data-build.service'; -import { RequestParam } from '../../core/cache/models/request-param.model'; -import { ObjectCacheService } from '../../core/cache/object-cache.service'; -import { DeleteDataImpl } from '../../core/data/base/delete-data'; -import { FindAllData } from '../../core/data/base/find-all-data'; -import { IdentifiableDataService } from '../../core/data/base/identifiable-data.service'; -import { SearchDataImpl } from '../../core/data/base/search-data'; -import { DSOChangeAnalyzer } from '../../core/data/dso-change-analyzer.service'; -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { PaginatedList } from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; + +import { DSONameService } from '../breadcrumbs/dso-name.service'; +import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; +import { RequestParam } from '../cache/models/request-param.model'; +import { ObjectCacheService } from '../cache/object-cache.service'; +import { NotificationsService } from '../notifications/notifications.service'; +import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { NoContent } from '../shared/NoContent.model'; +import { getFirstCompletedRemoteData } from '../shared/operators'; +import { sendRequest } from '../shared/request.operators'; +import { Subscription } from '../subscription/subscription.model'; +import { DeleteDataImpl } from './base/delete-data'; +import { FindAllData } from './base/find-all-data'; +import { IdentifiableDataService } from './base/identifiable-data.service'; +import { SearchDataImpl } from './base/search-data'; +import { DSOChangeAnalyzer } from './dso-change-analyzer.service'; +import { FindListOptions } from './find-list-options.model'; +import { followLink } from './follow-link-config.model'; +import { PaginatedList } from './paginated-list.model'; +import { RemoteData } from './remote-data'; import { CreateRequest, PutRequest, -} from '../../core/data/request.models'; -import { RequestService } from '../../core/data/request.service'; -import { RestRequest } from '../../core/data/rest-request.model'; -import { HALEndpointService } from '../../core/shared/hal-endpoint.service'; -import { NoContent } from '../../core/shared/NoContent.model'; -import { getFirstCompletedRemoteData } from '../../core/shared/operators'; -import { - isNotEmpty, - isNotEmptyOperator, -} from '../empty.util'; -import { NotificationsService } from '../notifications/notifications.service'; -import { followLink } from '../utils/follow-link-config.model'; -import { Subscription } from './models/subscription.model'; +} from './request.models'; +import { RequestService } from './request.service'; +import { RestRequest } from './rest-request.model'; + /** * Provides methods to retrieve subscription resources from the REST API related CRUD actions. diff --git a/src/app/core/data/system-wide-alert-data.service.spec.ts b/modules/core/src/lib/core/data/system-wide-alert-data.service.spec.ts similarity index 100% rename from src/app/core/data/system-wide-alert-data.service.spec.ts rename to modules/core/src/lib/core/data/system-wide-alert-data.service.spec.ts diff --git a/src/app/core/data/system-wide-alert-data.service.ts b/modules/core/src/lib/core/data/system-wide-alert-data.service.ts similarity index 87% rename from src/app/core/data/system-wide-alert-data.service.ts rename to modules/core/src/lib/core/data/system-wide-alert-data.service.ts index afff0ef9ef3..970fa4a18de 100644 --- a/src/app/core/data/system-wide-alert-data.service.ts +++ b/modules/core/src/lib/core/data/system-wide-alert-data.service.ts @@ -1,31 +1,31 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { SystemWideAlert } from '../../system-wide-alert/system-wide-alert.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { SystemWideAlert } from '../system-wide-alert'; import { CreateData, CreateDataImpl, -} from './base/create-data'; +} from './base'; import { FindAllData, FindAllDataImpl, -} from './base/find-all-data'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from './base'; +import { IdentifiableDataService } from './base'; import { PutData, PutDataImpl, -} from './base/put-data'; +} from './base'; import { SearchData, SearchDataImpl, -} from './base/search-data'; +} from './base'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; diff --git a/src/app/core/data/update-data.service.spec.ts b/modules/core/src/lib/core/data/update-data.service.spec.ts similarity index 95% rename from src/app/core/data/update-data.service.spec.ts rename to modules/core/src/lib/core/data/update-data.service.spec.ts index 73ea07b84db..34c86eaa9d9 100644 --- a/src/app/core/data/update-data.service.spec.ts +++ b/modules/core/src/lib/core/data/update-data.service.spec.ts @@ -6,19 +6,19 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { RestResponse } from '../cache/response.models'; +import { getMockHrefOnlyDataService } from '../mocks/href-only-data.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; import { Version } from '../shared/version.model'; import { VersionHistory } from '../shared/version-history.model'; +import { + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; import { testCreateDataImplementation } from './base/create-data.spec'; import { testDeleteDataImplementation } from './base/delete-data.spec'; import { testFindAllDataImplementation } from './base/find-all-data.spec'; diff --git a/src/app/core/data/update-data.service.ts b/modules/core/src/lib/core/data/update-data.service.ts similarity index 93% rename from src/app/core/data/update-data.service.ts rename to modules/core/src/lib/core/data/update-data.service.ts index 6a8a0c63e8c..52328235b6d 100644 --- a/src/app/core/data/update-data.service.ts +++ b/modules/core/src/lib/core/data/update-data.service.ts @@ -1,3 +1,4 @@ +import { hasValue } from '@dspace/shared/utils'; import { Operation } from 'fast-json-patch'; import { AsyncSubject, @@ -13,43 +14,42 @@ import { toArray, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheEntry } from '../cache/object-cache.reducer'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; +import { RemoteDataBuildService } from '../cache'; +import { CacheableObject } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheEntry } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; import { CreateData, CreateDataImpl, -} from './base/create-data'; +} from './base'; import { DeleteData, DeleteDataImpl, -} from './base/delete-data'; +} from './base'; import { FindAllData, FindAllDataImpl, -} from './base/find-all-data'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from './base'; +import { IdentifiableDataService } from './base'; import { PatchData, PatchDataImpl, -} from './base/patch-data'; +} from './base'; import { PutData, PutDataImpl, -} from './base/put-data'; +} from './base'; import { SearchData, SearchDataImpl, -} from './base/search-data'; +} from './base'; import { ChangeAnalyzer } from './change-analyzer'; import { FindListOptions } from './find-list-options.model'; +import { FollowLinkConfig } from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { diff --git a/src/app/core/data/version-data.service.spec.ts b/modules/core/src/lib/core/data/version-data.service.spec.ts similarity index 96% rename from src/app/core/data/version-data.service.spec.ts rename to modules/core/src/lib/core/data/version-data.service.spec.ts index 54af9b88954..1c83f32fb7c 100644 --- a/src/app/core/data/version-data.service.spec.ts +++ b/modules/core/src/lib/core/data/version-data.service.spec.ts @@ -6,20 +6,20 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { followLink } from '../../shared/utils/follow-link-config.model'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { RestResponse } from '../cache/response.models'; +import { getMockHrefOnlyDataService } from '../mocks/href-only-data.service.mock'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; import { Version } from '../shared/version.model'; import { VersionHistory } from '../shared/version-history.model'; +import { + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; import { testPatchDataImplementation } from './base/patch-data.spec'; +import { followLink } from './follow-link-config.model'; import { HrefOnlyDataService } from './href-only-data.service'; import { RequestService } from './request.service'; import { RequestEntry } from './request-entry.model'; diff --git a/src/app/core/data/version-data.service.ts b/modules/core/src/lib/core/data/version-data.service.ts similarity index 85% rename from src/app/core/data/version-data.service.ts rename to modules/core/src/lib/core/data/version-data.service.ts index 86d9276756c..9a9d128683d 100644 --- a/src/app/core/data/version-data.service.ts +++ b/modules/core/src/lib/core/data/version-data.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { Operation } from 'fast-json-patch'; import { EMPTY, @@ -9,20 +10,19 @@ import { switchMap, } from 'rxjs/operators'; -import { isNotEmpty } from '../../shared/empty.util'; -import { followLink } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstSucceededRemoteDataPayload } from '../shared/operators'; -import { Version } from '../shared/version.model'; -import { VersionHistory } from '../shared/version-history.model'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HALEndpointService } from '../shared'; +import { getFirstSucceededRemoteDataPayload } from '../shared'; +import { Version } from '../shared'; +import { VersionHistory } from '../shared'; +import { IdentifiableDataService } from './base'; import { PatchData, PatchDataImpl, -} from './base/patch-data'; +} from './base'; import { DefaultChangeAnalyzer } from './default-change-analyzer.service'; +import { followLink } from './follow-link-config.model'; import { RemoteData } from './remote-data'; import { RequestService } from './request.service'; import { RestRequestMethod } from './rest-request-method'; diff --git a/src/app/core/data/version-history-data.service.spec.ts b/modules/core/src/lib/core/data/version-history-data.service.spec.ts similarity index 95% rename from src/app/core/data/version-history-data.service.spec.ts rename to modules/core/src/lib/core/data/version-history-data.service.spec.ts index 607b938561b..8869d052f5d 100644 --- a/src/app/core/data/version-history-data.service.spec.ts +++ b/modules/core/src/lib/core/data/version-history-data.service.spec.ts @@ -4,20 +4,20 @@ import { } from '@angular/core/testing'; import { of } from 'rxjs'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { createPaginatedList } from '../../shared/testing/utils.test'; +import SpyObj = jasmine.SpyObj; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; +import { getMockRequestService } from '../mocks/request.service.mock'; import { Item } from '../shared/item.model'; import { Version } from '../shared/version.model'; import { VersionHistory } from '../shared/version-history.model'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { NotificationsServiceStub } from '../utilities/testing/notifications-service.stub'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { RequestService } from './request.service'; import { VersionDataService } from './version-data.service'; import { VersionHistoryDataService } from './version-history-data.service'; -import SpyObj = jasmine.SpyObj; const url = 'fake-url'; diff --git a/src/app/core/data/version-history-data.service.ts b/modules/core/src/lib/core/data/version-history-data.service.ts similarity index 91% rename from src/app/core/data/version-history-data.service.ts rename to modules/core/src/lib/core/data/version-history-data.service.ts index e15fcd39077..f0080cffcaf 100644 --- a/src/app/core/data/version-history-data.service.ts +++ b/modules/core/src/lib/core/data/version-history-data.service.ts @@ -1,5 +1,9 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { + hasValue, + hasValueOperator, +} from '@dspace/shared/utils'; import { combineLatest, Observable, @@ -13,31 +17,27 @@ import { take, } from 'rxjs/operators'; -import { - hasValue, - hasValueOperator, -} from '../../shared/empty.util'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; -import { - followLink, - FollowLinkConfig, -} from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HttpOptions } from '../dspace-rest'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; import { getAllSucceededRemoteData, getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload, getRemoteDataPayload, -} from '../shared/operators'; -import { Version } from '../shared/version.model'; -import { VersionHistory } from '../shared/version-history.model'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +} from '../shared'; +import { PaginatedSearchOptions } from '../shared'; +import { PaginationComponentOptions } from '../shared'; +import { Version } from '../shared'; +import { VersionHistory } from '../shared'; +import { IdentifiableDataService } from './base'; import { FindListOptions } from './find-list-options.model'; +import { + followLink, + FollowLinkConfig, +} from './follow-link-config.model'; import { PaginatedList } from './paginated-list.model'; import { RemoteData } from './remote-data'; import { PostRequest } from './request.models'; diff --git a/src/app/core/data/workflow-action-data.service.ts b/modules/core/src/lib/core/data/workflow-action-data.service.ts similarity index 64% rename from src/app/core/data/workflow-action-data.service.ts rename to modules/core/src/lib/core/data/workflow-action-data.service.ts index f042dbd6e86..16a2f1bf0b7 100644 --- a/src/app/core/data/workflow-action-data.service.ts +++ b/modules/core/src/lib/core/data/workflow-action-data.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { WorkflowAction } from '../tasks/models/workflow-action-object.model'; -import { IdentifiableDataService } from './base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { HALEndpointService } from '../shared'; +import { WorkflowAction } from '../tasks'; +import { IdentifiableDataService } from './base'; import { RequestService } from './request.service'; /** diff --git a/src/app/core/drag.service.ts b/modules/core/src/lib/core/drag.service.ts similarity index 100% rename from src/app/core/drag.service.ts rename to modules/core/src/lib/core/drag.service.ts diff --git a/src/app/core/dspace-rest/dspace-not-null.serializer.ts b/modules/core/src/lib/core/dspace-rest/dspace-not-null.serializer.ts similarity index 97% rename from src/app/core/dspace-rest/dspace-not-null.serializer.ts rename to modules/core/src/lib/core/dspace-rest/dspace-not-null.serializer.ts index 81f8e2c2bd9..e768dc0c529 100644 --- a/src/app/core/dspace-rest/dspace-not-null.serializer.ts +++ b/modules/core/src/lib/core/dspace-rest/dspace-not-null.serializer.ts @@ -4,7 +4,7 @@ import { } from 'cerialize'; import { Serializer } from '../serializer'; -import { GenericConstructor } from '../shared/generic-constructor'; +import { GenericConstructor } from '../shared'; /** * This Serializer turns responses from DSpace's REST API diff --git a/src/app/core/dspace-rest/dspace-rest.schema.json b/modules/core/src/lib/core/dspace-rest/dspace-rest.schema.json similarity index 100% rename from src/app/core/dspace-rest/dspace-rest.schema.json rename to modules/core/src/lib/core/dspace-rest/dspace-rest.schema.json diff --git a/src/app/core/dspace-rest/dspace-rest.service.spec.ts b/modules/core/src/lib/core/dspace-rest/dspace-rest.service.spec.ts similarity index 99% rename from src/app/core/dspace-rest/dspace-rest.service.spec.ts rename to modules/core/src/lib/core/dspace-rest/dspace-rest.service.spec.ts index 4dd856b48e6..cdcd36b297f 100644 --- a/src/app/core/dspace-rest/dspace-rest.service.spec.ts +++ b/modules/core/src/lib/core/dspace-rest/dspace-rest.service.spec.ts @@ -9,7 +9,7 @@ import { import { inject, TestBed, -} from '@angular/core/testing'; +} from '@angular/core'; import { RestRequestMethod } from '../data/rest-request-method'; import { DSpaceObject } from '../shared/dspace-object.model'; diff --git a/src/app/core/dspace-rest/dspace-rest.service.ts b/modules/core/src/lib/core/dspace-rest/dspace-rest.service.ts similarity index 99% rename from src/app/core/dspace-rest/dspace-rest.service.ts rename to modules/core/src/lib/core/dspace-rest/dspace-rest.service.ts index a75cef53bf2..58a8129a6eb 100644 --- a/src/app/core/dspace-rest/dspace-rest.service.ts +++ b/modules/core/src/lib/core/dspace-rest/dspace-rest.service.ts @@ -6,6 +6,10 @@ import { HttpResponse, } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { + hasNoValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable, throwError as observableThrowError, @@ -15,10 +19,6 @@ import { map, } from 'rxjs/operators'; -import { - hasNoValue, - isNotEmpty, -} from '../../shared/empty.util'; import { RequestError } from '../data/request-error.model'; import { RestRequestMethod } from '../data/rest-request-method'; import { DSpaceObject } from '../shared/dspace-object.model'; diff --git a/src/app/core/dspace-rest/dspace-rest.validator.ts b/modules/core/src/lib/core/dspace-rest/dspace-rest.validator.ts similarity index 100% rename from src/app/core/dspace-rest/dspace-rest.validator.ts rename to modules/core/src/lib/core/dspace-rest/dspace-rest.validator.ts diff --git a/src/app/core/dspace-rest/dspace.serializer.spec.ts b/modules/core/src/lib/core/dspace-rest/dspace.serializer.spec.ts similarity index 96% rename from src/app/core/dspace-rest/dspace.serializer.spec.ts rename to modules/core/src/lib/core/dspace-rest/dspace.serializer.spec.ts index 169dd97a579..6e5ef10e8a4 100644 --- a/src/app/core/dspace-rest/dspace.serializer.spec.ts +++ b/modules/core/src/lib/core/dspace-rest/dspace.serializer.spec.ts @@ -3,9 +3,11 @@ import { deserialize, } from 'cerialize'; -import { HALLink } from '../shared/hal-link.model'; -import { HALResource } from '../shared/hal-resource.model'; -import { DSpaceSerializer } from './dspace.serializer'; +import {HALResource} from "../shared/hal-resource.model"; +import {HALLink} from "../shared/hal-link.model"; +import {DSpaceSerializer} from "./dspace.serializer"; + + class TestModel implements HALResource { @autoserialize diff --git a/src/app/core/dspace-rest/dspace.serializer.ts b/modules/core/src/lib/core/dspace-rest/dspace.serializer.ts similarity index 96% rename from src/app/core/dspace-rest/dspace.serializer.ts rename to modules/core/src/lib/core/dspace-rest/dspace.serializer.ts index ccf2d9a6344..fe1d52b75e8 100644 --- a/src/app/core/dspace-rest/dspace.serializer.ts +++ b/modules/core/src/lib/core/dspace-rest/dspace.serializer.ts @@ -4,7 +4,7 @@ import { } from 'cerialize'; import { Serializer } from '../serializer'; -import { GenericConstructor } from '../shared/generic-constructor'; +import { GenericConstructor } from '../shared'; /** * This Serializer turns responses from DSpace's REST API diff --git a/modules/core/src/lib/core/dspace-rest/index.ts b/modules/core/src/lib/core/dspace-rest/index.ts new file mode 100644 index 00000000000..d63e0977083 --- /dev/null +++ b/modules/core/src/lib/core/dspace-rest/index.ts @@ -0,0 +1,7 @@ +// created from 'create-ts-index' + +export * from './dspace-not-null.serializer'; +export * from './dspace-rest.service'; +export * from './dspace-rest.validator'; +export * from './dspace.serializer'; +export * from './raw-rest-response.model'; diff --git a/src/app/core/dspace-rest/raw-rest-response.model.ts b/modules/core/src/lib/core/dspace-rest/raw-rest-response.model.ts similarity index 100% rename from src/app/core/dspace-rest/raw-rest-response.model.ts rename to modules/core/src/lib/core/dspace-rest/raw-rest-response.model.ts diff --git a/src/app/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts b/modules/core/src/lib/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts similarity index 99% rename from src/app/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts rename to modules/core/src/lib/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts index 640859c7a42..8cbe55539a6 100644 --- a/src/app/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts +++ b/modules/core/src/lib/core/end-user-agreement/end-user-agreement-cookie.guard.spec.ts @@ -8,6 +8,7 @@ import { Observable } from 'rxjs'; import { EndUserAgreementService } from './end-user-agreement.service'; import { endUserAgreementCookieGuard } from './end-user-agreement-cookie.guard'; + describe('endUserAgreementCookieGuard', () => { let endUserAgreementService: EndUserAgreementService; diff --git a/src/app/core/end-user-agreement/end-user-agreement-cookie.guard.ts b/modules/core/src/lib/core/end-user-agreement/end-user-agreement-cookie.guard.ts similarity index 100% rename from src/app/core/end-user-agreement/end-user-agreement-cookie.guard.ts rename to modules/core/src/lib/core/end-user-agreement/end-user-agreement-cookie.guard.ts diff --git a/src/app/core/end-user-agreement/end-user-agreement-current-user.guard.spec.ts b/modules/core/src/lib/core/end-user-agreement/end-user-agreement-current-user.guard.spec.ts similarity index 96% rename from src/app/core/end-user-agreement/end-user-agreement-current-user.guard.spec.ts rename to modules/core/src/lib/core/end-user-agreement/end-user-agreement-current-user.guard.spec.ts index ae1f63884f2..c3d308de794 100644 --- a/src/app/core/end-user-agreement/end-user-agreement-current-user.guard.spec.ts +++ b/modules/core/src/lib/core/end-user-agreement/end-user-agreement-current-user.guard.spec.ts @@ -8,13 +8,14 @@ import { of as observableOf, } from 'rxjs'; -import { environment } from '../../../environments/environment.test'; +import { APP_CONFIG } from '../config/app-config.interface'; import { EndUserAgreementService } from './end-user-agreement.service'; import { endUserAgreementCurrentUserGuard } from './end-user-agreement-current-user.guard'; describe('endUserAgreementGuard', () => { let endUserAgreementService: EndUserAgreementService; let router: Router; + let environment; beforeEach(() => { endUserAgreementService = jasmine.createSpyObj('endUserAgreementService', { @@ -27,6 +28,8 @@ describe('endUserAgreementGuard', () => { createUrlTree: new UrlTree(), }); + environment = TestBed.inject(APP_CONFIG); + TestBed.configureTestingModule({ providers: [ { provide: Router, useValue: router }, diff --git a/src/app/core/end-user-agreement/end-user-agreement-current-user.guard.ts b/modules/core/src/lib/core/end-user-agreement/end-user-agreement-current-user.guard.ts similarity index 84% rename from src/app/core/end-user-agreement/end-user-agreement-current-user.guard.ts rename to modules/core/src/lib/core/end-user-agreement/end-user-agreement-current-user.guard.ts index 7c190a08b3c..5047621a446 100644 --- a/src/app/core/end-user-agreement/end-user-agreement-current-user.guard.ts +++ b/modules/core/src/lib/core/end-user-agreement/end-user-agreement-current-user.guard.ts @@ -2,7 +2,7 @@ import { inject } from '@angular/core'; import { CanActivateFn } from '@angular/router'; import { of as observableOf } from 'rxjs'; -import { environment } from '../../../environments/environment'; +import { APP_CONFIG } from '../config'; import { endUserAgreementGuard } from './end-user-agreement.guard'; import { EndUserAgreementService } from './end-user-agreement.service'; @@ -16,7 +16,9 @@ export const endUserAgreementCurrentUserGuard: CanActivateFn = endUserAgreementGuard( () => { const endUserAgreementService = inject(EndUserAgreementService); - if (!environment.info.enableEndUserAgreement) { + const appConfig = inject(APP_CONFIG); + + if (!appConfig.info.enableEndUserAgreement) { return observableOf(true); } diff --git a/src/app/core/end-user-agreement/end-user-agreement.guard.ts b/modules/core/src/lib/core/end-user-agreement/end-user-agreement.guard.ts similarity index 81% rename from src/app/core/end-user-agreement/end-user-agreement.guard.ts rename to modules/core/src/lib/core/end-user-agreement/end-user-agreement.guard.ts index 911dd54e259..44d1fe51b1c 100644 --- a/src/app/core/end-user-agreement/end-user-agreement.guard.ts +++ b/modules/core/src/lib/core/end-user-agreement/end-user-agreement.guard.ts @@ -11,8 +11,8 @@ import { of as observableOf, } from 'rxjs'; -import { environment } from '../../../environments/environment'; -import { returnEndUserAgreementUrlTreeOnFalse } from '../shared/authorized.operators'; +import { APP_CONFIG } from '../config'; +import { returnEndUserAgreementUrlTreeOnFalse } from '../shared'; export declare type HasAcceptedGuardParamFn = () => Observable; /** @@ -24,7 +24,9 @@ export const endUserAgreementGuard = ( ): CanActivateFn => { return (route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable => { const router = inject(Router); - if (!environment.info.enableEndUserAgreement) { + const appConfig = inject(APP_CONFIG); + + if (!appConfig.info.enableEndUserAgreement) { return observableOf(true); } return hasAccepted().pipe( diff --git a/src/app/core/end-user-agreement/end-user-agreement.service.spec.ts b/modules/core/src/lib/core/end-user-agreement/end-user-agreement.service.spec.ts similarity index 96% rename from src/app/core/end-user-agreement/end-user-agreement.service.spec.ts rename to modules/core/src/lib/core/end-user-agreement/end-user-agreement.service.spec.ts index 0511fd8b729..b4264e4dda0 100644 --- a/src/app/core/end-user-agreement/end-user-agreement.service.spec.ts +++ b/modules/core/src/lib/core/end-user-agreement/end-user-agreement.service.spec.ts @@ -1,8 +1,8 @@ import { of as observableOf } from 'rxjs'; -import { CookieServiceMock } from '../../shared/mocks/cookie.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { EPerson } from '../eperson/models/eperson.model'; +import { CookieServiceMock } from '../mocks/cookie.service.mock'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; import { END_USER_AGREEMENT_COOKIE, END_USER_AGREEMENT_METADATA_FIELD, diff --git a/src/app/core/end-user-agreement/end-user-agreement.service.ts b/modules/core/src/lib/core/end-user-agreement/end-user-agreement.service.ts similarity index 92% rename from src/app/core/end-user-agreement/end-user-agreement.service.ts rename to modules/core/src/lib/core/end-user-agreement/end-user-agreement.service.ts index 9263397f216..b5b5333d194 100644 --- a/src/app/core/end-user-agreement/end-user-agreement.service.ts +++ b/modules/core/src/lib/core/end-user-agreement/end-user-agreement.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable, of as observableOf, @@ -9,11 +10,10 @@ import { take, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { AuthService } from '../auth/auth.service'; -import { EPersonDataService } from '../eperson/eperson-data.service'; -import { CookieService } from '../services/cookie.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; +import { AuthService } from '../auth'; +import { EPersonDataService } from '../eperson'; +import { CookieService } from '../services'; +import { getFirstCompletedRemoteData } from '../shared'; export const END_USER_AGREEMENT_COOKIE = 'hasAgreedEndUser'; export const END_USER_AGREEMENT_METADATA_FIELD = 'dspace.agreements.end-user'; diff --git a/modules/core/src/lib/core/end-user-agreement/index.ts b/modules/core/src/lib/core/end-user-agreement/index.ts new file mode 100644 index 00000000000..c9c687d5168 --- /dev/null +++ b/modules/core/src/lib/core/end-user-agreement/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './end-user-agreement-cookie.guard'; +export * from './end-user-agreement-current-user.guard'; +export * from './end-user-agreement.guard'; +export * from './end-user-agreement.service'; diff --git a/src/app/core/eperson/eperson-data.service.spec.ts b/modules/core/src/lib/core/eperson/eperson-data.service.spec.ts similarity index 95% rename from src/app/core/eperson/eperson-data.service.spec.ts rename to modules/core/src/lib/core/eperson/eperson-data.service.spec.ts index 749afb5daa3..d7fe6f25b3e 100644 --- a/src/app/core/eperson/eperson-data.service.spec.ts +++ b/modules/core/src/lib/core/eperson/eperson-data.service.spec.ts @@ -17,28 +17,6 @@ import { import { cold } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; -import { - EPeopleRegistryCancelEPersonAction, - EPeopleRegistryEditEPersonAction, -} from '../../access-control/epeople-registry/epeople-registry.actions'; -import { getMockRemoteDataBuildServiceHrefMap } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { - createNoContentRemoteDataObject$, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { - EPersonMock, - EPersonMock2, -} from '../../shared/testing/eperson.mock'; -import { GroupMock } from '../../shared/testing/group-mock'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { - createPaginatedList, - createRequestEntry$, -} from '../../shared/testing/utils.test'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RequestParam } from '../cache/models/request-param.model'; import { ObjectCacheService } from '../cache/object-cache.service'; @@ -51,14 +29,38 @@ import { PostRequest, } from '../data/request.models'; import { RequestService } from '../data/request.service'; +import { getMockRemoteDataBuildServiceHrefMap } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; +import { + EPeopleRegistryCancelEPersonAction, + EPeopleRegistryEditEPersonAction, +} from '../states/epeople-registry/epeople-registry.actions'; +import { + createNoContentRemoteDataObject$, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; +import { + EPersonMock, + EPersonMock2, +} from '../utilities/testing/eperson.mock'; +import { GroupMock } from '../utilities/testing/group-mock'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { NotificationsServiceStub } from '../utilities/testing/notifications-service.stub'; +import { + createPaginatedList, + createRequestEntry$, +} from '../utilities/testing/utils.test'; import { editEPersonSelector, EPersonDataService, } from './eperson-data.service'; import { EPerson } from './models/eperson.model'; + + describe('EPersonDataService', () => { let service: EPersonDataService; let store: MockStore; @@ -73,8 +75,10 @@ describe('EPersonDataService', () => { let rdbService; const initialState = { - epeopleRegistry: { - editEPerson: null, + core: { + epeopleRegistry: { + editEPerson: null, + }, }, }; diff --git a/src/app/core/eperson/eperson-data.service.ts b/modules/core/src/lib/core/eperson/eperson-data.service.ts similarity index 91% rename from src/app/core/eperson/eperson-data.service.ts rename to modules/core/src/lib/core/eperson/eperson-data.service.ts index 0de6de7407e..16d2a5ef4a4 100644 --- a/src/app/core/eperson/eperson-data.service.ts +++ b/modules/core/src/lib/core/eperson/eperson-data.service.ts @@ -1,4 +1,8 @@ import { Injectable } from '@angular/core'; +import { + hasNoValue, + hasValue, +} from '@dspace/shared/utils'; import { createSelector, select, @@ -12,64 +16,59 @@ import { take, } from 'rxjs/operators'; -import { getEPersonEditRoute } from '../../access-control/access-control-routing-paths'; -import { - EPeopleRegistryCancelEPersonAction, - EPeopleRegistryEditEPersonAction, -} from '../../access-control/epeople-registry/epeople-registry.actions'; -import { EPeopleRegistryState } from '../../access-control/epeople-registry/epeople-registry.reducers'; -import { AppState } from '../../app.reducer'; -import { - hasNoValue, - hasValue, -} from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; import { CreateData, CreateDataImpl, -} from '../data/base/create-data'; +} from '../data'; import { DeleteData, DeleteDataImpl, -} from '../data/base/delete-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +} from '../data'; +import { IdentifiableDataService } from '../data'; import { PatchData, PatchDataImpl, -} from '../data/base/patch-data'; +} from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service'; -import { FindListOptions } from '../data/find-list-options.model'; +} from '../data'; +import { DSOChangeAnalyzer } from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; import { buildPaginatedList, PaginatedList, -} from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; +} from '../data'; +import { RemoteData } from '../data'; import { PatchRequest, PostRequest, -} from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RestRequestMethod } from '../data/rest-request-method'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; +} from '../data'; +import { RequestService } from '../data'; +import { RestRequestMethod } from '../data'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; import { getFirstSucceededRemoteData, getRemoteDataPayload, -} from '../shared/operators'; -import { PageInfo } from '../shared/page-info.model'; -import { EPerson } from './models/eperson.model'; +} from '../shared'; +import { PageInfo } from '../shared'; +import { + EPeopleRegistryCancelEPersonAction, + EPeopleRegistryEditEPersonAction, +} from '../states'; +import { EPeopleRegistryState } from '../states'; +import { URLCombiner } from '../url-combiner'; +import { EPerson } from './models'; // todo: optimize imports -const ePeopleRegistryStateSelector = (state: AppState) => state.epeopleRegistry; +const ePeopleRegistryStateSelector = (state: any) => state.core.epeopleRegistry; export const editEPersonSelector = createSelector(ePeopleRegistryStateSelector, (ePeopleRegistryState: EPeopleRegistryState) => ePeopleRegistryState.editEPerson); /** @@ -263,7 +262,7 @@ export class EPersonDataService extends IdentifiableDataService impleme } /** - * Metadata operations are generated by the difference between old and new EPerson + * PolicyMetadata operations are generated by the difference between old and new EPerson * Custom replace operations for the other EPerson values * @param oldEPerson * @param newEPerson @@ -346,7 +345,12 @@ export class EPersonDataService extends IdentifiableDataService impleme this.editEPerson(ePerson); } }); - return getEPersonEditRoute(ePerson.id); + return this.getEPersonEditRoute(ePerson.id); + } + + private getEPersonEditRoute(id: string): string { + const ePersonRoute = new URLCombiner('/access-control', 'epeople').toString(); + return new URLCombiner(ePersonRoute, id, 'edit').toString(); } /** diff --git a/src/app/access-control/epeople-registry/eperson-resolver.service.ts b/modules/core/src/lib/core/eperson/eperson-resolver.service.ts similarity index 79% rename from src/app/access-control/epeople-registry/eperson-resolver.service.ts rename to modules/core/src/lib/core/eperson/eperson-resolver.service.ts index 6c9d7347f73..eb301470772 100644 --- a/src/app/access-control/epeople-registry/eperson-resolver.service.ts +++ b/modules/core/src/lib/core/eperson/eperson-resolver.service.ts @@ -6,15 +6,15 @@ import { import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { RemoteData } from '../../core/data/remote-data'; -import { EPersonDataService } from '../../core/eperson/eperson-data.service'; -import { EPerson } from '../../core/eperson/models/eperson.model'; -import { ResolvedAction } from '../../core/resolving/resolver.actions'; -import { getFirstCompletedRemoteData } from '../../core/shared/operators'; import { followLink, FollowLinkConfig, -} from '../../shared/utils/follow-link-config.model'; +} from '../data'; +import { RemoteData } from '../data'; +import { ResolvedAction } from '../resolving'; +import { getFirstCompletedRemoteData } from '../shared'; +import { EPersonDataService } from './eperson-data.service'; +import { EPerson } from './models'; export const EPERSON_EDIT_FOLLOW_LINKS: FollowLinkConfig[] = [ followLink('groups'), diff --git a/src/app/core/eperson/group-data.service.spec.ts b/modules/core/src/lib/core/eperson/group-data.service.spec.ts similarity index 94% rename from src/app/core/eperson/group-data.service.spec.ts rename to modules/core/src/lib/core/eperson/group-data.service.spec.ts index 5a4ec018f0b..2110df73c9e 100644 --- a/src/app/core/eperson/group-data.service.spec.ts +++ b/modules/core/src/lib/core/eperson/group-data.service.spec.ts @@ -17,28 +17,6 @@ import { } from 'fast-json-patch'; import { of as observableOf } from 'rxjs'; -import { - GroupRegistryCancelGroupAction, - GroupRegistryEditGroupAction, -} from '../../access-control/group-registry/group-registry.actions'; -import { getMockObjectCacheService } from '../../shared/mocks/object-cache.service.mock'; -import { getMockRemoteDataBuildServiceHrefMap } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { - EPersonMock, - EPersonMock2, -} from '../../shared/testing/eperson.mock'; -import { - GroupMock, - GroupMock2, -} from '../../shared/testing/group-mock'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { TranslateLoaderMock } from '../../shared/testing/translate-loader.mock'; -import { - createPaginatedList, - createRequestEntry$, -} from '../../shared/testing/utils.test'; import { RequestParam } from '../cache/models/request-param.model'; import { ObjectCacheEntry } from '../cache/object-cache.reducer'; import { CoreState } from '../core-state.model'; @@ -50,7 +28,29 @@ import { } from '../data/request.models'; import { RequestService } from '../data/request.service'; import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { getMockObjectCacheService } from '../mocks/object-cache.service.mock'; +import { getMockRemoteDataBuildServiceHrefMap } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { TranslateLoaderMock } from '../mocks/translate-loader.mock'; import { Item } from '../shared/item.model'; +import { + GroupRegistryCancelGroupAction, + GroupRegistryEditGroupAction, +} from '../states/group-registry/group-registry.actions'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { + EPersonMock, + EPersonMock2, +} from '../utilities/testing/eperson.mock'; +import { + GroupMock, + GroupMock2, +} from '../utilities/testing/group-mock'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; +import { + createPaginatedList, + createRequestEntry$, +} from '../utilities/testing/utils.test'; import { GroupDataService } from './group-data.service'; describe('GroupDataService', () => { diff --git a/src/app/core/eperson/group-data.service.ts b/modules/core/src/lib/core/eperson/group-data.service.ts similarity index 96% rename from src/app/core/eperson/group-data.service.ts rename to modules/core/src/lib/core/eperson/group-data.service.ts index 6c9acdd00bb..c2c9cee47ed 100644 --- a/src/app/core/eperson/group-data.service.ts +++ b/modules/core/src/lib/core/eperson/group-data.service.ts @@ -12,15 +12,6 @@ import { } from 'rxjs'; import { take } from 'rxjs/operators'; -import { getGroupEditRoute } from '../../access-control/access-control-routing-paths'; -import { - GroupRegistryCancelGroupAction, - GroupRegistryEditGroupAction, -} from '../../access-control/group-registry/group-registry.actions'; -import { GroupRegistryState } from '../../access-control/group-registry/group-registry.reducers'; -import { AppState } from '../../app.reducer'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; import { DSONameService } from '../breadcrumbs/dso-name.service'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RequestParam } from '../cache/models/request-param.model'; @@ -44,6 +35,7 @@ import { } from '../data/base/search-data'; import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service'; import { FindListOptions } from '../data/find-list-options.model'; +import { FollowLinkConfig } from '../data/follow-link-config.model'; import { PaginatedList } from '../data/paginated-list.model'; import { RemoteData } from '../data/remote-data'; import { @@ -54,15 +46,24 @@ import { import { RequestService } from '../data/request.service'; import { RestRequestMethod } from '../data/rest-request-method'; import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { NotificationsService } from '../notifications/notifications.service'; +import { getGroupEditRoute } from '../router/utils/routes-utils'; import { Collection } from '../shared/collection.model'; import { Community } from '../shared/community.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { NoContent } from '../shared/NoContent.model'; import { getFirstCompletedRemoteData } from '../shared/operators'; +import { + GroupRegistryCancelGroupAction, + GroupRegistryEditGroupAction, +} from '../states/group-registry/group-registry.actions'; +import { GroupRegistryState } from '../states/group-registry/group-registry.reducers'; import { EPerson } from './models/eperson.model'; import { Group } from './models/group.model'; -const groupRegistryStateSelector = (state: AppState) => state.groupRegistry; + + +const groupRegistryStateSelector = (state: any) => state.core.groupRegistry; const editGroupSelector = createSelector(groupRegistryStateSelector, (groupRegistryState: GroupRegistryState) => groupRegistryState.editGroup); /** diff --git a/modules/core/src/lib/core/eperson/index.ts b/modules/core/src/lib/core/eperson/index.ts new file mode 100644 index 00000000000..837ecaba409 --- /dev/null +++ b/modules/core/src/lib/core/eperson/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './eperson-data.service'; +export * from './eperson-resolver.service'; +export * from './group-data.service'; diff --git a/src/app/core/eperson/models/eperson-dto.model.ts b/modules/core/src/lib/core/eperson/models/eperson-dto.model.ts similarity index 100% rename from src/app/core/eperson/models/eperson-dto.model.ts rename to modules/core/src/lib/core/eperson/models/eperson-dto.model.ts diff --git a/src/app/core/eperson/models/eperson.model.ts b/modules/core/src/lib/core/eperson/models/eperson.model.ts similarity index 80% rename from src/app/core/eperson/models/eperson.model.ts rename to modules/core/src/lib/core/eperson/models/eperson.model.ts index 71d33fcafbb..c4f1559c110 100644 --- a/src/app/core/eperson/models/eperson.model.ts +++ b/modules/core/src/lib/core/eperson/models/eperson.model.ts @@ -4,16 +4,16 @@ import { } from 'cerialize'; import { Observable } from 'rxjs'; -import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { DSpaceObject } from '../../shared/dspace-object.model'; -import { GenericConstructor } from '../../shared/generic-constructor'; -import { HALLink } from '../../shared/hal-link.model'; +} from '../../cache'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { ListableObject } from '../../object-collection'; +import { DSpaceObject } from '../../shared'; +import { GenericConstructor } from '../../shared'; +import { HALLink } from '../../shared'; import { EPERSON } from './eperson.resource-type'; import { Group } from './group.model'; import { GROUP } from './group.resource-type'; diff --git a/src/app/core/eperson/models/eperson.resource-type.ts b/modules/core/src/lib/core/eperson/models/eperson.resource-type.ts similarity index 75% rename from src/app/core/eperson/models/eperson.resource-type.ts rename to modules/core/src/lib/core/eperson/models/eperson.resource-type.ts index 8c91b3bca64..c069ab75e5d 100644 --- a/src/app/core/eperson/models/eperson.resource-type.ts +++ b/modules/core/src/lib/core/eperson/models/eperson.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for EPerson diff --git a/src/app/core/eperson/models/group-dto.model.ts b/modules/core/src/lib/core/eperson/models/group-dto.model.ts similarity index 91% rename from src/app/core/eperson/models/group-dto.model.ts rename to modules/core/src/lib/core/eperson/models/group-dto.model.ts index ef65c498fd2..419442c8ec4 100644 --- a/src/app/core/eperson/models/group-dto.model.ts +++ b/modules/core/src/lib/core/eperson/models/group-dto.model.ts @@ -1,4 +1,4 @@ -import { PaginatedList } from '../../data/paginated-list.model'; +import { PaginatedList } from '../../data'; import { EPerson } from './eperson.model'; import { Group } from './group.model'; diff --git a/src/app/core/eperson/models/group.model.ts b/modules/core/src/lib/core/eperson/models/group.model.ts similarity index 80% rename from src/app/core/eperson/models/group.model.ts rename to modules/core/src/lib/core/eperson/models/group.model.ts index 71923d6c55c..a12d60c0694 100644 --- a/src/app/core/eperson/models/group.model.ts +++ b/modules/core/src/lib/core/eperson/models/group.model.ts @@ -9,13 +9,13 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { DSpaceObject } from '../../shared/dspace-object.model'; -import { DSPACE_OBJECT } from '../../shared/dspace-object.resource-type'; -import { HALLink } from '../../shared/hal-link.model'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +} from '../../cache'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { DSpaceObject } from '../../shared'; +import { DSPACE_OBJECT } from '../../shared'; +import { HALLink } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { EPerson } from './eperson.model'; import { EPERSON } from './eperson.resource-type'; import { GROUP } from './group.resource-type'; diff --git a/src/app/core/eperson/models/group.resource-type.ts b/modules/core/src/lib/core/eperson/models/group.resource-type.ts similarity index 74% rename from src/app/core/eperson/models/group.resource-type.ts rename to modules/core/src/lib/core/eperson/models/group.resource-type.ts index ad4a8bbccb2..2f6609d251f 100644 --- a/src/app/core/eperson/models/group.resource-type.ts +++ b/modules/core/src/lib/core/eperson/models/group.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for Group diff --git a/modules/core/src/lib/core/eperson/models/index.ts b/modules/core/src/lib/core/eperson/models/index.ts new file mode 100644 index 00000000000..5dd022fb5f7 --- /dev/null +++ b/modules/core/src/lib/core/eperson/models/index.ts @@ -0,0 +1,10 @@ +// created from 'create-ts-index' + +export * from './eperson-dto.model'; +export * from './eperson.model'; +export * from './eperson.resource-type'; +export * from './group-dto.model'; +export * from './group.model'; +export * from './group.resource-type'; +export * from './workflowitem.resource-type'; +export * from './workspaceitem.resource-type'; diff --git a/src/app/core/eperson/models/workflowitem.resource-type.ts b/modules/core/src/lib/core/eperson/models/workflowitem.resource-type.ts similarity index 51% rename from src/app/core/eperson/models/workflowitem.resource-type.ts rename to modules/core/src/lib/core/eperson/models/workflowitem.resource-type.ts index 001b6b3f334..afaca372226 100644 --- a/src/app/core/eperson/models/workflowitem.resource-type.ts +++ b/modules/core/src/lib/core/eperson/models/workflowitem.resource-type.ts @@ -1,3 +1,3 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; export const WORKFLOWITEM = new ResourceType('workflowitem'); diff --git a/src/app/core/eperson/models/workspaceitem.resource-type.ts b/modules/core/src/lib/core/eperson/models/workspaceitem.resource-type.ts similarity index 52% rename from src/app/core/eperson/models/workspaceitem.resource-type.ts rename to modules/core/src/lib/core/eperson/models/workspaceitem.resource-type.ts index e141d45a9fb..b81d0f3cb27 100644 --- a/src/app/core/eperson/models/workspaceitem.resource-type.ts +++ b/modules/core/src/lib/core/eperson/models/workspaceitem.resource-type.ts @@ -1,3 +1,3 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; export const WORKSPACEITEM = new ResourceType('workspaceitem'); diff --git a/src/app/core/feedback/feedback-data.service.spec.ts b/modules/core/src/lib/core/feedback/feedback-data.service.spec.ts similarity index 90% rename from src/app/core/feedback/feedback-data.service.spec.ts rename to modules/core/src/lib/core/feedback/feedback-data.service.spec.ts index 9b666e9776e..f749f9b2ab0 100644 --- a/src/app/core/feedback/feedback-data.service.spec.ts +++ b/modules/core/src/lib/core/feedback/feedback-data.service.spec.ts @@ -1,13 +1,13 @@ import { Store } from '@ngrx/store'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { CoreState } from '../core-state.model'; import { testCreateDataImplementation } from '../data/base/create-data.spec'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALLink } from '../shared/hal-link.model'; import { Item } from '../shared/item.model'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { FeedbackDataService } from './feedback-data.service'; import { Feedback } from './models/feedback.model'; diff --git a/src/app/core/feedback/feedback-data.service.ts b/modules/core/src/lib/core/feedback/feedback-data.service.ts similarity index 70% rename from src/app/core/feedback/feedback-data.service.ts rename to modules/core/src/lib/core/feedback/feedback-data.service.ts index 53d30bc6ee7..0a802ae64d3 100644 --- a/src/app/core/feedback/feedback-data.service.ts +++ b/modules/core/src/lib/core/feedback/feedback-data.service.ts @@ -2,23 +2,23 @@ import { Injectable } from '@angular/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; import { CreateData, CreateDataImpl, -} from '../data/base/create-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +} from '../data'; +import { IdentifiableDataService } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; import { getFirstSucceededRemoteData, getRemoteDataPayload, -} from '../shared/operators'; -import { Feedback } from './models/feedback.model'; +} from '../shared'; +import { Feedback } from './models'; /** * Service for checking and managing the feedback diff --git a/src/app/core/feedback/feedback.guard.ts b/modules/core/src/lib/core/feedback/feedback.guard.ts similarity index 77% rename from src/app/core/feedback/feedback.guard.ts rename to modules/core/src/lib/core/feedback/feedback.guard.ts index eef5205ee4a..c8e801f1c2a 100644 --- a/src/app/core/feedback/feedback.guard.ts +++ b/modules/core/src/lib/core/feedback/feedback.guard.ts @@ -7,8 +7,8 @@ import { } from '@angular/router'; import { Observable } from 'rxjs'; -import { AuthorizationDataService } from '../data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../data/feature-authorization/feature-id'; +import { AuthorizationDataService } from '../data'; +import { FeatureID } from '../data'; /** * A guard for redirecting users to the feedback page if user is authorized diff --git a/modules/core/src/lib/core/feedback/index.ts b/modules/core/src/lib/core/feedback/index.ts new file mode 100644 index 00000000000..68a4b1d7221 --- /dev/null +++ b/modules/core/src/lib/core/feedback/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './feedback-data.service'; +export * from './feedback.guard'; diff --git a/src/app/core/feedback/models/feedback.model.ts b/modules/core/src/lib/core/feedback/models/feedback.model.ts similarity index 75% rename from src/app/core/feedback/models/feedback.model.ts rename to modules/core/src/lib/core/feedback/models/feedback.model.ts index e6718cb265b..e48e073370a 100644 --- a/src/app/core/feedback/models/feedback.model.ts +++ b/modules/core/src/lib/core/feedback/models/feedback.model.ts @@ -3,9 +3,9 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { DSpaceObject } from '../../shared/dspace-object.model'; -import { HALLink } from '../../shared/hal-link.model'; +import { typedObject } from '../../cache'; +import { DSpaceObject } from '../../shared'; +import { HALLink } from '../../shared'; import { FEEDBACK } from './feedback.resource-type'; @typedObject diff --git a/src/app/core/feedback/models/feedback.resource-type.ts b/modules/core/src/lib/core/feedback/models/feedback.resource-type.ts similarity index 75% rename from src/app/core/feedback/models/feedback.resource-type.ts rename to modules/core/src/lib/core/feedback/models/feedback.resource-type.ts index 89b28c6cb04..d7253c027ea 100644 --- a/src/app/core/feedback/models/feedback.resource-type.ts +++ b/modules/core/src/lib/core/feedback/models/feedback.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for Feedback diff --git a/modules/core/src/lib/core/feedback/models/index.ts b/modules/core/src/lib/core/feedback/models/index.ts new file mode 100644 index 00000000000..fd87ea21a49 --- /dev/null +++ b/modules/core/src/lib/core/feedback/models/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './feedback.model'; +export * from './feedback.resource-type'; diff --git a/src/app/core/forward-client-ip/forward-client-ip.interceptor.spec.ts b/modules/core/src/lib/core/forward-client-ip/forward-client-ip.interceptor.spec.ts similarity index 96% rename from src/app/core/forward-client-ip/forward-client-ip.interceptor.spec.ts rename to modules/core/src/lib/core/forward-client-ip/forward-client-ip.interceptor.spec.ts index 82fb36ce66a..a164b4ca05e 100644 --- a/src/app/core/forward-client-ip/forward-client-ip.interceptor.spec.ts +++ b/modules/core/src/lib/core/forward-client-ip/forward-client-ip.interceptor.spec.ts @@ -5,10 +5,11 @@ import { } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; -import { REQUEST } from '../../../express.tokens'; import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; +import { REQUEST } from '../tokens/express.tokens'; import { ForwardClientIpInterceptor } from './forward-client-ip.interceptor'; + describe('ForwardClientIpInterceptor', () => { let service: DspaceRestService; let httpMock: HttpTestingController; diff --git a/src/app/core/forward-client-ip/forward-client-ip.interceptor.ts b/modules/core/src/lib/core/forward-client-ip/forward-client-ip.interceptor.ts similarity index 95% rename from src/app/core/forward-client-ip/forward-client-ip.interceptor.ts rename to modules/core/src/lib/core/forward-client-ip/forward-client-ip.interceptor.ts index 7fe4263d464..f75d1370bd4 100644 --- a/src/app/core/forward-client-ip/forward-client-ip.interceptor.ts +++ b/modules/core/src/lib/core/forward-client-ip/forward-client-ip.interceptor.ts @@ -10,7 +10,7 @@ import { } from '@angular/core'; import { Observable } from 'rxjs'; -import { REQUEST } from '../../../express.tokens'; +import { REQUEST } from '../tokens'; @Injectable({ providedIn: 'root' }) /** diff --git a/modules/core/src/lib/core/forward-client-ip/index.ts b/modules/core/src/lib/core/forward-client-ip/index.ts new file mode 100644 index 00000000000..ac8c1a4853c --- /dev/null +++ b/modules/core/src/lib/core/forward-client-ip/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './forward-client-ip.interceptor'; diff --git a/src/app/core/google-recaptcha/google-recaptcha.service.spec.ts b/modules/core/src/lib/core/google-recaptcha/google-recaptcha.service.spec.ts similarity index 96% rename from src/app/core/google-recaptcha/google-recaptcha.service.spec.ts rename to modules/core/src/lib/core/google-recaptcha/google-recaptcha.service.spec.ts index 94b03bba463..ce08cfb74fb 100644 --- a/src/app/core/google-recaptcha/google-recaptcha.service.spec.ts +++ b/modules/core/src/lib/core/google-recaptcha/google-recaptcha.service.spec.ts @@ -1,9 +1,11 @@ import { of as observableOf } from 'rxjs'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { NativeWindowRef } from '../services/window.service'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; import { GoogleRecaptchaService } from './google-recaptcha.service'; + + describe('GoogleRecaptchaService', () => { let service: GoogleRecaptchaService; diff --git a/src/app/core/google-recaptcha/google-recaptcha.service.ts b/modules/core/src/lib/core/google-recaptcha/google-recaptcha.service.ts similarity index 93% rename from src/app/core/google-recaptcha/google-recaptcha.service.ts rename to modules/core/src/lib/core/google-recaptcha/google-recaptcha.service.ts index c23223b6785..369864a2d0b 100644 --- a/src/app/core/google-recaptcha/google-recaptcha.service.ts +++ b/modules/core/src/lib/core/google-recaptcha/google-recaptcha.service.ts @@ -5,6 +5,7 @@ import { Renderer2, RendererFactory2, } from '@angular/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { BehaviorSubject, combineLatest, @@ -19,16 +20,15 @@ import { tap, } from 'rxjs/operators'; -import { isNotEmpty } from '../../shared/empty.util'; -import { ConfigurationDataService } from '../data/configuration-data.service'; -import { RemoteData } from '../data/remote-data'; -import { CookieService } from '../services/cookie.service'; +import { ConfigurationDataService } from '../data'; +import { RemoteData } from '../data'; +import { CookieService } from '../services'; import { NativeWindowRef, NativeWindowService, -} from '../services/window.service'; -import { ConfigurationProperty } from '../shared/configuration-property.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; +} from '../services'; +import { ConfigurationProperty } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; export const CAPTCHA_COOKIE = '_GRECAPTCHA'; export const CAPTCHA_NAME = 'google-recaptcha'; diff --git a/modules/core/src/lib/core/google-recaptcha/index.ts b/modules/core/src/lib/core/google-recaptcha/index.ts new file mode 100644 index 00000000000..faee4140df2 --- /dev/null +++ b/modules/core/src/lib/core/google-recaptcha/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './google-recaptcha.service'; diff --git a/src/app/core/history/history.actions.ts b/modules/core/src/lib/core/history/history.actions.ts similarity index 91% rename from src/app/core/history/history.actions.ts rename to modules/core/src/lib/core/history/history.actions.ts index ec67bef02d1..5890f79cad6 100644 --- a/src/app/core/history/history.actions.ts +++ b/modules/core/src/lib/core/history/history.actions.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; +import { type } from '../shared'; export const HistoryActionTypes = { ADD_TO_HISTORY: type('dspace/history/ADD_TO_HISTORY'), diff --git a/src/app/core/history/history.reducer.spec.ts b/modules/core/src/lib/core/history/history.reducer.spec.ts similarity index 99% rename from src/app/core/history/history.reducer.spec.ts rename to modules/core/src/lib/core/history/history.reducer.spec.ts index c5ab4df2291..4e47ef4e7db 100644 --- a/src/app/core/history/history.reducer.spec.ts +++ b/modules/core/src/lib/core/history/history.reducer.spec.ts @@ -1,6 +1,7 @@ import { AddUrlToHistoryAction } from './history.actions'; import { historyReducer } from './history.reducer'; + class NullAction extends AddUrlToHistoryAction { type = null; diff --git a/src/app/core/history/history.reducer.ts b/modules/core/src/lib/core/history/history.reducer.ts similarity index 100% rename from src/app/core/history/history.reducer.ts rename to modules/core/src/lib/core/history/history.reducer.ts diff --git a/modules/core/src/lib/core/history/index.ts b/modules/core/src/lib/core/history/index.ts new file mode 100644 index 00000000000..8b0796e0f36 --- /dev/null +++ b/modules/core/src/lib/core/history/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './history.actions'; +export * from './history.reducer'; +export * from './selectors'; diff --git a/src/app/core/history/selectors.ts b/modules/core/src/lib/core/history/selectors.ts similarity index 100% rename from src/app/core/history/selectors.ts rename to modules/core/src/lib/core/history/selectors.ts diff --git a/modules/core/src/lib/core/index.ts b/modules/core/src/lib/core/index.ts new file mode 100644 index 00000000000..7002e1f5691 --- /dev/null +++ b/modules/core/src/lib/core/index.ts @@ -0,0 +1,63 @@ +export * from './access-status'; +export * from './admin'; +export * from './auth'; +export * from './breadcrumbs'; +export * from './browse'; +export * from './cache'; +export * from './coar-notify'; +export * from './config'; +export * from './correlation-id'; +export * from './data'; +export * from './dspace-rest'; +export * from './end-user-agreement'; +export * from './eperson'; +export * from './feedback'; +export * from './forward-client-ip'; +export * from './google-recaptcha'; +export * from './history'; +export * from './index/index'; +export * from './json-patch'; +export * from './locale'; +export * from './log'; +export * from './metadata'; +export * from './notifications'; +export * from './notify-requests'; +export * from './object-collection'; +export * from './orcid'; +export * from './pagination'; +export * from './processes'; +export * from './profile'; +export * from './registry'; +export * from './reload'; +export * from './request-copy'; +export * from './resolving'; +export * from './resource-policy'; +export * from './rest-property'; +export * from './roles'; +export * from './router'; +export * from './scripts'; +export * from './server-check'; +export * from './services'; +export * from './shared'; +export * from './states'; +export * from './statistics'; +export * from './submission'; +export * from './subscription'; +export * from './supervision-order'; +export * from './system-wide-alert'; +export * from './tasks'; +export * from './tokens'; +export * from './url-baser'; +export * from './url-combiner'; +export * from './utilities'; +export * from './xsrf'; +export * from './core-state.model'; +export * from './core.effects'; +export * from './core.reducers'; +export * from './core.selectors'; +export * from './data-services-map'; +export * from './drag.service'; +export * from './lazy-data-service'; +export * from './provide-core'; +export * from './serializer'; +export * from './store.actions'; diff --git a/src/app/core/index/index-name.model.ts b/modules/core/src/lib/core/index/index-name.model.ts similarity index 100% rename from src/app/core/index/index-name.model.ts rename to modules/core/src/lib/core/index/index-name.model.ts diff --git a/src/app/core/index/index.actions.ts b/modules/core/src/lib/core/index/index.actions.ts similarity index 97% rename from src/app/core/index/index.actions.ts rename to modules/core/src/lib/core/index/index.actions.ts index fc6bc3494df..89fafedd3a6 100644 --- a/src/app/core/index/index.actions.ts +++ b/modules/core/src/lib/core/index/index.actions.ts @@ -1,8 +1,8 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; import { IndexName } from './index-name.model'; +import { type } from "../shared"; /** * The list of HrefIndexAction type definitions diff --git a/src/app/core/index/index.effects.spec.ts b/modules/core/src/lib/core/index/index.effects.spec.ts similarity index 98% rename from src/app/core/index/index.effects.spec.ts rename to modules/core/src/lib/core/index/index.effects.spec.ts index 89b5916f45e..a80db6e59c9 100644 --- a/src/app/core/index/index.effects.spec.ts +++ b/modules/core/src/lib/core/index/index.effects.spec.ts @@ -10,9 +10,9 @@ import { } from 'jasmine-marbles'; import { Observable } from 'rxjs'; -import { NoOpAction } from '../../shared/ngrx/no-op.action'; import { AddToObjectCacheAction } from '../cache/object-cache.actions'; import { Item } from '../shared/item.model'; +import { NoOpAction } from '../shared/ngrx/no-op.action'; import { AddToIndexAction } from './index.actions'; import { UUIDIndexEffects } from './index.effects'; import { IndexName } from './index-name.model'; diff --git a/src/app/core/index/index.effects.ts b/modules/core/src/lib/core/index/index.effects.ts similarity index 96% rename from src/app/core/index/index.effects.ts rename to modules/core/src/lib/core/index/index.effects.ts index 8fc33145ff7..b03b7b22d63 100644 --- a/src/app/core/index/index.effects.ts +++ b/modules/core/src/lib/core/index/index.effects.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Actions, createEffect, @@ -15,8 +16,6 @@ import { take, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { NoOpAction } from '../../shared/ngrx/no-op.action'; import { AddToObjectCacheAction, ObjectCacheActionTypes, @@ -29,6 +28,7 @@ import { RequestStaleAction, } from '../data/request.actions'; import { RestRequestMethod } from '../data/rest-request-method'; +import { NoOpAction } from '../shared/ngrx/no-op.action'; import { AddToIndexAction, RemoveFromIndexByValueAction, diff --git a/src/app/core/index/index.reducer.spec.ts b/modules/core/src/lib/core/index/index.reducer.spec.ts similarity index 100% rename from src/app/core/index/index.reducer.spec.ts rename to modules/core/src/lib/core/index/index.reducer.spec.ts diff --git a/src/app/core/index/index.reducer.ts b/modules/core/src/lib/core/index/index.reducer.ts similarity index 100% rename from src/app/core/index/index.reducer.ts rename to modules/core/src/lib/core/index/index.reducer.ts diff --git a/src/app/core/index/index.selectors.spec.ts b/modules/core/src/lib/core/index/index.selectors.spec.ts similarity index 100% rename from src/app/core/index/index.selectors.spec.ts rename to modules/core/src/lib/core/index/index.selectors.spec.ts diff --git a/src/app/core/index/index.selectors.ts b/modules/core/src/lib/core/index/index.selectors.ts similarity index 99% rename from src/app/core/index/index.selectors.ts rename to modules/core/src/lib/core/index/index.selectors.ts index a9d42baa471..67436e84db9 100644 --- a/src/app/core/index/index.selectors.ts +++ b/modules/core/src/lib/core/index/index.selectors.ts @@ -1,12 +1,12 @@ +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { createSelector, MemoizedSelector, } from '@ngrx/store'; -import { - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; import { coreSelector } from '../core.selectors'; import { CoreState } from '../core-state.model'; import { URLCombiner } from '../url-combiner/url-combiner'; diff --git a/modules/core/src/lib/core/index/index.ts b/modules/core/src/lib/core/index/index.ts new file mode 100644 index 00000000000..52b658e74b9 --- /dev/null +++ b/modules/core/src/lib/core/index/index.ts @@ -0,0 +1,7 @@ +// created from 'create-ts-index' + +export * from './index-name.model'; +export * from './index.actions'; +export * from './index.effects'; +export * from './index.reducer'; +export * from './index.selectors'; diff --git a/modules/core/src/lib/core/json-patch/builder/index.ts b/modules/core/src/lib/core/json-patch/builder/index.ts new file mode 100644 index 00000000000..3f5e6498d54 --- /dev/null +++ b/modules/core/src/lib/core/json-patch/builder/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './json-patch-operation-path-combiner'; +export * from './json-patch-operations-builder'; diff --git a/src/app/core/json-patch/builder/json-patch-operation-path-combiner.ts b/modules/core/src/lib/core/json-patch/builder/json-patch-operation-path-combiner.ts similarity index 92% rename from src/app/core/json-patch/builder/json-patch-operation-path-combiner.ts rename to modules/core/src/lib/core/json-patch/builder/json-patch-operation-path-combiner.ts index 73677a3384a..40cbe5d8e95 100644 --- a/src/app/core/json-patch/builder/json-patch-operation-path-combiner.ts +++ b/modules/core/src/lib/core/json-patch/builder/json-patch-operation-path-combiner.ts @@ -1,5 +1,6 @@ -import { isNotUndefined } from '../../../shared/empty.util'; -import { URLCombiner } from '../../url-combiner/url-combiner'; +import { isNotUndefined } from '@dspace/shared/utils'; + +import { URLCombiner } from '../../url-combiner'; /** * Interface used to represent a JSON-PATCH path member diff --git a/src/app/core/json-patch/builder/json-patch-operations-builder.ts b/modules/core/src/lib/core/json-patch/builder/json-patch-operations-builder.ts similarity index 93% rename from src/app/core/json-patch/builder/json-patch-operations-builder.ts rename to modules/core/src/lib/core/json-patch/builder/json-patch-operations-builder.ts index d56ff011c12..12eb6cbed5d 100644 --- a/src/app/core/json-patch/builder/json-patch-operations-builder.ts +++ b/modules/core/src/lib/core/json-patch/builder/json-patch-operations-builder.ts @@ -1,21 +1,19 @@ import { Injectable } from '@angular/core'; -import { Store } from '@ngrx/store'; - import { dateToISOFormat, dateToString, - isNgbDateStruct, -} from '../../../shared/date.util'; -import { hasNoValue, hasValue, isEmpty, + isNgbDateStruct, isNotEmpty, -} from '../../../shared/empty.util'; -import { FormFieldLanguageValueObject } from '../../../shared/form/builder/models/form-field-language-value.model'; -import { FormFieldMetadataValueObject } from '../../../shared/form/builder/models/form-field-metadata-value.model'; +} from '@dspace/shared/utils'; +import { Store } from '@ngrx/store'; + +import { FormFieldLanguageValueObject } from '../../config'; +import { FormFieldMetadataValueObject } from '../../config'; import { CoreState } from '../../core-state.model'; -import { VocabularyEntry } from '../../submission/vocabularies/models/vocabulary-entry.model'; +import { VocabularyEntry } from '../../submission'; import { FlushPatchOperationAction, NewPatchAddOperationAction, diff --git a/modules/core/src/lib/core/json-patch/index.ts b/modules/core/src/lib/core/json-patch/index.ts new file mode 100644 index 00000000000..24ffb124b44 --- /dev/null +++ b/modules/core/src/lib/core/json-patch/index.ts @@ -0,0 +1,9 @@ +// created from 'create-ts-index' + +export * from './builder'; +export * from './json-patch-operations.actions'; +export * from './json-patch-operations.effects'; +export * from './json-patch-operations.reducer'; +export * from './json-patch-operations.service'; +export * from './json-patch.model'; +export * from './selectors'; diff --git a/src/app/core/json-patch/json-patch-operations.actions.ts b/modules/core/src/lib/core/json-patch/json-patch-operations.actions.ts similarity index 99% rename from src/app/core/json-patch/json-patch-operations.actions.ts rename to modules/core/src/lib/core/json-patch/json-patch-operations.actions.ts index 81cce174ec9..1b0017cf792 100644 --- a/src/app/core/json-patch/json-patch-operations.actions.ts +++ b/modules/core/src/lib/core/json-patch/json-patch-operations.actions.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; +import { type } from '../shared'; /** * For each action type in an action group, make a simple diff --git a/src/app/core/json-patch/json-patch-operations.effects.spec.ts b/modules/core/src/lib/core/json-patch/json-patch-operations.effects.spec.ts similarity index 99% rename from src/app/core/json-patch/json-patch-operations.effects.spec.ts rename to modules/core/src/lib/core/json-patch/json-patch-operations.effects.spec.ts index d43fb0edd10..fd9d64fb33f 100644 --- a/src/app/core/json-patch/json-patch-operations.effects.spec.ts +++ b/modules/core/src/lib/core/json-patch/json-patch-operations.effects.spec.ts @@ -17,6 +17,8 @@ import { import { JsonPatchOperationsEffects } from './json-patch-operations.effects'; import { JsonPatchOperationsState } from './json-patch-operations.reducer'; + + describe('JsonPatchOperationsEffects test suite', () => { let jsonPatchOperationsEffects: JsonPatchOperationsEffects; let actions: Observable; diff --git a/src/app/core/json-patch/json-patch-operations.effects.ts b/modules/core/src/lib/core/json-patch/json-patch-operations.effects.ts similarity index 100% rename from src/app/core/json-patch/json-patch-operations.effects.ts rename to modules/core/src/lib/core/json-patch/json-patch-operations.effects.ts diff --git a/src/app/core/json-patch/json-patch-operations.reducer.spec.ts b/modules/core/src/lib/core/json-patch/json-patch-operations.reducer.spec.ts similarity index 99% rename from src/app/core/json-patch/json-patch-operations.reducer.spec.ts rename to modules/core/src/lib/core/json-patch/json-patch-operations.reducer.spec.ts index 6d513120dcd..45260f2d3e2 100644 --- a/src/app/core/json-patch/json-patch-operations.reducer.spec.ts +++ b/modules/core/src/lib/core/json-patch/json-patch-operations.reducer.spec.ts @@ -17,6 +17,8 @@ import { JsonPatchOperationsState, } from './json-patch-operations.reducer'; + + class NullAction extends NewPatchAddOperationAction { resourceType: string; resourceId: string; diff --git a/src/app/core/json-patch/json-patch-operations.reducer.ts b/modules/core/src/lib/core/json-patch/json-patch-operations.reducer.ts similarity index 99% rename from src/app/core/json-patch/json-patch-operations.reducer.ts rename to modules/core/src/lib/core/json-patch/json-patch-operations.reducer.ts index 149d81f3e1f..19e16522457 100644 --- a/src/app/core/json-patch/json-patch-operations.reducer.ts +++ b/modules/core/src/lib/core/json-patch/json-patch-operations.reducer.ts @@ -3,7 +3,8 @@ import { isNotEmpty, isNotUndefined, isNull, -} from '../../shared/empty.util'; +} from '@dspace/shared/utils'; + import { JsonPatchOperationModel, JsonPatchOperationType, diff --git a/src/app/core/json-patch/json-patch-operations.service.spec.ts b/modules/core/src/lib/core/json-patch/json-patch-operations.service.spec.ts similarity index 97% rename from src/app/core/json-patch/json-patch-operations.service.spec.ts rename to modules/core/src/lib/core/json-patch/json-patch-operations.service.spec.ts index e1c6e79d107..0faa7bec362 100644 --- a/src/app/core/json-patch/json-patch-operations.service.spec.ts +++ b/modules/core/src/lib/core/json-patch/json-patch-operations.service.spec.ts @@ -8,20 +8,20 @@ import { of as observableOf } from 'rxjs'; import { catchError } from 'rxjs/operators'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { - createFailedRemoteDataObject, - createSuccessfulRemoteDataObject, -} from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { CoreState } from '../core-state.model'; import { SubmissionPatchRequest } from '../data/request.models'; import { RequestService } from '../data/request.service'; import { RequestEntry } from '../data/request-entry.model'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { SubmitDataResponseDefinitionObject } from '../shared/submit-data-response-definition.model'; +import { + createFailedRemoteDataObject, + createSuccessfulRemoteDataObject, +} from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { CommitPatchOperationsAction, DeletePendingJsonPatchOperationsAction, diff --git a/src/app/core/json-patch/json-patch-operations.service.ts b/modules/core/src/lib/core/json-patch/json-patch-operations.service.ts similarity index 94% rename from src/app/core/json-patch/json-patch-operations.service.ts rename to modules/core/src/lib/core/json-patch/json-patch-operations.service.ts index 552a4354fd7..f9802f4d0c3 100644 --- a/src/app/core/json-patch/json-patch-operations.service.ts +++ b/modules/core/src/lib/core/json-patch/json-patch-operations.service.ts @@ -1,3 +1,10 @@ +import { + hasValue, + isEmpty, + isNotEmpty, + isNotUndefined, + isUndefined, +} from '@dspace/shared/utils'; import { Store } from '@ngrx/store'; import { merge as observableMerge, @@ -14,20 +21,13 @@ import { tap, } from 'rxjs/operators'; -import { - hasValue, - isEmpty, - isNotEmpty, - isNotUndefined, - isUndefined, -} from '../../shared/empty.util'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; +import { RemoteDataBuildService } from '../cache'; import { CoreState } from '../core-state.model'; -import { RemoteData } from '../data/remote-data'; -import { PatchRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; +import { RemoteData } from '../data'; +import { PatchRequest } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; import { JsonPatchOperationModel } from './json-patch.model'; import { CommitPatchOperationsAction, diff --git a/src/app/core/json-patch/json-patch.model.ts b/modules/core/src/lib/core/json-patch/json-patch.model.ts similarity index 100% rename from src/app/core/json-patch/json-patch.model.ts rename to modules/core/src/lib/core/json-patch/json-patch.model.ts diff --git a/src/app/core/json-patch/selectors.ts b/modules/core/src/lib/core/json-patch/selectors.ts similarity index 60% rename from src/app/core/json-patch/selectors.ts rename to modules/core/src/lib/core/json-patch/selectors.ts index 7f6aaa3d985..38cf363bc34 100644 --- a/src/app/core/json-patch/selectors.ts +++ b/modules/core/src/lib/core/json-patch/selectors.ts @@ -1,9 +1,10 @@ -import { MemoizedSelector } from '@ngrx/store'; - +import { hasValue } from '@dspace/shared/utils'; import { - keySelector, - subStateSelector, -} from '../../submission/selectors'; + createSelector, + MemoizedSelector, + Selector, +} from '@ngrx/store'; + import { coreSelector } from '../core.selectors'; import { CoreState } from '../core-state.model'; import { @@ -11,6 +12,32 @@ import { JsonPatchOperationsResourceEntry, } from './json-patch-operations.reducer'; +/** + * Export a function to return a subset of the state by key + */ +export function keySelector(parentSelector: Selector, subState: string, key: string): MemoizedSelector { + return createSelector(parentSelector, (state: T) => { + if (hasValue(state) && hasValue(state[subState])) { + return state[subState][key]; + } else { + return undefined; + } + }); +} + +/** + * Export a function to return a subset of the state + */ +export function subStateSelector(parentSelector: Selector, subState: string): MemoizedSelector { + return createSelector(parentSelector, (state: T) => { + if (hasValue(state) && hasValue(state[subState])) { + return state[subState]; + } else { + return undefined; + } + }); +} + /** * Return MemoizedSelector to select all jsonPatchOperations for a specified resource type, stored in the state * diff --git a/src/app/core/lazy-data-service.ts b/modules/core/src/lib/core/lazy-data-service.ts similarity index 91% rename from src/app/core/lazy-data-service.ts rename to modules/core/src/lib/core/lazy-data-service.ts index 1ad3dec384a..dbba724b305 100644 --- a/src/app/core/lazy-data-service.ts +++ b/modules/core/src/lib/core/lazy-data-service.ts @@ -7,8 +7,8 @@ import { Observable, } from 'rxjs'; -import { LazyDataServicesMap } from '../../config/app-config.interface'; -import { HALDataService } from './data/base/hal-data-service.interface'; +import { HALDataService } from './data'; +import { LazyDataServicesMap } from './data-services-map'; /** * Loads a service lazily. The service is loaded when the observable is subscribed to. diff --git a/modules/core/src/lib/core/locale/index.ts b/modules/core/src/lib/core/locale/index.ts new file mode 100644 index 00000000000..bd5cac62615 --- /dev/null +++ b/modules/core/src/lib/core/locale/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './locale.interceptor'; +export * from './locale.service'; +export * from './server-locale.service'; diff --git a/src/app/core/locale/locale.interceptor.spec.ts b/modules/core/src/lib/core/locale/locale.interceptor.spec.ts similarity index 100% rename from src/app/core/locale/locale.interceptor.spec.ts rename to modules/core/src/lib/core/locale/locale.interceptor.spec.ts diff --git a/src/app/core/locale/locale.interceptor.ts b/modules/core/src/lib/core/locale/locale.interceptor.ts similarity index 100% rename from src/app/core/locale/locale.interceptor.ts rename to modules/core/src/lib/core/locale/locale.interceptor.ts diff --git a/src/app/core/locale/locale.service.spec.ts b/modules/core/src/lib/core/locale/locale.service.spec.ts similarity index 95% rename from src/app/core/locale/locale.service.spec.ts rename to modules/core/src/lib/core/locale/locale.service.spec.ts index d7f681056cb..a2b0eb15219 100644 --- a/src/app/core/locale/locale.service.spec.ts +++ b/modules/core/src/lib/core/locale/locale.service.spec.ts @@ -8,19 +8,21 @@ import { TranslateService, } from '@ngx-translate/core'; -import { CookieServiceMock } from '../../shared/mocks/cookie.service.mock'; -import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock'; -import { routeServiceStub } from '../../shared/testing/route-service.stub'; import { AuthService } from '../auth/auth.service'; +import { CookieServiceMock } from '../mocks/cookie.service.mock'; +import { TranslateLoaderMock } from '../mocks/translate-loader.mock'; import { CookieService } from '../services/cookie.service'; import { RouteService } from '../services/route.service'; import { NativeWindowRef } from '../services/window.service'; +import { routeServiceStub } from '../utilities/testing/route-service.stub'; import { LANG_COOKIE, LANG_ORIGIN, LocaleService, } from './locale.service'; + + describe('LocaleService test suite', () => { let service: LocaleService; let serviceAsAny: any; diff --git a/src/app/core/locale/locale.service.ts b/modules/core/src/lib/core/locale/locale.service.ts similarity index 91% rename from src/app/core/locale/locale.service.ts rename to modules/core/src/lib/core/locale/locale.service.ts index 0c54ce8412b..d390aeb283b 100644 --- a/src/app/core/locale/locale.service.ts +++ b/modules/core/src/lib/core/locale/locale.service.ts @@ -1,8 +1,13 @@ import { DOCUMENT } from '@angular/common'; import { Inject, + inject, Injectable, } from '@angular/core'; +import { + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { TranslateService } from '@ngx-translate/core'; import { combineLatest, @@ -15,19 +20,18 @@ import { take, } from 'rxjs/operators'; -import { LangConfig } from '../../../config/lang-config.interface'; -import { environment } from '../../../environments/environment'; +import { AuthService } from '../auth'; import { - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; -import { AuthService } from '../auth/auth.service'; -import { CookieService } from '../services/cookie.service'; -import { RouteService } from '../services/route.service'; + APP_CONFIG, + AppConfig, +} from '../config'; +import { LangConfig } from '../config'; +import { CookieService } from '../services'; +import { RouteService } from '../services'; import { NativeWindowRef, NativeWindowService, -} from '../services/window.service'; +} from '../services'; export const LANG_COOKIE = 'dsLanguage'; @@ -45,6 +49,7 @@ export enum LANG_ORIGIN { */ @Injectable() export class LocaleService { + private readonly appConfig: AppConfig = inject(APP_CONFIG); /** * Eperson language metadata @@ -69,12 +74,12 @@ export class LocaleService { getCurrentLanguageCode(): string { // Attempt to get the language from a cookie let lang = this.getLanguageCodeFromCookie(); - if (isEmpty(lang) || environment.languages.find((langConfig: LangConfig) => langConfig.code === lang && langConfig.active) === undefined) { + if (isEmpty(lang) || this.appConfig.languages.find((langConfig: LangConfig) => langConfig.code === lang && langConfig.active) === undefined) { // Attempt to get the browser language from the user if (this.translate.getLangs().includes(this.translate.getBrowserLang())) { lang = this.translate.getBrowserLang(); } else { - lang = environment.defaultLanguage; + lang = this.appConfig.defaultLanguage; } } return lang; diff --git a/src/app/core/locale/server-locale.service.ts b/modules/core/src/lib/core/locale/server-locale.service.ts similarity index 90% rename from src/app/core/locale/server-locale.service.ts rename to modules/core/src/lib/core/locale/server-locale.service.ts index 12358595d1a..fa1cc84a3a0 100644 --- a/src/app/core/locale/server-locale.service.ts +++ b/modules/core/src/lib/core/locale/server-locale.service.ts @@ -3,6 +3,11 @@ import { Inject, Injectable, } from '@angular/core'; +import { + hasValue, + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { TranslateService } from '@ngx-translate/core'; import { combineLatest, @@ -15,19 +20,14 @@ import { take, } from 'rxjs/operators'; -import { REQUEST } from '../../../express.tokens'; -import { - hasValue, - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; -import { AuthService } from '../auth/auth.service'; -import { CookieService } from '../services/cookie.service'; -import { RouteService } from '../services/route.service'; +import { AuthService } from '../auth'; +import { CookieService } from '../services'; +import { RouteService } from '../services'; import { NativeWindowRef, NativeWindowService, -} from '../services/window.service'; +} from '../services'; +import { REQUEST } from '../tokens'; import { LANG_ORIGIN, LocaleService, diff --git a/modules/core/src/lib/core/log/index.ts b/modules/core/src/lib/core/log/index.ts new file mode 100644 index 00000000000..a70c472892b --- /dev/null +++ b/modules/core/src/lib/core/log/index.ts @@ -0,0 +1,2 @@ + +export * from './log.interceptor'; diff --git a/src/app/core/log/log.interceptor.spec.ts b/modules/core/src/lib/core/log/log.interceptor.spec.ts similarity index 88% rename from src/app/core/log/log.interceptor.spec.ts rename to modules/core/src/lib/core/log/log.interceptor.spec.ts index 7a3c11fccca..9a4bd757285 100644 --- a/src/app/core/log/log.interceptor.spec.ts +++ b/modules/core/src/lib/core/log/log.interceptor.spec.ts @@ -7,20 +7,20 @@ import { TestBed } from '@angular/core/testing'; import { Router } from '@angular/router'; import { StoreModule } from '@ngrx/store'; -import { - appReducers, - storeModuleConfig, -} from '../../app.reducer'; -import { CorrelationIdService } from '../../correlation-id/correlation-id.service'; -import { CookieServiceMock } from '../../shared/mocks/cookie.service.mock'; -import { RouterStub } from '../../shared/testing/router.stub'; +import { coreReducers } from '../core.reducers'; +import { CorrelationIdService } from '../correlation-id/correlation-id.service'; import { RestRequestMethod } from '../data/rest-request-method'; import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; +import { CookieServiceMock } from '../mocks/cookie.service.mock'; import { CookieService } from '../services/cookie.service'; import { UUIDService } from '../shared/uuid.service'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; +import { RouterStub } from '../utilities/testing/router.stub'; import { LogInterceptor } from './log.interceptor'; + + describe('LogInterceptor', () => { let service: DspaceRestService; let httpMock: HttpTestingController; @@ -41,7 +41,7 @@ describe('LogInterceptor', () => { TestBed.configureTestingModule({ imports: [ HttpClientTestingModule, - StoreModule.forRoot(appReducers, storeModuleConfig), + StoreModule.forRoot(coreReducers, mockStoreModuleConfig), ], providers: [ DspaceRestService, diff --git a/src/app/core/log/log.interceptor.ts b/modules/core/src/lib/core/log/log.interceptor.ts similarity index 89% rename from src/app/core/log/log.interceptor.ts rename to modules/core/src/lib/core/log/log.interceptor.ts index bda408278f8..53b5cf745d7 100644 --- a/src/app/core/log/log.interceptor.ts +++ b/modules/core/src/lib/core/log/log.interceptor.ts @@ -6,10 +6,10 @@ import { } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; -import { CorrelationIdService } from '../../correlation-id/correlation-id.service'; -import { hasValue } from '../../shared/empty.util'; +import { CorrelationIdService } from '../correlation-id'; /** * Log Interceptor intercepting Http Requests & Responses to diff --git a/src/app/core/metadata/head-tag.service.spec.ts b/modules/core/src/lib/core/metadata/head-tag.service.spec.ts similarity index 98% rename from src/app/core/metadata/head-tag.service.spec.ts rename to modules/core/src/lib/core/metadata/head-tag.service.spec.ts index 2fbae88f120..1b300ac91e7 100644 --- a/src/app/core/metadata/head-tag.service.spec.ts +++ b/modules/core/src/lib/core/metadata/head-tag.service.spec.ts @@ -18,35 +18,36 @@ import { of, } from 'rxjs'; -import { AppConfig } from '../../../config/app-config.interface'; -import { - ItemMock, - MockBitstream1, - MockBitstream2, - MockBitstream3, -} from '../../shared/mocks/item.mock'; -import { getMockTranslateService } from '../../shared/mocks/translate.service.mock'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { DSONameService } from '../breadcrumbs/dso-name.service'; +import { AppConfig } from '../config/app-config.interface'; import { AuthorizationDataService } from '../data/feature-authorization/authorization-data.service'; import { PaginatedList } from '../data/paginated-list.model'; import { RemoteData } from '../data/remote-data'; import { RootDataService } from '../data/root-data.service'; +import { + ItemMock, + MockBitstream1, + MockBitstream2, + MockBitstream3, +} from '../mocks/item.mock'; +import { getMockTranslateService } from '../mocks/translate.service.mock'; import { HardRedirectService } from '../services/hard-redirect.service'; import { Bitstream } from '../shared/bitstream.model'; import { Bundle } from '../shared/bundle.model'; import { Item } from '../shared/item.model'; import { MetadataValue } from '../shared/metadata.models'; +import { + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { HeadTagService } from './head-tag.service'; import { AddMetaTagAction, ClearMetaTagAction, } from './meta-tag.actions'; + describe('HeadTagService', () => { let headTagService: HeadTagService; diff --git a/src/app/core/metadata/head-tag.service.ts b/modules/core/src/lib/core/metadata/head-tag.service.ts similarity index 93% rename from src/app/core/metadata/head-tag.service.ts rename to modules/core/src/lib/core/metadata/head-tag.service.ts index 8041bb3a4ac..606e7483878 100644 --- a/src/app/core/metadata/head-tag.service.ts +++ b/modules/core/src/lib/core/metadata/head-tag.service.ts @@ -12,6 +12,11 @@ import { NavigationEnd, Router, } from '@angular/router'; +import { + hasNoValue, + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { createSelector, select, @@ -34,38 +39,33 @@ import { take, } from 'rxjs/operators'; +import { DSONameService } from '../breadcrumbs'; import { APP_CONFIG, AppConfig, -} from '../../../config/app-config.interface'; -import { getBitstreamDownloadRoute } from '../../app-routing-paths'; -import { - hasNoValue, - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; -import { followLink } from '../../shared/utils/follow-link-config.model'; -import { DSONameService } from '../breadcrumbs/dso-name.service'; +} from '../config'; import { coreSelector } from '../core.selectors'; import { CoreState } from '../core-state.model'; -import { BundleDataService } from '../data/bundle-data.service'; -import { AuthorizationDataService } from '../data/feature-authorization/authorization-data.service'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { RootDataService } from '../data/root-data.service'; -import { HardRedirectService } from '../services/hard-redirect.service'; -import { Bitstream } from '../shared/bitstream.model'; -import { getDownloadableBitstream } from '../shared/bitstream.operators'; -import { BitstreamFormat } from '../shared/bitstream-format.model'; -import { Bundle } from '../shared/bundle.model'; -import { DSpaceObject } from '../shared/dspace-object.model'; -import { Item } from '../shared/item.model'; +import { BundleDataService } from '../data'; +import { AuthorizationDataService } from '../data'; +import { FindListOptions } from '../data'; +import { followLink } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { RootDataService } from '../data'; +import { getBitstreamDownloadRoute } from '../router'; +import { HardRedirectService } from '../services'; +import { Bitstream } from '../shared'; +import { getDownloadableBitstream } from '../shared'; +import { BitstreamFormat } from '../shared'; +import { Bundle } from '../shared'; +import { DSpaceObject } from '../shared'; +import { Item } from '../shared'; import { getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload, -} from '../shared/operators'; -import { URLCombiner } from '../url-combiner/url-combiner'; +} from '../shared'; +import { URLCombiner } from '../url-combiner'; import { AddMetaTagAction, ClearMetaTagAction, diff --git a/modules/core/src/lib/core/metadata/index.ts b/modules/core/src/lib/core/metadata/index.ts new file mode 100644 index 00000000000..605be62a79d --- /dev/null +++ b/modules/core/src/lib/core/metadata/index.ts @@ -0,0 +1,9 @@ + +export * from './head-tag.service'; +export * from './meta-tag.actions'; +export * from './meta-tag.reducer'; +export * from './metadata-field.model'; +export * from './metadata-field.resource-type'; +export * from './metadata-schema.model'; +export * from './metadata-schema.resource-type'; +export * from './metadata.service'; diff --git a/src/app/core/metadata/meta-tag.actions.ts b/modules/core/src/lib/core/metadata/meta-tag.actions.ts similarity index 91% rename from src/app/core/metadata/meta-tag.actions.ts rename to modules/core/src/lib/core/metadata/meta-tag.actions.ts index 74f5c9932a2..5af495660f5 100644 --- a/src/app/core/metadata/meta-tag.actions.ts +++ b/modules/core/src/lib/core/metadata/meta-tag.actions.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; +import { type } from '../shared'; export const MetaTagTypes = { ADD: type('dspace/meta-tag/ADD'), diff --git a/src/app/core/metadata/meta-tag.reducer.spec.ts b/modules/core/src/lib/core/metadata/meta-tag.reducer.spec.ts similarity index 99% rename from src/app/core/metadata/meta-tag.reducer.spec.ts rename to modules/core/src/lib/core/metadata/meta-tag.reducer.spec.ts index 16880751ce8..cb362dd643d 100644 --- a/src/app/core/metadata/meta-tag.reducer.spec.ts +++ b/modules/core/src/lib/core/metadata/meta-tag.reducer.spec.ts @@ -5,7 +5,6 @@ * * http://www.dspace.org/license/ */ - import { AddMetaTagAction, ClearMetaTagAction, diff --git a/src/app/core/metadata/meta-tag.reducer.ts b/modules/core/src/lib/core/metadata/meta-tag.reducer.ts similarity index 100% rename from src/app/core/metadata/meta-tag.reducer.ts rename to modules/core/src/lib/core/metadata/meta-tag.reducer.ts diff --git a/src/app/core/metadata/metadata-field.model.ts b/modules/core/src/lib/core/metadata/metadata-field.model.ts similarity index 77% rename from src/app/core/metadata/metadata-field.model.ts rename to modules/core/src/lib/core/metadata/metadata-field.model.ts index 11b6e1c74e2..136022b5399 100644 --- a/src/app/core/metadata/metadata-field.model.ts +++ b/modules/core/src/lib/core/metadata/metadata-field.model.ts @@ -1,21 +1,21 @@ +import { isNotEmpty } from '@dspace/shared/utils'; import { autoserialize, deserialize, } from 'cerialize'; import { Observable } from 'rxjs'; -import { isNotEmpty } from '../../shared/empty.util'; -import { ListableObject } from '../../shared/object-collection/shared/listable-object.model'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { RemoteData } from '../data/remote-data'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALLink } from '../shared/hal-link.model'; -import { HALResource } from '../shared/hal-resource.model'; -import { ResourceType } from '../shared/resource-type'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +} from '../cache'; +import { RemoteData } from '../data'; +import { ListableObject } from '../object-collection'; +import { GenericConstructor } from '../shared'; +import { HALLink } from '../shared'; +import { HALResource } from '../shared'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; import { METADATA_FIELD } from './metadata-field.resource-type'; import { MetadataSchema } from './metadata-schema.model'; import { METADATA_SCHEMA } from './metadata-schema.resource-type'; diff --git a/src/app/core/metadata/metadata-field.resource-type.ts b/modules/core/src/lib/core/metadata/metadata-field.resource-type.ts similarity index 78% rename from src/app/core/metadata/metadata-field.resource-type.ts rename to modules/core/src/lib/core/metadata/metadata-field.resource-type.ts index 53cbedb1eb2..b229b8bab09 100644 --- a/src/app/core/metadata/metadata-field.resource-type.ts +++ b/modules/core/src/lib/core/metadata/metadata-field.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../shared/resource-type'; +import { ResourceType } from '../shared'; /** * The resource type for MetadataField diff --git a/src/app/core/metadata/metadata-schema.model.ts b/modules/core/src/lib/core/metadata/metadata-schema.model.ts similarity index 67% rename from src/app/core/metadata/metadata-schema.model.ts rename to modules/core/src/lib/core/metadata/metadata-schema.model.ts index 656638b4c63..dc38c7f63c3 100644 --- a/src/app/core/metadata/metadata-schema.model.ts +++ b/modules/core/src/lib/core/metadata/metadata-schema.model.ts @@ -3,13 +3,13 @@ import { deserialize, } from 'cerialize'; -import { ListableObject } from '../../shared/object-collection/shared/listable-object.model'; -import { typedObject } from '../cache/builders/build-decorators'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALLink } from '../shared/hal-link.model'; -import { HALResource } from '../shared/hal-resource.model'; -import { ResourceType } from '../shared/resource-type'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { ListableObject } from '../object-collection'; +import { GenericConstructor } from '../shared'; +import { HALLink } from '../shared'; +import { HALResource } from '../shared'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; import { METADATA_SCHEMA } from './metadata-schema.resource-type'; /** diff --git a/src/app/core/metadata/metadata-schema.resource-type.ts b/modules/core/src/lib/core/metadata/metadata-schema.resource-type.ts similarity index 78% rename from src/app/core/metadata/metadata-schema.resource-type.ts rename to modules/core/src/lib/core/metadata/metadata-schema.resource-type.ts index 462c9957c7f..d0b118d4ba0 100644 --- a/src/app/core/metadata/metadata-schema.resource-type.ts +++ b/modules/core/src/lib/core/metadata/metadata-schema.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../shared/resource-type'; +import { ResourceType } from '../shared'; /** * The resource type for MetadataSchema diff --git a/src/app/core/metadata/metadata.service.spec.ts b/modules/core/src/lib/core/metadata/metadata.service.spec.ts similarity index 99% rename from src/app/core/metadata/metadata.service.spec.ts rename to modules/core/src/lib/core/metadata/metadata.service.spec.ts index 79158c7ec0f..4616b774251 100644 --- a/src/app/core/metadata/metadata.service.spec.ts +++ b/modules/core/src/lib/core/metadata/metadata.service.spec.ts @@ -2,6 +2,7 @@ import { TestBed } from '@angular/core/testing'; import { MetadataService } from './metadata.service'; + describe('MetadataService', () => { let service: MetadataService; diff --git a/src/app/core/metadata/metadata.service.ts b/modules/core/src/lib/core/metadata/metadata.service.ts similarity index 75% rename from src/app/core/metadata/metadata.service.ts rename to modules/core/src/lib/core/metadata/metadata.service.ts index dcc355edd0f..9eec7b36819 100644 --- a/src/app/core/metadata/metadata.service.ts +++ b/modules/core/src/lib/core/metadata/metadata.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; -import { hasValue } from '../../shared/empty.util'; import { MetadataValue, VIRTUAL_METADATA_PREFIX, -} from '../shared/metadata.models'; +} from '../shared'; /** * Service for working with DSpace object metadata. @@ -15,14 +15,14 @@ import { export class MetadataService { /** - * Returns true if this Metadata authority key starts with 'virtual::' + * Returns true if this PolicyMetadata authority key starts with 'virtual::' */ public isVirtual(metadataValue: MetadataValue | undefined): boolean { return hasValue(metadataValue?.authority) && metadataValue.authority.startsWith(VIRTUAL_METADATA_PREFIX); } /** - * If this is a virtual Metadata, it returns everything in the authority key after 'virtual::'. + * If this is a virtual PolicyMetadata, it returns everything in the authority key after 'virtual::'. * * Returns undefined otherwise. */ diff --git a/src/app/shared/mocks/cookie.service.mock.ts b/modules/core/src/lib/core/mocks/cookie.service.mock.ts similarity index 100% rename from src/app/shared/mocks/cookie.service.mock.ts rename to modules/core/src/lib/core/mocks/cookie.service.mock.ts diff --git a/src/app/shared/mocks/dspace-rest/endpoint-mocking-rest.service.spec.ts b/modules/core/src/lib/core/mocks/endpoint-mocking-rest.service.spec.ts similarity index 93% rename from src/app/shared/mocks/dspace-rest/endpoint-mocking-rest.service.spec.ts rename to modules/core/src/lib/core/mocks/endpoint-mocking-rest.service.spec.ts index 84664b7b20d..355514b93c0 100644 --- a/src/app/shared/mocks/dspace-rest/endpoint-mocking-rest.service.spec.ts +++ b/modules/core/src/lib/core/mocks/endpoint-mocking-rest.service.spec.ts @@ -4,9 +4,9 @@ import { } from '@angular/common/http'; import { of as observableOf } from 'rxjs'; -import { RestRequestMethod } from '../../../core/data/rest-request-method'; +import { RestRequestMethod } from '../data'; import { EndpointMockingRestService } from './endpoint-mocking-rest.service'; -import { ResponseMapMock } from './mocks/response-map.mock'; +import { ResponseMapMock } from './response-map.mock'; describe('EndpointMockingRestService', () => { let service: EndpointMockingRestService; diff --git a/src/app/shared/mocks/dspace-rest/endpoint-mocking-rest.service.ts b/modules/core/src/lib/core/mocks/endpoint-mocking-rest.service.ts similarity index 87% rename from src/app/shared/mocks/dspace-rest/endpoint-mocking-rest.service.ts rename to modules/core/src/lib/core/mocks/endpoint-mocking-rest.service.ts index bfdbe4d6d7d..bd106df2b5b 100644 --- a/src/app/shared/mocks/dspace-rest/endpoint-mocking-rest.service.ts +++ b/modules/core/src/lib/core/mocks/endpoint-mocking-rest.service.ts @@ -4,25 +4,29 @@ import { } from '@angular/common/http'; import { Inject, + inject, Injectable, } from '@angular/core'; +import { isEmpty } from '@dspace/shared/utils'; import { Observable, of as observableOf, } from 'rxjs'; -import { environment } from '../../../../environments/environment'; -import { RestRequestMethod } from '../../../core/data/rest-request-method'; +import { + APP_CONFIG, + AppConfig, +} from '../config/app-config.interface'; +import { RestRequestMethod } from '../data/rest-request-method'; import { DspaceRestService, HttpOptions, -} from '../../../core/dspace-rest/dspace-rest.service'; -import { RawRestResponse } from '../../../core/dspace-rest/raw-rest-response.model'; -import { isEmpty } from '../../empty.util'; +} from '../dspace-rest/dspace-rest.service'; +import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; import { MOCK_RESPONSE_MAP, ResponseMapMock, -} from './mocks/response-map.mock'; +} from './response-map.mock'; /** * Service to access DSpace's REST API. @@ -33,6 +37,7 @@ import { */ @Injectable() export class EndpointMockingRestService extends DspaceRestService { + private readonly appConfig: AppConfig = inject(APP_CONFIG); constructor( @Inject(MOCK_RESPONSE_MAP) protected mockResponseMap: ResponseMapMock, @@ -117,7 +122,7 @@ export class EndpointMockingRestService extends DspaceRestService { } else { // didn't find an exact match for the url, try to match only the endpoint without namespace and parameters const url = new URL(urlStr); - key = url.pathname.slice(environment.rest.nameSpace.length); + key = url.pathname.slice(this.appConfig.rest.nameSpace.length); } if (this.mockResponseMap.has(key)) { // parse and stringify to clone the object to ensure that any changes made diff --git a/src/app/shared/mocks/href-only-data.service.mock.ts b/modules/core/src/lib/core/mocks/href-only-data.service.mock.ts similarity index 69% rename from src/app/shared/mocks/href-only-data.service.mock.ts rename to modules/core/src/lib/core/mocks/href-only-data.service.mock.ts index a54b94c6017..78901f30263 100644 --- a/src/app/shared/mocks/href-only-data.service.mock.ts +++ b/modules/core/src/lib/core/mocks/href-only-data.service.mock.ts @@ -1,12 +1,12 @@ import { Observable } from 'rxjs'; -import { PaginatedList } from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; import { createNoContentRemoteDataObject$, createSuccessfulRemoteDataObject$, -} from '../remote-data.utils'; -import { createPaginatedList } from '../testing/utils.test'; +} from '../utilities'; +import { createPaginatedList } from '../utilities'; export function getMockHrefOnlyDataService( findByHref$: Observable> = createNoContentRemoteDataObject$(), diff --git a/src/app/shared/mocks/http-xsrf-token-extractor.mock.ts b/modules/core/src/lib/core/mocks/http-xsrf-token-extractor.mock.ts similarity index 100% rename from src/app/shared/mocks/http-xsrf-token-extractor.mock.ts rename to modules/core/src/lib/core/mocks/http-xsrf-token-extractor.mock.ts diff --git a/src/app/shared/mocks/item.mock.ts b/modules/core/src/lib/core/mocks/item.mock.ts similarity index 95% rename from src/app/shared/mocks/item.mock.ts rename to modules/core/src/lib/core/mocks/item.mock.ts index 7f723bfd61a..6f17ebb20a9 100644 --- a/src/app/shared/mocks/item.mock.ts +++ b/modules/core/src/lib/core/mocks/item.mock.ts @@ -1,11 +1,11 @@ import { of as observableOf } from 'rxjs'; -import { Bitstream } from '../../core/shared/bitstream.model'; -import { BitstreamFormat } from '../../core/shared/bitstream-format.model'; -import { Bundle } from '../../core/shared/bundle.model'; -import { Item } from '../../core/shared/item.model'; -import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; -import { createPaginatedList } from '../testing/utils.test'; +import { Bitstream } from '../shared'; +import { BitstreamFormat } from '../shared'; +import { Bundle } from '../shared'; +import { Item } from '../shared'; +import { createSuccessfulRemoteDataObject$ } from '../utilities'; +import { createPaginatedList } from '../utilities'; export const MockBitstreamFormat1: BitstreamFormat = Object.assign(new BitstreamFormat(), { shortDescription: 'Microsoft Word XML', diff --git a/src/app/shared/mocks/link-service.mock.ts b/modules/core/src/lib/core/mocks/link-service.mock.ts similarity index 79% rename from src/app/shared/mocks/link-service.mock.ts rename to modules/core/src/lib/core/mocks/link-service.mock.ts index d6919761986..2e9d1c38bb0 100644 --- a/src/app/shared/mocks/link-service.mock.ts +++ b/modules/core/src/lib/core/mocks/link-service.mock.ts @@ -1,4 +1,4 @@ -import { LinkService } from '../../core/cache/builders/link.service'; +import { LinkService } from '../cache'; export function getMockLinkService(): LinkService { return jasmine.createSpyObj('linkService', { diff --git a/src/app/shared/mocks/mock-native-window-ref.ts b/modules/core/src/lib/core/mocks/mock-native-window-ref.ts similarity index 100% rename from src/app/shared/mocks/mock-native-window-ref.ts rename to modules/core/src/lib/core/mocks/mock-native-window-ref.ts diff --git a/src/app/shared/mocks/notifications.mock.ts b/modules/core/src/lib/core/mocks/notifications.mock.ts similarity index 97% rename from src/app/shared/mocks/notifications.mock.ts rename to modules/core/src/lib/core/mocks/notifications.mock.ts index 30237b6b792..3f590ee0235 100644 --- a/src/app/shared/mocks/notifications.mock.ts +++ b/modules/core/src/lib/core/mocks/notifications.mock.ts @@ -1,25 +1,19 @@ import { of as observableOf } from 'rxjs'; -import { QualityAssuranceEventDataService } from '../../core/notifications/qa/events/quality-assurance-event-data.service'; -import { QualityAssuranceEventObject } from '../../core/notifications/qa/models/quality-assurance-event.model'; -import { QualityAssuranceSourceObject } from '../../core/notifications/qa/models/quality-assurance-source.model'; -import { QualityAssuranceTopicObject } from '../../core/notifications/qa/models/quality-assurance-topic.model'; -import { QualityAssuranceTopicDataService } from '../../core/notifications/qa/topics/quality-assurance-topic-data.service'; -import { DSpaceObject } from '../../core/shared/dspace-object.model'; -import { Item } from '../../core/shared/item.model'; -import { ResourceType } from '../../core/shared/resource-type'; +import { QualityAssuranceEventDataService } from '../notifications/qa/events/quality-assurance-event-data.service'; +import { QualityAssuranceEventObject } from '../notifications/qa/models/quality-assurance-event.model'; +import { QualityAssuranceSourceObject } from '../notifications/qa/models/quality-assurance-source.model'; +import { QualityAssuranceTopicObject } from '../notifications/qa/models/quality-assurance-topic.model'; +import { QualityAssuranceTopicDataService } from '../notifications/qa/topics/quality-assurance-topic-data.service'; +import { DSpaceObject } from '../shared/dspace-object.model'; +import { Item } from '../shared/item.model'; +import { ResourceType } from '../shared/resource-type'; +import { SearchResult } from '../shared/search/models/search-result.model'; import { createNoContentRemoteDataObject$, createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$, -} from '../remote-data.utils'; -import { SearchResult } from '../search/models/search-result.model'; - -// REST Mock --------------------------------------------------------------------- -// ------------------------------------------------------------------------------- - -// Items -// ------------------------------------------------------------------------------- +} from '../utilities/remote-data.utils'; const ItemMockPid1: Item = Object.assign( new Item(), diff --git a/src/app/shared/mocks/object-cache.service.mock.ts b/modules/core/src/lib/core/mocks/object-cache.service.mock.ts similarity index 83% rename from src/app/shared/mocks/object-cache.service.mock.ts rename to modules/core/src/lib/core/mocks/object-cache.service.mock.ts index 8cceaefc3da..3dd12cd2710 100644 --- a/src/app/shared/mocks/object-cache.service.mock.ts +++ b/modules/core/src/lib/core/mocks/object-cache.service.mock.ts @@ -1,4 +1,4 @@ -import { ObjectCacheService } from '../../core/cache/object-cache.service'; +import { ObjectCacheService } from '../cache'; export function getMockObjectCacheService(): ObjectCacheService { return jasmine.createSpyObj('objectCacheService', [ diff --git a/src/app/shared/mocks/remote-data-build.service.mock.ts b/modules/core/src/lib/core/mocks/remote-data-build.service.mock.ts similarity index 86% rename from src/app/shared/mocks/remote-data-build.service.mock.ts rename to modules/core/src/lib/core/mocks/remote-data-build.service.mock.ts index a44e54c92cc..9181f091307 100644 --- a/src/app/shared/mocks/remote-data-build.service.mock.ts +++ b/modules/core/src/lib/core/mocks/remote-data-build.service.mock.ts @@ -1,19 +1,19 @@ +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { map, switchMap, } from 'rxjs/operators'; -import { RemoteDataBuildService } from '../../core/cache/builders/remote-data-build.service'; +import { RemoteDataBuildService } from '../cache'; import { buildPaginatedList, PaginatedList, -} from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { RequestEntry } from '../../core/data/request-entry.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { hasValue } from '../empty.util'; -import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; +} from '../data'; +import { RemoteData } from '../data'; +import { RequestEntry } from '../data'; +import { PageInfo } from '../shared'; +import { createSuccessfulRemoteDataObject$ } from '../utilities'; export function getMockRemoteDataBuildService(toRemoteDataObservable$?: Observable>, buildList$?: Observable>>): RemoteDataBuildService { return { diff --git a/src/app/shared/mocks/request.service.mock.ts b/modules/core/src/lib/core/mocks/request.service.mock.ts similarity index 84% rename from src/app/shared/mocks/request.service.mock.ts rename to modules/core/src/lib/core/mocks/request.service.mock.ts index fd6dd7fdfbc..86659a55059 100644 --- a/src/app/shared/mocks/request.service.mock.ts +++ b/modules/core/src/lib/core/mocks/request.service.mock.ts @@ -3,9 +3,9 @@ import { of as observableOf, } from 'rxjs'; -import { RequestService } from '../../core/data/request.service'; +import { RequestService } from '../data'; import SpyObj = jasmine.SpyObj; -import { RequestEntry } from '../../core/data/request-entry.model'; +import { RequestEntry } from '../data'; export function getMockRequestService(requestEntry$: Observable = observableOf(new RequestEntry())): SpyObj { return jasmine.createSpyObj('requestService', { diff --git a/src/app/shared/mocks/dspace-rest/mocks/response-map.mock.ts b/modules/core/src/lib/core/mocks/response-map.mock.ts similarity index 100% rename from src/app/shared/mocks/dspace-rest/mocks/response-map.mock.ts rename to modules/core/src/lib/core/mocks/response-map.mock.ts diff --git a/src/app/shared/mocks/router.mock.ts b/modules/core/src/lib/core/mocks/router.mock.ts similarity index 100% rename from src/app/shared/mocks/router.mock.ts rename to modules/core/src/lib/core/mocks/router.mock.ts diff --git a/src/app/shared/mocks/translate-loader.mock.ts b/modules/core/src/lib/core/mocks/translate-loader.mock.ts similarity index 100% rename from src/app/shared/mocks/translate-loader.mock.ts rename to modules/core/src/lib/core/mocks/translate-loader.mock.ts diff --git a/src/app/shared/mocks/translate.service.mock.ts b/modules/core/src/lib/core/mocks/translate.service.mock.ts similarity index 100% rename from src/app/shared/mocks/translate.service.mock.ts rename to modules/core/src/lib/core/mocks/translate.service.mock.ts diff --git a/src/app/shared/mocks/uuid.service.mock.ts b/modules/core/src/lib/core/mocks/uuid.service.mock.ts similarity index 77% rename from src/app/shared/mocks/uuid.service.mock.ts rename to modules/core/src/lib/core/mocks/uuid.service.mock.ts index 1acf3e1f3e4..0f48ce819b6 100644 --- a/src/app/shared/mocks/uuid.service.mock.ts +++ b/modules/core/src/lib/core/mocks/uuid.service.mock.ts @@ -1,4 +1,4 @@ -import { UUIDService } from '../../core/shared/uuid.service'; +import { UUIDService } from '../shared'; export const defaultUUID = 'c4ce6905-290b-478f-979d-a333bbd7820f'; diff --git a/modules/core/src/lib/core/notifications/index.ts b/modules/core/src/lib/core/notifications/index.ts new file mode 100644 index 00000000000..c01dde2e4ed --- /dev/null +++ b/modules/core/src/lib/core/notifications/index.ts @@ -0,0 +1,10 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './qa'; +export * from './suggestions'; +export * from './notifications.actions'; +export * from './notifications.effects'; +export * from './notifications.reducers'; +export * from './notifications.service'; +export * from './selectors'; diff --git a/modules/core/src/lib/core/notifications/models/index.ts b/modules/core/src/lib/core/notifications/models/index.ts new file mode 100644 index 00000000000..cd40f6b1ab0 --- /dev/null +++ b/modules/core/src/lib/core/notifications/models/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './notification-animations-type'; +export * from './notification-options.model'; +export * from './notification-type'; +export * from './notification.model'; diff --git a/src/app/shared/notifications/models/notification-animations-type.ts b/modules/core/src/lib/core/notifications/models/notification-animations-type.ts similarity index 100% rename from src/app/shared/notifications/models/notification-animations-type.ts rename to modules/core/src/lib/core/notifications/models/notification-animations-type.ts diff --git a/src/app/shared/notifications/models/notification-options.model.ts b/modules/core/src/lib/core/notifications/models/notification-options.model.ts similarity index 100% rename from src/app/shared/notifications/models/notification-options.model.ts rename to modules/core/src/lib/core/notifications/models/notification-options.model.ts diff --git a/src/app/shared/notifications/models/notification-type.ts b/modules/core/src/lib/core/notifications/models/notification-type.ts similarity index 100% rename from src/app/shared/notifications/models/notification-type.ts rename to modules/core/src/lib/core/notifications/models/notification-type.ts diff --git a/src/app/shared/notifications/models/notification.model.ts b/modules/core/src/lib/core/notifications/models/notification.model.ts similarity index 95% rename from src/app/shared/notifications/models/notification.model.ts rename to modules/core/src/lib/core/notifications/models/notification.model.ts index b79ecbc12e1..861d2f076db 100644 --- a/src/app/shared/notifications/models/notification.model.ts +++ b/modules/core/src/lib/core/notifications/models/notification.model.ts @@ -1,6 +1,6 @@ +import { isEmpty } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; -import { isEmpty } from '../../empty.util'; import { INotificationOptions, NotificationOptions, diff --git a/src/app/shared/notifications/notifications.actions.ts b/modules/core/src/lib/core/notifications/notifications.actions.ts similarity index 93% rename from src/app/shared/notifications/notifications.actions.ts rename to modules/core/src/lib/core/notifications/notifications.actions.ts index 1fa1fab9c71..71eff5ce96f 100644 --- a/src/app/shared/notifications/notifications.actions.ts +++ b/modules/core/src/lib/core/notifications/notifications.actions.ts @@ -1,8 +1,8 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../ngrx/type'; -import { INotification } from './models/notification.model'; +import { type } from '../shared'; +import { INotification } from './models'; export const NotificationsActionTypes = { NEW_NOTIFICATION: type('dspace/notifications/NEW_NOTIFICATION'), diff --git a/src/app/shared/notifications/notifications.effects.ts b/modules/core/src/lib/core/notifications/notifications.effects.ts similarity index 89% rename from src/app/shared/notifications/notifications.effects.ts rename to modules/core/src/lib/core/notifications/notifications.effects.ts index c9449af24a8..f9ac346bd11 100644 --- a/src/app/shared/notifications/notifications.effects.ts +++ b/modules/core/src/lib/core/notifications/notifications.effects.ts @@ -1,8 +1,8 @@ import { Injectable } from '@angular/core'; import { Actions } from '@ngrx/effects'; import { Store } from '@ngrx/store'; +import { CoreState } from "../core-state.model"; -import { AppState } from '../../app.reducer'; @Injectable() export class NotificationsEffects { @@ -28,6 +28,6 @@ export class NotificationsEffects { * @param {Store} store */ constructor(private actions$: Actions, - private store: Store) { + private store: Store) { } } diff --git a/src/app/shared/notifications/notifications.reducers.spec.ts b/modules/core/src/lib/core/notifications/notifications.reducers.spec.ts similarity index 91% rename from src/app/shared/notifications/notifications.reducers.spec.ts rename to modules/core/src/lib/core/notifications/notifications.reducers.spec.ts index 87e50699303..10bb58dc995 100644 --- a/src/app/shared/notifications/notifications.reducers.spec.ts +++ b/modules/core/src/lib/core/notifications/notifications.reducers.spec.ts @@ -3,12 +3,12 @@ import { TestBed } from '@angular/core/testing'; import { StoreModule } from '@ngrx/store'; import uniqueId from 'lodash/uniqueId'; -import { storeModuleConfig } from '../../app.reducer'; -import { Notification } from './models/notification.model'; +import { NotificationComponent } from '../../../../../../src/app/notifications/notification/index'; +import { NotificationsBoardComponent } from '../../../../../../src/app/notifications/notifications-board/index'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; import { NotificationAnimationsType } from './models/notification-animations-type'; import { NotificationOptions } from './models/notification-options.model'; import { NotificationType } from './models/notification-type'; -import { NotificationComponent } from './notification/notification.component'; import { NewNotificationAction, RemoveAllNotificationsAction, @@ -16,7 +16,6 @@ import { } from './notifications.actions'; import { notificationsReducer } from './notifications.reducers'; import { NotificationsService } from './notifications.service'; -import { NotificationsBoardComponent } from './notifications-board/notifications-board.component'; describe('Notifications reducer', () => { @@ -34,7 +33,7 @@ describe('Notifications reducer', () => { ChangeDetectorRef, ], imports: [ - StoreModule.forRoot({ notificationsReducer }, storeModuleConfig), + StoreModule.forRoot({ notificationsReducer }, mockStoreModuleConfig), NotificationComponent, NotificationsBoardComponent, ], }); diff --git a/src/app/shared/notifications/notifications.reducers.ts b/modules/core/src/lib/core/notifications/notifications.reducers.ts similarity index 95% rename from src/app/shared/notifications/notifications.reducers.ts rename to modules/core/src/lib/core/notifications/notifications.reducers.ts index 02a41023ebb..bfe10e2befc 100644 --- a/src/app/shared/notifications/notifications.reducers.ts +++ b/modules/core/src/lib/core/notifications/notifications.reducers.ts @@ -1,4 +1,4 @@ -import { INotification } from './models/notification.model'; +import { INotification } from './models'; import { NotificationsActions, NotificationsActionTypes, diff --git a/src/app/shared/notifications/notifications.service.spec.ts b/modules/core/src/lib/core/notifications/notifications.service.spec.ts similarity index 89% rename from src/app/shared/notifications/notifications.service.spec.ts rename to modules/core/src/lib/core/notifications/notifications.service.spec.ts index 86ecdb663b1..1951a11063b 100644 --- a/src/app/shared/notifications/notifications.service.spec.ts +++ b/modules/core/src/lib/core/notifications/notifications.service.spec.ts @@ -13,11 +13,11 @@ import { } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { storeModuleConfig } from '../../app.reducer'; +import { NotificationComponent } from '../../../../../../src/app/notifications/notification/index'; +import { NotificationsBoardComponent } from '../../../../../../src/app/notifications/notifications-board/index'; import { TranslateLoaderMock } from '../mocks/translate-loader.mock'; -import { Notification } from './models/notification.model'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; import { NotificationType } from './models/notification-type'; -import { NotificationComponent } from './notification/notification.component'; import { NewNotificationAction, RemoveAllNotificationsAction, @@ -25,7 +25,7 @@ import { } from './notifications.actions'; import { notificationsReducer } from './notifications.reducers'; import { NotificationsService } from './notifications.service'; -import { NotificationsBoardComponent } from './notifications-board/notifications-board.component'; + describe('NotificationsService test', () => { const store: Store = jasmine.createSpyObj('store', { @@ -37,7 +37,7 @@ describe('NotificationsService test', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - StoreModule.forRoot({ notificationsReducer }, storeModuleConfig), + StoreModule.forRoot({ notificationsReducer }, mockStoreModuleConfig), TranslateModule.forRoot({ loader: { provide: TranslateLoader, diff --git a/src/app/shared/notifications/notifications.service.ts b/modules/core/src/lib/core/notifications/notifications.service.ts similarity index 90% rename from src/app/shared/notifications/notifications.service.ts rename to modules/core/src/lib/core/notifications/notifications.service.ts index 5f7939fd1c9..bc9981c83a4 100644 --- a/src/app/shared/notifications/notifications.service.ts +++ b/modules/core/src/lib/core/notifications/notifications.service.ts @@ -1,17 +1,23 @@ -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; import { Store } from '@ngrx/store'; import { TranslateService } from '@ngx-translate/core'; import uniqueId from 'lodash/uniqueId'; import { of as observableOf } from 'rxjs'; import { first } from 'rxjs/operators'; -import { environment } from '../../../environments/environment'; +import { + APP_CONFIG, + AppConfig, +} from '../config'; import { INotification, Notification, -} from './models/notification.model'; -import { NotificationOptions } from './models/notification-options.model'; -import { NotificationType } from './models/notification-type'; +} from './models'; +import { NotificationOptions } from './models'; +import { NotificationType } from './models'; import { NewNotificationAction, RemoveAllNotificationsAction, @@ -20,6 +26,7 @@ import { @Injectable({ providedIn: 'root' }) export class NotificationsService { + private readonly appConfig: AppConfig = inject(APP_CONFIG); constructor(private store: Store, private translate: TranslateService) { @@ -117,9 +124,9 @@ export class NotificationsService { private getDefaultOptions(): NotificationOptions { return new NotificationOptions( - environment.notifications.timeOut, - environment.notifications.clickToClose, - environment.notifications.animate, + this.appConfig.notifications.timeOut, + this.appConfig.notifications.clickToClose, + this.appConfig.notifications.animate, ); } } diff --git a/modules/core/src/lib/core/notifications/qa/events/index.ts b/modules/core/src/lib/core/notifications/qa/events/index.ts new file mode 100644 index 00000000000..bd104280712 --- /dev/null +++ b/modules/core/src/lib/core/notifications/qa/events/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './quality-assurance-event-data.service'; diff --git a/src/app/core/notifications/qa/events/quality-assurance-event-data.service.spec.ts b/modules/core/src/lib/core/notifications/qa/events/quality-assurance-event-data.service.spec.ts similarity index 97% rename from src/app/core/notifications/qa/events/quality-assurance-event-data.service.spec.ts rename to modules/core/src/lib/core/notifications/qa/events/quality-assurance-event-data.service.spec.ts index c981afbe57a..9cf511bd5e5 100644 --- a/src/app/core/notifications/qa/events/quality-assurance-event-data.service.spec.ts +++ b/modules/core/src/lib/core/notifications/qa/events/quality-assurance-event-data.service.spec.ts @@ -7,14 +7,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { - qualityAssuranceEventObjectMissingPid, - qualityAssuranceEventObjectMissingPid2, - qualityAssuranceEventObjectMissingProjectFound, -} from '../../../../shared/mocks/notifications.mock'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject } from '../../../../shared/remote-data.utils'; -import { ObjectCacheServiceStub } from '../../../../shared/testing/object-cache-service.stub'; import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; import { RequestParam } from '../../../cache/models/request-param.model'; import { ObjectCacheService } from '../../../cache/object-cache.service'; @@ -23,10 +15,20 @@ import { FindListOptions } from '../../../data/find-list-options.model'; import { buildPaginatedList } from '../../../data/paginated-list.model'; import { RequestService } from '../../../data/request.service'; import { RequestEntry } from '../../../data/request-entry.model'; +import { + qualityAssuranceEventObjectMissingPid, + qualityAssuranceEventObjectMissingPid2, + qualityAssuranceEventObjectMissingProjectFound, +} from '../../../mocks/notifications.mock'; import { HALEndpointService } from '../../../shared/hal-endpoint.service'; import { PageInfo } from '../../../shared/page-info.model'; +import { createSuccessfulRemoteDataObject } from '../../../utilities/remote-data.utils'; +import { ObjectCacheServiceStub } from '../../../utilities/testing/object-cache-service.stub'; +import { NotificationsService } from '../../notifications.service'; import { QualityAssuranceEventDataService } from './quality-assurance-event-data.service'; + + describe('QualityAssuranceEventDataService', () => { let scheduler: TestScheduler; let service: QualityAssuranceEventDataService; diff --git a/src/app/core/notifications/qa/events/quality-assurance-event-data.service.ts b/modules/core/src/lib/core/notifications/qa/events/quality-assurance-event-data.service.ts similarity index 85% rename from src/app/core/notifications/qa/events/quality-assurance-event-data.service.ts rename to modules/core/src/lib/core/notifications/qa/events/quality-assurance-event-data.service.ts index 7e6e8884173..1f74fd2ac20 100644 --- a/src/app/core/notifications/qa/events/quality-assurance-event-data.service.ts +++ b/modules/core/src/lib/core/notifications/qa/events/quality-assurance-event-data.service.ts @@ -3,6 +3,7 @@ import { HttpParams, } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { ReplaceOperation } from 'fast-json-patch'; import { Observable } from 'rxjs'; import { @@ -11,43 +12,41 @@ import { take, } from 'rxjs/operators'; -import { QualityAssuranceEventData } from '../../../../notifications/qa/project-entry-import-modal/project-entry-import-modal.component'; -import { hasValue } from '../../../../shared/empty.util'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; -import { RequestParam } from '../../../cache/models/request-param.model'; -import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { RemoteDataBuildService } from '../../../cache'; +import { RequestParam } from '../../../cache'; +import { ObjectCacheService } from '../../../cache'; import { CreateData, CreateDataImpl, -} from '../../../data/base/create-data'; +} from '../../../data'; import { DeleteData, DeleteDataImpl, -} from '../../../data/base/delete-data'; -import { IdentifiableDataService } from '../../../data/base/identifiable-data.service'; +} from '../../../data'; +import { IdentifiableDataService } from '../../../data'; import { PatchData, PatchDataImpl, -} from '../../../data/base/patch-data'; +} from '../../../data'; import { SearchData, SearchDataImpl, -} from '../../../data/base/search-data'; -import { DefaultChangeAnalyzer } from '../../../data/default-change-analyzer.service'; -import { FindListOptions } from '../../../data/find-list-options.model'; -import { PaginatedList } from '../../../data/paginated-list.model'; -import { RemoteData } from '../../../data/remote-data'; +} from '../../../data'; +import { DefaultChangeAnalyzer } from '../../../data'; +import { FindListOptions } from '../../../data'; +import { FollowLinkConfig } from '../../../data'; +import { PaginatedList } from '../../../data'; +import { RemoteData } from '../../../data'; import { DeleteByIDRequest, PostRequest, -} from '../../../data/request.models'; -import { RequestService } from '../../../data/request.service'; -import { HttpOptions } from '../../../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../../../shared/hal-endpoint.service'; -import { NoContent } from '../../../shared/NoContent.model'; -import { QualityAssuranceEventObject } from '../models/quality-assurance-event.model'; +} from '../../../data'; +import { RequestService } from '../../../data'; +import { HttpOptions } from '../../../dspace-rest'; +import { HALEndpointService } from '../../../shared'; +import { NoContent } from '../../../shared'; +import { NotificationsService } from '../../notifications.service'; +import { QualityAssuranceEventData, QualityAssuranceEventObject } from '../models'; /** * The service handling all Quality Assurance topic REST requests. diff --git a/modules/core/src/lib/core/notifications/qa/index.ts b/modules/core/src/lib/core/notifications/qa/index.ts new file mode 100644 index 00000000000..c0beec80ffa --- /dev/null +++ b/modules/core/src/lib/core/notifications/qa/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './events'; +export * from './models'; +export * from './source'; +export * from './topics'; diff --git a/modules/core/src/lib/core/notifications/qa/models/index.ts b/modules/core/src/lib/core/notifications/qa/models/index.ts new file mode 100644 index 00000000000..04e805769be --- /dev/null +++ b/modules/core/src/lib/core/notifications/qa/models/index.ts @@ -0,0 +1,8 @@ +// created from 'create-ts-index' + +export * from './quality-assurance-event-object.resource-type'; +export * from './quality-assurance-event.model'; +export * from './quality-assurance-source-object.resource-type'; +export * from './quality-assurance-source.model'; +export * from './quality-assurance-topic-object.resource-type'; +export * from './quality-assurance-topic.model'; diff --git a/src/app/core/notifications/qa/models/quality-assurance-event-object.resource-type.ts b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-event-object.resource-type.ts similarity index 79% rename from src/app/core/notifications/qa/models/quality-assurance-event-object.resource-type.ts rename to modules/core/src/lib/core/notifications/qa/models/quality-assurance-event-object.resource-type.ts index 84aff6ba2cf..e9fbf0d7003 100644 --- a/src/app/core/notifications/qa/models/quality-assurance-event-object.resource-type.ts +++ b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-event-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../shared/resource-type'; +import { ResourceType } from '../../../shared'; /** * The resource type for the Quality Assurance event diff --git a/src/app/core/notifications/qa/models/quality-assurance-event.model.ts b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-event.model.ts similarity index 87% rename from src/app/core/notifications/qa/models/quality-assurance-event.model.ts rename to modules/core/src/lib/core/notifications/qa/models/quality-assurance-event.model.ts index e015dd01d92..755d161fc43 100644 --- a/src/app/core/notifications/qa/models/quality-assurance-event.model.ts +++ b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-event.model.ts @@ -9,14 +9,14 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../../cache/builders/build-decorators'; -import { CacheableObject } from '../../../cache/cacheable-object.model'; -import { RemoteData } from '../../../data/remote-data'; -import { HALLink } from '../../../shared/hal-link.model'; -import { Item } from '../../../shared/item.model'; -import { ITEM } from '../../../shared/item.resource-type'; -import { ResourceType } from '../../../shared/resource-type'; -import { excludeFromEquals } from '../../../utilities/equals.decorators'; +} from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { RemoteData } from '../../../data'; +import { HALLink } from '../../../shared'; +import { Item } from '../../../shared'; +import { ITEM } from '../../../shared'; +import { ResourceType } from '../../../shared'; +import { excludeFromEquals } from '../../../utilities'; import { QUALITY_ASSURANCE_EVENT_OBJECT } from './quality-assurance-event-object.resource-type'; /** @@ -88,6 +88,15 @@ export interface SourceQualityAssuranceEventMessageObject { */ pidHref: string; + /** + * Possible link to a page + */ + href?: string; + + /** + * The service Id + */ + serviceId?: string; } /** diff --git a/src/app/core/notifications/qa/models/quality-assurance-source-object.resource-type.ts b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-source-object.resource-type.ts similarity index 79% rename from src/app/core/notifications/qa/models/quality-assurance-source-object.resource-type.ts rename to modules/core/src/lib/core/notifications/qa/models/quality-assurance-source-object.resource-type.ts index b4f64b24d14..7a21e36e39d 100644 --- a/src/app/core/notifications/qa/models/quality-assurance-source-object.resource-type.ts +++ b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-source-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../shared/resource-type'; +import { ResourceType } from '../../../shared'; /** * The resource type for the Quality Assurance source diff --git a/modules/core/src/lib/core/notifications/qa/models/quality-assurance-source.model.ts b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-source.model.ts new file mode 100644 index 00000000000..b1b8da4c41e --- /dev/null +++ b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-source.model.ts @@ -0,0 +1,113 @@ +import { + autoserialize, + deserialize, +} from 'cerialize'; + +import { typedObject } from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { HALLink, Item } from '../../../shared'; +import { ResourceType } from '../../../shared'; +import { excludeFromEquals } from '../../../utilities'; +import { QUALITY_ASSURANCE_SOURCE_OBJECT } from './quality-assurance-source-object.resource-type'; +import { QualityAssuranceEventObject } from "./quality-assurance-event.model"; + +/** + * The interface representing the Quality Assurance source model + */ +@typedObject +export class QualityAssuranceSourceObject implements CacheableObject { + /** + * A string representing the kind of object, e.g. community, item, … + */ + static type = QUALITY_ASSURANCE_SOURCE_OBJECT; + + /** + * The Quality Assurance source id + */ + @autoserialize + id: string; + + /** + * The date of the last udate from Notifications + */ + @autoserialize + lastEvent: string; + + /** + * The total number of suggestions provided by Notifications for this source + */ + @autoserialize + totalEvents: number; + + /** + * The type of this ConfigObject + */ + @excludeFromEquals + @autoserialize + type: ResourceType; + + /** + * The links to all related resources returned by the rest api. + */ + @deserialize + _links: { + self: HALLink, + }; +} + +/** + * The possible types of import for the external entry + */ +export enum ImportType { + None = 'None', + LocalEntity = 'LocalEntity', + LocalAuthority = 'LocalAuthority', + NewEntity = 'NewEntity', + NewAuthority = 'NewAuthority' +} + +/** + * The data type passed from the parent page + */ +export interface QualityAssuranceEventData { + /** + * The Quality Assurance event + */ + event: QualityAssuranceEventObject; + /** + * The Quality Assurance event Id (uuid) + */ + id: string; + /** + * The publication title + */ + title: string; + /** + * Contains the boolean that indicates if a project is present + */ + hasProject: boolean; + /** + * The project title, if present + */ + projectTitle: string; + /** + * The project id (uuid), if present + */ + projectId: string; + /** + * The project handle, if present + */ + handle: string; + /** + * The reject/discard reason + */ + reason: string; + /** + * Contains the boolean that indicates if there is a running operation (REST call) + */ + isRunning: boolean; + /** + * The related publication DSpace item + */ + target?: Item; +} diff --git a/src/app/core/notifications/qa/models/quality-assurance-topic-object.resource-type.ts b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-topic-object.resource-type.ts similarity index 79% rename from src/app/core/notifications/qa/models/quality-assurance-topic-object.resource-type.ts rename to modules/core/src/lib/core/notifications/qa/models/quality-assurance-topic-object.resource-type.ts index e9fc57a307c..a57285c3853 100644 --- a/src/app/core/notifications/qa/models/quality-assurance-topic-object.resource-type.ts +++ b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-topic-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../shared/resource-type'; +import { ResourceType } from '../../../shared'; /** * The resource type for the Quality Assurance topic diff --git a/src/app/core/notifications/qa/models/quality-assurance-topic.model.ts b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-topic.model.ts similarity index 76% rename from src/app/core/notifications/qa/models/quality-assurance-topic.model.ts rename to modules/core/src/lib/core/notifications/qa/models/quality-assurance-topic.model.ts index 0d4235a5311..66a39f9c3a2 100644 --- a/src/app/core/notifications/qa/models/quality-assurance-topic.model.ts +++ b/modules/core/src/lib/core/notifications/qa/models/quality-assurance-topic.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../../cache/builders/build-decorators'; -import { CacheableObject } from '../../../cache/cacheable-object.model'; -import { HALLink } from '../../../shared/hal-link.model'; -import { ResourceType } from '../../../shared/resource-type'; -import { excludeFromEquals } from '../../../utilities/equals.decorators'; +import { typedObject } from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { HALLink } from '../../../shared'; +import { ResourceType } from '../../../shared'; +import { excludeFromEquals } from '../../../utilities'; import { QUALITY_ASSURANCE_TOPIC_OBJECT } from './quality-assurance-topic-object.resource-type'; /** diff --git a/modules/core/src/lib/core/notifications/qa/source/index.ts b/modules/core/src/lib/core/notifications/qa/source/index.ts new file mode 100644 index 00000000000..9b3c8e28384 --- /dev/null +++ b/modules/core/src/lib/core/notifications/qa/source/index.ts @@ -0,0 +1,2 @@ + +export * from './quality-assurance-source-data.service'; diff --git a/src/app/core/notifications/qa/source/quality-assurance-source-data.service.spec.ts b/modules/core/src/lib/core/notifications/qa/source/quality-assurance-source-data.service.spec.ts similarity index 93% rename from src/app/core/notifications/qa/source/quality-assurance-source-data.service.spec.ts rename to modules/core/src/lib/core/notifications/qa/source/quality-assurance-source-data.service.spec.ts index 0fca119e8b4..8ddd720affb 100644 --- a/src/app/core/notifications/qa/source/quality-assurance-source-data.service.spec.ts +++ b/modules/core/src/lib/core/notifications/qa/source/quality-assurance-source-data.service.spec.ts @@ -6,23 +6,24 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { - qualityAssuranceSourceObjectMoreAbstract, - qualityAssuranceSourceObjectMorePid, -} from '../../../../shared/mocks/notifications.mock'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject } from '../../../../shared/remote-data.utils'; -import { ObjectCacheServiceStub } from '../../../../shared/testing/object-cache-service.stub'; import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../../../cache/object-cache.service'; import { RestResponse } from '../../../cache/response.models'; import { buildPaginatedList } from '../../../data/paginated-list.model'; import { RequestService } from '../../../data/request.service'; import { RequestEntry } from '../../../data/request-entry.model'; +import { + qualityAssuranceSourceObjectMoreAbstract, + qualityAssuranceSourceObjectMorePid, +} from '../../../mocks/notifications.mock'; import { HALEndpointService } from '../../../shared/hal-endpoint.service'; import { PageInfo } from '../../../shared/page-info.model'; +import { createSuccessfulRemoteDataObject } from '../../../utilities/remote-data.utils'; +import { ObjectCacheServiceStub } from '../../../utilities/testing/object-cache-service.stub'; +import { NotificationsService } from '../../notifications.service'; import { QualityAssuranceSourceDataService } from './quality-assurance-source-data.service'; + describe('QualityAssuranceSourceDataService', () => { let scheduler: TestScheduler; let service: QualityAssuranceSourceDataService; diff --git a/src/app/core/notifications/qa/source/quality-assurance-source-data.service.ts b/modules/core/src/lib/core/notifications/qa/source/quality-assurance-source-data.service.ts similarity index 83% rename from src/app/core/notifications/qa/source/quality-assurance-source-data.service.ts rename to modules/core/src/lib/core/notifications/qa/source/quality-assurance-source-data.service.ts index 89f28e1e9ef..e21e399aa91 100644 --- a/src/app/core/notifications/qa/source/quality-assurance-source-data.service.ts +++ b/modules/core/src/lib/core/notifications/qa/source/quality-assurance-source-data.service.ts @@ -1,25 +1,25 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { RemoteDataBuildService } from '../../../cache'; +import { ObjectCacheService } from '../../../cache'; import { FindAllData, FindAllDataImpl, -} from '../../../data/base/find-all-data'; -import { IdentifiableDataService } from '../../../data/base/identifiable-data.service'; +} from '../../../data'; +import { IdentifiableDataService } from '../../../data'; import { SearchData, SearchDataImpl, -} from '../../../data/base/search-data'; -import { FindListOptions } from '../../../data/find-list-options.model'; -import { PaginatedList } from '../../../data/paginated-list.model'; -import { RemoteData } from '../../../data/remote-data'; -import { RequestService } from '../../../data/request.service'; -import { HALEndpointService } from '../../../shared/hal-endpoint.service'; -import { QualityAssuranceSourceObject } from '../models/quality-assurance-source.model'; +} from '../../../data'; +import { FindListOptions } from '../../../data'; +import { FollowLinkConfig } from '../../../data'; +import { PaginatedList } from '../../../data'; +import { RemoteData } from '../../../data'; +import { RequestService } from '../../../data'; +import { HALEndpointService } from '../../../shared'; +import { NotificationsService } from '../../notifications.service'; +import { QualityAssuranceSourceObject } from '../models'; /** * The service handling all Quality Assurance source REST requests. diff --git a/modules/core/src/lib/core/notifications/qa/topics/index.ts b/modules/core/src/lib/core/notifications/qa/topics/index.ts new file mode 100644 index 00000000000..8a1ddb2dba3 --- /dev/null +++ b/modules/core/src/lib/core/notifications/qa/topics/index.ts @@ -0,0 +1,2 @@ + +export * from './quality-assurance-topic-data.service'; diff --git a/src/app/core/notifications/qa/topics/quality-assurance-topic-data.service.spec.ts b/modules/core/src/lib/core/notifications/qa/topics/quality-assurance-topic-data.service.spec.ts similarity index 94% rename from src/app/core/notifications/qa/topics/quality-assurance-topic-data.service.spec.ts rename to modules/core/src/lib/core/notifications/qa/topics/quality-assurance-topic-data.service.spec.ts index ede1563c30c..83b8e022b93 100644 --- a/src/app/core/notifications/qa/topics/quality-assurance-topic-data.service.spec.ts +++ b/modules/core/src/lib/core/notifications/qa/topics/quality-assurance-topic-data.service.spec.ts @@ -6,23 +6,25 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { - qualityAssuranceTopicObjectMoreAbstract, - qualityAssuranceTopicObjectMorePid, -} from '../../../../shared/mocks/notifications.mock'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject } from '../../../../shared/remote-data.utils'; -import { ObjectCacheServiceStub } from '../../../../shared/testing/object-cache-service.stub'; import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../../../cache/object-cache.service'; import { RestResponse } from '../../../cache/response.models'; import { buildPaginatedList } from '../../../data/paginated-list.model'; import { RequestService } from '../../../data/request.service'; import { RequestEntry } from '../../../data/request-entry.model'; +import { + qualityAssuranceTopicObjectMoreAbstract, + qualityAssuranceTopicObjectMorePid, +} from '../../../mocks/notifications.mock'; import { HALEndpointService } from '../../../shared/hal-endpoint.service'; import { PageInfo } from '../../../shared/page-info.model'; +import { createSuccessfulRemoteDataObject } from '../../../utilities/remote-data.utils'; +import { ObjectCacheServiceStub } from '../../../utilities/testing/object-cache-service.stub'; +import { NotificationsService } from '../../notifications.service'; import { QualityAssuranceTopicDataService } from './quality-assurance-topic-data.service'; + + describe('QualityAssuranceTopicDataService', () => { let scheduler: TestScheduler; let service: QualityAssuranceTopicDataService; diff --git a/src/app/core/notifications/qa/topics/quality-assurance-topic-data.service.ts b/modules/core/src/lib/core/notifications/qa/topics/quality-assurance-topic-data.service.ts similarity index 82% rename from src/app/core/notifications/qa/topics/quality-assurance-topic-data.service.ts rename to modules/core/src/lib/core/notifications/qa/topics/quality-assurance-topic-data.service.ts index 3ae6eab2f18..0314b04d0ef 100644 --- a/src/app/core/notifications/qa/topics/quality-assurance-topic-data.service.ts +++ b/modules/core/src/lib/core/notifications/qa/topics/quality-assurance-topic-data.service.ts @@ -1,25 +1,25 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { RemoteDataBuildService } from '../../../cache'; +import { ObjectCacheService } from '../../../cache'; import { FindAllData, FindAllDataImpl, -} from '../../../data/base/find-all-data'; -import { IdentifiableDataService } from '../../../data/base/identifiable-data.service'; +} from '../../../data'; +import { IdentifiableDataService } from '../../../data'; import { SearchData, SearchDataImpl, -} from '../../../data/base/search-data'; -import { FindListOptions } from '../../../data/find-list-options.model'; -import { PaginatedList } from '../../../data/paginated-list.model'; -import { RemoteData } from '../../../data/remote-data'; -import { RequestService } from '../../../data/request.service'; -import { HALEndpointService } from '../../../shared/hal-endpoint.service'; -import { QualityAssuranceTopicObject } from '../models/quality-assurance-topic.model'; +} from '../../../data'; +import { FindListOptions } from '../../../data'; +import { FollowLinkConfig } from '../../../data'; +import { PaginatedList } from '../../../data'; +import { RemoteData } from '../../../data'; +import { RequestService } from '../../../data'; +import { HALEndpointService } from '../../../shared'; +import { NotificationsService } from '../../notifications.service'; +import { QualityAssuranceTopicObject } from '../models'; /** * The service handling all Quality Assurance topic REST requests. diff --git a/modules/core/src/lib/core/notifications/selectors.ts b/modules/core/src/lib/core/notifications/selectors.ts new file mode 100644 index 00000000000..52c373b10cf --- /dev/null +++ b/modules/core/src/lib/core/notifications/selectors.ts @@ -0,0 +1,7 @@ +/** + * Returns the user state. + * @function getUserState + * @return {AuthState} + */ + +export const notificationsStateSelector = (state: any) => state.core.notifications; diff --git a/modules/core/src/lib/core/notifications/suggestions/index.ts b/modules/core/src/lib/core/notifications/suggestions/index.ts new file mode 100644 index 00000000000..35b60c97e57 --- /dev/null +++ b/modules/core/src/lib/core/notifications/suggestions/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './source'; +export * from './target'; +export * from './suggestion-data.service'; diff --git a/modules/core/src/lib/core/notifications/suggestions/models/index.ts b/modules/core/src/lib/core/notifications/suggestions/models/index.ts new file mode 100644 index 00000000000..b4609d4a15f --- /dev/null +++ b/modules/core/src/lib/core/notifications/suggestions/models/index.ts @@ -0,0 +1,8 @@ +// created from 'create-ts-index' + +export * from './suggestion-objects.resource-type'; +export * from './suggestion-source-object.resource-type'; +export * from './suggestion-source.model'; +export * from './suggestion-target-object.resource-type'; +export * from './suggestion-target.model'; +export * from './suggestion.model'; diff --git a/src/app/core/notifications/suggestions/models/suggestion-objects.resource-type.ts b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-objects.resource-type.ts similarity index 76% rename from src/app/core/notifications/suggestions/models/suggestion-objects.resource-type.ts rename to modules/core/src/lib/core/notifications/suggestions/models/suggestion-objects.resource-type.ts index 8f87027a8c5..1427316a66e 100644 --- a/src/app/core/notifications/suggestions/models/suggestion-objects.resource-type.ts +++ b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-objects.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../shared/resource-type'; +import { ResourceType } from '../../../shared'; /** * The resource type for the Suggestion object diff --git a/src/app/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts similarity index 77% rename from src/app/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts rename to modules/core/src/lib/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts index 2e26fe4301c..013d61b38b0 100644 --- a/src/app/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts +++ b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-source-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../shared/resource-type'; +import { ResourceType } from '../../../shared'; /** * The resource type for the Suggestion Source object diff --git a/src/app/core/notifications/suggestions/models/suggestion-source.model.ts b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-source.model.ts similarity index 71% rename from src/app/core/notifications/suggestions/models/suggestion-source.model.ts rename to modules/core/src/lib/core/notifications/suggestions/models/suggestion-source.model.ts index 0218ab4ae14..4ea02293370 100644 --- a/src/app/core/notifications/suggestions/models/suggestion-source.model.ts +++ b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-source.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../../cache/builders/build-decorators'; -import { CacheableObject } from '../../../cache/cacheable-object.model'; -import { HALLink } from '../../../shared/hal-link.model'; -import { ResourceType } from '../../../shared/resource-type'; -import { excludeFromEquals } from '../../../utilities/equals.decorators'; +import { typedObject } from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { HALLink } from '../../../shared'; +import { ResourceType } from '../../../shared'; +import { excludeFromEquals } from '../../../utilities'; import { SUGGESTION_SOURCE } from './suggestion-source-object.resource-type'; /** diff --git a/src/app/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts similarity index 77% rename from src/app/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts rename to modules/core/src/lib/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts index 71dd41912ac..af644c7da94 100644 --- a/src/app/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts +++ b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-target-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../shared/resource-type'; +import { ResourceType } from '../../../shared'; /** * The resource type for the Suggestion Target object diff --git a/src/app/core/notifications/suggestions/models/suggestion-target.model.ts b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-target.model.ts similarity index 75% rename from src/app/core/notifications/suggestions/models/suggestion-target.model.ts rename to modules/core/src/lib/core/notifications/suggestions/models/suggestion-target.model.ts index 94d6b7bfa10..35ddabfb2e5 100644 --- a/src/app/core/notifications/suggestions/models/suggestion-target.model.ts +++ b/modules/core/src/lib/core/notifications/suggestions/models/suggestion-target.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../../cache/builders/build-decorators'; -import { CacheableObject } from '../../../cache/cacheable-object.model'; -import { HALLink } from '../../../shared/hal-link.model'; -import { ResourceType } from '../../../shared/resource-type'; -import { excludeFromEquals } from '../../../utilities/equals.decorators'; +import { typedObject } from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { HALLink } from '../../../shared'; +import { ResourceType } from '../../../shared'; +import { excludeFromEquals } from '../../../utilities'; import { SUGGESTION_TARGET } from './suggestion-target-object.resource-type'; /** diff --git a/src/app/core/notifications/suggestions/models/suggestion.model.ts b/modules/core/src/lib/core/notifications/suggestions/models/suggestion.model.ts similarity index 80% rename from src/app/core/notifications/suggestions/models/suggestion.model.ts rename to modules/core/src/lib/core/notifications/suggestions/models/suggestion.model.ts index 82bc46750e6..5c946175553 100644 --- a/src/app/core/notifications/suggestions/models/suggestion.model.ts +++ b/modules/core/src/lib/core/notifications/suggestions/models/suggestion.model.ts @@ -4,15 +4,15 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../../cache/builders/build-decorators'; -import { CacheableObject } from '../../../cache/cacheable-object.model'; -import { HALLink } from '../../../shared/hal-link.model'; +import { typedObject } from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { HALLink } from '../../../shared'; import { MetadataMap, MetadataMapSerializer, -} from '../../../shared/metadata.models'; -import { ResourceType } from '../../../shared/resource-type'; -import { excludeFromEquals } from '../../../utilities/equals.decorators'; +} from '../../../shared'; +import { ResourceType } from '../../../shared'; +import { excludeFromEquals } from '../../../utilities'; import { SUGGESTION } from './suggestion-objects.resource-type'; /** diff --git a/modules/core/src/lib/core/notifications/suggestions/source/index.ts b/modules/core/src/lib/core/notifications/suggestions/source/index.ts new file mode 100644 index 00000000000..e56ed293a9c --- /dev/null +++ b/modules/core/src/lib/core/notifications/suggestions/source/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './suggestion-source-data.service'; diff --git a/src/app/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts b/modules/core/src/lib/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts similarity index 95% rename from src/app/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts rename to modules/core/src/lib/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts index b5c71589794..e6d49b5b67e 100644 --- a/src/app/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts +++ b/modules/core/src/lib/core/notifications/suggestions/source/suggestion-source-data.service.spec.ts @@ -7,8 +7,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../../../cache/object-cache.service'; import { RestResponse } from '../../../cache/response.models'; @@ -22,9 +20,13 @@ import { RequestService } from '../../../data/request.service'; import { RequestEntry } from '../../../data/request-entry.model'; import { RequestEntryState } from '../../../data/request-entry-state.model'; import { HALEndpointService } from '../../../shared/hal-endpoint.service'; +import { createSuccessfulRemoteDataObject$ } from '../../../utilities/remote-data.utils'; +import { NotificationsService } from '../../notifications.service'; import { SuggestionSource } from '../models/suggestion-source.model'; import { SuggestionSourceDataService } from './suggestion-source-data.service'; + + describe('SuggestionSourceDataService test', () => { let scheduler: TestScheduler; let service: SuggestionSourceDataService; diff --git a/src/app/core/notifications/suggestions/source/suggestion-source-data.service.ts b/modules/core/src/lib/core/notifications/suggestions/source/suggestion-source-data.service.ts similarity index 82% rename from src/app/core/notifications/suggestions/source/suggestion-source-data.service.ts rename to modules/core/src/lib/core/notifications/suggestions/source/suggestion-source-data.service.ts index d90c1a8e8c4..e6d66897663 100644 --- a/src/app/core/notifications/suggestions/source/suggestion-source-data.service.ts +++ b/modules/core/src/lib/core/notifications/suggestions/source/suggestion-source-data.service.ts @@ -3,23 +3,23 @@ import { Injectable } from '@angular/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { RemoteDataBuildService } from '../../../cache'; +import { ObjectCacheService } from '../../../cache'; import { CoreState } from '../../../core-state.model'; import { FindAllData, FindAllDataImpl, -} from '../../../data/base/find-all-data'; -import { IdentifiableDataService } from '../../../data/base/identifiable-data.service'; -import { DefaultChangeAnalyzer } from '../../../data/default-change-analyzer.service'; -import { FindListOptions } from '../../../data/find-list-options.model'; -import { PaginatedList } from '../../../data/paginated-list.model'; -import { RemoteData } from '../../../data/remote-data'; -import { RequestService } from '../../../data/request.service'; -import { HALEndpointService } from '../../../shared/hal-endpoint.service'; -import { SuggestionSource } from '../models/suggestion-source.model'; +} from '../../../data'; +import { IdentifiableDataService } from '../../../data'; +import { DefaultChangeAnalyzer } from '../../../data'; +import { FindListOptions } from '../../../data'; +import { FollowLinkConfig } from '../../../data'; +import { PaginatedList } from '../../../data'; +import { RemoteData } from '../../../data'; +import { RequestService } from '../../../data'; +import { HALEndpointService } from '../../../shared'; +import { NotificationsService } from '../../notifications.service'; +import { SuggestionSource } from '../models'; /** * Service that retrieves Suggestion Source data diff --git a/src/app/core/notifications/suggestions/suggestion-data.service.spec.ts b/modules/core/src/lib/core/notifications/suggestions/suggestion-data.service.spec.ts similarity index 95% rename from src/app/core/notifications/suggestions/suggestion-data.service.spec.ts rename to modules/core/src/lib/core/notifications/suggestions/suggestion-data.service.spec.ts index 5b3bf0b0aee..8edee44b58a 100644 --- a/src/app/core/notifications/suggestions/suggestion-data.service.spec.ts +++ b/modules/core/src/lib/core/notifications/suggestions/suggestion-data.service.spec.ts @@ -6,8 +6,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { RequestParam } from '../../cache/models/request-param.model'; import { ObjectCacheService } from '../../cache/object-cache.service'; @@ -17,8 +15,12 @@ import { RequestService } from '../../data/request.service'; import { RequestEntry } from '../../data/request-entry.model'; import { RequestEntryState } from '../../data/request-entry-state.model'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; +import { NotificationsService } from '../notifications.service'; import { SuggestionDataService } from './suggestion-data.service'; + + describe('SuggestionDataService test', () => { let scheduler: TestScheduler; let service: SuggestionDataService; diff --git a/src/app/core/notifications/suggestions/suggestion-data.service.ts b/modules/core/src/lib/core/notifications/suggestions/suggestion-data.service.ts similarity index 74% rename from src/app/core/notifications/suggestions/suggestion-data.service.ts rename to modules/core/src/lib/core/notifications/suggestions/suggestion-data.service.ts index 328862dbaf9..be2f8162ad1 100644 --- a/src/app/core/notifications/suggestions/suggestion-data.service.ts +++ b/modules/core/src/lib/core/notifications/suggestions/suggestion-data.service.ts @@ -2,24 +2,24 @@ import { HttpClient } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { RequestParam } from '../../cache/models/request-param.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; +import { RemoteDataBuildService } from '../../cache'; +import { RequestParam } from '../../cache'; +import { ObjectCacheService } from '../../cache'; import { DeleteData, DeleteDataImpl, -} from '../../data/base/delete-data'; -import { IdentifiableDataService } from '../../data/base/identifiable-data.service'; -import { SearchDataImpl } from '../../data/base/search-data'; -import { FindListOptions } from '../../data/find-list-options.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { RequestService } from '../../data/request.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { NoContent } from '../../shared/NoContent.model'; -import { Suggestion } from './models/suggestion.model'; +} from '../../data'; +import { IdentifiableDataService } from '../../data'; +import { SearchDataImpl } from '../../data'; +import { FindListOptions } from '../../data'; +import { FollowLinkConfig } from '../../data'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { RequestService } from '../../data'; +import { HALEndpointService } from '../../shared'; +import { NoContent } from '../../shared'; +import { NotificationsService } from '../notifications.service'; +import { Suggestion } from './models'; /** * The service handling all Suggestion Target REST requests. diff --git a/modules/core/src/lib/core/notifications/suggestions/target/index.ts b/modules/core/src/lib/core/notifications/suggestions/target/index.ts new file mode 100644 index 00000000000..c1b9fc14dd2 --- /dev/null +++ b/modules/core/src/lib/core/notifications/suggestions/target/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './suggestion-target-data.service'; diff --git a/src/app/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts b/modules/core/src/lib/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts similarity index 96% rename from src/app/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts rename to modules/core/src/lib/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts index 6aa5aad3ea8..fa0d175decb 100644 --- a/src/app/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts +++ b/modules/core/src/lib/core/notifications/suggestions/target/suggestion-target-data.service.spec.ts @@ -7,8 +7,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; import { RequestParam } from '../../../cache/models/request-param.model'; import { ObjectCacheService } from '../../../cache/object-cache.service'; @@ -25,9 +23,13 @@ import { RequestService } from '../../../data/request.service'; import { RequestEntry } from '../../../data/request-entry.model'; import { RequestEntryState } from '../../../data/request-entry-state.model'; import { HALEndpointService } from '../../../shared/hal-endpoint.service'; +import { createSuccessfulRemoteDataObject$ } from '../../../utilities/remote-data.utils'; +import { NotificationsService } from '../../notifications.service'; import { SuggestionTarget } from '../models/suggestion-target.model'; import { SuggestionTargetDataService } from './suggestion-target-data.service'; + + describe('SuggestionTargetDataService test', () => { let scheduler: TestScheduler; let service: SuggestionTargetDataService; diff --git a/src/app/core/notifications/suggestions/target/suggestion-target-data.service.ts b/modules/core/src/lib/core/notifications/suggestions/target/suggestion-target-data.service.ts similarity index 85% rename from src/app/core/notifications/suggestions/target/suggestion-target-data.service.ts rename to modules/core/src/lib/core/notifications/suggestions/target/suggestion-target-data.service.ts index a83b24f0853..e03184d268e 100644 --- a/src/app/core/notifications/suggestions/target/suggestion-target-data.service.ts +++ b/modules/core/src/lib/core/notifications/suggestions/target/suggestion-target-data.service.ts @@ -3,28 +3,28 @@ import { Injectable } from '@angular/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../../cache/builders/remote-data-build.service'; -import { RequestParam } from '../../../cache/models/request-param.model'; -import { ObjectCacheService } from '../../../cache/object-cache.service'; +import { RemoteDataBuildService } from '../../../cache'; +import { RequestParam } from '../../../cache'; +import { ObjectCacheService } from '../../../cache'; import { CoreState } from '../../../core-state.model'; import { FindAllData, FindAllDataImpl, -} from '../../../data/base/find-all-data'; -import { IdentifiableDataService } from '../../../data/base/identifiable-data.service'; +} from '../../../data'; +import { IdentifiableDataService } from '../../../data'; import { SearchData, SearchDataImpl, -} from '../../../data/base/search-data'; -import { DefaultChangeAnalyzer } from '../../../data/default-change-analyzer.service'; -import { FindListOptions } from '../../../data/find-list-options.model'; -import { PaginatedList } from '../../../data/paginated-list.model'; -import { RemoteData } from '../../../data/remote-data'; -import { RequestService } from '../../../data/request.service'; -import { HALEndpointService } from '../../../shared/hal-endpoint.service'; -import { SuggestionTarget } from '../models/suggestion-target.model'; +} from '../../../data'; +import { DefaultChangeAnalyzer } from '../../../data'; +import { FindListOptions } from '../../../data'; +import { FollowLinkConfig } from '../../../data'; +import { PaginatedList } from '../../../data'; +import { RemoteData } from '../../../data'; +import { RequestService } from '../../../data'; +import { HALEndpointService } from '../../../shared'; +import { NotificationsService } from '../../notifications.service'; +import { SuggestionTarget } from '../models'; @Injectable({ providedIn: 'root' }) export class SuggestionTargetDataService extends IdentifiableDataService { diff --git a/modules/core/src/lib/core/notify-requests/index.ts b/modules/core/src/lib/core/notify-requests/index.ts new file mode 100644 index 00000000000..d5e0a18278a --- /dev/null +++ b/modules/core/src/lib/core/notify-requests/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './notify-requests-status.model'; +export * from './notify-requests-status.resource-type'; +export * from './notify-status.enum'; diff --git a/src/app/item-page/simple/notify-requests-status/notify-requests-status.model.ts b/modules/core/src/lib/core/notify-requests/notify-requests-status.model.ts similarity index 77% rename from src/app/item-page/simple/notify-requests-status/notify-requests-status.model.ts rename to modules/core/src/lib/core/notify-requests/notify-requests-status.model.ts index 92a067c20a5..1888195a512 100644 --- a/src/app/item-page/simple/notify-requests-status/notify-requests-status.model.ts +++ b/modules/core/src/lib/core/notify-requests/notify-requests-status.model.ts @@ -5,13 +5,13 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../../core/cache/cacheable-object.model'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { ResourceType } from '../../../core/shared/resource-type'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; import { NOTIFYREQUEST } from './notify-requests-status.resource-type'; import { RequestStatusEnum } from './notify-status.enum'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { HALLink } from '../shared'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; /** * Represents the status of notify requests for an item. diff --git a/src/app/item-page/simple/notify-requests-status/notify-requests-status.resource-type.ts b/modules/core/src/lib/core/notify-requests/notify-requests-status.resource-type.ts similarity index 75% rename from src/app/item-page/simple/notify-requests-status/notify-requests-status.resource-type.ts rename to modules/core/src/lib/core/notify-requests/notify-requests-status.resource-type.ts index a450b0462bb..0d54777da2a 100644 --- a/src/app/item-page/simple/notify-requests-status/notify-requests-status.resource-type.ts +++ b/modules/core/src/lib/core/notify-requests/notify-requests-status.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../core/shared/resource-type'; +import { ResourceType } from '../shared'; /** * The resource type for the root endpoint diff --git a/src/app/item-page/simple/notify-requests-status/notify-status.enum.ts b/modules/core/src/lib/core/notify-requests/notify-status.enum.ts similarity index 100% rename from src/app/item-page/simple/notify-requests-status/notify-status.enum.ts rename to modules/core/src/lib/core/notify-requests/notify-status.enum.ts diff --git a/src/app/shared/object-collection/shared/claimed-approved-task-search-result.model.ts b/modules/core/src/lib/core/object-collection/claimed-approved-task-search-result.model.ts similarity index 51% rename from src/app/shared/object-collection/shared/claimed-approved-task-search-result.model.ts rename to modules/core/src/lib/core/object-collection/claimed-approved-task-search-result.model.ts index 71b885d2494..6ce87339925 100644 --- a/src/app/shared/object-collection/shared/claimed-approved-task-search-result.model.ts +++ b/modules/core/src/lib/core/object-collection/claimed-approved-task-search-result.model.ts @@ -1,5 +1,5 @@ -import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model'; -import { SearchResult } from '../../search/models/search-result.model'; +import { SearchResult } from '../shared'; +import { ClaimedTask } from '../tasks'; /** * Represents a search result object of an Approved ClaimedTask object diff --git a/src/app/shared/object-collection/shared/claimed-declined-task-search-result.model.ts b/modules/core/src/lib/core/object-collection/claimed-declined-task-search-result.model.ts similarity index 56% rename from src/app/shared/object-collection/shared/claimed-declined-task-search-result.model.ts rename to modules/core/src/lib/core/object-collection/claimed-declined-task-search-result.model.ts index 0afb79a2747..a4335d16d81 100644 --- a/src/app/shared/object-collection/shared/claimed-declined-task-search-result.model.ts +++ b/modules/core/src/lib/core/object-collection/claimed-declined-task-search-result.model.ts @@ -1,5 +1,5 @@ -import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model'; -import { SearchResult } from '../../search/models/search-result.model'; +import { SearchResult } from '../shared'; +import { ClaimedTask } from '../tasks'; /** * Represents a search result object of a Declined/Rejected ClaimedTask object (sent back to the submitter) diff --git a/src/app/shared/object-collection/shared/claimed-declined-task-task-search-result.model.ts b/modules/core/src/lib/core/object-collection/claimed-declined-task-task-search-result.model.ts similarity index 56% rename from src/app/shared/object-collection/shared/claimed-declined-task-task-search-result.model.ts rename to modules/core/src/lib/core/object-collection/claimed-declined-task-task-search-result.model.ts index dffb3c1313f..19b6428448c 100644 --- a/src/app/shared/object-collection/shared/claimed-declined-task-task-search-result.model.ts +++ b/modules/core/src/lib/core/object-collection/claimed-declined-task-task-search-result.model.ts @@ -1,5 +1,5 @@ -import { ClaimedTask } from '../../../core/tasks/models/claimed-task-object.model'; -import { SearchResult } from '../../search/models/search-result.model'; +import { SearchResult } from '../shared'; +import { ClaimedTask } from '../tasks'; /** * Represents a search result object of a Declined ClaimedTask object (sent back to the Review Managers) diff --git a/modules/core/src/lib/core/object-collection/claimed-task-search-result.model.ts b/modules/core/src/lib/core/object-collection/claimed-task-search-result.model.ts new file mode 100644 index 00000000000..1edadff9647 --- /dev/null +++ b/modules/core/src/lib/core/object-collection/claimed-task-search-result.model.ts @@ -0,0 +1,8 @@ +import { SearchResult } from '../shared'; +import { ClaimedTask } from '../tasks'; + +/** + * Represents a search result object of a ClaimedTask object + */ +export class ClaimedTaskSearchResult extends SearchResult { +} diff --git a/modules/core/src/lib/core/object-collection/collection-search-result.model.ts b/modules/core/src/lib/core/object-collection/collection-search-result.model.ts new file mode 100644 index 00000000000..72edc10c3f3 --- /dev/null +++ b/modules/core/src/lib/core/object-collection/collection-search-result.model.ts @@ -0,0 +1,5 @@ +import { Collection } from '../shared'; +import { SearchResult } from '../shared'; + +export class CollectionSearchResult extends SearchResult { +} diff --git a/modules/core/src/lib/core/object-collection/community-search-result.model.ts b/modules/core/src/lib/core/object-collection/community-search-result.model.ts new file mode 100644 index 00000000000..24e3760f0e2 --- /dev/null +++ b/modules/core/src/lib/core/object-collection/community-search-result.model.ts @@ -0,0 +1,5 @@ +import { Community } from '../shared'; +import { SearchResult } from '../shared'; + +export class CommunitySearchResult extends SearchResult { +} diff --git a/modules/core/src/lib/core/object-collection/index.ts b/modules/core/src/lib/core/object-collection/index.ts new file mode 100644 index 00000000000..543e9901973 --- /dev/null +++ b/modules/core/src/lib/core/object-collection/index.ts @@ -0,0 +1,13 @@ +// created from 'create-ts-index' + +export * from './claimed-approved-task-search-result.model'; +export * from './claimed-declined-task-search-result.model'; +export * from './claimed-declined-task-task-search-result.model'; +export * from './claimed-task-search-result.model'; +export * from './collection-search-result.model'; +export * from './community-search-result.model'; +export * from './item-search-result.model'; +export * from './listable-object.model'; +export * from './pool-task-search-result.model'; +export * from './workflow-item-search-result.model'; +export * from './workspace-item-search-result.model'; diff --git a/src/app/shared/object-collection/shared/item-search-result.model.ts b/modules/core/src/lib/core/object-collection/item-search-result.model.ts similarity index 66% rename from src/app/shared/object-collection/shared/item-search-result.model.ts rename to modules/core/src/lib/core/object-collection/item-search-result.model.ts index 4704a9ffe68..43232120fb0 100644 --- a/src/app/shared/object-collection/shared/item-search-result.model.ts +++ b/modules/core/src/lib/core/object-collection/item-search-result.model.ts @@ -1,7 +1,7 @@ -import { GenericConstructor } from '../../../core/shared/generic-constructor'; -import { Item } from '../../../core/shared/item.model'; -import { inheritEquatable } from '../../../core/utilities/equals.decorators'; -import { SearchResult } from '../../search/models/search-result.model'; +import { GenericConstructor } from '../shared'; +import { Item } from '../shared'; +import { SearchResult } from '../shared'; +import { inheritEquatable } from '../utilities'; import { ListableObject } from './listable-object.model'; @inheritEquatable(SearchResult) diff --git a/src/app/shared/object-collection/shared/listable-object.model.ts b/modules/core/src/lib/core/object-collection/listable-object.model.ts similarity index 62% rename from src/app/shared/object-collection/shared/listable-object.model.ts rename to modules/core/src/lib/core/object-collection/listable-object.model.ts index cb44cefb569..178587a1d77 100644 --- a/src/app/shared/object-collection/shared/listable-object.model.ts +++ b/modules/core/src/lib/core/object-collection/listable-object.model.ts @@ -1,5 +1,5 @@ -import { GenericConstructor } from '../../../core/shared/generic-constructor'; -import { EquatableObject } from '../../../core/utilities/equals.decorators'; +import { GenericConstructor } from '../shared'; +import { EquatableObject } from '../utilities'; export abstract class ListableObject extends EquatableObject { /** diff --git a/modules/core/src/lib/core/object-collection/pool-task-search-result.model.ts b/modules/core/src/lib/core/object-collection/pool-task-search-result.model.ts new file mode 100644 index 00000000000..d30315aea69 --- /dev/null +++ b/modules/core/src/lib/core/object-collection/pool-task-search-result.model.ts @@ -0,0 +1,8 @@ +import { SearchResult } from '../shared'; +import { PoolTask } from '../tasks'; + +/** + * Represents a search result object of a PoolTask object + */ +export class PoolTaskSearchResult extends SearchResult { +} diff --git a/modules/core/src/lib/core/object-collection/workflow-item-search-result.model.ts b/modules/core/src/lib/core/object-collection/workflow-item-search-result.model.ts new file mode 100644 index 00000000000..ed864d9b4ff --- /dev/null +++ b/modules/core/src/lib/core/object-collection/workflow-item-search-result.model.ts @@ -0,0 +1,8 @@ +import { SearchResult } from '../shared'; +import { WorkflowItem } from '../submission'; + +/** + * Represents a search result object of a WorkflowItem object + */ +export class WorkflowItemSearchResult extends SearchResult { +} diff --git a/modules/core/src/lib/core/object-collection/workspace-item-search-result.model.ts b/modules/core/src/lib/core/object-collection/workspace-item-search-result.model.ts new file mode 100644 index 00000000000..c2ad0e5d785 --- /dev/null +++ b/modules/core/src/lib/core/object-collection/workspace-item-search-result.model.ts @@ -0,0 +1,8 @@ +import { SearchResult } from '../shared'; +import { WorkspaceItem } from '../submission'; + +/** + * Represents a search result object of a WorkspaceItem object + */ +export class WorkspaceItemSearchResult extends SearchResult { +} diff --git a/modules/core/src/lib/core/orcid/index.ts b/modules/core/src/lib/core/orcid/index.ts new file mode 100644 index 00000000000..a3d9efd2b9b --- /dev/null +++ b/modules/core/src/lib/core/orcid/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './model'; +export * from './orcid-auth.service'; +export * from './orcid-history-data.service'; +export * from './orcid-queue-data.service'; diff --git a/modules/core/src/lib/core/orcid/model/index.ts b/modules/core/src/lib/core/orcid/model/index.ts new file mode 100644 index 00000000000..3fa192989b7 --- /dev/null +++ b/modules/core/src/lib/core/orcid/model/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './orcid-history.model'; +export * from './orcid-history.resource-type'; +export * from './orcid-queue.model'; +export * from './orcid-queue.resource-type'; diff --git a/src/app/core/orcid/model/orcid-history.model.ts b/modules/core/src/lib/core/orcid/model/orcid-history.model.ts similarity index 81% rename from src/app/core/orcid/model/orcid-history.model.ts rename to modules/core/src/lib/core/orcid/model/orcid-history.model.ts index aa8c4b41ba9..07e3655d3a6 100644 --- a/src/app/core/orcid/model/orcid-history.model.ts +++ b/modules/core/src/lib/core/orcid/model/orcid-history.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { HALLink } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { ORCID_HISTORY } from './orcid-history.resource-type'; /** diff --git a/src/app/core/orcid/model/orcid-history.resource-type.ts b/modules/core/src/lib/core/orcid/model/orcid-history.resource-type.ts similarity index 76% rename from src/app/core/orcid/model/orcid-history.resource-type.ts rename to modules/core/src/lib/core/orcid/model/orcid-history.resource-type.ts index 45da8cbf682..ef36b39a582 100644 --- a/src/app/core/orcid/model/orcid-history.resource-type.ts +++ b/modules/core/src/lib/core/orcid/model/orcid-history.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for OrcidHistory diff --git a/src/app/core/orcid/model/orcid-queue.model.ts b/modules/core/src/lib/core/orcid/model/orcid-queue.model.ts similarity index 77% rename from src/app/core/orcid/model/orcid-queue.model.ts rename to modules/core/src/lib/core/orcid/model/orcid-queue.model.ts index 2735114f22d..ac1c12d6fc2 100644 --- a/src/app/core/orcid/model/orcid-queue.model.ts +++ b/modules/core/src/lib/core/orcid/model/orcid-queue.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { HALLink } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { ORCID_QUEUE } from './orcid-queue.resource-type'; /** diff --git a/src/app/core/orcid/model/orcid-queue.resource-type.ts b/modules/core/src/lib/core/orcid/model/orcid-queue.resource-type.ts similarity index 76% rename from src/app/core/orcid/model/orcid-queue.resource-type.ts rename to modules/core/src/lib/core/orcid/model/orcid-queue.resource-type.ts index a7f40d70ecf..f42504fdea3 100644 --- a/src/app/core/orcid/model/orcid-queue.resource-type.ts +++ b/modules/core/src/lib/core/orcid/model/orcid-queue.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for OrcidQueue diff --git a/src/app/core/orcid/orcid-auth.service.spec.ts b/modules/core/src/lib/core/orcid/orcid-auth.service.spec.ts similarity index 97% rename from src/app/core/orcid/orcid-auth.service.spec.ts rename to modules/core/src/lib/core/orcid/orcid-auth.service.spec.ts index a3dc628029b..a75f7c661fe 100644 --- a/src/app/core/orcid/orcid-auth.service.spec.ts +++ b/modules/core/src/lib/core/orcid/orcid-auth.service.spec.ts @@ -8,21 +8,23 @@ import { } from 'jasmine-marbles'; import { TestScheduler } from 'rxjs/testing'; -import { NativeWindowRefMock } from '../../shared/mocks/mock-native-window-ref'; -import { RouterMock } from '../../shared/mocks/router.mock'; -import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { ConfigurationDataService } from '../data/configuration-data.service'; +import { NativeWindowRefMock } from '../mocks/mock-native-window-ref'; +import { RouterMock } from '../mocks/router.mock'; import { ResearcherProfile } from '../profile/model/researcher-profile.model'; import { ResearcherProfileDataService } from '../profile/researcher-profile-data.service'; import { ConfigurationProperty } from '../shared/configuration-property.model'; import { Item } from '../shared/item.model'; import { URLCombiner } from '../url-combiner/url-combiner'; +import { + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { OrcidAuthService } from './orcid-auth.service'; + + describe('OrcidAuthService', () => { let scheduler: TestScheduler; let service: OrcidAuthService; diff --git a/src/app/core/orcid/orcid-auth.service.ts b/modules/core/src/lib/core/orcid/orcid-auth.service.ts similarity index 89% rename from src/app/core/orcid/orcid-auth.service.ts rename to modules/core/src/lib/core/orcid/orcid-auth.service.ts index 5b3ab7cfd0d..8987d08f30e 100644 --- a/src/app/core/orcid/orcid-auth.service.ts +++ b/modules/core/src/lib/core/orcid/orcid-auth.service.ts @@ -3,6 +3,7 @@ import { Injectable, } from '@angular/core'; import { Router } from '@angular/router'; +import { isNotEmpty } from '@dspace/shared/utils'; import { AddOperation, RemoveOperation, @@ -16,22 +17,21 @@ import { switchMap, } from 'rxjs/operators'; -import { isNotEmpty } from '../../shared/empty.util'; -import { ConfigurationDataService } from '../data/configuration-data.service'; -import { RemoteData } from '../data/remote-data'; -import { ResearcherProfile } from '../profile/model/researcher-profile.model'; -import { ResearcherProfileDataService } from '../profile/researcher-profile-data.service'; +import { ConfigurationDataService } from '../data'; +import { RemoteData } from '../data'; +import { ResearcherProfile } from '../profile'; +import { ResearcherProfileDataService } from '../profile'; import { NativeWindowRef, NativeWindowService, -} from '../services/window.service'; -import { ConfigurationProperty } from '../shared/configuration-property.model'; -import { Item } from '../shared/item.model'; +} from '../services'; +import { ConfigurationProperty } from '../shared'; +import { Item } from '../shared'; import { getFirstCompletedRemoteData, getFirstSucceededRemoteDataPayload, -} from '../shared/operators'; -import { URLCombiner } from '../url-combiner/url-combiner'; +} from '../shared'; +import { URLCombiner } from '../url-combiner'; @Injectable({ providedIn: 'root' }) export class OrcidAuthService { diff --git a/src/app/core/orcid/orcid-history-data.service.ts b/modules/core/src/lib/core/orcid/orcid-history-data.service.ts similarity index 64% rename from src/app/core/orcid/orcid-history-data.service.ts rename to modules/core/src/lib/core/orcid/orcid-history-data.service.ts index 4b0497886be..27d28d24df2 100644 --- a/src/app/core/orcid/orcid-history-data.service.ts +++ b/modules/core/src/lib/core/orcid/orcid-history-data.service.ts @@ -6,18 +6,18 @@ import { switchMap, } from 'rxjs/operators'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { RemoteData } from '../data/remote-data'; -import { PostRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RestRequest } from '../data/rest-request.model'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { sendRequest } from '../shared/request.operators'; -import { OrcidHistory } from './model/orcid-history.model'; -import { OrcidQueue } from './model/orcid-queue.model'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { IdentifiableDataService } from '../data'; +import { RemoteData } from '../data'; +import { PostRequest } from '../data'; +import { RequestService } from '../data'; +import { RestRequest } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { HALEndpointService } from '../shared'; +import { sendRequest } from '../shared'; +import { OrcidHistory } from './model'; +import { OrcidQueue } from './model'; /** * A service that provides methods to make REST requests with Orcid History endpoint. diff --git a/src/app/core/orcid/orcid-queue-data.service.ts b/modules/core/src/lib/core/orcid/orcid-queue-data.service.ts similarity index 74% rename from src/app/core/orcid/orcid-queue-data.service.ts rename to modules/core/src/lib/core/orcid/orcid-queue-data.service.ts index 9b03c4eba12..04d127a1526 100644 --- a/src/app/core/orcid/orcid-queue-data.service.ts +++ b/modules/core/src/lib/core/orcid/orcid-queue-data.service.ts @@ -1,26 +1,26 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; import { DeleteData, DeleteDataImpl, -} from '../data/base/delete-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +} from '../data'; +import { IdentifiableDataService } from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; -import { OrcidQueue } from './model/orcid-queue.model'; +} from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; +import { PaginationComponentOptions } from '../shared'; +import { OrcidQueue } from './model'; /** * A service that provides methods to make REST requests with Orcid Queue endpoint. diff --git a/modules/core/src/lib/core/pagination/index.ts b/modules/core/src/lib/core/pagination/index.ts new file mode 100644 index 00000000000..191aaf78720 --- /dev/null +++ b/modules/core/src/lib/core/pagination/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './pagination-route-params.interface'; +export * from './pagination.service'; diff --git a/src/app/core/pagination/pagination-route-params.interface.ts b/modules/core/src/lib/core/pagination/pagination-route-params.interface.ts similarity index 83% rename from src/app/core/pagination/pagination-route-params.interface.ts rename to modules/core/src/lib/core/pagination/pagination-route-params.interface.ts index 029b27f2559..46875502ec3 100644 --- a/src/app/core/pagination/pagination-route-params.interface.ts +++ b/modules/core/src/lib/core/pagination/pagination-route-params.interface.ts @@ -5,7 +5,7 @@ * * http://www.dspace.org/license/ */ -import { SortDirection } from '../cache/models/sort-options.model'; +import { SortDirection } from '../cache'; export interface PaginationRouteParams { page?: number diff --git a/src/app/core/pagination/pagination.service.spec.ts b/modules/core/src/lib/core/pagination/pagination.service.spec.ts similarity index 97% rename from src/app/core/pagination/pagination.service.spec.ts rename to modules/core/src/lib/core/pagination/pagination.service.spec.ts index e9c75703b10..e1053a73c67 100644 --- a/src/app/core/pagination/pagination.service.spec.ts +++ b/modules/core/src/lib/core/pagination/pagination.service.spec.ts @@ -1,15 +1,14 @@ import { of as observableOf } from 'rxjs'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { RouterStub } from '../../shared/testing/router.stub'; import { SortDirection, SortOptions, } from '../cache/models/sort-options.model'; import { FindListOptions } from '../data/find-list-options.model'; +import { PaginationComponentOptions } from '../shared/pagination-component-options.model'; +import { RouterStub } from '../utilities/testing/router.stub'; import { PaginationService } from './pagination.service'; - describe('PaginationService', () => { let service: PaginationService; let router; diff --git a/src/app/core/pagination/pagination.service.ts b/modules/core/src/lib/core/pagination/pagination.service.ts similarity index 96% rename from src/app/core/pagination/pagination.service.ts rename to modules/core/src/lib/core/pagination/pagination.service.ts index 0597daa3631..cd2cb9bcc08 100644 --- a/src/app/core/pagination/pagination.service.ts +++ b/modules/core/src/lib/core/pagination/pagination.service.ts @@ -3,6 +3,13 @@ import { NavigationExtras, Router, } from '@angular/router'; +import { + difference, + hasValue, + isEmpty, + isNotEmpty, + isNumeric, +} from '@dspace/shared/utils'; import { combineLatest as observableCombineLatest, Observable, @@ -13,20 +20,13 @@ import { take, } from 'rxjs/operators'; -import { - hasValue, - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; -import { isNumeric } from '../../shared/numeric.util'; -import { difference } from '../../shared/object.util'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { SortDirection, SortOptions, -} from '../cache/models/sort-options.model'; -import { FindListOptions } from '../data/find-list-options.model'; -import { RouteService } from '../services/route.service'; +} from '../cache'; +import { FindListOptions } from '../data'; +import { RouteService } from '../services'; +import { PaginationComponentOptions } from '../shared'; import { PaginationRouteParams } from './pagination-route-params.interface'; @Injectable({ diff --git a/src/app/process-page/processes/filetypes.model.ts b/modules/core/src/lib/core/processes/filetypes.model.ts similarity index 71% rename from src/app/process-page/processes/filetypes.model.ts rename to modules/core/src/lib/core/processes/filetypes.model.ts index 02e29b23238..0bcbb3f7784 100644 --- a/src/app/process-page/processes/filetypes.model.ts +++ b/modules/core/src/lib/core/processes/filetypes.model.ts @@ -1,8 +1,8 @@ import { autoserialize } from 'cerialize'; -import { typedObject } from '../../core/cache/builders/build-decorators'; -import { ResourceType } from '../../core/shared/resource-type'; -import { excludeFromEquals } from '../../core/utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; import { FILETYPES } from './filetypes.resource-type'; /** diff --git a/src/app/process-page/processes/filetypes.resource-type.ts b/modules/core/src/lib/core/processes/filetypes.resource-type.ts similarity index 74% rename from src/app/process-page/processes/filetypes.resource-type.ts rename to modules/core/src/lib/core/processes/filetypes.resource-type.ts index 29f9636208d..6ed32d09ec3 100644 --- a/src/app/process-page/processes/filetypes.resource-type.ts +++ b/modules/core/src/lib/core/processes/filetypes.resource-type.ts @@ -3,6 +3,6 @@ * * Needs to be in a separate file to prevent circular dependencies in webpack. */ -import { ResourceType } from '../../core/shared/resource-type'; +import { ResourceType } from '../shared'; export const FILETYPES = new ResourceType('filetypes'); diff --git a/modules/core/src/lib/core/processes/index.ts b/modules/core/src/lib/core/processes/index.ts new file mode 100644 index 00000000000..5ba9e8ee950 --- /dev/null +++ b/modules/core/src/lib/core/processes/index.ts @@ -0,0 +1,8 @@ +// created from 'create-ts-index' + +export * from './filetypes.model'; +export * from './filetypes.resource-type'; +export * from './process-parameter.model'; +export * from './process-status.model'; +export * from './process.model'; +export * from './process.resource-type'; diff --git a/src/app/process-page/processes/process-parameter.model.ts b/modules/core/src/lib/core/processes/process-parameter.model.ts similarity index 100% rename from src/app/process-page/processes/process-parameter.model.ts rename to modules/core/src/lib/core/processes/process-parameter.model.ts diff --git a/src/app/process-page/processes/process-status.model.ts b/modules/core/src/lib/core/processes/process-status.model.ts similarity index 100% rename from src/app/process-page/processes/process-status.model.ts rename to modules/core/src/lib/core/processes/process-status.model.ts diff --git a/src/app/process-page/processes/process.model.ts b/modules/core/src/lib/core/processes/process.model.ts similarity index 75% rename from src/app/process-page/processes/process.model.ts rename to modules/core/src/lib/core/processes/process.model.ts index 60407f3e12e..ddbae54c868 100644 --- a/src/app/process-page/processes/process.model.ts +++ b/modules/core/src/lib/core/processes/process.model.ts @@ -8,18 +8,18 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../core/cache/cacheable-object.model'; -import { PaginatedList } from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { Bitstream } from '../../core/shared/bitstream.model'; -import { BITSTREAM } from '../../core/shared/bitstream.resource-type'; -import { HALLink } from '../../core/shared/hal-link.model'; -import { PROCESS_OUTPUT_TYPE } from '../../core/shared/process-output.resource-type'; -import { ResourceType } from '../../core/shared/resource-type'; -import { excludeFromEquals } from '../../core/utilities/equals.decorators'; -import { Script } from '../scripts/script.model'; -import { SCRIPT } from '../scripts/script.resource-type'; +} from '../cache'; +import { CacheableObject } from '../cache'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { Script } from '../scripts'; +import { SCRIPT } from '../scripts'; +import { Bitstream } from '../shared'; +import { BITSTREAM } from '../shared'; +import { HALLink } from '../shared'; +import { PROCESS_OUTPUT_TYPE } from '../shared'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; import { Filetypes } from './filetypes.model'; import { FILETYPES } from './filetypes.resource-type'; import { PROCESS } from './process.resource-type'; diff --git a/src/app/process-page/processes/process.resource-type.ts b/modules/core/src/lib/core/processes/process.resource-type.ts similarity index 73% rename from src/app/process-page/processes/process.resource-type.ts rename to modules/core/src/lib/core/processes/process.resource-type.ts index 47617ed4f42..64ff69860e5 100644 --- a/src/app/process-page/processes/process.resource-type.ts +++ b/modules/core/src/lib/core/processes/process.resource-type.ts @@ -4,6 +4,6 @@ * Needs to be in a separate file to prevent circular * dependencies in webpack. */ -import { ResourceType } from '../../core/shared/resource-type'; +import { ResourceType } from '../shared'; export const PROCESS = new ResourceType('process'); diff --git a/modules/core/src/lib/core/profile/index.ts b/modules/core/src/lib/core/profile/index.ts new file mode 100644 index 00000000000..d0a16d372fc --- /dev/null +++ b/modules/core/src/lib/core/profile/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './model'; +export * from './researcher-profile-data.service'; diff --git a/modules/core/src/lib/core/profile/model/index.ts b/modules/core/src/lib/core/profile/model/index.ts new file mode 100644 index 00000000000..26faed9a542 --- /dev/null +++ b/modules/core/src/lib/core/profile/model/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './researcher-profile.model'; +export * from './researcher-profile.resource-type'; diff --git a/src/app/core/profile/model/researcher-profile.model.ts b/modules/core/src/lib/core/profile/model/researcher-profile.model.ts similarity index 69% rename from src/app/core/profile/model/researcher-profile.model.ts rename to modules/core/src/lib/core/profile/model/researcher-profile.model.ts index 28ffd09a7b8..af291be2566 100644 --- a/src/app/core/profile/model/researcher-profile.model.ts +++ b/modules/core/src/lib/core/profile/model/researcher-profile.model.ts @@ -8,14 +8,14 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { RemoteData } from '../../data/remote-data'; -import { HALLink } from '../../shared/hal-link.model'; -import { Item } from '../../shared/item.model'; -import { ITEM } from '../../shared/item.resource-type'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +} from '../../cache'; +import { CacheableObject } from '../../cache'; +import { RemoteData } from '../../data'; +import { HALLink } from '../../shared'; +import { Item } from '../../shared'; +import { ITEM } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { RESEARCHER_PROFILE } from './researcher-profile.resource-type'; /** diff --git a/src/app/core/profile/model/researcher-profile.resource-type.ts b/modules/core/src/lib/core/profile/model/researcher-profile.resource-type.ts similarity index 77% rename from src/app/core/profile/model/researcher-profile.resource-type.ts rename to modules/core/src/lib/core/profile/model/researcher-profile.resource-type.ts index bfed441b0d1..3138fc9bffb 100644 --- a/src/app/core/profile/model/researcher-profile.resource-type.ts +++ b/modules/core/src/lib/core/profile/model/researcher-profile.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for ResearcherProfile diff --git a/src/app/core/profile/researcher-profile-data.service.spec.ts b/modules/core/src/lib/core/profile/researcher-profile-data.service.spec.ts similarity index 97% rename from src/app/core/profile/researcher-profile-data.service.spec.ts rename to modules/core/src/lib/core/profile/researcher-profile-data.service.spec.ts index ccaa7063ddd..4bc7303496d 100644 --- a/src/app/core/profile/researcher-profile-data.service.spec.ts +++ b/modules/core/src/lib/core/profile/researcher-profile-data.service.spec.ts @@ -11,15 +11,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { RouterMock } from '../../shared/mocks/router.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { - createNoContentRemoteDataObject$, - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { createPaginatedList } from '../../shared/testing/utils.test'; -import { followLink } from '../../shared/utils/follow-link-config.model'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { RestResponse } from '../cache/response.models'; @@ -27,18 +18,28 @@ import { testCreateDataImplementation } from '../data/base/create-data.spec'; import { testDeleteDataImplementation } from '../data/base/delete-data.spec'; import { testPatchDataImplementation } from '../data/base/patch-data.spec'; import { testSearchDataImplementation } from '../data/base/search-data.spec'; +import { followLink } from '../data/follow-link-config.model'; import { buildPaginatedList } from '../data/paginated-list.model'; import { PostRequest } from '../data/request.models'; import { RequestService } from '../data/request.service'; import { RequestEntry } from '../data/request-entry.model'; import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { RouterMock } from '../mocks/router.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { ConfigurationProperty } from '../shared/configuration-property.model'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; import { PageInfo } from '../shared/page-info.model'; +import { + createNoContentRemoteDataObject$, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { ResearcherProfile } from './model/researcher-profile.model'; import { ResearcherProfileDataService } from './researcher-profile-data.service'; + describe('ResearcherProfileService', () => { let scheduler: TestScheduler; let service: ResearcherProfileDataService; diff --git a/src/app/core/profile/researcher-profile-data.service.ts b/modules/core/src/lib/core/profile/researcher-profile-data.service.ts similarity index 85% rename from src/app/core/profile/researcher-profile-data.service.ts rename to modules/core/src/lib/core/profile/researcher-profile-data.service.ts index 1fd219423f2..6109421436e 100644 --- a/src/app/core/profile/researcher-profile-data.service.ts +++ b/modules/core/src/lib/core/profile/researcher-profile-data.service.ts @@ -1,6 +1,10 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Router } from '@angular/router'; +import { + hasValue, + isEmpty, +} from '@dspace/shared/utils'; import { Operation, ReplaceOperation, @@ -15,50 +19,46 @@ import { mergeMap, } from 'rxjs/operators'; -import { - hasValue, - isEmpty, -} from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createFailedRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { - followLink, - FollowLinkConfig, -} from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; import { CreateData, CreateDataImpl, -} from '../data/base/create-data'; +} from '../data'; import { DeleteData, DeleteDataImpl, -} from '../data/base/delete-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +} from '../data'; +import { IdentifiableDataService } from '../data'; import { PatchData, PatchDataImpl, -} from '../data/base/patch-data'; +} from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { DefaultChangeAnalyzer } from '../data/default-change-analyzer.service'; -import { FindListOptions } from '../data/find-list-options.model'; -import { ItemDataService } from '../data/item-data.service'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { PostRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RestRequestMethod } from '../data/rest-request-method'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { Item } from '../shared/item.model'; -import { NoContent } from '../shared/NoContent.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { ResearcherProfile } from './model/researcher-profile.model'; +} from '../data'; +import { DefaultChangeAnalyzer } from '../data'; +import { FindListOptions } from '../data'; +import { + followLink, + FollowLinkConfig, +} from '../data'; +import { ItemDataService } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { PostRequest } from '../data'; +import { RequestService } from '../data'; +import { RestRequestMethod } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { Item } from '../shared'; +import { NoContent } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { createFailedRemoteDataObject$ } from '../utilities'; +import { ResearcherProfile } from './model'; /** * A service that provides methods to make REST requests with researcher profile endpoint. diff --git a/modules/core/src/lib/core/provide-core.ts b/modules/core/src/lib/core/provide-core.ts new file mode 100644 index 00000000000..5959b9a39ba --- /dev/null +++ b/modules/core/src/lib/core/provide-core.ts @@ -0,0 +1,192 @@ +import { HttpClient } from '@angular/common/http'; +import { + inject, + makeEnvironmentProviders, +} from '@angular/core'; + +import { Itemfilter } from './data'; +import { LdnService } from './data'; +import { AccessStatusObject } from './access-status'; +import { Subscription } from './subscription'; +import { SubmissionCoarNotifyConfig } from './coar-notify'; +import { AuthStatus } from './auth'; +import { ShortLivedToken } from './auth'; +import { APP_CONFIG } from './config'; +import { BulkAccessConditionOptions } from './config'; +import { SubmissionAccessesModel } from './config'; +import { SubmissionDefinitionsModel } from './config'; +import { SubmissionFormsModel } from './config'; +import { SubmissionSectionModel } from './config'; +import { SubmissionUploadsModel } from './config'; +import { IdentifierData } from './data'; +import { Root } from './data'; +import { DspaceRestService } from './dspace-rest'; +import { EPerson } from './eperson'; +import { Group } from './eperson'; +import { MetadataField } from './metadata'; +import { MetadataSchema } from './metadata'; + +import { QualityAssuranceEventObject } from './notifications'; +import { QualityAssuranceSourceObject } from './notifications'; +import { QualityAssuranceTopicObject } from './notifications'; +import { SuggestionSource } from './notifications'; +import { SuggestionTarget } from './notifications'; +import { NotifyRequestsStatus } from './notify-requests'; +import { OrcidHistory } from './orcid'; +import { OrcidQueue } from './orcid'; +import { Process } from './processes'; +import { ResearcherProfile } from './profile'; +import { ResourcePolicy } from './resource-policy'; +import { Script } from './scripts'; +import { Authorization } from './shared'; +import { Bitstream } from './shared'; +import { BitstreamFormat } from './shared'; +import { BrowseDefinition } from './shared'; +import { BrowseEntry } from './shared'; +import { Bundle } from './shared'; +import { Collection } from './shared'; +import { Community } from './shared'; +import { ConfigurationProperty } from './shared'; +import { DSpaceObject } from './shared'; +import { ExternalSource } from './shared'; +import { ExternalSourceEntry } from './shared'; +import { Feature } from './shared'; +import { FlatBrowseDefinition } from './shared'; +import { HierarchicalBrowseDefinition } from './shared'; +import { Item } from './shared'; +import { ItemType } from './shared'; +import { Relationship } from './shared'; +import { RelationshipType } from './shared'; +import { ItemRequest } from './shared'; +import { License } from './shared'; +import { NonHierarchicalBrowseDefinition } from './shared'; +import { Registration } from './shared'; +import { SearchConfig } from './shared'; +import { Site } from './shared'; +import { TemplateItem } from './shared'; +import { ValueListBrowseDefinition } from './shared'; +import { Version } from './shared'; +import { VersionHistory } from './shared'; +import { UsageReport } from './statistics'; +import { SubmissionCcLicence } from './submission'; +import { SubmissionCcLicenceUrl } from './submission'; +import { WorkflowItem } from './submission'; +import { WorkspaceItem } from './submission'; +import { Vocabulary } from './submission'; +import { VocabularyEntry } from './submission'; +import { VocabularyEntryDetail } from './submission'; +import { SystemWideAlert } from './system-wide-alert'; +import { AdvancedWorkflowInfo } from './tasks'; +import { ClaimedTask } from './tasks'; +import { PoolTask } from './tasks'; +import { RatingAdvancedWorkflowInfo } from './tasks'; +import { SelectReviewerAdvancedWorkflowInfo } from './tasks'; +import { TaskObject } from './tasks'; +import { WorkflowAction } from './tasks'; +import { MOCK_RESPONSE_MAP, ResponseMapMock } from "./mocks/response-map.mock"; +import { EndpointMockingRestService } from "./mocks/endpoint-mocking-rest.service"; + + +export const provideCore = () => { + return makeEnvironmentProviders([ + { provide: DspaceRestService, useFactory: restServiceFactory, deps: [MOCK_RESPONSE_MAP, HttpClient] }, + ]); +}; + +/** + * When not in production, endpoint responses can be mocked for testing purposes + * If there is no mock version available for the endpoint, the actual REST response will be used just like in production mode + */ +export const restServiceFactory = (mocks: ResponseMapMock, http: HttpClient) => { + if (inject(APP_CONFIG).production) { + return new DspaceRestService(http); + } else { + return new EndpointMockingRestService(mocks, http); + } +}; + +/** + * Declaration needed to make sure all decorator functions are called in time + */ +export const models = + [ + Root, + DSpaceObject, + Bundle, + Bitstream, + BitstreamFormat, + Item, + Site, + Collection, + Community, + EPerson, + Group, + ResourcePolicy, + MetadataSchema, + MetadataField, + License, + WorkflowItem, + WorkspaceItem, + SubmissionCcLicence, + SubmissionCcLicenceUrl, + SubmissionDefinitionsModel, + SubmissionFormsModel, + SubmissionSectionModel, + SubmissionUploadsModel, + AuthStatus, + BrowseEntry, + BrowseDefinition, + NonHierarchicalBrowseDefinition, + FlatBrowseDefinition, + ValueListBrowseDefinition, + HierarchicalBrowseDefinition, + ClaimedTask, + TaskObject, + PoolTask, + Relationship, + RelationshipType, + ItemType, + ExternalSource, + ExternalSourceEntry, + Script, + Process, + Version, + VersionHistory, + WorkflowAction, + AdvancedWorkflowInfo, + RatingAdvancedWorkflowInfo, + SelectReviewerAdvancedWorkflowInfo, + TemplateItem, + Feature, + Authorization, + Registration, + Vocabulary, + VocabularyEntry, + VocabularyEntryDetail, + ConfigurationProperty, + ShortLivedToken, + Registration, + UsageReport, + QualityAssuranceTopicObject, + QualityAssuranceEventObject, + Root, + SearchConfig, + SubmissionAccessesModel, + QualityAssuranceSourceObject, + AccessStatusObject, + ResearcherProfile, + OrcidQueue, + OrcidHistory, + AccessStatusObject, + IdentifierData, + Subscription, + ItemRequest, + BulkAccessConditionOptions, + SuggestionTarget, + SuggestionSource, + LdnService, + Itemfilter, + SubmissionCoarNotifyConfig, + NotifyRequestsStatus, + SystemWideAlert, + ]; diff --git a/modules/core/src/lib/core/registry/index.ts b/modules/core/src/lib/core/registry/index.ts new file mode 100644 index 00000000000..d1456e37b2f --- /dev/null +++ b/modules/core/src/lib/core/registry/index.ts @@ -0,0 +1,2 @@ + +export * from './registry.service'; diff --git a/src/app/core/registry/registry.service.spec.ts b/modules/core/src/lib/core/registry/registry.service.spec.ts similarity index 96% rename from src/app/core/registry/registry.service.spec.ts rename to modules/core/src/lib/core/registry/registry.service.spec.ts index 9bac2af51d1..bbd70a2e147 100644 --- a/src/app/core/registry/registry.service.spec.ts +++ b/modules/core/src/lib/core/registry/registry.service.spec.ts @@ -11,6 +11,14 @@ import { of as observableOf, } from 'rxjs'; +import { FindListOptions } from '../data/find-list-options.model'; +import { MetadataFieldDataService } from '../data/metadata-field-data.service'; +import { MetadataSchemaDataService } from '../data/metadata-schema-data.service'; +import { RemoteData } from '../data/remote-data'; +import { MetadataField } from '../metadata/metadata-field.model'; +import { MetadataSchema } from '../metadata/metadata-schema.model'; +import { NotificationsService } from '../notifications/notifications.service'; +import { NoContent } from '../shared/NoContent.model'; import { MetadataRegistryCancelFieldAction, MetadataRegistryCancelSchemaAction, @@ -22,29 +30,22 @@ import { MetadataRegistryEditSchemaAction, MetadataRegistrySelectFieldAction, MetadataRegistrySelectSchemaAction, -} from '../../admin/admin-registries/metadata-registry/metadata-registry.actions'; -import { storeModuleConfig } from '../../app.reducer'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; +} from '../states/metadata-registry/metadata-registry.actions'; import { createNoContentRemoteDataObject$, createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { StoreMock } from '../../shared/testing/store.mock'; -import { createPaginatedList } from '../../shared/testing/utils.test'; -import { FindListOptions } from '../data/find-list-options.model'; -import { MetadataFieldDataService } from '../data/metadata-field-data.service'; -import { MetadataSchemaDataService } from '../data/metadata-schema-data.service'; -import { RemoteData } from '../data/remote-data'; -import { MetadataField } from '../metadata/metadata-field.model'; -import { MetadataSchema } from '../metadata/metadata-schema.model'; -import { NoContent } from '../shared/NoContent.model'; +} from '../utilities/remote-data.utils'; +import { mockStoreModuleConfig } from '../utilities/testing/mock-state-utilities'; +import { NotificationsServiceStub } from '../utilities/testing/notifications-service.stub'; +import { StoreMock } from '../utilities/testing/store.mock'; +import { createPaginatedList } from '../utilities/testing/utils.test'; import { RegistryService } from './registry.service'; + @Component({ template: '', standalone: true, - imports: [CommonModule], + imports: [], }) class DummyComponent { } @@ -158,7 +159,7 @@ describe('RegistryService', () => { beforeEach(() => { init(); TestBed.configureTestingModule({ - imports: [CommonModule, StoreModule.forRoot({}, storeModuleConfig), TranslateModule.forRoot(), DummyComponent, + imports: [CommonModule, StoreModule.forRoot({}, mockStoreModuleConfig), TranslateModule.forRoot(), DummyComponent, ], providers: [ { provide: Store, useClass: StoreMock }, diff --git a/src/app/core/registry/registry.service.ts b/modules/core/src/lib/core/registry/registry.service.ts similarity index 91% rename from src/app/core/registry/registry.service.ts rename to modules/core/src/lib/core/registry/registry.service.ts index d4a272570bf..bfda6b5733c 100644 --- a/src/app/core/registry/registry.service.ts +++ b/modules/core/src/lib/core/registry/registry.service.ts @@ -1,4 +1,9 @@ import { Injectable } from '@angular/core'; +import { + hasValue, + hasValueOperator, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { createSelector, select, @@ -26,28 +31,23 @@ import { MetadataRegistryEditSchemaAction, MetadataRegistrySelectFieldAction, MetadataRegistrySelectSchemaAction, -} from '../../admin/admin-registries/metadata-registry/metadata-registry.actions'; -import { MetadataRegistryState } from '../../admin/admin-registries/metadata-registry/metadata-registry.reducers'; -import { AppState } from '../../app.reducer'; -import { - hasValue, - hasValueOperator, - isNotEmptyOperator, -} from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RequestParam } from '../cache/models/request-param.model'; -import { FindListOptions } from '../data/find-list-options.model'; -import { MetadataFieldDataService } from '../data/metadata-field-data.service'; -import { MetadataSchemaDataService } from '../data/metadata-schema-data.service'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { MetadataField } from '../metadata/metadata-field.model'; -import { MetadataSchema } from '../metadata/metadata-schema.model'; -import { NoContent } from '../shared/NoContent.model'; -import { getFirstSucceededRemoteDataPayload } from '../shared/operators'; +} from '../states'; +import { MetadataRegistryState } from '../states'; +import { RequestParam } from '../cache'; +import { CoreState } from '../core-state.model'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { MetadataFieldDataService } from '../data'; +import { MetadataSchemaDataService } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { MetadataField } from '../metadata'; +import { MetadataSchema } from '../metadata'; +import { NotificationsService } from '../notifications'; +import { NoContent } from '../shared'; +import { getFirstSucceededRemoteDataPayload } from '../shared'; -const metadataRegistryStateSelector = (state: AppState) => state.metadataRegistry; +const metadataRegistryStateSelector = (state: any) => state.core.metadataRegistry; const editMetadataSchemaSelector = createSelector(metadataRegistryStateSelector, (metadataState: MetadataRegistryState) => metadataState.editSchema); const selectedMetadataSchemasSelector = createSelector(metadataRegistryStateSelector, (metadataState: MetadataRegistryState) => metadataState.selectedSchemas); const editMetadataFieldSelector = createSelector(metadataRegistryStateSelector, (metadataState: MetadataRegistryState) => metadataState.editField); @@ -59,7 +59,7 @@ const selectedMetadataFieldsSelector = createSelector(metadataRegistryStateSelec @Injectable({ providedIn: 'root' }) export class RegistryService { - constructor(private store: Store, + constructor(private store: Store, private notificationsService: NotificationsService, private translateService: TranslateService, private metadataSchemaService: MetadataSchemaDataService, diff --git a/modules/core/src/lib/core/reload/index.ts b/modules/core/src/lib/core/reload/index.ts new file mode 100644 index 00000000000..bdd20d00127 --- /dev/null +++ b/modules/core/src/lib/core/reload/index.ts @@ -0,0 +1,2 @@ + +export * from './reload.guard'; diff --git a/src/app/core/reload/reload.guard.spec.ts b/modules/core/src/lib/core/reload/reload.guard.spec.ts similarity index 90% rename from src/app/core/reload/reload.guard.spec.ts rename to modules/core/src/lib/core/reload/reload.guard.spec.ts index 31ac7418009..58f8e26cfc6 100644 --- a/src/app/core/reload/reload.guard.spec.ts +++ b/modules/core/src/lib/core/reload/reload.guard.spec.ts @@ -1,7 +1,7 @@ import { Router } from '@angular/router'; -import { AppConfig } from '../../../config/app-config.interface'; -import { DefaultAppConfig } from '../../../config/default-app-config'; +import { DefaultAppConfig } from '../../../../../../src/app/default-app-config'; +import { AppConfig } from '../config/app-config.interface'; import { reloadGuard } from './reload.guard'; describe('reloadGuard', () => { diff --git a/src/app/core/reload/reload.guard.ts b/modules/core/src/lib/core/reload/reload.guard.ts similarity index 85% rename from src/app/core/reload/reload.guard.ts rename to modules/core/src/lib/core/reload/reload.guard.ts index 4e6b1f21a57..10a3a8d5eee 100644 --- a/src/app/core/reload/reload.guard.ts +++ b/modules/core/src/lib/core/reload/reload.guard.ts @@ -6,13 +6,13 @@ import { RouterStateSnapshot, UrlTree, } from '@angular/router'; +import { isNotEmpty } from '@dspace/shared/utils'; import { APP_CONFIG, AppConfig, -} from '../../../config/app-config.interface'; -import { HOME_PAGE_PATH } from '../../app-routing-paths'; -import { isNotEmpty } from '../../shared/empty.util'; +} from '../config'; +import { HOME_PAGE_PATH } from '../router'; /** * A guard redirecting the user to the URL provided in the route's query params diff --git a/modules/core/src/lib/core/request-copy/index.ts b/modules/core/src/lib/core/request-copy/index.ts new file mode 100644 index 00000000000..808b87bd325 --- /dev/null +++ b/modules/core/src/lib/core/request-copy/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './request-copy-email.model'; diff --git a/src/app/request-copy/email-request-copy/request-copy-email.model.ts b/modules/core/src/lib/core/request-copy/request-copy-email.model.ts similarity index 100% rename from src/app/request-copy/email-request-copy/request-copy-email.model.ts rename to modules/core/src/lib/core/request-copy/request-copy-email.model.ts diff --git a/modules/core/src/lib/core/resolving/index.ts b/modules/core/src/lib/core/resolving/index.ts new file mode 100644 index 00000000000..f11ef6869e5 --- /dev/null +++ b/modules/core/src/lib/core/resolving/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './resolver.actions'; diff --git a/src/app/core/resolving/resolver.actions.ts b/modules/core/src/lib/core/resolving/resolver.actions.ts similarity index 84% rename from src/app/core/resolving/resolver.actions.ts rename to modules/core/src/lib/core/resolving/resolver.actions.ts index 66f075be7c2..05914751f0f 100644 --- a/src/app/core/resolving/resolver.actions.ts +++ b/modules/core/src/lib/core/resolving/resolver.actions.ts @@ -1,7 +1,7 @@ import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; -import { DSpaceObject } from '../shared/dspace-object.model'; +import { DSpaceObject } from '../shared'; +import { type } from '../shared'; export const ResolverActionTypes = { RESOLVED: type('dspace/resolver/RESOLVED'), diff --git a/modules/core/src/lib/core/resource-policy/index.ts b/modules/core/src/lib/core/resource-policy/index.ts new file mode 100644 index 00000000000..ddae84c650a --- /dev/null +++ b/modules/core/src/lib/core/resource-policy/index.ts @@ -0,0 +1,3 @@ + +export * from './models'; +export * from './resource-policy-data.service'; diff --git a/src/app/core/resource-policy/models/action-type.model.ts b/modules/core/src/lib/core/resource-policy/models/action-type.model.ts similarity index 100% rename from src/app/core/resource-policy/models/action-type.model.ts rename to modules/core/src/lib/core/resource-policy/models/action-type.model.ts diff --git a/modules/core/src/lib/core/resource-policy/models/index.ts b/modules/core/src/lib/core/resource-policy/models/index.ts new file mode 100644 index 00000000000..40a28761b08 --- /dev/null +++ b/modules/core/src/lib/core/resource-policy/models/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './action-type.model'; +export * from './policy-type.model'; +export * from './resource-policy.model'; +export * from './resource-policy.resource-type'; diff --git a/src/app/core/resource-policy/models/policy-type.model.ts b/modules/core/src/lib/core/resource-policy/models/policy-type.model.ts similarity index 100% rename from src/app/core/resource-policy/models/policy-type.model.ts rename to modules/core/src/lib/core/resource-policy/models/policy-type.model.ts diff --git a/src/app/core/resource-policy/models/resource-policy.model.ts b/modules/core/src/lib/core/resource-policy/models/resource-policy.model.ts similarity index 75% rename from src/app/core/resource-policy/models/resource-policy.model.ts rename to modules/core/src/lib/core/resource-policy/models/resource-policy.model.ts index 669844690bc..a7da1619539 100644 --- a/src/app/core/resource-policy/models/resource-policy.model.ts +++ b/modules/core/src/lib/core/resource-policy/models/resource-policy.model.ts @@ -8,17 +8,17 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer'; -import { RemoteData } from '../../data/remote-data'; -import { EPerson } from '../../eperson/models/eperson.model'; -import { EPERSON } from '../../eperson/models/eperson.resource-type'; -import { Group } from '../../eperson/models/group.model'; -import { GROUP } from '../../eperson/models/group.resource-type'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +} from '../../cache'; +import { CacheableObject } from '../../cache'; +import { IDToUUIDSerializer } from '../../cache'; +import { RemoteData } from '../../data'; +import { EPerson } from '../../eperson'; +import { EPERSON } from '../../eperson'; +import { Group } from '../../eperson'; +import { GROUP } from '../../eperson'; +import { HALLink } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { ActionType } from './action-type.model'; import { PolicyType } from './policy-type.model'; import { RESOURCE_POLICY } from './resource-policy.resource-type'; diff --git a/src/app/core/resource-policy/models/resource-policy.resource-type.ts b/modules/core/src/lib/core/resource-policy/models/resource-policy.resource-type.ts similarity index 77% rename from src/app/core/resource-policy/models/resource-policy.resource-type.ts rename to modules/core/src/lib/core/resource-policy/models/resource-policy.resource-type.ts index d8ff3b94856..9aacefaeb47 100644 --- a/src/app/core/resource-policy/models/resource-policy.resource-type.ts +++ b/modules/core/src/lib/core/resource-policy/models/resource-policy.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for ResourcePolicy diff --git a/src/app/core/resource-policy/resource-policy-data.service.spec.ts b/modules/core/src/lib/core/resource-policy/resource-policy-data.service.spec.ts similarity index 98% rename from src/app/core/resource-policy/resource-policy-data.service.spec.ts rename to modules/core/src/lib/core/resource-policy/resource-policy-data.service.spec.ts index 1af36c12548..4328181572c 100644 --- a/src/app/core/resource-policy/resource-policy-data.service.spec.ts +++ b/modules/core/src/lib/core/resource-policy/resource-policy-data.service.spec.ts @@ -6,9 +6,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; -import { ObjectCacheServiceStub } from '../../shared/testing/object-cache-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RequestParam } from '../cache/models/request-param.model'; import { ObjectCacheService } from '../cache/object-cache.service'; @@ -20,8 +17,11 @@ import { RequestEntry } from '../data/request-entry.model'; import { RestRequestMethod } from '../data/rest-request-method'; import { EPersonDataService } from '../eperson/eperson-data.service'; import { GroupDataService } from '../eperson/group-data.service'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { PageInfo } from '../shared/page-info.model'; +import { createSuccessfulRemoteDataObject } from '../utilities/remote-data.utils'; +import { ObjectCacheServiceStub } from '../utilities/testing/object-cache-service.stub'; import { ActionType } from './models/action-type.model'; import { PolicyType } from './models/policy-type.model'; import { ResourcePolicyDataService } from './resource-policy-data.service'; diff --git a/src/app/core/resource-policy/resource-policy-data.service.ts b/modules/core/src/lib/core/resource-policy/resource-policy-data.service.ts similarity index 83% rename from src/app/core/resource-policy/resource-policy-data.service.ts rename to modules/core/src/lib/core/resource-policy/resource-policy-data.service.ts index e0f32809f03..0f9b11623e8 100644 --- a/src/app/core/resource-policy/resource-policy-data.service.ts +++ b/modules/core/src/lib/core/resource-policy/resource-policy-data.service.ts @@ -1,40 +1,40 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { first, map, } from 'rxjs/operators'; -import { isNotEmpty } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { CreateDataImpl } from '../data/base/create-data'; -import { DeleteDataImpl } from '../data/base/delete-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { PatchDataImpl } from '../data/base/patch-data'; -import { SearchDataImpl } from '../data/base/search-data'; -import { DefaultChangeAnalyzer } from '../data/default-change-analyzer.service'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { ResponseParsingService } from '../data/parsing.service'; -import { RemoteData } from '../data/remote-data'; -import { PutRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { StatusCodeOnlyResponseParsingService } from '../data/status-code-only-response-parsing.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { EPersonDataService } from '../eperson/eperson-data.service'; -import { GroupDataService } from '../eperson/group-data.service'; -import { Collection } from '../shared/collection.model'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { ActionType } from './models/action-type.model'; -import { ResourcePolicy } from './models/resource-policy.model'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { CreateDataImpl } from '../data'; +import { DeleteDataImpl } from '../data'; +import { IdentifiableDataService } from '../data'; +import { PatchDataImpl } from '../data'; +import { SearchDataImpl } from '../data'; +import { DefaultChangeAnalyzer } from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { ResponseParsingService } from '../data'; +import { RemoteData } from '../data'; +import { PutRequest } from '../data'; +import { RequestService } from '../data'; +import { StatusCodeOnlyResponseParsingService } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { EPersonDataService } from '../eperson'; +import { GroupDataService } from '../eperson'; +import { NotificationsService } from '../notifications'; +import { Collection } from '../shared'; +import { GenericConstructor } from '../shared'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { ActionType } from './models'; +import { ResourcePolicy } from './models'; /** * A service responsible for fetching/sending data from/to the REST API on the resourcepolicies endpoint diff --git a/src/app/core/rest-property/forgot-password-check-guard.guard.ts b/modules/core/src/lib/core/rest-property/forgot-password-check-guard.guard.ts similarity index 59% rename from src/app/core/rest-property/forgot-password-check-guard.guard.ts rename to modules/core/src/lib/core/rest-property/forgot-password-check-guard.guard.ts index 49727dda116..3ab6ea7a748 100644 --- a/src/app/core/rest-property/forgot-password-check-guard.guard.ts +++ b/modules/core/src/lib/core/rest-property/forgot-password-check-guard.guard.ts @@ -1,8 +1,8 @@ import { CanActivateFn } from '@angular/router'; import { of as observableOf } from 'rxjs'; -import { singleFeatureAuthorizationGuard } from '../data/feature-authorization/feature-authorization-guard/single-feature-authorization.guard'; -import { FeatureID } from '../data/feature-authorization/feature-id'; +import { singleFeatureAuthorizationGuard } from '../data'; +import { FeatureID } from '../data'; /** * Guard that checks if the forgot-password feature is enabled diff --git a/modules/core/src/lib/core/rest-property/index.ts b/modules/core/src/lib/core/rest-property/index.ts new file mode 100644 index 00000000000..584e68199d8 --- /dev/null +++ b/modules/core/src/lib/core/rest-property/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './forgot-password-check-guard.guard'; diff --git a/modules/core/src/lib/core/roles/index.ts b/modules/core/src/lib/core/roles/index.ts new file mode 100644 index 00000000000..185b9c1aefe --- /dev/null +++ b/modules/core/src/lib/core/roles/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './role-types'; +export * from './role.service'; diff --git a/src/app/core/roles/role-types.ts b/modules/core/src/lib/core/roles/role-types.ts similarity index 100% rename from src/app/core/roles/role-types.ts rename to modules/core/src/lib/core/roles/role-types.ts diff --git a/src/app/core/roles/role.service.ts b/modules/core/src/lib/core/roles/role.service.ts similarity index 95% rename from src/app/core/roles/role.service.ts rename to modules/core/src/lib/core/roles/role.service.ts index 74f318222aa..b6a06794acd 100644 --- a/src/app/core/roles/role.service.ts +++ b/modules/core/src/lib/core/roles/role.service.ts @@ -5,7 +5,7 @@ import { } from 'rxjs'; import { distinctUntilChanged } from 'rxjs/operators'; -import { CollectionDataService } from '../data/collection-data.service'; +import { CollectionDataService } from '../data'; import { RoleType } from './role-types'; /** diff --git a/modules/core/src/lib/core/router/index.ts b/modules/core/src/lib/core/router/index.ts new file mode 100644 index 00000000000..d0b31967d88 --- /dev/null +++ b/modules/core/src/lib/core/router/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './utils'; +export * from './router.actions'; +export * from './router.effects'; diff --git a/src/app/core/router/router.actions.ts b/modules/core/src/lib/core/router/router.actions.ts similarity index 92% rename from src/app/core/router/router.actions.ts rename to modules/core/src/lib/core/router/router.actions.ts index e251895f39c..b14488170d3 100644 --- a/src/app/core/router/router.actions.ts +++ b/modules/core/src/lib/core/router/router.actions.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; +import { type } from '../shared'; /** * The list of HrefIndexAction type definitions diff --git a/src/app/core/router/router.effects.ts b/modules/core/src/lib/core/router/router.effects.ts similarity index 100% rename from src/app/core/router/router.effects.ts rename to modules/core/src/lib/core/router/router.effects.ts diff --git a/modules/core/src/lib/core/router/utils/index.ts b/modules/core/src/lib/core/router/utils/index.ts new file mode 100644 index 00000000000..5e06772f49a --- /dev/null +++ b/modules/core/src/lib/core/router/utils/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './routes-utils'; diff --git a/modules/core/src/lib/core/router/utils/routes-utils.ts b/modules/core/src/lib/core/router/utils/routes-utils.ts new file mode 100644 index 00000000000..07e8236c115 --- /dev/null +++ b/modules/core/src/lib/core/router/utils/routes-utils.ts @@ -0,0 +1,59 @@ +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; + +import { Collection } from '../../shared'; +import { Community } from '../../shared'; +import { DSpaceObject } from '../../shared'; +import { Item } from '../../shared'; +import { URLCombiner } from '../../url-combiner'; + + +export const HOME_PAGE_PATH = 'home'; + +// TODO: make paths constants again! +export function getDSpaceObjectRoute(dso: DSpaceObject): string { + if (hasValue(dso)) { + switch ((dso as any).type) { + case Community.type.value: + return new URLCombiner('/communities', dso.uuid).toString(); + case Collection.type.value: + return new URLCombiner('/collections', dso.uuid).toString(); + case Item.type.value: + const type = dso.firstMetadataValue('dspace.entity.type'); + + if (isNotEmpty(type)) { + return new URLCombiner('/entities', encodeURIComponent(type.toLowerCase()), dso.uuid).toString(); + } else { + return new URLCombiner('/items', dso.uuid).toString(); + } + } + } +} + +export function getGroupEditRoute(id: string): string { + const groupsRoute = new URLCombiner('/access-control', 'groups').toString(); + return new URLCombiner(groupsRoute, id, 'edit').toString(); +} + +export function getPageInternalServerErrorRoute() { + return `/500`; +} + +export function getBitstreamDownloadRoute(bitstream): string { + return new URLCombiner('/bitstream', bitstream.uuid, 'download').toString(); +} + +export function getPageNotFoundRoute() { + return `/404`; +} + +export function getForbiddenRoute() { + return `/403`; +} + + +export function getEndUserAgreementPath() { + return '/info/end-user-agreement'; +} diff --git a/modules/core/src/lib/core/scripts/index.ts b/modules/core/src/lib/core/scripts/index.ts new file mode 100644 index 00000000000..06222d50f99 --- /dev/null +++ b/modules/core/src/lib/core/scripts/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './script-parameter-type.model'; +export * from './script-parameter.model'; +export * from './script.model'; +export * from './script.resource-type'; diff --git a/src/app/process-page/scripts/script-parameter-type.model.ts b/modules/core/src/lib/core/scripts/script-parameter-type.model.ts similarity index 100% rename from src/app/process-page/scripts/script-parameter-type.model.ts rename to modules/core/src/lib/core/scripts/script-parameter-type.model.ts diff --git a/src/app/process-page/scripts/script-parameter.model.ts b/modules/core/src/lib/core/scripts/script-parameter.model.ts similarity index 100% rename from src/app/process-page/scripts/script-parameter.model.ts rename to modules/core/src/lib/core/scripts/script-parameter.model.ts diff --git a/src/app/process-page/scripts/script.model.ts b/modules/core/src/lib/core/scripts/script.model.ts similarity index 71% rename from src/app/process-page/scripts/script.model.ts rename to modules/core/src/lib/core/scripts/script.model.ts index 3cd934336af..caef362f024 100644 --- a/src/app/process-page/scripts/script.model.ts +++ b/modules/core/src/lib/core/scripts/script.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../core/cache/cacheable-object.model'; -import { HALLink } from '../../core/shared/hal-link.model'; -import { ResourceType } from '../../core/shared/resource-type'; -import { excludeFromEquals } from '../../core/utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { HALLink } from '../shared'; +import { ResourceType } from '../shared'; +import { excludeFromEquals } from '../utilities'; import { SCRIPT } from './script.resource-type'; import { ScriptParameter } from './script-parameter.model'; diff --git a/src/app/process-page/scripts/script.resource-type.ts b/modules/core/src/lib/core/scripts/script.resource-type.ts similarity index 73% rename from src/app/process-page/scripts/script.resource-type.ts rename to modules/core/src/lib/core/scripts/script.resource-type.ts index 2b8c106191a..c3c42da7a31 100644 --- a/src/app/process-page/scripts/script.resource-type.ts +++ b/modules/core/src/lib/core/scripts/script.resource-type.ts @@ -4,6 +4,6 @@ * Needs to be in a separate file to prevent circular * dependencies in webpack. */ -import { ResourceType } from '../../core/shared/resource-type'; +import { ResourceType } from '../shared'; export const SCRIPT = new ResourceType('script'); diff --git a/src/app/core/serializer.ts b/modules/core/src/lib/core/serializer.ts similarity index 100% rename from src/app/core/serializer.ts rename to modules/core/src/lib/core/serializer.ts diff --git a/modules/core/src/lib/core/server-check/index.ts b/modules/core/src/lib/core/server-check/index.ts new file mode 100644 index 00000000000..71297b4efd1 --- /dev/null +++ b/modules/core/src/lib/core/server-check/index.ts @@ -0,0 +1,2 @@ + +export * from './server-check.guard'; diff --git a/src/app/core/server-check/server-check.guard.spec.ts b/modules/core/src/lib/core/server-check/server-check.guard.spec.ts similarity index 100% rename from src/app/core/server-check/server-check.guard.spec.ts rename to modules/core/src/lib/core/server-check/server-check.guard.spec.ts index e89b16eedcd..0078f20b235 100644 --- a/src/app/core/server-check/server-check.guard.spec.ts +++ b/modules/core/src/lib/core/server-check/server-check.guard.spec.ts @@ -11,9 +11,9 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; +import SpyObj = jasmine.SpyObj; import { RootDataService } from '../data/root-data.service'; import { ServerCheckGuard } from './server-check.guard'; -import SpyObj = jasmine.SpyObj; describe('ServerCheckGuard', () => { let guard: any; diff --git a/src/app/core/server-check/server-check.guard.ts b/modules/core/src/lib/core/server-check/server-check.guard.ts similarity index 85% rename from src/app/core/server-check/server-check.guard.ts rename to modules/core/src/lib/core/server-check/server-check.guard.ts index 6d4a81b7b55..11c70c1a0eb 100644 --- a/src/app/core/server-check/server-check.guard.ts +++ b/modules/core/src/lib/core/server-check/server-check.guard.ts @@ -12,8 +12,8 @@ import { take, } from 'rxjs/operators'; -import { getPageInternalServerErrorRoute } from '../../app-routing-paths'; -import { RootDataService } from '../data/root-data.service'; +import { RootDataService } from '../data'; +import { getPageInternalServerErrorRoute } from '../router'; /** * A guard that checks if root api endpoint is reachable. diff --git a/src/app/core/services/browser-hard-redirect.service.spec.ts b/modules/core/src/lib/core/services/browser-hard-redirect.service.spec.ts similarity index 100% rename from src/app/core/services/browser-hard-redirect.service.spec.ts rename to modules/core/src/lib/core/services/browser-hard-redirect.service.spec.ts diff --git a/src/app/core/services/browser-hard-redirect.service.ts b/modules/core/src/lib/core/services/browser-hard-redirect.service.ts similarity index 100% rename from src/app/core/services/browser-hard-redirect.service.ts rename to modules/core/src/lib/core/services/browser-hard-redirect.service.ts diff --git a/src/app/core/services/browser.referrer.service.spec.ts b/modules/core/src/lib/core/services/browser.referrer.service.spec.ts similarity index 99% rename from src/app/core/services/browser.referrer.service.spec.ts rename to modules/core/src/lib/core/services/browser.referrer.service.spec.ts index 90ce43c995b..0edab7d743c 100644 --- a/src/app/core/services/browser.referrer.service.spec.ts +++ b/modules/core/src/lib/core/services/browser.referrer.service.spec.ts @@ -3,6 +3,8 @@ import { of as observableOf } from 'rxjs'; import { BrowserReferrerService } from './browser.referrer.service'; import { RouteService } from './route.service'; + + describe(`BrowserReferrerService`, () => { let service: BrowserReferrerService; const documentReferrer = 'https://www.referrer.com'; diff --git a/src/app/core/services/browser.referrer.service.ts b/modules/core/src/lib/core/services/browser.referrer.service.ts similarity index 94% rename from src/app/core/services/browser.referrer.service.ts rename to modules/core/src/lib/core/services/browser.referrer.service.ts index fd2d3d5efd3..4058355e5f0 100644 --- a/src/app/core/services/browser.referrer.service.ts +++ b/modules/core/src/lib/core/services/browser.referrer.service.ts @@ -3,11 +3,11 @@ import { Inject, Injectable, } from '@angular/core'; +import { hasNoValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { hasNoValue } from '../../shared/empty.util'; -import { URLCombiner } from '../url-combiner/url-combiner'; +import { URLCombiner } from '../url-combiner'; import { HardRedirectService } from './hard-redirect.service'; import { ReferrerService } from './referrer.service'; import { RouteService } from './route.service'; diff --git a/src/app/core/services/client-cookie.service.ts b/modules/core/src/lib/core/services/client-cookie.service.ts similarity index 100% rename from src/app/core/services/client-cookie.service.ts rename to modules/core/src/lib/core/services/client-cookie.service.ts diff --git a/src/app/core/services/cookie.service.spec.ts b/modules/core/src/lib/core/services/cookie.service.spec.ts similarity index 92% rename from src/app/core/services/cookie.service.spec.ts rename to modules/core/src/lib/core/services/cookie.service.spec.ts index 5511ee53e1c..335e3e370e9 100644 --- a/src/app/core/services/cookie.service.spec.ts +++ b/modules/core/src/lib/core/services/cookie.service.spec.ts @@ -3,7 +3,7 @@ import { waitForAsync, } from '@angular/core/testing'; -import { REQUEST } from '../../../express.tokens'; +import { REQUEST } from '../tokens/express.tokens'; import { CookieService, ICookieService, diff --git a/src/app/core/services/cookie.service.ts b/modules/core/src/lib/core/services/cookie.service.ts similarity index 95% rename from src/app/core/services/cookie.service.ts rename to modules/core/src/lib/core/services/cookie.service.ts index 074cfbf02b3..7b19b98b7a9 100644 --- a/src/app/core/services/cookie.service.ts +++ b/modules/core/src/lib/core/services/cookie.service.ts @@ -8,7 +8,7 @@ import { Subject, } from 'rxjs'; -import { REQUEST } from '../../../express.tokens'; +import { REQUEST } from '../tokens'; export interface ICookieService { readonly cookies$: Observable<{ readonly [key: string]: any }>; diff --git a/src/app/core/services/hard-redirect.service.ts b/modules/core/src/lib/core/services/hard-redirect.service.ts similarity index 100% rename from src/app/core/services/hard-redirect.service.ts rename to modules/core/src/lib/core/services/hard-redirect.service.ts diff --git a/modules/core/src/lib/core/services/index.ts b/modules/core/src/lib/core/services/index.ts new file mode 100644 index 00000000000..b3da904e358 --- /dev/null +++ b/modules/core/src/lib/core/services/index.ts @@ -0,0 +1,20 @@ +// created from 'create-ts-index' + +export * from './browser-hard-redirect.service'; +export * from './browser.referrer.service'; +export * from './client-cookie.service'; +export * from './cookie.service'; +export * from './hard-redirect.service'; +export * from './link-head.service'; +export * from './live-region.service'; +export * from './referrer.service'; +export * from './route.actions'; +export * from './route.effects'; +export * from './route.reducer'; +export * from './route.service'; +export * from './server-cookie.service'; +export * from './server-hard-redirect.service'; +export * from './server-response.service'; +export * from './server-xhr.service'; +export * from './server.referrer.service'; +export * from './window.service'; diff --git a/src/app/core/services/link-head.service.spec.ts b/modules/core/src/lib/core/services/link-head.service.spec.ts similarity index 99% rename from src/app/core/services/link-head.service.spec.ts rename to modules/core/src/lib/core/services/link-head.service.spec.ts index fd240db4d9d..264be67665e 100644 --- a/src/app/core/services/link-head.service.spec.ts +++ b/modules/core/src/lib/core/services/link-head.service.spec.ts @@ -11,6 +11,7 @@ import { MockProvider } from 'ng-mocks'; import { LinkHeadService } from './link-head.service'; + describe('LinkHeadService', () => { let service: LinkHeadService; diff --git a/src/app/core/services/link-head.service.ts b/modules/core/src/lib/core/services/link-head.service.ts similarity index 96% rename from src/app/core/services/link-head.service.ts rename to modules/core/src/lib/core/services/link-head.service.ts index 723f647108d..f4e820b28c4 100644 --- a/src/app/core/services/link-head.service.ts +++ b/modules/core/src/lib/core/services/link-head.service.ts @@ -23,7 +23,7 @@ export class LinkHeadService { * @param tag LinkDefition is the parameters to define a link tag. * @returns Link tag that was created */ - addTag(tag: LinkDefinition) { + addTag(tag: HeadLinkDefinition) { try { const renderer = this.rendererFactory.createRenderer(this.document, { @@ -81,7 +81,7 @@ export class LinkHeadService { } } -export declare type LinkDefinition = { +export declare type HeadLinkDefinition = { charset?: string; crossorigin?: string; href?: string; diff --git a/src/app/shared/live-region/live-region.service.ts b/modules/core/src/lib/core/services/live-region.service.ts similarity index 89% rename from src/app/shared/live-region/live-region.service.ts rename to modules/core/src/lib/core/services/live-region.service.ts index 79470240919..b9c4dcb03bd 100644 --- a/src/app/shared/live-region/live-region.service.ts +++ b/modules/core/src/lib/core/services/live-region.service.ts @@ -1,8 +1,13 @@ -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; import { BehaviorSubject } from 'rxjs'; -import { environment } from '../../../environments/environment'; -import { UUIDService } from '../../core/shared/uuid.service'; +import { APP_CONFIG } from '../config/app-config.interface'; +import { UUIDService } from '../shared/uuid.service'; + + /** * The LiveRegionService is responsible for handling the messages that are shown by the {@link LiveRegionComponent}. @@ -12,6 +17,7 @@ import { UUIDService } from '../../core/shared/uuid.service'; providedIn: 'root', }) export class LiveRegionService { + private readonly appConfig = inject(APP_CONFIG); constructor( protected uuidService: UUIDService, @@ -22,7 +28,7 @@ export class LiveRegionService { * The duration after which the messages disappear in milliseconds * @protected */ - protected messageTimeOutDurationMs: number = environment.liveRegion.messageTimeOutDurationMs; + protected messageTimeOutDurationMs: number = this.appConfig.liveRegion.messageTimeOutDurationMs; /** * Array containing the messages that should be shown in the live region, @@ -41,7 +47,7 @@ export class LiveRegionService { * Whether the live region should be visible * @protected */ - protected liveRegionIsVisible: boolean = environment.liveRegion.isVisible; + protected liveRegionIsVisible: boolean = this.appConfig.liveRegion.isVisible; /** * Returns a copy of the array with the current live region messages diff --git a/src/app/core/services/referrer.service.ts b/modules/core/src/lib/core/services/referrer.service.ts similarity index 100% rename from src/app/core/services/referrer.service.ts rename to modules/core/src/lib/core/services/referrer.service.ts diff --git a/src/app/core/services/route.actions.ts b/modules/core/src/lib/core/services/route.actions.ts similarity index 98% rename from src/app/core/services/route.actions.ts rename to modules/core/src/lib/core/services/route.actions.ts index 3f64b9dba41..0faebd4ac0d 100644 --- a/src/app/core/services/route.actions.ts +++ b/modules/core/src/lib/core/services/route.actions.ts @@ -2,7 +2,7 @@ import { Params } from '@angular/router'; import { Action } from '@ngrx/store'; -import { type } from '../../shared/ngrx/type'; +import { type } from '../shared'; /** * The list of HrefIndexAction type definitions diff --git a/src/app/core/services/route.effects.ts b/modules/core/src/lib/core/services/route.effects.ts similarity index 93% rename from src/app/core/services/route.effects.ts rename to modules/core/src/lib/core/services/route.effects.ts index b31008f3c1d..c05ffa1b7c0 100644 --- a/src/app/core/services/route.effects.ts +++ b/modules/core/src/lib/core/services/route.effects.ts @@ -9,7 +9,7 @@ import { tap, } from 'rxjs/operators'; -import { RouterActionTypes } from '../router/router.actions'; +import { RouterActionTypes } from '../router'; import { ResetRouteStateAction, RouteActionTypes, diff --git a/src/app/core/services/route.reducer.ts b/modules/core/src/lib/core/services/route.reducer.ts similarity index 98% rename from src/app/core/services/route.reducer.ts rename to modules/core/src/lib/core/services/route.reducer.ts index 60bf7a4b191..6bb20118afa 100644 --- a/src/app/core/services/route.reducer.ts +++ b/modules/core/src/lib/core/services/route.reducer.ts @@ -1,6 +1,6 @@ import { Params } from '@angular/router'; +import { isNotEmpty } from '@dspace/shared/utils'; -import { isNotEmpty } from '../../shared/empty.util'; import { AddParameterAction, AddQueryParameterAction, diff --git a/src/app/core/services/route.service.spec.ts b/modules/core/src/lib/core/services/route.service.spec.ts similarity index 98% rename from src/app/core/services/route.service.spec.ts rename to modules/core/src/lib/core/services/route.service.spec.ts index 2f69156cbc6..a2f0e8bcca3 100644 --- a/src/app/core/services/route.service.spec.ts +++ b/modules/core/src/lib/core/services/route.service.spec.ts @@ -18,11 +18,13 @@ import { of as observableOf } from 'rxjs'; import { take } from 'rxjs/operators'; import { TestScheduler } from 'rxjs/testing'; -import { RouterMock } from '../../shared/mocks/router.mock'; -import { ActivatedRouteStub } from '../../shared/testing/active-router.stub'; import { AddUrlToHistoryAction } from '../history/history.actions'; +import { RouterMock } from '../mocks/router.mock'; +import { ActivatedRouteStub } from '../utilities/testing/active-router.stub'; import { RouteService } from './route.service'; + + describe('RouteService', () => { let scheduler: TestScheduler; let service: RouteService; diff --git a/src/app/core/services/route.service.ts b/modules/core/src/lib/core/services/route.service.ts similarity index 98% rename from src/app/core/services/route.service.ts rename to modules/core/src/lib/core/services/route.service.ts index 40a5d6bb878..2da552146b9 100644 --- a/src/app/core/services/route.service.ts +++ b/modules/core/src/lib/core/services/route.service.ts @@ -6,6 +6,7 @@ import { Router, RouterStateSnapshot, } from '@angular/router'; +import { hasValue } from '@dspace/shared/utils'; import { createSelector, MemoizedSelector, @@ -24,11 +25,10 @@ import { take, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; import { coreSelector } from '../core.selectors'; import { CoreState } from '../core-state.model'; -import { AddUrlToHistoryAction } from '../history/history.actions'; -import { historySelector } from '../history/selectors'; +import { AddUrlToHistoryAction } from '../history'; +import { historySelector } from '../history'; import { AddParameterAction, SetParameterAction, diff --git a/src/app/core/services/server-cookie.service.ts b/modules/core/src/lib/core/services/server-cookie.service.ts similarity index 100% rename from src/app/core/services/server-cookie.service.ts rename to modules/core/src/lib/core/services/server-cookie.service.ts diff --git a/src/app/core/services/server-hard-redirect.service.spec.ts b/modules/core/src/lib/core/services/server-hard-redirect.service.spec.ts similarity index 100% rename from src/app/core/services/server-hard-redirect.service.spec.ts rename to modules/core/src/lib/core/services/server-hard-redirect.service.spec.ts diff --git a/src/app/core/services/server-hard-redirect.service.ts b/modules/core/src/lib/core/services/server-hard-redirect.service.ts similarity index 98% rename from src/app/core/services/server-hard-redirect.service.ts rename to modules/core/src/lib/core/services/server-hard-redirect.service.ts index e1ded1568cc..7524fdf5024 100644 --- a/src/app/core/services/server-hard-redirect.service.ts +++ b/modules/core/src/lib/core/services/server-hard-redirect.service.ts @@ -10,7 +10,7 @@ import { import { REQUEST, RESPONSE, -} from '../../../express.tokens'; +} from '../tokens'; import { HardRedirectService } from './hard-redirect.service'; /** diff --git a/src/app/core/services/server-response.service.ts b/modules/core/src/lib/core/services/server-response.service.ts similarity index 96% rename from src/app/core/services/server-response.service.ts rename to modules/core/src/lib/core/services/server-response.service.ts index 01e77b08166..1c685217c90 100644 --- a/src/app/core/services/server-response.service.ts +++ b/modules/core/src/lib/core/services/server-response.service.ts @@ -5,7 +5,7 @@ import { } from '@angular/core'; import { Response } from 'express'; -import { RESPONSE } from '../../../express.tokens'; +import { RESPONSE } from '../tokens'; /** * Service responsible to provide method to manage the response object diff --git a/src/app/core/services/server-xhr.service.ts b/modules/core/src/lib/core/services/server-xhr.service.ts similarity index 100% rename from src/app/core/services/server-xhr.service.ts rename to modules/core/src/lib/core/services/server-xhr.service.ts diff --git a/src/app/core/services/server.referrer.service.spec.ts b/modules/core/src/lib/core/services/server.referrer.service.spec.ts similarity index 100% rename from src/app/core/services/server.referrer.service.spec.ts rename to modules/core/src/lib/core/services/server.referrer.service.spec.ts diff --git a/src/app/core/services/server.referrer.service.ts b/modules/core/src/lib/core/services/server.referrer.service.ts similarity index 94% rename from src/app/core/services/server.referrer.service.ts rename to modules/core/src/lib/core/services/server.referrer.service.ts index 70b0e806c8e..f4a78886722 100644 --- a/src/app/core/services/server.referrer.service.ts +++ b/modules/core/src/lib/core/services/server.referrer.service.ts @@ -7,7 +7,7 @@ import { of as observableOf, } from 'rxjs'; -import { REQUEST } from '../../../express.tokens'; +import { REQUEST } from '../tokens'; import { ReferrerService } from './referrer.service'; /** diff --git a/src/app/core/services/window.service.ts b/modules/core/src/lib/core/services/window.service.ts similarity index 100% rename from src/app/core/services/window.service.ts rename to modules/core/src/lib/core/services/window.service.ts diff --git a/src/app/core/shared/NoContent.model.ts b/modules/core/src/lib/core/shared/NoContent.model.ts similarity index 100% rename from src/app/core/shared/NoContent.model.ts rename to modules/core/src/lib/core/shared/NoContent.model.ts diff --git a/src/app/core/shared/authorization.model.ts b/modules/core/src/lib/core/shared/authorization.model.ts similarity index 85% rename from src/app/core/shared/authorization.model.ts rename to modules/core/src/lib/core/shared/authorization.model.ts index 1712db9a078..55b28bb437b 100644 --- a/src/app/core/shared/authorization.model.ts +++ b/modules/core/src/lib/core/shared/authorization.model.ts @@ -8,10 +8,10 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { RemoteData } from '../data/remote-data'; -import { EPerson } from '../eperson/models/eperson.model'; -import { EPERSON } from '../eperson/models/eperson.resource-type'; +} from '../cache'; +import { RemoteData } from '../data'; +import { EPerson } from '../eperson'; +import { EPERSON } from '../eperson'; import { AUTHORIZATION } from './authorization.resource-type'; import { DSpaceObject } from './dspace-object.model'; import { Feature } from './feature.model'; diff --git a/src/app/core/shared/authorization.resource-type.ts b/modules/core/src/lib/core/shared/authorization.resource-type.ts similarity index 100% rename from src/app/core/shared/authorization.resource-type.ts rename to modules/core/src/lib/core/shared/authorization.resource-type.ts diff --git a/src/app/core/shared/authorized.operators.ts b/modules/core/src/lib/core/shared/authorized.operators.ts similarity index 95% rename from src/app/core/shared/authorized.operators.ts rename to modules/core/src/lib/core/shared/authorized.operators.ts index 6700011347e..2160ad6f852 100644 --- a/src/app/core/shared/authorized.operators.ts +++ b/modules/core/src/lib/core/shared/authorized.operators.ts @@ -13,13 +13,13 @@ import { withLatestFrom, } from 'rxjs/operators'; +import { AuthService } from '../auth'; +import { RemoteData } from '../data'; import { + getEndUserAgreementPath, getForbiddenRoute, getPageNotFoundRoute, -} from '../../app-routing-paths'; -import { getEndUserAgreementPath } from '../../info/info-routing-paths'; -import { AuthService } from '../auth/auth.service'; -import { RemoteData } from '../data/remote-data'; +} from '../router'; export const REDIRECT_ON_4XX = new InjectionToken<(router: Router, authService: AuthService) => (source: Observable>) => Observable>>('redirectOn4xx', { providedIn: 'root', diff --git a/src/app/core/shared/bitstream-format-support-level.ts b/modules/core/src/lib/core/shared/bitstream-format-support-level.ts similarity index 100% rename from src/app/core/shared/bitstream-format-support-level.ts rename to modules/core/src/lib/core/shared/bitstream-format-support-level.ts diff --git a/src/app/core/shared/bitstream-format.model.ts b/modules/core/src/lib/core/shared/bitstream-format.model.ts similarity index 87% rename from src/app/core/shared/bitstream-format.model.ts rename to modules/core/src/lib/core/shared/bitstream-format.model.ts index 44ba85c9745..7713ec1c24d 100644 --- a/src/app/core/shared/bitstream-format.model.ts +++ b/modules/core/src/lib/core/shared/bitstream-format.model.ts @@ -4,10 +4,10 @@ import { deserializeAs, } from 'cerialize'; -import { typedObject } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { IDToUUIDSerializer } from '../cache/id-to-uuid-serializer'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { IDToUUIDSerializer } from '../cache'; +import { excludeFromEquals } from '../utilities'; import { BITSTREAM_FORMAT } from './bitstream-format.resource-type'; import { BitstreamFormatSupportLevel } from './bitstream-format-support-level'; import { HALLink } from './hal-link.model'; diff --git a/src/app/core/shared/bitstream-format.resource-type.ts b/modules/core/src/lib/core/shared/bitstream-format.resource-type.ts similarity index 100% rename from src/app/core/shared/bitstream-format.resource-type.ts rename to modules/core/src/lib/core/shared/bitstream-format.resource-type.ts diff --git a/src/app/core/shared/bitstream.model.ts b/modules/core/src/lib/core/shared/bitstream.model.ts similarity index 95% rename from src/app/core/shared/bitstream.model.ts rename to modules/core/src/lib/core/shared/bitstream.model.ts index 73e5e04b364..3b9bea83030 100644 --- a/src/app/core/shared/bitstream.model.ts +++ b/modules/core/src/lib/core/shared/bitstream.model.ts @@ -8,8 +8,8 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { RemoteData } from '../data/remote-data'; +} from '../cache'; +import { RemoteData } from '../data'; import { BITSTREAM } from './bitstream.resource-type'; import { BitstreamFormat } from './bitstream-format.model'; import { BITSTREAM_FORMAT } from './bitstream-format.resource-type'; diff --git a/src/app/core/shared/bitstream.operators.ts b/modules/core/src/lib/core/shared/bitstream.operators.ts similarity index 76% rename from src/app/core/shared/bitstream.operators.ts rename to modules/core/src/lib/core/shared/bitstream.operators.ts index c62def49b21..ad397c4fb64 100644 --- a/src/app/core/shared/bitstream.operators.ts +++ b/modules/core/src/lib/core/shared/bitstream.operators.ts @@ -1,3 +1,4 @@ +import { hasValue } from '@dspace/shared/utils'; import { Observable, of as observableOf, @@ -7,9 +8,8 @@ import { switchMap, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { AuthorizationDataService } from '../data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../data/feature-authorization/feature-id'; +import { AuthorizationDataService } from '../data'; +import { FeatureID } from '../data'; import { Bitstream } from './bitstream.model'; /** diff --git a/src/app/core/shared/bitstream.resource-type.ts b/modules/core/src/lib/core/shared/bitstream.resource-type.ts similarity index 100% rename from src/app/core/shared/bitstream.resource-type.ts rename to modules/core/src/lib/core/shared/bitstream.resource-type.ts diff --git a/src/app/browse-by/browse-by-switcher/browse-by-data-type.ts b/modules/core/src/lib/core/shared/browse-by-data-type.ts similarity index 100% rename from src/app/browse-by/browse-by-switcher/browse-by-data-type.ts rename to modules/core/src/lib/core/shared/browse-by-data-type.ts diff --git a/src/app/core/shared/browse-definition.model.ts b/modules/core/src/lib/core/shared/browse-definition.model.ts similarity index 71% rename from src/app/core/shared/browse-definition.model.ts rename to modules/core/src/lib/core/shared/browse-definition.model.ts index 5fe5d02ecb4..fea523f3c9d 100644 --- a/src/app/core/shared/browse-definition.model.ts +++ b/modules/core/src/lib/core/shared/browse-definition.model.ts @@ -3,8 +3,8 @@ import { autoserializeAs, } from 'cerialize'; -import { BrowseByDataType } from '../../browse-by/browse-by-switcher/browse-by-data-type'; -import { CacheableObject } from '../cache/cacheable-object.model'; +import { BrowseByDataType } from './browse-by-data-type'; +import { CacheableObject } from '../cache'; /** * Base class for BrowseDefinition models diff --git a/src/app/core/shared/browse-definition.resource-type.ts b/modules/core/src/lib/core/shared/browse-definition.resource-type.ts similarity index 100% rename from src/app/core/shared/browse-definition.resource-type.ts rename to modules/core/src/lib/core/shared/browse-definition.resource-type.ts diff --git a/src/app/core/shared/browse-entry.model.ts b/modules/core/src/lib/core/shared/browse-entry.model.ts similarity index 83% rename from src/app/core/shared/browse-entry.model.ts rename to modules/core/src/lib/core/shared/browse-entry.model.ts index 746333872e6..bcc914e72cf 100644 --- a/src/app/core/shared/browse-entry.model.ts +++ b/modules/core/src/lib/core/shared/browse-entry.model.ts @@ -4,10 +4,10 @@ import { deserialize, } from 'cerialize'; -import { ListableObject } from '../../shared/object-collection/shared/listable-object.model'; -import { typedObject } from '../cache/builders/build-decorators'; -import { TypedObject } from '../cache/typed-object.model'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { TypedObject } from '../cache'; +import { ListableObject } from '../object-collection'; +import { excludeFromEquals } from '../utilities'; import { BROWSE_ENTRY } from './browse-entry.resource-type'; import { GenericConstructor } from './generic-constructor'; import { HALLink } from './hal-link.model'; diff --git a/src/app/core/shared/browse-entry.resource-type.ts b/modules/core/src/lib/core/shared/browse-entry.resource-type.ts similarity index 100% rename from src/app/core/shared/browse-entry.resource-type.ts rename to modules/core/src/lib/core/shared/browse-entry.resource-type.ts diff --git a/src/app/core/shared/bundle.model.ts b/modules/core/src/lib/core/shared/bundle.model.ts similarity index 90% rename from src/app/core/shared/bundle.model.ts rename to modules/core/src/lib/core/shared/bundle.model.ts index d9ea6d83dc9..3bb50daee7e 100644 --- a/src/app/core/shared/bundle.model.ts +++ b/modules/core/src/lib/core/shared/bundle.model.ts @@ -7,9 +7,9 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; +} from '../cache'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; import { Bitstream } from './bitstream.model'; import { BITSTREAM } from './bitstream.resource-type'; import { BUNDLE } from './bundle.resource-type'; diff --git a/src/app/core/shared/bundle.resource-type.ts b/modules/core/src/lib/core/shared/bundle.resource-type.ts similarity index 100% rename from src/app/core/shared/bundle.resource-type.ts rename to modules/core/src/lib/core/shared/bundle.resource-type.ts diff --git a/src/app/core/shared/child-hal-resource.model.ts b/modules/core/src/lib/core/shared/child-hal-resource.model.ts similarity index 100% rename from src/app/core/shared/child-hal-resource.model.ts rename to modules/core/src/lib/core/shared/child-hal-resource.model.ts diff --git a/src/app/core/shared/client-math.service.ts b/modules/core/src/lib/core/shared/client-math.service.ts similarity index 92% rename from src/app/core/shared/client-math.service.ts rename to modules/core/src/lib/core/shared/client-math.service.ts index 0630ec32461..6311011e556 100644 --- a/src/app/core/shared/client-math.service.ts +++ b/modules/core/src/lib/core/shared/client-math.service.ts @@ -1,6 +1,7 @@ import { DOCUMENT } from '@angular/common'; import { Inject, + inject, Injectable, } from '@angular/core'; import { @@ -8,12 +9,15 @@ import { Observable, Subject, } from 'rxjs'; -import { environment } from 'src/environments/environment'; +import { + APP_CONFIG, + AppConfig, +} from '../config'; import { NativeWindowRef, NativeWindowService, -} from '../services/window.service'; +} from '../services'; import { MathJaxConfig, MathService, @@ -26,6 +30,8 @@ import { * Provide the MathService for CSR */ export class ClientMathService extends MathService { + private readonly appConfig: AppConfig = inject(APP_CONFIG); + protected isReady$: Subject; @@ -72,7 +78,7 @@ export class ClientMathService extends MathService { * @param config The configuration object for the script */ protected async registerMathJaxAsync(config: MathJaxConfig): Promise { - if (environment.markdown.mathjax) { + if (this.appConfig.markdown.mathjax) { return new Promise((resolve, reject) => { const optionsScript: HTMLScriptElement = this._document.createElement('script'); @@ -107,7 +113,7 @@ export class ClientMathService extends MathService { * @param element The element to render with MathJax */ render(element: HTMLElement) { - if (environment.markdown.mathjax) { + if (this.appConfig.markdown.mathjax) { return (window as any).MathJax.typesetPromise([element]) as Promise; } } diff --git a/src/app/core/shared/collection.model.spec.ts b/modules/core/src/lib/core/shared/collection.model.spec.ts similarity index 100% rename from src/app/core/shared/collection.model.spec.ts rename to modules/core/src/lib/core/shared/collection.model.spec.ts diff --git a/src/app/core/shared/collection.model.ts b/modules/core/src/lib/core/shared/collection.model.ts similarity index 89% rename from src/app/core/shared/collection.model.ts rename to modules/core/src/lib/core/shared/collection.model.ts index b929e54ccb4..f19fdc5b24a 100644 --- a/src/app/core/shared/collection.model.ts +++ b/modules/core/src/lib/core/shared/collection.model.ts @@ -8,12 +8,12 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { ResourcePolicy } from '../resource-policy/models/resource-policy.model'; -import { RESOURCE_POLICY } from '../resource-policy/models/resource-policy.resource-type'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +} from '../cache'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { ResourcePolicy } from '../resource-policy'; +import { RESOURCE_POLICY } from '../resource-policy'; +import { excludeFromEquals } from '../utilities'; import { Bitstream } from './bitstream.model'; import { BITSTREAM } from './bitstream.resource-type'; import { ChildHALResource } from './child-hal-resource.model'; diff --git a/src/app/core/shared/collection.resource-type.ts b/modules/core/src/lib/core/shared/collection.resource-type.ts similarity index 100% rename from src/app/core/shared/collection.resource-type.ts rename to modules/core/src/lib/core/shared/collection.resource-type.ts diff --git a/src/app/core/shared/community.model.spec.ts b/modules/core/src/lib/core/shared/community.model.spec.ts similarity index 100% rename from src/app/core/shared/community.model.spec.ts rename to modules/core/src/lib/core/shared/community.model.spec.ts diff --git a/src/app/core/shared/community.model.ts b/modules/core/src/lib/core/shared/community.model.ts similarity index 93% rename from src/app/core/shared/community.model.ts rename to modules/core/src/lib/core/shared/community.model.ts index 31b00398ffb..4d9df2224c2 100644 --- a/src/app/core/shared/community.model.ts +++ b/modules/core/src/lib/core/shared/community.model.ts @@ -8,10 +8,10 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +} from '../cache'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { excludeFromEquals } from '../utilities'; import { Bitstream } from './bitstream.model'; import { BITSTREAM } from './bitstream.resource-type'; import { ChildHALResource } from './child-hal-resource.model'; diff --git a/src/app/core/shared/community.resource-type.ts b/modules/core/src/lib/core/shared/community.resource-type.ts similarity index 100% rename from src/app/core/shared/community.resource-type.ts rename to modules/core/src/lib/core/shared/community.resource-type.ts diff --git a/src/app/core/shared/confidence-type.ts b/modules/core/src/lib/core/shared/confidence-type.ts similarity index 100% rename from src/app/core/shared/confidence-type.ts rename to modules/core/src/lib/core/shared/confidence-type.ts diff --git a/src/app/core/shared/config-property.resource-type.ts b/modules/core/src/lib/core/shared/config-property.resource-type.ts similarity index 100% rename from src/app/core/shared/config-property.resource-type.ts rename to modules/core/src/lib/core/shared/config-property.resource-type.ts diff --git a/src/app/core/shared/configuration-property.model.ts b/modules/core/src/lib/core/shared/configuration-property.model.ts similarity index 82% rename from src/app/core/shared/configuration-property.model.ts rename to modules/core/src/lib/core/shared/configuration-property.model.ts index e15f8a5b859..d52572e2571 100644 --- a/src/app/core/shared/configuration-property.model.ts +++ b/modules/core/src/lib/core/shared/configuration-property.model.ts @@ -4,9 +4,9 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { excludeFromEquals } from '../utilities'; import { CONFIG_PROPERTY } from './config-property.resource-type'; import { HALLink } from './hal-link.model'; import { ResourceType } from './resource-type'; diff --git a/src/app/core/shared/content-source-set-serializer.spec.ts b/modules/core/src/lib/core/shared/content-source-set-serializer.spec.ts similarity index 100% rename from src/app/core/shared/content-source-set-serializer.spec.ts rename to modules/core/src/lib/core/shared/content-source-set-serializer.spec.ts diff --git a/src/app/core/shared/content-source-set-serializer.ts b/modules/core/src/lib/core/shared/content-source-set-serializer.ts similarity index 93% rename from src/app/core/shared/content-source-set-serializer.ts rename to modules/core/src/lib/core/shared/content-source-set-serializer.ts index ec0baec5a6a..19f2d1540a5 100644 --- a/src/app/core/shared/content-source-set-serializer.ts +++ b/modules/core/src/lib/core/shared/content-source-set-serializer.ts @@ -1,4 +1,4 @@ -import { isEmpty } from '../../shared/empty.util'; +import { isEmpty } from '@dspace/shared/utils'; /** * Serializer to create convert the 'all' value supported by the server to an empty string and vice versa. diff --git a/src/app/core/shared/content-source.model.ts b/modules/core/src/lib/core/shared/content-source.model.ts similarity index 92% rename from src/app/core/shared/content-source.model.ts rename to modules/core/src/lib/core/shared/content-source.model.ts index cfc78f223fc..fe9e9b82478 100644 --- a/src/app/core/shared/content-source.model.ts +++ b/modules/core/src/lib/core/shared/content-source.model.ts @@ -5,9 +5,9 @@ import { serializeAs, } from 'cerialize'; -import { typedObject } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { excludeFromEquals } from '../utilities'; import { CONTENT_SOURCE } from './content-source.resource-type'; import { ContentSourceSetSerializer } from './content-source-set-serializer'; import { HALLink } from './hal-link.model'; diff --git a/src/app/core/shared/content-source.resource-type.ts b/modules/core/src/lib/core/shared/content-source.resource-type.ts similarity index 100% rename from src/app/core/shared/content-source.resource-type.ts rename to modules/core/src/lib/core/shared/content-source.resource-type.ts diff --git a/src/app/core/shared/context.model.ts b/modules/core/src/lib/core/shared/context.model.ts similarity index 100% rename from src/app/core/shared/context.model.ts rename to modules/core/src/lib/core/shared/context.model.ts diff --git a/src/app/core/shared/distinct-next.ts b/modules/core/src/lib/core/shared/distinct-next.ts similarity index 100% rename from src/app/core/shared/distinct-next.ts rename to modules/core/src/lib/core/shared/distinct-next.ts diff --git a/src/app/core/shared/dspace-object-type.model.ts b/modules/core/src/lib/core/shared/dspace-object-type.model.ts similarity index 100% rename from src/app/core/shared/dspace-object-type.model.ts rename to modules/core/src/lib/core/shared/dspace-object-type.model.ts diff --git a/src/app/core/shared/dspace-object.model.ts b/modules/core/src/lib/core/shared/dspace-object.model.ts similarity index 91% rename from src/app/core/shared/dspace-object.model.ts rename to modules/core/src/lib/core/shared/dspace-object.model.ts index 7bc05b1d3aa..08d767c567c 100644 --- a/src/app/core/shared/dspace-object.model.ts +++ b/modules/core/src/lib/core/shared/dspace-object.model.ts @@ -1,3 +1,8 @@ +import { + hasNoValue, + hasValue, + isUndefined, +} from '@dspace/shared/utils'; import { autoserialize, autoserializeAs, @@ -5,15 +10,10 @@ import { deserializeAs, } from 'cerialize'; -import { - hasNoValue, - hasValue, - isUndefined, -} from '../../shared/empty.util'; -import { ListableObject } from '../../shared/object-collection/shared/listable-object.model'; -import { typedObject } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { ListableObject } from '../object-collection'; +import { excludeFromEquals } from '../utilities'; import { DSPACE_OBJECT } from './dspace-object.resource-type'; import { GenericConstructor } from './generic-constructor'; import { HALLink } from './hal-link.model'; @@ -117,7 +117,7 @@ export class DSpaceObject extends ListableObject implements CacheableObject { /** * Gets all matching metadata in this DSpaceObject. * - * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]]. + * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[PolicyMetadata]]. * @param {MetadataValueFilter} filter The value filter to use. If unspecified, no filtering will be done. * @returns {MetadataValue[]} the matching values or an empty array. */ @@ -128,7 +128,7 @@ export class DSpaceObject extends ListableObject implements CacheableObject { /** * Like [[allMetadata]], but only returns string values. * - * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]]. + * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[PolicyMetadata]]. * @param {MetadataValueFilter} filter The value filter to use. If unspecified, no filtering will be done. * @returns {string[]} the matching string values or an empty array. */ @@ -139,7 +139,7 @@ export class DSpaceObject extends ListableObject implements CacheableObject { /** * Gets the first matching MetadataValue object in this DSpaceObject, or `undefined`. * - * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]]. + * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[PolicyMetadata]]. * @param {MetadataValueFilter} filter The value filter to use. If unspecified, no filtering will be done. * @returns {MetadataValue} the first matching value, or `undefined`. */ @@ -150,7 +150,7 @@ export class DSpaceObject extends ListableObject implements CacheableObject { /** * Like [[firstMetadata]], but only returns a string value, or `undefined`. * - * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]]. + * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[PolicyMetadata]]. * @param {MetadataValueFilter} valueFilter The value filter to use. If unspecified, no filtering will be done. * @returns {string} the first matching string value, or `undefined`. */ @@ -161,7 +161,7 @@ export class DSpaceObject extends ListableObject implements CacheableObject { /** * Checks for a matching metadata value in this DSpaceObject. * - * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[Metadata]]. + * @param {string|string[]} keyOrKeys The metadata key(s) in scope. Wildcards are supported; see [[PolicyMetadata]]. * @param {MetadataValueFilter} filter The value filter to use. If unspecified, no filtering will be done. * @returns {boolean} whether a match is found. */ diff --git a/src/app/core/shared/dspace-object.resource-type.ts b/modules/core/src/lib/core/shared/dspace-object.resource-type.ts similarity index 100% rename from src/app/core/shared/dspace-object.resource-type.ts rename to modules/core/src/lib/core/shared/dspace-object.resource-type.ts diff --git a/src/app/shared/utils/emphasize.pipe.ts b/modules/core/src/lib/core/shared/emphasize.pipe.ts similarity index 100% rename from src/app/shared/utils/emphasize.pipe.ts rename to modules/core/src/lib/core/shared/emphasize.pipe.ts diff --git a/src/app/core/shared/external-source-entry.model.ts b/modules/core/src/lib/core/shared/external-source-entry.model.ts similarity index 84% rename from src/app/core/shared/external-source-entry.model.ts rename to modules/core/src/lib/core/shared/external-source-entry.model.ts index 01e52d30d52..130ef3daf2b 100644 --- a/src/app/core/shared/external-source-entry.model.ts +++ b/modules/core/src/lib/core/shared/external-source-entry.model.ts @@ -4,9 +4,9 @@ import { deserialize, } from 'cerialize'; -import { ListableObject } from '../../shared/object-collection/shared/listable-object.model'; -import { typedObject } from '../cache/builders/build-decorators'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { ListableObject } from '../object-collection'; +import { excludeFromEquals } from '../utilities'; import { EXTERNAL_SOURCE_ENTRY } from './external-source-entry.resource-type'; import { GenericConstructor } from './generic-constructor'; import { HALLink } from './hal-link.model'; @@ -55,7 +55,7 @@ export class ExternalSourceEntry extends ListableObject { externalSource: string; /** - * Metadata of the entry + * PolicyMetadata of the entry */ @autoserializeAs(MetadataMapSerializer) metadata: MetadataMap; diff --git a/src/app/core/shared/external-source-entry.resource-type.ts b/modules/core/src/lib/core/shared/external-source-entry.resource-type.ts similarity index 100% rename from src/app/core/shared/external-source-entry.resource-type.ts rename to modules/core/src/lib/core/shared/external-source-entry.resource-type.ts diff --git a/src/app/core/shared/external-source.model.ts b/modules/core/src/lib/core/shared/external-source.model.ts similarity index 73% rename from src/app/core/shared/external-source.model.ts rename to modules/core/src/lib/core/shared/external-source.model.ts index 40661917e22..339677c8983 100644 --- a/src/app/core/shared/external-source.model.ts +++ b/modules/core/src/lib/core/shared/external-source.model.ts @@ -7,15 +7,15 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +} from '../cache'; +import { CacheableObject } from '../cache'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { excludeFromEquals } from '../utilities'; import { EXTERNAL_SOURCE } from './external-source.resource-type'; import { HALLink } from './hal-link.model'; -import { ItemType } from './item-relationships/item-type.model'; -import { ITEM_TYPE } from './item-relationships/item-type.resource-type'; +import { ItemType } from './item-relationships'; +import { ITEM_TYPE } from './item-relationships'; import { ResourceType } from './resource-type'; /** diff --git a/src/app/core/shared/external-source.resource-type.ts b/modules/core/src/lib/core/shared/external-source.resource-type.ts similarity index 100% rename from src/app/core/shared/external-source.resource-type.ts rename to modules/core/src/lib/core/shared/external-source.resource-type.ts diff --git a/src/app/core/shared/feature.model.ts b/modules/core/src/lib/core/shared/feature.model.ts similarity index 92% rename from src/app/core/shared/feature.model.ts rename to modules/core/src/lib/core/shared/feature.model.ts index 1c18d1478f6..840aca0ab4f 100644 --- a/src/app/core/shared/feature.model.ts +++ b/modules/core/src/lib/core/shared/feature.model.ts @@ -4,7 +4,7 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../cache/builders/build-decorators'; +import { typedObject } from '../cache'; import { DSpaceObject } from './dspace-object.model'; import { FEATURE } from './feature.resource-type'; import { HALLink } from './hal-link.model'; diff --git a/src/app/core/shared/feature.resource-type.ts b/modules/core/src/lib/core/shared/feature.resource-type.ts similarity index 100% rename from src/app/core/shared/feature.resource-type.ts rename to modules/core/src/lib/core/shared/feature.resource-type.ts diff --git a/src/app/core/shared/file.service.ts b/modules/core/src/lib/core/shared/file.service.ts similarity index 84% rename from src/app/core/shared/file.service.ts rename to modules/core/src/lib/core/shared/file.service.ts index 2a60dd4196d..b1f04f6ba65 100644 --- a/src/app/core/shared/file.service.ts +++ b/modules/core/src/lib/core/shared/file.service.ts @@ -2,20 +2,20 @@ import { Inject, Injectable, } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { map, take, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { AuthService } from '../auth/auth.service'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { AuthService } from '../auth'; +import { RawRestResponse } from '../dspace-rest'; import { NativeWindowRef, NativeWindowService, -} from '../services/window.service'; -import { URLCombiner } from '../url-combiner/url-combiner'; +} from '../services'; +import { URLCombiner } from '../url-combiner'; /** * Provides utility methods to save files on the client-side. diff --git a/src/app/core/shared/flat-browse-definition.model.ts b/modules/core/src/lib/core/shared/flat-browse-definition.model.ts similarity index 79% rename from src/app/core/shared/flat-browse-definition.model.ts rename to modules/core/src/lib/core/shared/flat-browse-definition.model.ts index 74166f937c9..76a44750af2 100644 --- a/src/app/core/shared/flat-browse-definition.model.ts +++ b/modules/core/src/lib/core/shared/flat-browse-definition.model.ts @@ -3,9 +3,9 @@ import { inheritSerialization, } from 'cerialize'; -import { BrowseByDataType } from '../../browse-by/browse-by-switcher/browse-by-data-type'; -import { typedObject } from '../cache/builders/build-decorators'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { BrowseByDataType } from './browse-by-data-type'; +import { typedObject } from '../cache'; +import { excludeFromEquals } from '../utilities'; import { FLAT_BROWSE_DEFINITION } from './flat-browse-definition.resource-type'; import { HALLink } from './hal-link.model'; import { NonHierarchicalBrowseDefinition } from './non-hierarchical-browse-definition'; diff --git a/src/app/core/shared/flat-browse-definition.resource-type.ts b/modules/core/src/lib/core/shared/flat-browse-definition.resource-type.ts similarity index 100% rename from src/app/core/shared/flat-browse-definition.resource-type.ts rename to modules/core/src/lib/core/shared/flat-browse-definition.resource-type.ts diff --git a/src/app/shared/form/builder/models/form-field.model.ts b/modules/core/src/lib/core/shared/form/form-field.model.ts similarity index 91% rename from src/app/shared/form/builder/models/form-field.model.ts rename to modules/core/src/lib/core/shared/form/form-field.model.ts index a89801007f9..6d62494c2b8 100644 --- a/src/app/shared/form/builder/models/form-field.model.ts +++ b/modules/core/src/lib/core/shared/form/form-field.model.ts @@ -1,8 +1,8 @@ import { autoserialize } from 'cerialize'; -import { FormRowModel } from '../../../../core/config/models/config-submission-form.model'; -import { SectionVisibility } from './../../../../submission/objects/section-visibility.model'; -import { LanguageCode } from './form-field-language-value.model'; +import { LanguageCode } from '../../config'; +import { SectionVisibility } from '../../submission'; +import { FormRowModel } from '../../config'; import { RelationshipOptions } from './relationship-options.model'; /** diff --git a/modules/core/src/lib/core/shared/form/index.ts b/modules/core/src/lib/core/shared/form/index.ts new file mode 100644 index 00000000000..dfeaccca346 --- /dev/null +++ b/modules/core/src/lib/core/shared/form/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './form-field.model'; +export * from './relationship-options.model'; diff --git a/src/app/shared/form/builder/models/relationship-options.model.ts b/modules/core/src/lib/core/shared/form/relationship-options.model.ts similarity index 100% rename from src/app/shared/form/builder/models/relationship-options.model.ts rename to modules/core/src/lib/core/shared/form/relationship-options.model.ts diff --git a/src/app/core/shared/generic-constructor.ts b/modules/core/src/lib/core/shared/generic-constructor.ts similarity index 100% rename from src/app/core/shared/generic-constructor.ts rename to modules/core/src/lib/core/shared/generic-constructor.ts diff --git a/src/app/core/shared/hal-endpoint.service.spec.ts b/modules/core/src/lib/core/shared/hal-endpoint.service.spec.ts similarity index 97% rename from src/app/core/shared/hal-endpoint.service.spec.ts rename to modules/core/src/lib/core/shared/hal-endpoint.service.spec.ts index ec0379137b5..d293c884dd3 100644 --- a/src/app/core/shared/hal-endpoint.service.spec.ts +++ b/modules/core/src/lib/core/shared/hal-endpoint.service.spec.ts @@ -4,17 +4,18 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { environment } from '../../../environments/environment'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RemoteData } from '../data/remote-data'; import { EndpointMapRequest } from '../data/request.models'; import { RequestService } from '../data/request.service'; import { RequestEntryState } from '../data/request-entry-state.model'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; import { HALEndpointService } from './hal-endpoint.service'; + + describe('HALEndpointService', () => { let service: HALEndpointService; let requestService: RequestService; @@ -121,7 +122,7 @@ describe('HALEndpointService', () => { describe('getRootEndpointMap', () => { it('should send a new EndpointMapRequest', () => { (service as any).getRootEndpointMap(); - const expected = new EndpointMapRequest(requestService.generateRequestId(), `${environment.rest.baseUrl}/api`); + const expected = new EndpointMapRequest(requestService.generateRequestId(), `${envConfig.rest.baseUrl}/api`); expect(requestService.send).toHaveBeenCalledWith(expected, true); }); diff --git a/src/app/core/shared/hal-endpoint.service.ts b/modules/core/src/lib/core/shared/hal-endpoint.service.ts similarity index 85% rename from src/app/core/shared/hal-endpoint.service.ts rename to modules/core/src/lib/core/shared/hal-endpoint.service.ts index 0e54c8870ca..0377cec9c5e 100644 --- a/src/app/core/shared/hal-endpoint.service.ts +++ b/modules/core/src/lib/core/shared/hal-endpoint.service.ts @@ -1,4 +1,12 @@ -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; +import { + hasValue, + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -10,23 +18,21 @@ import { tap, } from 'rxjs/operators'; -import { - hasValue, - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { EndpointMap } from '../cache/response.models'; -import { RemoteData } from '../data/remote-data'; -import { EndpointMapRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RESTURLCombiner } from '../url-combiner/rest-url-combiner'; +import { RemoteDataBuildService } from '../cache'; +import { CacheableObject } from '../cache'; +import { EndpointMap } from '../cache'; +import { APP_CONFIG } from '../config'; +import { RemoteData } from '../data'; +import { EndpointMapRequest } from '../data'; +import { RequestService } from '../data'; +import { RESTURLCombiner } from '../url-combiner'; import { getFirstCompletedRemoteData } from './operators'; @Injectable({ providedIn: 'root' }) export class HALEndpointService { + private readonly appConfig = inject(APP_CONFIG); + constructor( private requestService: RequestService, private rdbService: RemoteDataBuildService, @@ -34,7 +40,7 @@ export class HALEndpointService { } public getRootHref(): string { - return new RESTURLCombiner().toString(); + return new RESTURLCombiner(this.appConfig.rest.baseUrl).toString(); } protected getRootEndpointMap(): Observable { diff --git a/src/app/core/shared/hal-link.model.ts b/modules/core/src/lib/core/shared/hal-link.model.ts similarity index 100% rename from src/app/core/shared/hal-link.model.ts rename to modules/core/src/lib/core/shared/hal-link.model.ts diff --git a/src/app/core/shared/hal-resource.model.ts b/modules/core/src/lib/core/shared/hal-resource.model.ts similarity index 100% rename from src/app/core/shared/hal-resource.model.ts rename to modules/core/src/lib/core/shared/hal-resource.model.ts diff --git a/src/app/core/shared/handle-object.model.ts b/modules/core/src/lib/core/shared/handle-object.model.ts similarity index 100% rename from src/app/core/shared/handle-object.model.ts rename to modules/core/src/lib/core/shared/handle-object.model.ts diff --git a/src/app/core/shared/hierarchical-browse-definition.model.ts b/modules/core/src/lib/core/shared/hierarchical-browse-definition.model.ts similarity index 81% rename from src/app/core/shared/hierarchical-browse-definition.model.ts rename to modules/core/src/lib/core/shared/hierarchical-browse-definition.model.ts index eb606b7bbeb..4c54d114053 100644 --- a/src/app/core/shared/hierarchical-browse-definition.model.ts +++ b/modules/core/src/lib/core/shared/hierarchical-browse-definition.model.ts @@ -4,9 +4,9 @@ import { inheritSerialization, } from 'cerialize'; -import { BrowseByDataType } from '../../browse-by/browse-by-switcher/browse-by-data-type'; -import { typedObject } from '../cache/builders/build-decorators'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { BrowseByDataType } from './browse-by-data-type'; +import { typedObject } from '../cache'; +import { excludeFromEquals } from '../utilities'; import { BrowseDefinition } from './browse-definition.model'; import { HALLink } from './hal-link.model'; import { HIERARCHICAL_BROWSE_DEFINITION } from './hierarchical-browse-definition.resource-type'; diff --git a/src/app/core/shared/hierarchical-browse-definition.resource-type.ts b/modules/core/src/lib/core/shared/hierarchical-browse-definition.resource-type.ts similarity index 100% rename from src/app/core/shared/hierarchical-browse-definition.resource-type.ts rename to modules/core/src/lib/core/shared/hierarchical-browse-definition.resource-type.ts diff --git a/modules/core/src/lib/core/shared/index.ts b/modules/core/src/lib/core/shared/index.ts new file mode 100644 index 00000000000..e0ad3c4c29e --- /dev/null +++ b/modules/core/src/lib/core/shared/index.ts @@ -0,0 +1,97 @@ +// created from 'create-ts-index' + +export * from './form'; +export * from './item-relationships'; +export * from './metadata-representation'; +export * from './ngrx'; +export * from './resolvers'; +export * from './search'; +export * from './NoContent.model'; +export * from './authorization.model'; +export * from './authorization.resource-type'; +export * from './authorized.operators'; +export * from './bitstream-format-support-level'; +export * from './bitstream-format.model'; +export * from './bitstream-format.resource-type'; +export * from './bitstream.model'; +export * from './bitstream.operators'; +export * from './bitstream.resource-type'; +export * from './browse-by-data-type'; +export * from './browse-definition.model'; +export * from './browse-definition.resource-type'; +export * from './browse-entry.model'; +export * from './browse-entry.resource-type'; +export * from './bundle.model'; +export * from './bundle.resource-type'; +export * from './child-hal-resource.model'; +export * from './client-math.service'; +export * from './collection.model'; +export * from './collection.resource-type'; +export * from './community.model'; +export * from './community.resource-type'; +export * from './confidence-type'; +export * from './config-property.resource-type'; +export * from './configuration-property.model'; +export * from './content-source-set-serializer'; +export * from './content-source.model'; +export * from './content-source.resource-type'; +export * from './context.model'; +export * from './distinct-next'; +export * from './dspace-object-type.model'; +export * from './dspace-object.model'; +export * from './dspace-object.resource-type'; +export * from './emphasize.pipe'; +export * from './external-source-entry.model'; +export * from './external-source-entry.resource-type'; +export * from './external-source.model'; +export * from './external-source.resource-type'; +export * from './feature.model'; +export * from './feature.resource-type'; +export * from './file.service'; +export * from './flat-browse-definition.model'; +export * from './flat-browse-definition.resource-type'; +export * from './generic-constructor'; +export * from './hal-endpoint.service'; +export * from './hal-link.model'; +export * from './hal-resource.model'; +export * from './handle-object.model'; +export * from './hierarchical-browse-definition.model'; +export * from './hierarchical-browse-definition.resource-type'; +export * from './item-request.model'; +export * from './item-request.resource-type'; +export * from './item.model'; +export * from './item.resource-type'; +export * from './license.model'; +export * from './license.resource-type'; +export * from './math.service'; +export * from './media-viewer-item.model'; +export * from './metadata-config.model'; +export * from './metadata.models'; +export * from './metadata.utils'; +export * from './non-hierarchical-browse-definition'; +export * from './operators'; +export * from './page-info.model'; +export * from './paginated-search-options.model'; +export * from './pagination-component-options.model'; +export * from './process-output.resource-type'; +export * from './registration.model'; +export * from './registration.resource-type'; +export * from './request.operators'; +export * from './resource-type'; +export * from './sequence.service'; +export * from './server-math.service'; +export * from './site.model'; +export * from './site.resource-type'; +export * from './sort-option.model'; +export * from './submit-data-response-definition.model'; +export * from './template-item.model'; +export * from './template-item.resource-type'; +export * from './uncacheable-object.model'; +export * from './uuid.service'; +export * from './value-list-browse-definition.model'; +export * from './value-list-browse-definition.resource-type'; +export * from './version-history.model'; +export * from './version-history.resource-type'; +export * from './version.model'; +export * from './version.resource-type'; +export * from './view-mode.model'; diff --git a/modules/core/src/lib/core/shared/item-relationships/index.ts b/modules/core/src/lib/core/shared/item-relationships/index.ts new file mode 100644 index 00000000000..037742576ca --- /dev/null +++ b/modules/core/src/lib/core/shared/item-relationships/index.ts @@ -0,0 +1,10 @@ +// created from 'create-ts-index' + +export * from './item-relationships-utils'; +export * from './item-type.model'; +export * from './item-type.resource-type'; +export * from './relationship-type.model'; +export * from './relationship-type.resource-type'; +export * from './relationship.model'; +export * from './relationship.resource-type'; +export * from './reorderable-relationship.model'; diff --git a/src/app/item-page/simple/item-types/shared/item-relationships-utils.ts b/modules/core/src/lib/core/shared/item-relationships/item-relationships-utils.ts similarity index 91% rename from src/app/item-page/simple/item-types/shared/item-relationships-utils.ts rename to modules/core/src/lib/core/shared/item-relationships/item-relationships-utils.ts index 6b9f100df48..4cbd7548944 100644 --- a/src/app/item-page/simple/item-types/shared/item-relationships-utils.ts +++ b/modules/core/src/lib/core/shared/item-relationships/item-relationships-utils.ts @@ -1,4 +1,5 @@ import { InjectionToken } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { combineLatest as observableCombineLatest, Observable, @@ -12,12 +13,11 @@ import { switchMap, } from 'rxjs/operators'; -import { PaginatedList } from '../../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../../core/data/remote-data'; -import { Item } from '../../../../core/shared/item.model'; -import { Relationship } from '../../../../core/shared/item-relationships/relationship.model'; -import { getFirstCompletedRemoteData } from '../../../../core/shared/operators'; -import { hasValue } from '../../../../shared/empty.util'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { Item } from '../item.model'; +import { getFirstCompletedRemoteData } from '../operators'; +import { Relationship } from './relationship.model'; export const PAGINATED_RELATIONS_TO_ITEMS_OPERATOR = new InjectionToken<(thisId: string) => (source: Observable>>) => Observable>>>('paginatedRelationsToItems', { providedIn: 'root', diff --git a/src/app/core/shared/item-relationships/item-type.model.ts b/modules/core/src/lib/core/shared/item-relationships/item-type.model.ts similarity index 77% rename from src/app/core/shared/item-relationships/item-type.model.ts rename to modules/core/src/lib/core/shared/item-relationships/item-type.model.ts index bbf1cb3be03..06290a29cf3 100644 --- a/src/app/core/shared/item-relationships/item-type.model.ts +++ b/modules/core/src/lib/core/shared/item-relationships/item-type.model.ts @@ -4,10 +4,10 @@ import { deserializeAs, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { IDToUUIDSerializer } from '../../cache'; +import { excludeFromEquals } from '../../utilities'; import { HALLink } from '../hal-link.model'; import { ResourceType } from '../resource-type'; import { ITEM_TYPE } from './item-type.resource-type'; diff --git a/src/app/core/shared/item-relationships/item-type.resource-type.ts b/modules/core/src/lib/core/shared/item-relationships/item-type.resource-type.ts similarity index 100% rename from src/app/core/shared/item-relationships/item-type.resource-type.ts rename to modules/core/src/lib/core/shared/item-relationships/item-type.resource-type.ts diff --git a/src/app/core/shared/item-relationships/relationship-type.model.ts b/modules/core/src/lib/core/shared/item-relationships/relationship-type.model.ts similarity index 89% rename from src/app/core/shared/item-relationships/relationship-type.model.ts rename to modules/core/src/lib/core/shared/item-relationships/relationship-type.model.ts index 3a86ee34f84..64bb3ada30c 100644 --- a/src/app/core/shared/item-relationships/relationship-type.model.ts +++ b/modules/core/src/lib/core/shared/item-relationships/relationship-type.model.ts @@ -8,11 +8,11 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer'; -import { RemoteData } from '../../data/remote-data'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +} from '../../cache'; +import { CacheableObject } from '../../cache'; +import { IDToUUIDSerializer } from '../../cache'; +import { RemoteData } from '../../data'; +import { excludeFromEquals } from '../../utilities'; import { HALLink } from '../hal-link.model'; import { ResourceType } from '../resource-type'; import { ItemType } from './item-type.model'; diff --git a/src/app/core/shared/item-relationships/relationship-type.resource-type.ts b/modules/core/src/lib/core/shared/item-relationships/relationship-type.resource-type.ts similarity index 100% rename from src/app/core/shared/item-relationships/relationship-type.resource-type.ts rename to modules/core/src/lib/core/shared/item-relationships/relationship-type.resource-type.ts diff --git a/src/app/core/shared/item-relationships/relationship.model.ts b/modules/core/src/lib/core/shared/item-relationships/relationship.model.ts similarity index 88% rename from src/app/core/shared/item-relationships/relationship.model.ts rename to modules/core/src/lib/core/shared/item-relationships/relationship.model.ts index 77fdff8651f..2fdfbdc637a 100644 --- a/src/app/core/shared/item-relationships/relationship.model.ts +++ b/modules/core/src/lib/core/shared/item-relationships/relationship.model.ts @@ -8,11 +8,11 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer'; -import { RemoteData } from '../../data/remote-data'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +} from '../../cache'; +import { CacheableObject } from '../../cache'; +import { IDToUUIDSerializer } from '../../cache'; +import { RemoteData } from '../../data'; +import { excludeFromEquals } from '../../utilities'; import { HALLink } from '../hal-link.model'; import { Item } from '../item.model'; import { ITEM } from '../item.resource-type'; diff --git a/src/app/core/shared/item-relationships/relationship.resource-type.ts b/modules/core/src/lib/core/shared/item-relationships/relationship.resource-type.ts similarity index 100% rename from src/app/core/shared/item-relationships/relationship.resource-type.ts rename to modules/core/src/lib/core/shared/item-relationships/relationship.resource-type.ts diff --git a/modules/core/src/lib/core/shared/item-relationships/reorderable-relationship.model.ts b/modules/core/src/lib/core/shared/item-relationships/reorderable-relationship.model.ts new file mode 100644 index 00000000000..4459493377a --- /dev/null +++ b/modules/core/src/lib/core/shared/item-relationships/reorderable-relationship.model.ts @@ -0,0 +1,74 @@ +import { Store } from '@ngrx/store'; + +import { CoreState } from '../../core-state.model'; +import { Relationship } from './relationship.model'; + +/** + * Abstract class that defines objects that can be reordered + */ +export abstract class Reorderable { + + constructor(public oldIndex?: number, public newIndex?: number) { + } + + /** + * Return the id for this Reorderable + */ + abstract getId(): string; + + /** + * Return the place metadata for this Reorderable + */ + abstract getPlace(): number; + + /** + * Update the Reorderable + */ + update(): void { + this.oldIndex = this.newIndex; + } + + /** + * Returns true if the oldIndex of this Reorderable + * differs from the newIndex + */ + get hasMoved(): boolean { + return this.oldIndex !== this.newIndex; + } +} + +/** + * Represents a single relationship that can be reordered in a list of multiple relationships + */ +export class ReorderableRelationship extends Reorderable { + + constructor( + public relationship: Relationship, + public useLeftItem: boolean, + protected store: Store, + protected submissionID: string, + oldIndex?: number, + newIndex?: number) { + super(oldIndex, newIndex); + this.relationship = relationship; + this.useLeftItem = useLeftItem; + } + + /** + * Return the id for this Reorderable + */ + getId(): string { + return this.relationship.id; + } + + /** + * Return the place metadata for this Reorderable + */ + getPlace(): number { + if (this.useLeftItem) { + return this.relationship.rightPlace; + } else { + return this.relationship.leftPlace; + } + } +} diff --git a/src/app/core/shared/item-request.model.ts b/modules/core/src/lib/core/shared/item-request.model.ts similarity index 89% rename from src/app/core/shared/item-request.model.ts rename to modules/core/src/lib/core/shared/item-request.model.ts index 5a4f912363b..13d9c3f1c4e 100644 --- a/src/app/core/shared/item-request.model.ts +++ b/modules/core/src/lib/core/shared/item-request.model.ts @@ -3,9 +3,9 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../cache/builders/build-decorators'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { typedObject } from '../cache'; +import { CacheableObject } from '../cache'; +import { excludeFromEquals } from '../utilities'; import { HALLink } from './hal-link.model'; import { ITEM_REQUEST } from './item-request.resource-type'; import { ResourceType } from './resource-type'; diff --git a/src/app/core/shared/item-request.resource-type.ts b/modules/core/src/lib/core/shared/item-request.resource-type.ts similarity index 100% rename from src/app/core/shared/item-request.resource-type.ts rename to modules/core/src/lib/core/shared/item-request.resource-type.ts diff --git a/src/app/core/shared/item.model.spec.ts b/modules/core/src/lib/core/shared/item.model.spec.ts similarity index 90% rename from src/app/core/shared/item.model.spec.ts rename to modules/core/src/lib/core/shared/item.model.spec.ts index 7eaa6f10be5..8a5945734f2 100644 --- a/src/app/core/shared/item.model.spec.ts +++ b/modules/core/src/lib/core/shared/item.model.spec.ts @@ -1,5 +1,5 @@ -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { createPaginatedList } from '../../shared/testing/utils.test'; +import { createSuccessfulRemoteDataObject$ } from '../utilities'; +import { createPaginatedList } from '../utilities'; import { Item } from './item.model'; describe('Item', () => { diff --git a/src/app/core/shared/item.model.ts b/modules/core/src/lib/core/shared/item.model.ts similarity index 81% rename from src/app/core/shared/item.model.ts rename to modules/core/src/lib/core/shared/item.model.ts index b13cf25f033..493b659b915 100644 --- a/src/app/core/shared/item.model.ts +++ b/modules/core/src/lib/core/shared/item.model.ts @@ -1,3 +1,4 @@ +import { isEmpty } from '@dspace/shared/utils'; import { autoserialize, autoserializeAs, @@ -6,19 +7,18 @@ import { inheritSerialization, } from 'cerialize'; import { Observable } from 'rxjs'; -import { AccessStatusObject } from 'src/app/shared/object-collection/shared/badges/access-status-badge/access-status.model'; -import { ACCESS_STATUS } from 'src/app/shared/object-collection/shared/badges/access-status-badge/access-status.resource-type'; +import { AccessStatusObject } from '../access-status'; +import { ACCESS_STATUS } from '../access-status'; -import { isEmpty } from '../../shared/empty.util'; -import { ListableObject } from '../../shared/object-collection/shared/listable-object.model'; -import { IdentifierData } from '../../shared/object-list/identifier-data/identifier-data.model'; -import { IDENTIFIERS } from '../../shared/object-list/identifier-data/identifier-data.resource-type'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; +} from '../cache'; +import { IdentifierData } from '../data'; +import { IDENTIFIERS } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { ListableObject } from '../object-collection'; import { Bitstream } from './bitstream.model'; import { BITSTREAM } from './bitstream.resource-type'; import { Bundle } from './bundle.model'; @@ -31,8 +31,8 @@ import { GenericConstructor } from './generic-constructor'; import { HALLink } from './hal-link.model'; import { HandleObject } from './handle-object.model'; import { ITEM } from './item.resource-type'; -import { Relationship } from './item-relationships/relationship.model'; -import { RELATIONSHIP } from './item-relationships/relationship.resource-type'; +import { Relationship } from './item-relationships'; +import { RELATIONSHIP } from './item-relationships'; import { Version } from './version.model'; import { VERSION } from './version.resource-type'; diff --git a/src/app/core/shared/item.resource-type.ts b/modules/core/src/lib/core/shared/item.resource-type.ts similarity index 100% rename from src/app/core/shared/item.resource-type.ts rename to modules/core/src/lib/core/shared/item.resource-type.ts diff --git a/src/app/core/shared/license.model.ts b/modules/core/src/lib/core/shared/license.model.ts similarity index 87% rename from src/app/core/shared/license.model.ts rename to modules/core/src/lib/core/shared/license.model.ts index 0cb1e70b6b8..44f84a1fe84 100644 --- a/src/app/core/shared/license.model.ts +++ b/modules/core/src/lib/core/shared/license.model.ts @@ -3,7 +3,7 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../cache/builders/build-decorators'; +import { typedObject } from '../cache'; import { DSpaceObject } from './dspace-object.model'; import { LICENSE } from './license.resource-type'; diff --git a/src/app/core/shared/license.resource-type.ts b/modules/core/src/lib/core/shared/license.resource-type.ts similarity index 100% rename from src/app/core/shared/license.resource-type.ts rename to modules/core/src/lib/core/shared/license.resource-type.ts diff --git a/src/app/core/shared/math.service.spec.ts b/modules/core/src/lib/core/shared/math.service.spec.ts similarity index 100% rename from src/app/core/shared/math.service.spec.ts rename to modules/core/src/lib/core/shared/math.service.spec.ts diff --git a/src/app/core/shared/math.service.ts b/modules/core/src/lib/core/shared/math.service.ts similarity index 100% rename from src/app/core/shared/math.service.ts rename to modules/core/src/lib/core/shared/math.service.ts diff --git a/src/app/core/shared/media-viewer-item.model.ts b/modules/core/src/lib/core/shared/media-viewer-item.model.ts similarity index 100% rename from src/app/core/shared/media-viewer-item.model.ts rename to modules/core/src/lib/core/shared/media-viewer-item.model.ts diff --git a/src/app/core/shared/metadata-config.model.ts b/modules/core/src/lib/core/shared/metadata-config.model.ts similarity index 100% rename from src/app/core/shared/metadata-config.model.ts rename to modules/core/src/lib/core/shared/metadata-config.model.ts diff --git a/modules/core/src/lib/core/shared/metadata-representation/index.ts b/modules/core/src/lib/core/shared/metadata-representation/index.ts new file mode 100644 index 00000000000..90cf45bfe6a --- /dev/null +++ b/modules/core/src/lib/core/shared/metadata-representation/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './item'; +export * from './metadatum'; +export * from './metadata-representation.model'; diff --git a/modules/core/src/lib/core/shared/metadata-representation/item/index.ts b/modules/core/src/lib/core/shared/metadata-representation/item/index.ts new file mode 100644 index 00000000000..2035dc07798 --- /dev/null +++ b/modules/core/src/lib/core/shared/metadata-representation/item/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './item-metadata-representation.model'; diff --git a/src/app/core/shared/metadata-representation/item/item-metadata-representation.model.spec.ts b/modules/core/src/lib/core/shared/metadata-representation/item/item-metadata-representation.model.spec.ts similarity index 100% rename from src/app/core/shared/metadata-representation/item/item-metadata-representation.model.spec.ts rename to modules/core/src/lib/core/shared/metadata-representation/item/item-metadata-representation.model.spec.ts diff --git a/src/app/core/shared/metadata-representation/item/item-metadata-representation.model.ts b/modules/core/src/lib/core/shared/metadata-representation/item/item-metadata-representation.model.ts similarity index 100% rename from src/app/core/shared/metadata-representation/item/item-metadata-representation.model.ts rename to modules/core/src/lib/core/shared/metadata-representation/item/item-metadata-representation.model.ts diff --git a/src/app/core/shared/metadata-representation/metadata-representation.model.ts b/modules/core/src/lib/core/shared/metadata-representation/metadata-representation.model.ts similarity index 100% rename from src/app/core/shared/metadata-representation/metadata-representation.model.ts rename to modules/core/src/lib/core/shared/metadata-representation/metadata-representation.model.ts diff --git a/modules/core/src/lib/core/shared/metadata-representation/metadatum/index.ts b/modules/core/src/lib/core/shared/metadata-representation/metadatum/index.ts new file mode 100644 index 00000000000..a48368a6b50 --- /dev/null +++ b/modules/core/src/lib/core/shared/metadata-representation/metadatum/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './metadatum-representation.model'; diff --git a/src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.spec.ts b/modules/core/src/lib/core/shared/metadata-representation/metadatum/metadatum-representation.model.spec.ts similarity index 100% rename from src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.spec.ts rename to modules/core/src/lib/core/shared/metadata-representation/metadatum/metadatum-representation.model.spec.ts diff --git a/src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts b/modules/core/src/lib/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts similarity index 95% rename from src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts rename to modules/core/src/lib/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts index 9ca24edd57d..3f99c3b8e66 100644 --- a/src/app/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts +++ b/modules/core/src/lib/core/shared/metadata-representation/metadatum/metadatum-representation.model.ts @@ -1,4 +1,5 @@ -import { hasValue } from '../../../../shared/empty.util'; +import { hasValue } from '@dspace/shared/utils'; + import { BrowseDefinition } from '../../browse-definition.model'; import { MetadataValue } from '../../metadata.models'; import { diff --git a/src/app/core/shared/metadata.models.ts b/modules/core/src/lib/core/shared/metadata.models.ts similarity index 100% rename from src/app/core/shared/metadata.models.ts rename to modules/core/src/lib/core/shared/metadata.models.ts diff --git a/src/app/core/shared/metadata.utils.spec.ts b/modules/core/src/lib/core/shared/metadata.utils.spec.ts similarity index 99% rename from src/app/core/shared/metadata.utils.spec.ts rename to modules/core/src/lib/core/shared/metadata.utils.spec.ts index 2ba96201b02..aded56d45de 100644 --- a/src/app/core/shared/metadata.utils.spec.ts +++ b/modules/core/src/lib/core/shared/metadata.utils.spec.ts @@ -1,6 +1,6 @@ +import { isUndefined } from '@dspace/shared/utils'; import { v4 as uuidv4 } from 'uuid'; -import { isUndefined } from '../../shared/empty.util'; import { MetadataMap, MetadataValue, diff --git a/src/app/core/shared/metadata.utils.ts b/modules/core/src/lib/core/shared/metadata.utils.ts similarity index 99% rename from src/app/core/shared/metadata.utils.ts rename to modules/core/src/lib/core/shared/metadata.utils.ts index a82f218ed94..3aec1ee4b66 100644 --- a/src/app/core/shared/metadata.utils.ts +++ b/modules/core/src/lib/core/shared/metadata.utils.ts @@ -1,12 +1,12 @@ -import groupBy from 'lodash/groupBy'; -import sortBy from 'lodash/sortBy'; - import { isEmpty, isNotEmpty, isNotUndefined, isUndefined, -} from '../../shared/empty.util'; +} from '@dspace/shared/utils'; +import groupBy from 'lodash/groupBy'; +import sortBy from 'lodash/sortBy'; + import { MetadataMapInterface, MetadataValue, diff --git a/src/app/shared/ngrx/dspace-router-state-serializer.ts b/modules/core/src/lib/core/shared/ngrx/dspace-router-state-serializer.ts similarity index 100% rename from src/app/shared/ngrx/dspace-router-state-serializer.ts rename to modules/core/src/lib/core/shared/ngrx/dspace-router-state-serializer.ts diff --git a/modules/core/src/lib/core/shared/ngrx/index.ts b/modules/core/src/lib/core/shared/ngrx/index.ts new file mode 100644 index 00000000000..2565b0da5e1 --- /dev/null +++ b/modules/core/src/lib/core/shared/ngrx/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './dspace-router-state-serializer'; +export * from './no-op.action'; +export * from './type'; diff --git a/src/app/shared/ngrx/no-op.action.ts b/modules/core/src/lib/core/shared/ngrx/no-op.action.ts similarity index 100% rename from src/app/shared/ngrx/no-op.action.ts rename to modules/core/src/lib/core/shared/ngrx/no-op.action.ts diff --git a/src/app/shared/ngrx/type.ts b/modules/core/src/lib/core/shared/ngrx/type.ts similarity index 100% rename from src/app/shared/ngrx/type.ts rename to modules/core/src/lib/core/shared/ngrx/type.ts diff --git a/src/app/core/shared/non-hierarchical-browse-definition.ts b/modules/core/src/lib/core/shared/non-hierarchical-browse-definition.ts similarity index 86% rename from src/app/core/shared/non-hierarchical-browse-definition.ts rename to modules/core/src/lib/core/shared/non-hierarchical-browse-definition.ts index 07083f7a8a8..b027cb104bc 100644 --- a/src/app/core/shared/non-hierarchical-browse-definition.ts +++ b/modules/core/src/lib/core/shared/non-hierarchical-browse-definition.ts @@ -4,7 +4,7 @@ import { inheritSerialization, } from 'cerialize'; -import { BrowseByDataType } from '../../browse-by/browse-by-switcher/browse-by-data-type'; +import { BrowseByDataType } from './browse-by-data-type'; import { BrowseDefinition } from './browse-definition.model'; import { SortOption } from './sort-option.model'; diff --git a/src/app/core/shared/operators.spec.ts b/modules/core/src/lib/core/shared/operators.spec.ts similarity index 99% rename from src/app/core/shared/operators.spec.ts rename to modules/core/src/lib/core/shared/operators.spec.ts index 07ba82caba8..d12716860ac 100644 --- a/src/app/core/shared/operators.spec.ts +++ b/modules/core/src/lib/core/shared/operators.spec.ts @@ -6,14 +6,14 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { - createFailedRemoteDataObject, - createSuccessfulRemoteDataObject, -} from '../../shared/remote-data.utils'; import { GetRequest } from '../data/request.models'; import { RequestService } from '../data/request.service'; import { RequestEntry } from '../data/request-entry.model'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { + createFailedRemoteDataObject, + createSuccessfulRemoteDataObject, +} from '../utilities/remote-data.utils'; import { redirectOn4xx } from './authorized.operators'; import { getAllSucceededRemoteData, diff --git a/src/app/core/shared/operators.ts b/modules/core/src/lib/core/shared/operators.ts similarity index 96% rename from src/app/core/shared/operators.ts rename to modules/core/src/lib/core/shared/operators.ts index ddc21740adb..f68f98fe026 100644 --- a/src/app/core/shared/operators.ts +++ b/modules/core/src/lib/core/shared/operators.ts @@ -1,4 +1,10 @@ import { InjectionToken } from '@angular/core'; +import { + hasNoValue, + hasValue, + hasValueOperator, + isNotEmpty, +} from '@dspace/shared/utils'; import { combineLatest as observableCombineLatest, interval, @@ -17,19 +23,13 @@ import { takeWhile, } from 'rxjs/operators'; -import { - hasNoValue, - hasValue, - hasValueOperator, - isNotEmpty, -} from '../../shared/empty.util'; -import { SearchResult } from '../../shared/search/models/search-result.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { MetadataField } from '../metadata/metadata-field.model'; -import { MetadataSchema } from '../metadata/metadata-schema.model'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { MetadataField } from '../metadata'; +import { MetadataSchema } from '../metadata'; import { BrowseDefinition } from './browse-definition.model'; import { DSpaceObject } from './dspace-object.model'; +import { SearchResult } from './search'; /** * Use this method instead of the RxJs debounceTime if you're waiting for debouncing in tests; diff --git a/src/app/core/shared/page-info.model.ts b/modules/core/src/lib/core/shared/page-info.model.ts similarity index 97% rename from src/app/core/shared/page-info.model.ts rename to modules/core/src/lib/core/shared/page-info.model.ts index c9557abcb62..17d8c6e46ba 100644 --- a/src/app/core/shared/page-info.model.ts +++ b/modules/core/src/lib/core/shared/page-info.model.ts @@ -1,10 +1,10 @@ +import { hasValue } from '@dspace/shared/utils'; import { autoserialize, autoserializeAs, deserialize, } from 'cerialize'; -import { hasValue } from '../../shared/empty.util'; import { HALLink } from './hal-link.model'; import { HALResource } from './hal-resource.model'; diff --git a/src/app/shared/search/models/paginated-search-options.model.spec.ts b/modules/core/src/lib/core/shared/paginated-search-options.model.spec.ts similarity index 86% rename from src/app/shared/search/models/paginated-search-options.model.spec.ts rename to modules/core/src/lib/core/shared/paginated-search-options.model.spec.ts index d39e3c958e4..8e9421536f8 100644 --- a/src/app/shared/search/models/paginated-search-options.model.spec.ts +++ b/modules/core/src/lib/core/shared/paginated-search-options.model.spec.ts @@ -1,11 +1,12 @@ import { SortDirection, SortOptions, -} from '../../../core/cache/models/sort-options.model'; -import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model'; -import { PaginationComponentOptions } from '../../pagination/pagination-component-options.model'; +} from '../cache/models/sort-options.model'; +import { DSpaceObjectType } from './dspace-object-type.model'; import { PaginatedSearchOptions } from './paginated-search-options.model'; -import { SearchFilter } from './search-filter.model'; +import { PaginationComponentOptions } from './pagination-component-options.model'; +import { SearchFilter } from './search/models/search-filter.model'; + describe('PaginatedSearchOptions', () => { let options: PaginatedSearchOptions; diff --git a/src/app/shared/search/models/paginated-search-options.model.ts b/modules/core/src/lib/core/shared/paginated-search-options.model.ts similarity index 74% rename from src/app/shared/search/models/paginated-search-options.model.ts rename to modules/core/src/lib/core/shared/paginated-search-options.model.ts index 2c8546d2029..74dee4a2b24 100644 --- a/src/app/shared/search/models/paginated-search-options.model.ts +++ b/modules/core/src/lib/core/shared/paginated-search-options.model.ts @@ -1,10 +1,11 @@ -import { SortOptions } from '../../../core/cache/models/sort-options.model'; -import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model'; -import { ViewMode } from '../../../core/shared/view-mode.model'; -import { isNotEmpty } from '../../empty.util'; -import { PaginationComponentOptions } from '../../pagination/pagination-component-options.model'; -import { SearchFilter } from './search-filter.model'; -import { SearchOptions } from './search-options.model'; +import { isNotEmpty } from '@dspace/shared/utils'; + +import { SortOptions } from '../cache'; +import { DSpaceObjectType } from './dspace-object-type.model'; +import { PaginationComponentOptions } from './pagination-component-options.model'; +import { SearchFilter } from './search'; +import { SearchOptions } from './search'; +import { ViewMode } from './view-mode.model'; /** * This model class represents all parameters needed to request information about a certain page of a search request, in a certain order diff --git a/src/app/shared/pagination/pagination-component-options.model.ts b/modules/core/src/lib/core/shared/pagination-component-options.model.ts similarity index 100% rename from src/app/shared/pagination/pagination-component-options.model.ts rename to modules/core/src/lib/core/shared/pagination-component-options.model.ts diff --git a/src/app/core/shared/process-output.resource-type.ts b/modules/core/src/lib/core/shared/process-output.resource-type.ts similarity index 100% rename from src/app/core/shared/process-output.resource-type.ts rename to modules/core/src/lib/core/shared/process-output.resource-type.ts diff --git a/src/app/core/shared/registration.model.ts b/modules/core/src/lib/core/shared/registration.model.ts similarity index 91% rename from src/app/core/shared/registration.model.ts rename to modules/core/src/lib/core/shared/registration.model.ts index e2efa6a02c2..a956b025c12 100644 --- a/src/app/core/shared/registration.model.ts +++ b/modules/core/src/lib/core/shared/registration.model.ts @@ -1,4 +1,4 @@ -import { typedObject } from '../cache/builders/build-decorators'; +import { typedObject } from '../cache'; import { REGISTRATION } from './registration.resource-type'; import { ResourceType } from './resource-type'; import { UnCacheableObject } from './uncacheable-object.model'; diff --git a/src/app/core/shared/registration.resource-type.ts b/modules/core/src/lib/core/shared/registration.resource-type.ts similarity index 100% rename from src/app/core/shared/registration.resource-type.ts rename to modules/core/src/lib/core/shared/registration.resource-type.ts diff --git a/src/app/core/shared/request.operators.ts b/modules/core/src/lib/core/shared/request.operators.ts similarity index 81% rename from src/app/core/shared/request.operators.ts rename to modules/core/src/lib/core/shared/request.operators.ts index 0cb8593f401..d9836a00679 100644 --- a/src/app/core/shared/request.operators.ts +++ b/modules/core/src/lib/core/shared/request.operators.ts @@ -1,3 +1,7 @@ +import { + hasValue, + hasValueOperator, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { filter, @@ -6,14 +10,10 @@ import { tap, } from 'rxjs/operators'; -import { - hasValue, - hasValueOperator, -} from '../../shared/empty.util'; -import { RequestService } from '../data/request.service'; -import { RequestEntry } from '../data/request-entry.model'; -import { ResponseState } from '../data/response-state.model'; -import { RestRequest } from '../data/rest-request.model'; +import { RequestService } from '../data'; +import { RequestEntry } from '../data'; +import { ResponseState } from '../data'; +import { RestRequest } from '../data'; /** * This file contains custom RxJS operators that can be used in multiple places diff --git a/src/app/bitstream-page/bitstream-page.resolver.ts b/modules/core/src/lib/core/shared/resolvers/bitstream-page.resolver.ts similarity index 81% rename from src/app/bitstream-page/bitstream-page.resolver.ts rename to modules/core/src/lib/core/shared/resolvers/bitstream-page.resolver.ts index f6a039b1d85..ec8e11ff9a5 100644 --- a/src/app/bitstream-page/bitstream-page.resolver.ts +++ b/modules/core/src/lib/core/shared/resolvers/bitstream-page.resolver.ts @@ -6,14 +6,14 @@ import { } from '@angular/router'; import { Observable } from 'rxjs'; -import { BitstreamDataService } from '../core/data/bitstream-data.service'; -import { RemoteData } from '../core/data/remote-data'; -import { Bitstream } from '../core/shared/bitstream.model'; -import { getFirstCompletedRemoteData } from '../core/shared/operators'; +import { BitstreamDataService } from '../../data'; import { followLink, FollowLinkConfig, -} from '../shared/utils/follow-link-config.model'; +} from '../../data'; +import { RemoteData } from '../../data'; +import { Bitstream } from '../bitstream.model'; +import { getFirstCompletedRemoteData } from '../operators'; /** * The self links defined in this list are expected to be requested somewhere in the near future diff --git a/modules/core/src/lib/core/shared/resolvers/index.ts b/modules/core/src/lib/core/shared/resolvers/index.ts new file mode 100644 index 00000000000..6dae323305f --- /dev/null +++ b/modules/core/src/lib/core/shared/resolvers/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './bitstream-page.resolver'; +export * from './item-page.resolver'; +export * from './item.resolver'; diff --git a/src/app/item-page/item-page.resolver.spec.ts b/modules/core/src/lib/core/shared/resolvers/item-page.resolver.spec.ts similarity index 91% rename from src/app/item-page/item-page.resolver.spec.ts rename to modules/core/src/lib/core/shared/resolvers/item-page.resolver.spec.ts index ab92a058f67..39ebbbb30d8 100644 --- a/src/app/item-page/item-page.resolver.spec.ts +++ b/modules/core/src/lib/core/shared/resolvers/item-page.resolver.spec.ts @@ -5,12 +5,14 @@ import { } from '@angular/router'; import { first } from 'rxjs/operators'; -import { DSpaceObject } from '../core/shared/dspace-object.model'; -import { MetadataValueFilter } from '../core/shared/metadata.models'; -import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils'; -import { AuthServiceStub } from '../shared/testing/auth-service.stub'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; +import { AuthServiceStub } from '../../utilities/testing/auth-service.stub'; +import { DSpaceObject } from '../dspace-object.model'; +import { MetadataValueFilter } from '../metadata.models'; import { itemPageResolver } from './item-page.resolver'; + + describe('itemPageResolver', () => { beforeEach(() => { TestBed.configureTestingModule({ diff --git a/src/app/item-page/item-page.resolver.ts b/modules/core/src/lib/core/shared/resolvers/item-page.resolver.ts similarity index 72% rename from src/app/item-page/item-page.resolver.ts rename to modules/core/src/lib/core/shared/resolvers/item-page.resolver.ts index ef59bf00b8e..93eac3ab36a 100644 --- a/src/app/item-page/item-page.resolver.ts +++ b/modules/core/src/lib/core/shared/resolvers/item-page.resolver.ts @@ -5,21 +5,25 @@ import { Router, RouterStateSnapshot, } from '@angular/router'; +import { hasValue } from '@dspace/shared/utils'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { AppState } from '../app.reducer'; -import { AuthService } from '../core/auth/auth.service'; -import { ItemDataService } from '../core/data/item-data.service'; -import { RemoteData } from '../core/data/remote-data'; -import { ResolvedAction } from '../core/resolving/resolver.actions'; -import { redirectOn4xx } from '../core/shared/authorized.operators'; -import { Item } from '../core/shared/item.model'; -import { getFirstCompletedRemoteData } from '../core/shared/operators'; -import { hasValue } from '../shared/empty.util'; +import { AuthService } from '../../auth'; +import { + APP_CONFIG, + AppConfig, +} from '../../config'; +import { ItemDataService } from '../../data'; +import { RemoteData } from '../../data'; +import { ResolvedAction } from '../../resolving'; +import { getDSpaceObjectRoute } from '../../router'; +import { redirectOn4xx } from '../authorized.operators'; +import { Item } from '../item.model'; +import { getFirstCompletedRemoteData } from '../operators'; import { getItemPageLinksToFollow } from './item.resolver'; -import { getItemPageRoute } from './item-page-routing-paths'; +import { CoreState } from "../../core-state.model"; /** * Method for resolving an item based on the parameters in the current route @@ -27,8 +31,9 @@ import { getItemPageRoute } from './item-page-routing-paths'; * @param {RouterStateSnapshot} state The current RouterStateSnapshot * @param {Router} router * @param {ItemDataService} itemService - * @param {Store} store + * @param {Store} store * @param {AuthService} authService + * @param appConfig * @returns Observable<> Emits the found item based on the parameters in the current route, * or an error if something went wrong */ @@ -37,14 +42,15 @@ export const itemPageResolver: ResolveFn> = ( state: RouterStateSnapshot, router: Router = inject(Router), itemService: ItemDataService = inject(ItemDataService), - store: Store = inject(Store), + store: Store = inject(Store), authService: AuthService = inject(AuthService), + appConfig: AppConfig = inject(APP_CONFIG), ): Observable> => { const itemRD$ = itemService.findById( route.params.id, true, false, - ...getItemPageLinksToFollow(), + ...getItemPageLinksToFollow(appConfig.item.showAccessStatuses), ).pipe( getFirstCompletedRemoteData(), redirectOn4xx(router, authService), @@ -63,7 +69,7 @@ export const itemPageResolver: ResolveFn> = ( // or semicolons) and thisRoute has been encoded with that function. If we want to compare // it with itemRoute, we have to run itemRoute through Angular's version as well to ensure // the same characters are encoded the same way. - const itemRoute = router.parseUrl(getItemPageRoute(rd.payload)).toString(); + const itemRoute = router.parseUrl(getDSpaceObjectRoute(rd.payload)).toString(); if (!thisRoute.startsWith(itemRoute)) { const itemId = rd.payload.uuid; diff --git a/src/app/item-page/item.resolver.ts b/modules/core/src/lib/core/shared/resolvers/item.resolver.ts similarity index 65% rename from src/app/item-page/item.resolver.ts rename to modules/core/src/lib/core/shared/resolvers/item.resolver.ts index 1fb00d91659..273f7600aee 100644 --- a/src/app/item-page/item.resolver.ts +++ b/modules/core/src/lib/core/shared/resolvers/item.resolver.ts @@ -7,23 +7,26 @@ import { import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; -import { environment } from '../../environments/environment'; -import { AppState } from '../app.reducer'; -import { ItemDataService } from '../core/data/item-data.service'; -import { RemoteData } from '../core/data/remote-data'; -import { ResolvedAction } from '../core/resolving/resolver.actions'; -import { Item } from '../core/shared/item.model'; -import { getFirstCompletedRemoteData } from '../core/shared/operators'; +import { + APP_CONFIG, + AppConfig, +} from '../../config'; import { followLink, FollowLinkConfig, -} from '../shared/utils/follow-link-config.model'; +} from '../../data'; +import { ItemDataService } from '../../data'; +import { RemoteData } from '../../data'; +import { ResolvedAction } from '../../resolving'; +import { Item } from '../item.model'; +import { getFirstCompletedRemoteData } from '../operators'; +import { CoreState } from "../../core-state.model"; /** * The self links defined in this list are expected to be requested somewhere in the near future * Requesting them as embeds will limit the number of requests */ -export function getItemPageLinksToFollow(): FollowLinkConfig[] { +export function getItemPageLinksToFollow(showAccessStatuses: boolean): FollowLinkConfig[] { const followLinks: FollowLinkConfig[] = [ followLink('owningCollection', {}, followLink('parentCommunity', {}, @@ -33,7 +36,7 @@ export function getItemPageLinksToFollow(): FollowLinkConfig[] { followLink('version', {}, followLink('versionhistory')), followLink('thumbnail'), ]; - if (environment.item.showAccessStatuses) { + if (showAccessStatuses) { followLinks.push(followLink('accessStatus')); } return followLinks; @@ -43,13 +46,14 @@ export const itemResolver: ResolveFn> = ( route: ActivatedRouteSnapshot, state: RouterStateSnapshot, itemService: ItemDataService = inject(ItemDataService), - store: Store = inject(Store), + store: Store = inject(Store), + appConfig: AppConfig = inject(APP_CONFIG), ): Observable> => { const itemRD$ = itemService.findById( route.params.id, true, false, - ...getItemPageLinksToFollow(), + ...getItemPageLinksToFollow(appConfig.item.showAccessStatuses), ).pipe( getFirstCompletedRemoteData(), ); diff --git a/src/app/core/shared/resource-type.ts b/modules/core/src/lib/core/shared/resource-type.ts similarity index 100% rename from src/app/core/shared/resource-type.ts rename to modules/core/src/lib/core/shared/resource-type.ts diff --git a/modules/core/src/lib/core/shared/search/index.ts b/modules/core/src/lib/core/shared/search/index.ts new file mode 100644 index 00000000000..2026773dd3a --- /dev/null +++ b/modules/core/src/lib/core/shared/search/index.ts @@ -0,0 +1,8 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './search-filters'; +export * from './types'; +export * from './search-configuration.service'; +export * from './search-filter.service'; +export * from './search.service'; diff --git a/src/app/shared/search/models/applied-filter.model.ts b/modules/core/src/lib/core/shared/search/models/applied-filter.model.ts similarity index 100% rename from src/app/shared/search/models/applied-filter.model.ts rename to modules/core/src/lib/core/shared/search/models/applied-filter.model.ts diff --git a/src/app/shared/search/models/facet-config-response.model.ts b/modules/core/src/lib/core/shared/search/models/facet-config-response.model.ts similarity index 61% rename from src/app/shared/search/models/facet-config-response.model.ts rename to modules/core/src/lib/core/shared/search/models/facet-config-response.model.ts index 821d4cdaebb..935d0ae523d 100644 --- a/src/app/shared/search/models/facet-config-response.model.ts +++ b/modules/core/src/lib/core/shared/search/models/facet-config-response.model.ts @@ -1,11 +1,11 @@ import { deserialize } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../../core/cache/cacheable-object.model'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; +import { typedObject } from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { excludeFromEquals } from '../../../utilities'; +import { HALLink } from '../../hal-link.model'; +import { FACET_CONFIG_RESPONSE } from '../types'; import { SearchFilterConfig } from './search-filter-config.model'; -import { FACET_CONFIG_RESPONSE } from './types/facet-config-response.resouce-type'; /** * The response from the discover/facets endpoint diff --git a/src/app/shared/search/models/facet-value.model.ts b/modules/core/src/lib/core/shared/search/models/facet-value.model.ts similarity index 84% rename from src/app/shared/search/models/facet-value.model.ts rename to modules/core/src/lib/core/shared/search/models/facet-value.model.ts index 6861b452e0d..2066057a0ca 100644 --- a/src/app/shared/search/models/facet-value.model.ts +++ b/modules/core/src/lib/core/shared/search/models/facet-value.model.ts @@ -4,8 +4,8 @@ import { deserialize, } from 'cerialize'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { HALResource } from '../../../core/shared/hal-resource.model'; +import { HALLink } from '../../hal-link.model'; +import { HALResource } from '../../hal-resource.model'; /** * Class representing possible values for a certain filter diff --git a/src/app/shared/search/models/facet-values.model.ts b/modules/core/src/lib/core/shared/search/models/facet-values.model.ts similarity index 77% rename from src/app/shared/search/models/facet-values.model.ts rename to modules/core/src/lib/core/shared/search/models/facet-values.model.ts index a0cdffb9a57..f71aa0d15d7 100644 --- a/src/app/shared/search/models/facet-values.model.ts +++ b/modules/core/src/lib/core/shared/search/models/facet-values.model.ts @@ -4,13 +4,13 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; +import { typedObject } from '../../../cache'; +import { PaginatedList } from '../../../data'; +import { excludeFromEquals } from '../../../utilities'; +import { FACET_VALUES } from '../types'; import { FacetValue } from './facet-value.model'; import { FilterType } from './filter-type.model'; import { SearchQueryResponse } from './search-query-response.model'; -import { FACET_VALUES } from './types/facet-values.resource-type'; @typedObject @inheritSerialization(PaginatedList) diff --git a/src/app/shared/search/models/filter-type.model.ts b/modules/core/src/lib/core/shared/search/models/filter-type.model.ts similarity index 100% rename from src/app/shared/search/models/filter-type.model.ts rename to modules/core/src/lib/core/shared/search/models/filter-type.model.ts diff --git a/modules/core/src/lib/core/shared/search/models/index.ts b/modules/core/src/lib/core/shared/search/models/index.ts new file mode 100644 index 00000000000..8b064ef0729 --- /dev/null +++ b/modules/core/src/lib/core/shared/search/models/index.ts @@ -0,0 +1,14 @@ +// created from 'create-ts-index' + +export * from './applied-filter.model'; +export * from './facet-config-response.model'; +export * from './facet-value.model'; +export * from './facet-values.model'; +export * from './filter-type.model'; +export * from './search-filter-config.model'; +export * from './search-filter.model'; +export * from './search-objects.model'; +export * from './search-options.model'; +export * from './search-query-response.model'; +export * from './search-result-sorting.model'; +export * from './search-result.model'; diff --git a/src/app/shared/search/models/search-filter-config.model.ts b/modules/core/src/lib/core/shared/search/models/search-filter-config.model.ts similarity index 80% rename from src/app/shared/search/models/search-filter-config.model.ts rename to modules/core/src/lib/core/shared/search/models/search-filter-config.model.ts index 4498ba57636..e67a9f528de 100644 --- a/src/app/shared/search/models/search-filter-config.model.ts +++ b/modules/core/src/lib/core/shared/search/models/search-filter-config.model.ts @@ -4,12 +4,12 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { CacheableObject } from '../../../core/cache/cacheable-object.model'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; +import { typedObject } from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { excludeFromEquals } from '../../../utilities'; +import { HALLink } from '../../hal-link.model'; +import { SEARCH_FILTER_CONFIG } from '../types'; import { FilterType } from './filter-type.model'; -import { SEARCH_FILTER_CONFIG } from './types/search-filter-config.resource-type'; /** * The configuration for a search filter diff --git a/src/app/shared/search/models/search-filter.model.ts b/modules/core/src/lib/core/shared/search/models/search-filter.model.ts similarity index 100% rename from src/app/shared/search/models/search-filter.model.ts rename to modules/core/src/lib/core/shared/search/models/search-filter.model.ts diff --git a/src/app/shared/search/models/search-objects.model.ts b/modules/core/src/lib/core/shared/search/models/search-objects.model.ts similarity index 68% rename from src/app/shared/search/models/search-objects.model.ts rename to modules/core/src/lib/core/shared/search/models/search-objects.model.ts index 5c70e3b0a1a..28c0cc8a474 100644 --- a/src/app/shared/search/models/search-objects.model.ts +++ b/modules/core/src/lib/core/shared/search/models/search-objects.model.ts @@ -3,13 +3,13 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { excludeFromEquals } from '../../../core/utilities/equals.decorators'; +import { typedObject } from '../../../cache'; +import { PaginatedList } from '../../../data'; +import { excludeFromEquals } from '../../../utilities'; +import { DSpaceObject } from '../../dspace-object.model'; +import { SEARCH_OBJECTS } from '../types'; import { SearchQueryResponse } from './search-query-response.model'; import { SearchResult } from './search-result.model'; -import { SEARCH_OBJECTS } from './types/search-objects.resource-type'; /** * Class representing the response returned by the server when performing a search request diff --git a/src/app/shared/search/models/search-options.model.spec.ts b/modules/core/src/lib/core/shared/search/models/search-options.model.spec.ts similarity index 94% rename from src/app/shared/search/models/search-options.model.spec.ts rename to modules/core/src/lib/core/shared/search/models/search-options.model.spec.ts index 614ca89160d..cff07bd4987 100644 --- a/src/app/shared/search/models/search-options.model.spec.ts +++ b/modules/core/src/lib/core/shared/search/models/search-options.model.spec.ts @@ -1,7 +1,8 @@ -import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model'; +import { DSpaceObjectType } from '../../dspace-object-type.model'; import { SearchFilter } from './search-filter.model'; import { SearchOptions } from './search-options.model'; + describe('SearchOptions', () => { let options: SearchOptions; diff --git a/src/app/shared/search/models/search-options.model.ts b/modules/core/src/lib/core/shared/search/models/search-options.model.ts similarity index 92% rename from src/app/shared/search/models/search-options.model.ts rename to modules/core/src/lib/core/shared/search/models/search-options.model.ts index 531d5254938..c8e52893795 100644 --- a/src/app/shared/search/models/search-options.model.ts +++ b/modules/core/src/lib/core/shared/search/models/search-options.model.ts @@ -1,10 +1,11 @@ -import { DSpaceObjectType } from '../../../core/shared/dspace-object-type.model'; -import { ViewMode } from '../../../core/shared/view-mode.model'; -import { URLCombiner } from '../../../core/url-combiner/url-combiner'; import { hasValue, isNotEmpty, -} from '../../empty.util'; +} from '@dspace/shared/utils'; + +import { URLCombiner } from '../../../url-combiner'; +import { DSpaceObjectType } from '../../dspace-object-type.model'; +import { ViewMode } from '../../view-mode.model'; import { SearchFilter } from './search-filter.model'; /** diff --git a/src/app/shared/search/models/search-query-response.model.ts b/modules/core/src/lib/core/shared/search/models/search-query-response.model.ts similarity index 89% rename from src/app/shared/search/models/search-query-response.model.ts rename to modules/core/src/lib/core/shared/search/models/search-query-response.model.ts index d149a21c6f3..f1c9e9089bb 100644 --- a/src/app/shared/search/models/search-query-response.model.ts +++ b/modules/core/src/lib/core/shared/search/models/search-query-response.model.ts @@ -3,8 +3,8 @@ import { autoserializeAs, } from 'cerialize'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { PageInfo } from '../../../core/shared/page-info.model'; +import { PaginatedList } from '../../../data'; +import { PageInfo } from '../../page-info.model'; import { AppliedFilter } from './applied-filter.model'; import { SearchResultSorting } from './search-result-sorting.model'; diff --git a/src/app/shared/search/models/search-result-sorting.model.ts b/modules/core/src/lib/core/shared/search/models/search-result-sorting.model.ts similarity index 100% rename from src/app/shared/search/models/search-result-sorting.model.ts rename to modules/core/src/lib/core/shared/search/models/search-result-sorting.model.ts diff --git a/src/app/shared/search/models/search-result.model.ts b/modules/core/src/lib/core/shared/search/models/search-result.model.ts similarity index 62% rename from src/app/shared/search/models/search-result.model.ts rename to modules/core/src/lib/core/shared/search/models/search-result.model.ts index e3bc9279414..4c3b5c36de6 100644 --- a/src/app/shared/search/models/search-result.model.ts +++ b/modules/core/src/lib/core/shared/search/models/search-result.model.ts @@ -3,18 +3,18 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../../core/cache/builders/build-decorators'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { GenericConstructor } from '../../../core/shared/generic-constructor'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { HALResource } from '../../../core/shared/hal-resource.model'; -import { MetadataMap } from '../../../core/shared/metadata.models'; +import { typedObject } from '../../../cache'; +import { ListableObject } from '../../../object-collection'; import { excludeFromEquals, fieldsForEquals, -} from '../../../core/utilities/equals.decorators'; -import { ListableObject } from '../../object-collection/shared/listable-object.model'; -import { SEARCH_RESULT } from './types/search-result.resource-type'; +} from '../../../utilities'; +import { DSpaceObject } from '../../dspace-object.model'; +import { GenericConstructor } from '../../generic-constructor'; +import { HALLink } from '../../hal-link.model'; +import { HALResource } from '../../hal-resource.model'; +import { MetadataMap } from '../../metadata.models'; +import { SEARCH_RESULT } from '../types'; /** * Represents a search result object of a certain () DSpaceObject diff --git a/src/app/core/shared/search/search-configuration.service.spec.ts b/modules/core/src/lib/core/shared/search/search-configuration.service.spec.ts similarity index 94% rename from src/app/core/shared/search/search-configuration.service.spec.ts rename to modules/core/src/lib/core/shared/search/search-configuration.service.spec.ts index d56ee8f756c..aec0a9059a1 100644 --- a/src/app/core/shared/search/search-configuration.service.spec.ts +++ b/modules/core/src/lib/core/shared/search/search-configuration.service.spec.ts @@ -1,4 +1,5 @@ /* eslint-disable no-empty, @typescript-eslint/no-empty-function */ +import { TestBed } from '@angular/core/testing'; import { Params } from '@angular/router'; import { combineLatest as observableCombineLatest, @@ -7,26 +8,30 @@ import { } from 'rxjs'; import { map } from 'rxjs/operators'; -import { environment } from '../../../../environments/environment.test'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { AppliedFilter } from '../../../shared/search/models/applied-filter.model'; -import { PaginatedSearchOptions } from '../../../shared/search/models/paginated-search-options.model'; -import { SearchFilter } from '../../../shared/search/models/search-filter.model'; -import { SearchObjects } from '../../../shared/search/models/search-objects.model'; -import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub'; -import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub'; import { SortDirection, SortOptions, } from '../../cache/models/sort-options.model'; +import { APP_CONFIG } from '../../config/app-config.interface'; import { RemoteData } from '../../data/remote-data'; import { RequestEntry } from '../../data/request-entry.model'; +import { getMockRequestService } from '../../mocks/request.service.mock'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; +import { ActivatedRouteStub } from '../../utilities/testing/active-router.stub'; +import { PaginationServiceStub } from '../../utilities/testing/pagination-service.stub'; +import { PaginatedSearchOptions } from '../paginated-search-options.model'; +import { PaginationComponentOptions } from '../pagination-component-options.model'; +import { AppliedFilter } from './models/applied-filter.model'; +import { SearchFilter } from './models/search-filter.model'; +import { SearchObjects } from './models/search-objects.model'; import { SearchConfigurationService } from './search-configuration.service'; + + describe('SearchConfigurationService', () => { let service: SearchConfigurationService; + let environment; + const value1 = 'random value'; const prefixFilter = { 'f.author': ['another value'], @@ -83,6 +88,7 @@ describe('SearchConfigurationService', () => { }, }; beforeEach(() => { + environment = TestBed.inject(APP_CONFIG); paginationService = new PaginationServiceStub(Object.assign(new PaginationComponentOptions(), { id: defaults.pagination.id, currentPage: 1, diff --git a/src/app/core/shared/search/search-configuration.service.ts b/modules/core/src/lib/core/shared/search/search-configuration.service.ts similarity index 91% rename from src/app/core/shared/search/search-configuration.service.ts rename to modules/core/src/lib/core/shared/search/search-configuration.service.ts index b9e0207cc30..ff8c713b453 100644 --- a/src/app/core/shared/search/search-configuration.service.ts +++ b/modules/core/src/lib/core/shared/search/search-configuration.service.ts @@ -7,6 +7,12 @@ import { ActivatedRoute, Params, } from '@angular/router'; +import { + hasNoValue, + hasValue, + isNotEmpty, + isNotEmptyOperator, +} from '@dspace/shared/utils'; import { BehaviorSubject, combineLatest as observableCombineLatest, @@ -21,39 +27,26 @@ import { take, } from 'rxjs/operators'; -import { - APP_CONFIG, - AppConfig, -} from '../../../../config/app-config.interface'; -import { - hasNoValue, - hasValue, - isNotEmpty, - isNotEmptyOperator, -} from '../../../shared/empty.util'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { FacetConfigResponse } from '../../../shared/search/models/facet-config-response.model'; -import { FilterType } from '../../../shared/search/models/filter-type.model'; -import { PaginatedSearchOptions } from '../../../shared/search/models/paginated-search-options.model'; -import { SearchFilter } from '../../../shared/search/models/search-filter.model'; -import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model'; -import { SearchOptions } from '../../../shared/search/models/search-options.model'; -import { addOperatorToFilterValue } from '../../../shared/search/search.utils'; -import { LinkService } from '../../cache/builders/link.service'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; +import { addOperatorToFilterValue } from '../../utilities'; +import { LinkService } from '../../cache'; +import { RemoteDataBuildService } from '../../cache'; import { SortDirection, SortOptions, -} from '../../cache/models/sort-options.model'; -import { FacetConfigResponseParsingService } from '../../data/facet-config-response-parsing.service'; -import { ResponseParsingService } from '../../data/parsing.service'; -import { RemoteData } from '../../data/remote-data'; -import { GetRequest } from '../../data/request.models'; -import { RequestService } from '../../data/request.service'; -import { PaginationService } from '../../pagination/pagination.service'; -import { RouteService } from '../../services/route.service'; -import { URLCombiner } from '../../url-combiner/url-combiner'; +} from '../../cache'; +import { + APP_CONFIG, + AppConfig, +} from '../../config'; +import { FacetConfigResponseParsingService } from '../../data'; +import { ResponseParsingService } from '../../data'; +import { RemoteData } from '../../data'; +import { GetRequest } from '../../data'; +import { RequestService } from '../../data'; +import { PaginationService } from '../../pagination'; +import { RouteService } from '../../services'; +import { URLCombiner } from '../../url-combiner'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities'; import { DSpaceObjectType } from '../dspace-object-type.model'; import { GenericConstructor } from '../generic-constructor'; import { HALEndpointService } from '../hal-endpoint.service'; @@ -61,12 +54,19 @@ import { getAllSucceededRemoteDataPayload, getFirstSucceededRemoteData, } from '../operators'; +import { PaginatedSearchOptions } from '../paginated-search-options.model'; +import { PaginationComponentOptions } from '../pagination-component-options.model'; import { ViewMode } from '../view-mode.model'; +import { FacetConfigResponse } from './models'; +import { FilterType } from './models'; +import { SearchFilter } from './models'; +import { SearchFilterConfig } from './models'; +import { SearchOptions } from './models'; import { FilterConfig, SearchConfig, SortConfig, -} from './search-filters/search-config.model'; +} from './search-filters'; /** * Service that performs all actions that have to do with the current search configuration @@ -259,7 +259,7 @@ export class SearchConfigurationService implements OnDestroy { } /** - * Creates an observable of SearchConfig every time the configuration stream emits. + * Creates an observable of SearchPageConfig every time the configuration stream emits. * @param configuration The search configuration * @param scope The search scope if exists */ @@ -270,8 +270,8 @@ export class SearchConfigurationService implements OnDestroy { } /** - * Return the SortOptions list available for the given SearchConfig - * @param searchConfig The SearchConfig object + * Return the SortOptions list available for the given SearchPageConfig + * @param searchConfig The SearchPageConfig object */ getConfigurationSortOptions(searchConfig: SearchConfig): SortOptions[] { return searchConfig.sortOptions.map((entry: SortConfig) => ({ diff --git a/src/app/core/shared/search/search-filter.service.spec.ts b/modules/core/src/lib/core/shared/search/search-filter.service.spec.ts similarity index 93% rename from src/app/core/shared/search/search-filter.service.spec.ts rename to modules/core/src/lib/core/shared/search/search-filter.service.spec.ts index 4a7243de953..b49e67150f9 100644 --- a/src/app/core/shared/search/search-filter.service.spec.ts +++ b/modules/core/src/lib/core/shared/search/search-filter.service.spec.ts @@ -5,9 +5,11 @@ import { import { Store } from '@ngrx/store'; import { of as observableOf } from 'rxjs'; -import { FilterType } from '../../../shared/search/models/filter-type.model'; -import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model'; -import { SearchOptions } from '../../../shared/search/models/search-options.model'; +import { + SortDirection, + SortOptions, +} from '../../cache/models/sort-options.model'; +import { RouteService } from '../../services/route.service'; import { SearchFilterCollapseAction, SearchFilterDecrementPageAction, @@ -16,18 +18,18 @@ import { SearchFilterInitializeAction, SearchFilterResetPageAction, SearchFilterToggleAction, -} from '../../../shared/search/search-filters/search-filter/search-filter.actions'; -import { SearchFiltersState } from '../../../shared/search/search-filters/search-filter/search-filter.reducer'; -import { routeServiceStub } from '../../../shared/testing/route-service.stub'; -import { SearchServiceStub } from '../../../shared/testing/search-service.stub'; -import { - SortDirection, - SortOptions, -} from '../../cache/models/sort-options.model'; -import { RouteService } from '../../services/route.service'; +} from '../../states/search-filters/search-filter.actions'; +import { SearchFiltersState } from '../../states/search-filters/search-filter.reducer'; +import { routeServiceStub } from '../../utilities/testing/route-service.stub'; +import { SearchServiceStub } from '../../utilities/testing/search-service.stub'; +import { FilterType } from './models/filter-type.model'; +import { SearchFilterConfig } from './models/search-filter-config.model'; +import { SearchOptions } from './models/search-options.model'; import { SearchService } from './search.service'; import { SearchFilterService } from './search-filter.service'; + + describe('SearchFilterService', () => { let service: SearchFilterService; const filterName1 = 'test name'; diff --git a/src/app/core/shared/search/search-filter.service.ts b/modules/core/src/lib/core/shared/search/search-filter.service.ts similarity index 89% rename from src/app/core/shared/search/search-filter.service.ts rename to modules/core/src/lib/core/shared/search/search-filter.service.ts index 2803e71eebf..a3522efbb06 100644 --- a/src/app/core/shared/search/search-filter.service.ts +++ b/modules/core/src/lib/core/shared/search/search-filter.service.ts @@ -1,5 +1,9 @@ import { Injectable } from '@angular/core'; import { Params } from '@angular/router'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { createSelector, MemoizedSelector, @@ -16,19 +20,11 @@ import { map, } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, -} from '../../../shared/empty.util'; -import { InputSuggestion } from '../../../shared/input-suggestions/input-suggestions.model'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { FacetValue } from '../../../shared/search/models/facet-value.model'; -import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model'; -import { SearchOptions } from '../../../shared/search/models/search-options.model'; +import { InputSuggestion } from '../../config'; import { getFacetValueForType, stripOperatorFromFilterValue, -} from '../../../shared/search/search.utils'; +} from '../../utilities'; import { SearchFilterCollapseAction, SearchFilterDecrementPageAction, @@ -38,20 +34,24 @@ import { SearchFilterMinimizeAllPageAction, SearchFilterResetPageAction, SearchFilterToggleAction, -} from '../../../shared/search/search-filters/search-filter/search-filter.actions'; +} from '../../states'; import { SearchFiltersState, SearchFilterState, -} from '../../../shared/search/search-filters/search-filter/search-filter.reducer'; -import { EmphasizePipe } from '../../../shared/utils/emphasize.pipe'; +} from '../../states'; +import { EmphasizePipe } from '../emphasize.pipe'; import { SortDirection, SortOptions, -} from '../../cache/models/sort-options.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { RouteService } from '../../services/route.service'; +} from '../../cache'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { RouteService } from '../../services'; import { getFirstSucceededRemoteData } from '../operators'; +import { PaginationComponentOptions } from '../pagination-component-options.model'; +import { FacetValue } from './models'; +import { SearchFilterConfig } from './models'; +import { SearchOptions } from './models'; import { SearchService } from './search.service'; const filterStateSelector = (state: SearchFiltersState) => state.searchFilter; @@ -289,10 +289,10 @@ export class SearchFilterService { } function filterByNameSelector(name: string): MemoizedSelector { - return keySelector(name); + return filteredKeySelector(name); } -export function keySelector(key: string): MemoizedSelector { +export function filteredKeySelector(key: string): MemoizedSelector { return createSelector(filterStateSelector, (state: SearchFilterState) => { if (hasValue(state)) { return state[key]; diff --git a/modules/core/src/lib/core/shared/search/search-filters/index.ts b/modules/core/src/lib/core/shared/search/search-filters/index.ts new file mode 100644 index 00000000000..354ebf6f8c6 --- /dev/null +++ b/modules/core/src/lib/core/shared/search/search-filters/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './search-config.model'; +export * from './search-config.resource-type'; diff --git a/src/app/core/shared/search/search-filters/search-config.model.ts b/modules/core/src/lib/core/shared/search/search-filters/search-config.model.ts similarity index 85% rename from src/app/core/shared/search/search-filters/search-config.model.ts rename to modules/core/src/lib/core/shared/search/search-filters/search-config.model.ts index 2ebe5e84555..3516834b31e 100644 --- a/src/app/core/shared/search/search-filters/search-config.model.ts +++ b/modules/core/src/lib/core/shared/search/search-filters/search-config.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { FilterType } from '../../../../shared/search/models/filter-type.model'; -import { typedObject } from '../../../cache/builders/build-decorators'; -import { CacheableObject } from '../../../cache/cacheable-object.model'; +import { typedObject } from '../../../cache'; +import { CacheableObject } from '../../../cache'; import { HALLink } from '../../hal-link.model'; import { ResourceType } from '../../resource-type'; +import { FilterType } from '../models'; import { SEARCH_CONFIG } from './search-config.resource-type'; /** diff --git a/src/app/core/shared/search/search-filters/search-config.resource-type.ts b/modules/core/src/lib/core/shared/search/search-filters/search-config.resource-type.ts similarity index 82% rename from src/app/core/shared/search/search-filters/search-config.resource-type.ts rename to modules/core/src/lib/core/shared/search/search-filters/search-config.resource-type.ts index 2047f52fdb7..a595adc70be 100644 --- a/src/app/core/shared/search/search-filters/search-config.resource-type.ts +++ b/modules/core/src/lib/core/shared/search/search-filters/search-config.resource-type.ts @@ -1,7 +1,7 @@ import { ResourceType } from '../../resource-type'; /** - * The resource type for SearchConfig + * The resource type for SearchPageConfig * * Needs to be in a separate file to prevent circular * dependencies in webpack. diff --git a/src/app/core/shared/search/search.service.spec.ts b/modules/core/src/lib/core/shared/search/search.service.spec.ts similarity index 92% rename from src/app/core/shared/search/search.service.spec.ts rename to modules/core/src/lib/core/shared/search/search.service.spec.ts index 64b305ff643..b34fd814661 100644 --- a/src/app/core/shared/search/search.service.spec.ts +++ b/modules/core/src/lib/core/shared/search/search.service.spec.ts @@ -14,33 +14,34 @@ import { } from 'rxjs'; import { map } from 'rxjs/operators'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { PaginatedSearchOptions } from '../../../shared/search/models/paginated-search-options.model'; -import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model'; -import { SearchObjects } from '../../../shared/search/models/search-objects.model'; -import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub'; -import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub'; -import { routeServiceStub } from '../../../shared/testing/route-service.stub'; -import { RouterStub } from '../../../shared/testing/router.stub'; + +import anything = jasmine.anything; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { CommunityDataService } from '../../data/community-data.service'; import { DSpaceObjectDataService } from '../../data/dspace-object-data.service'; import { RemoteData } from '../../data/remote-data'; import { RequestService } from '../../data/request.service'; import { RequestEntry } from '../../data/request-entry.model'; +import { getMockRequestService } from '../../mocks/request.service.mock'; import { PaginationService } from '../../pagination/pagination.service'; import { RouteService } from '../../services/route.service'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; +import { ActivatedRouteStub } from '../../utilities/testing/active-router.stub'; +import { PaginationServiceStub } from '../../utilities/testing/pagination-service.stub'; +import { routeServiceStub } from '../../utilities/testing/route-service.stub'; +import { RouterStub } from '../../utilities/testing/router.stub'; import { HALEndpointService } from '../hal-endpoint.service'; +import { PaginatedSearchOptions } from '../paginated-search-options.model'; import { ViewMode } from '../view-mode.model'; +import { SearchFilterConfig } from './models/search-filter-config.model'; +import { SearchObjects } from './models/search-objects.model'; import { SearchService } from './search.service'; import { SearchConfigurationService } from './search-configuration.service'; -import anything = jasmine.anything; @Component({ template: '', standalone: true, - imports: [CommonModule], + imports: [], }) class DummyComponent { } diff --git a/src/app/core/shared/search/search.service.ts b/modules/core/src/lib/core/shared/search/search.service.ts similarity index 89% rename from src/app/core/shared/search/search.service.ts rename to modules/core/src/lib/core/shared/search/search.service.ts index 60a2da6af1e..b7b638374f6 100644 --- a/src/app/core/shared/search/search.service.ts +++ b/modules/core/src/lib/core/shared/search/search.service.ts @@ -1,5 +1,10 @@ /* eslint-disable max-classes-per-file */ import { Injectable } from '@angular/core'; +import { + hasValue, + hasValueOperator, + isNotEmpty, +} from '@dspace/shared/utils'; import { Angulartics2 } from 'angulartics2'; import { BehaviorSubject, @@ -14,34 +19,22 @@ import { tap, } from 'rxjs/operators'; -import { - hasValue, - hasValueOperator, - isNotEmpty, -} from '../../../shared/empty.util'; -import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { AppliedFilter } from '../../../shared/search/models/applied-filter.model'; -import { FacetValues } from '../../../shared/search/models/facet-values.model'; -import { PaginatedSearchOptions } from '../../../shared/search/models/paginated-search-options.model'; -import { SearchFilterConfig } from '../../../shared/search/models/search-filter-config.model'; -import { SearchObjects } from '../../../shared/search/models/search-objects.model'; -import { SearchResult } from '../../../shared/search/models/search-result.model'; -import { getSearchResultFor } from '../../../shared/search/search-result-element-decorator'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { BaseDataService } from '../../data/base/base-data.service'; -import { DSpaceObjectDataService } from '../../data/dspace-object-data.service'; -import { FacetValueResponseParsingService } from '../../data/facet-value-response-parsing.service'; -import { ResponseParsingService } from '../../data/parsing.service'; -import { RemoteData } from '../../data/remote-data'; -import { GetRequest } from '../../data/request.models'; -import { RequestService } from '../../data/request.service'; -import { RestRequest } from '../../data/rest-request.model'; -import { SearchResponseParsingService } from '../../data/search-response-parsing.service'; -import { PaginationService } from '../../pagination/pagination.service'; -import { RouteService } from '../../services/route.service'; -import { URLCombiner } from '../../url-combiner/url-combiner'; +import { getSearchResultFor } from '../../config'; +import { RemoteDataBuildService } from '../../cache'; +import { BaseDataService } from '../../data'; +import { DSpaceObjectDataService } from '../../data'; +import { FacetValueResponseParsingService } from '../../data'; +import { FollowLinkConfig } from '../../data'; +import { ResponseParsingService } from '../../data'; +import { RemoteData } from '../../data'; +import { GetRequest } from '../../data'; +import { RequestService } from '../../data'; +import { RestRequest } from '../../data'; +import { SearchResponseParsingService } from '../../data'; +import { ListableObject } from '../../object-collection'; +import { PaginationService } from '../../pagination'; +import { RouteService } from '../../services'; +import { URLCombiner } from '../../url-combiner'; import { DSpaceObject } from '../dspace-object.model'; import { GenericConstructor } from '../generic-constructor'; import { HALEndpointService } from '../hal-endpoint.service'; @@ -49,7 +42,14 @@ import { getFirstCompletedRemoteData, getRemoteDataPayload, } from '../operators'; +import { PaginatedSearchOptions } from '../paginated-search-options.model'; +import { PaginationComponentOptions } from '../pagination-component-options.model'; import { ViewMode } from '../view-mode.model'; +import { AppliedFilter } from './models'; +import { FacetValues } from './models'; +import { SearchFilterConfig } from './models'; +import { SearchObjects } from './models'; +import { SearchResult } from './models'; import { SearchConfigurationService } from './search-configuration.service'; /** diff --git a/src/app/shared/search/models/types/facet-config-response.resouce-type.ts b/modules/core/src/lib/core/shared/search/types/facet-config-response.resouce-type.ts similarity index 75% rename from src/app/shared/search/models/types/facet-config-response.resouce-type.ts rename to modules/core/src/lib/core/shared/search/types/facet-config-response.resouce-type.ts index 83f2ca0e666..bcc6908c030 100644 --- a/src/app/shared/search/models/types/facet-config-response.resouce-type.ts +++ b/modules/core/src/lib/core/shared/search/types/facet-config-response.resouce-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../../core/shared/resource-type'; +import { ResourceType } from '../../resource-type'; /** * The resource type for FacetConfigResponse diff --git a/src/app/shared/search/models/types/facet-values.resource-type.ts b/modules/core/src/lib/core/shared/search/types/facet-values.resource-type.ts similarity index 74% rename from src/app/shared/search/models/types/facet-values.resource-type.ts rename to modules/core/src/lib/core/shared/search/types/facet-values.resource-type.ts index c9d6c69c2ec..1db30960a48 100644 --- a/src/app/shared/search/models/types/facet-values.resource-type.ts +++ b/modules/core/src/lib/core/shared/search/types/facet-values.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../../core/shared/resource-type'; +import { ResourceType } from '../../resource-type'; /** * The resource type for FacetValues diff --git a/modules/core/src/lib/core/shared/search/types/index.ts b/modules/core/src/lib/core/shared/search/types/index.ts new file mode 100644 index 00000000000..a51b205e613 --- /dev/null +++ b/modules/core/src/lib/core/shared/search/types/index.ts @@ -0,0 +1,7 @@ +// created from 'create-ts-index' + +export * from './facet-config-response.resouce-type'; +export * from './facet-values.resource-type'; +export * from './search-filter-config.resource-type'; +export * from './search-objects.resource-type'; +export * from './search-result.resource-type'; diff --git a/src/app/shared/search/models/types/search-filter-config.resource-type.ts b/modules/core/src/lib/core/shared/search/types/search-filter-config.resource-type.ts similarity index 75% rename from src/app/shared/search/models/types/search-filter-config.resource-type.ts rename to modules/core/src/lib/core/shared/search/types/search-filter-config.resource-type.ts index eb7521b8dfc..fe8f7e20168 100644 --- a/src/app/shared/search/models/types/search-filter-config.resource-type.ts +++ b/modules/core/src/lib/core/shared/search/types/search-filter-config.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../../core/shared/resource-type'; +import { ResourceType } from '../../resource-type'; /** * The resource type for SearchFilterConfig diff --git a/src/app/shared/search/models/types/search-objects.resource-type.ts b/modules/core/src/lib/core/shared/search/types/search-objects.resource-type.ts similarity index 74% rename from src/app/shared/search/models/types/search-objects.resource-type.ts rename to modules/core/src/lib/core/shared/search/types/search-objects.resource-type.ts index 650b02f0058..d2528355467 100644 --- a/src/app/shared/search/models/types/search-objects.resource-type.ts +++ b/modules/core/src/lib/core/shared/search/types/search-objects.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../../core/shared/resource-type'; +import { ResourceType } from '../../resource-type'; /** * The resource type for SearchObjects diff --git a/src/app/shared/search/models/types/search-result.resource-type.ts b/modules/core/src/lib/core/shared/search/types/search-result.resource-type.ts similarity index 73% rename from src/app/shared/search/models/types/search-result.resource-type.ts rename to modules/core/src/lib/core/shared/search/types/search-result.resource-type.ts index 354c1898c4d..8809653147f 100644 --- a/src/app/shared/search/models/types/search-result.resource-type.ts +++ b/modules/core/src/lib/core/shared/search/types/search-result.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../../core/shared/resource-type'; +import { ResourceType } from '../../resource-type'; /** * The resource type for SearchResult diff --git a/src/app/core/shared/sequence.service.spec.ts b/modules/core/src/lib/core/shared/sequence.service.spec.ts similarity index 99% rename from src/app/core/shared/sequence.service.spec.ts rename to modules/core/src/lib/core/shared/sequence.service.spec.ts index e48ad3efcc9..04f5f31c0e3 100644 --- a/src/app/core/shared/sequence.service.spec.ts +++ b/modules/core/src/lib/core/shared/sequence.service.spec.ts @@ -7,6 +7,7 @@ */ import { SequenceService } from './sequence.service'; + let service: SequenceService; describe('SequenceService', () => { diff --git a/src/app/core/shared/sequence.service.ts b/modules/core/src/lib/core/shared/sequence.service.ts similarity index 100% rename from src/app/core/shared/sequence.service.ts rename to modules/core/src/lib/core/shared/sequence.service.ts diff --git a/src/app/core/shared/server-math.service.ts b/modules/core/src/lib/core/shared/server-math.service.ts similarity index 100% rename from src/app/core/shared/server-math.service.ts rename to modules/core/src/lib/core/shared/server-math.service.ts diff --git a/src/app/core/shared/site.model.ts b/modules/core/src/lib/core/shared/site.model.ts similarity index 82% rename from src/app/core/shared/site.model.ts rename to modules/core/src/lib/core/shared/site.model.ts index 6c6c2ff6216..90274adb206 100644 --- a/src/app/core/shared/site.model.ts +++ b/modules/core/src/lib/core/shared/site.model.ts @@ -1,6 +1,6 @@ import { inheritSerialization } from 'cerialize'; -import { typedObject } from '../cache/builders/build-decorators'; +import { typedObject } from '../cache'; import { DSpaceObject } from './dspace-object.model'; import { SITE } from './site.resource-type'; diff --git a/src/app/core/shared/site.resource-type.ts b/modules/core/src/lib/core/shared/site.resource-type.ts similarity index 100% rename from src/app/core/shared/site.resource-type.ts rename to modules/core/src/lib/core/shared/site.resource-type.ts diff --git a/src/app/core/shared/sort-option.model.ts b/modules/core/src/lib/core/shared/sort-option.model.ts similarity index 100% rename from src/app/core/shared/sort-option.model.ts rename to modules/core/src/lib/core/shared/sort-option.model.ts diff --git a/src/app/core/shared/submit-data-response-definition.model.ts b/modules/core/src/lib/core/shared/submit-data-response-definition.model.ts similarity index 52% rename from src/app/core/shared/submit-data-response-definition.model.ts rename to modules/core/src/lib/core/shared/submit-data-response-definition.model.ts index 351f30f339f..bc0725d2cdf 100644 --- a/src/app/core/shared/submit-data-response-definition.model.ts +++ b/modules/core/src/lib/core/shared/submit-data-response-definition.model.ts @@ -1,5 +1,5 @@ -import { ConfigObject } from '../config/models/config.model'; -import { SubmissionObject } from '../submission/models/submission-object.model'; +import { ConfigObject } from '../config'; +import { SubmissionObject } from '../submission'; /** * Defines a type for submission request responses. diff --git a/src/app/core/shared/template-item.model.ts b/modules/core/src/lib/core/shared/template-item.model.ts similarity index 86% rename from src/app/core/shared/template-item.model.ts rename to modules/core/src/lib/core/shared/template-item.model.ts index a536dea49e9..5a6fa9d571e 100644 --- a/src/app/core/shared/template-item.model.ts +++ b/modules/core/src/lib/core/shared/template-item.model.ts @@ -4,8 +4,8 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { RemoteData } from '../data/remote-data'; +} from '../cache'; +import { RemoteData } from '../data'; import { Collection } from './collection.model'; import { COLLECTION } from './collection.resource-type'; import { Item } from './item.model'; diff --git a/src/app/core/shared/template-item.resource-type.ts b/modules/core/src/lib/core/shared/template-item.resource-type.ts similarity index 100% rename from src/app/core/shared/template-item.resource-type.ts rename to modules/core/src/lib/core/shared/template-item.resource-type.ts diff --git a/src/app/core/shared/uncacheable-object.model.ts b/modules/core/src/lib/core/shared/uncacheable-object.model.ts similarity index 100% rename from src/app/core/shared/uncacheable-object.model.ts rename to modules/core/src/lib/core/shared/uncacheable-object.model.ts diff --git a/src/app/core/shared/uuid.service.ts b/modules/core/src/lib/core/shared/uuid.service.ts similarity index 100% rename from src/app/core/shared/uuid.service.ts rename to modules/core/src/lib/core/shared/uuid.service.ts diff --git a/src/app/core/shared/value-list-browse-definition.model.ts b/modules/core/src/lib/core/shared/value-list-browse-definition.model.ts similarity index 80% rename from src/app/core/shared/value-list-browse-definition.model.ts rename to modules/core/src/lib/core/shared/value-list-browse-definition.model.ts index ad9fc60d1cb..c998757235d 100644 --- a/src/app/core/shared/value-list-browse-definition.model.ts +++ b/modules/core/src/lib/core/shared/value-list-browse-definition.model.ts @@ -3,9 +3,9 @@ import { inheritSerialization, } from 'cerialize'; -import { BrowseByDataType } from '../../browse-by/browse-by-switcher/browse-by-data-type'; -import { typedObject } from '../cache/builders/build-decorators'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +import { BrowseByDataType } from './browse-by-data-type'; +import { typedObject } from '../cache'; +import { excludeFromEquals } from '../utilities'; import { HALLink } from './hal-link.model'; import { NonHierarchicalBrowseDefinition } from './non-hierarchical-browse-definition'; import { ResourceType } from './resource-type'; diff --git a/src/app/core/shared/value-list-browse-definition.resource-type.ts b/modules/core/src/lib/core/shared/value-list-browse-definition.resource-type.ts similarity index 100% rename from src/app/core/shared/value-list-browse-definition.resource-type.ts rename to modules/core/src/lib/core/shared/value-list-browse-definition.resource-type.ts diff --git a/src/app/core/shared/version-history.model.ts b/modules/core/src/lib/core/shared/version-history.model.ts similarity index 84% rename from src/app/core/shared/version-history.model.ts rename to modules/core/src/lib/core/shared/version-history.model.ts index 58d9259a047..e502d59de1e 100644 --- a/src/app/core/shared/version-history.model.ts +++ b/modules/core/src/lib/core/shared/version-history.model.ts @@ -8,10 +8,10 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +} from '../cache'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { excludeFromEquals } from '../utilities'; import { DSpaceObject } from './dspace-object.model'; import { HALLink } from './hal-link.model'; import { Version } from './version.model'; diff --git a/src/app/core/shared/version-history.resource-type.ts b/modules/core/src/lib/core/shared/version-history.resource-type.ts similarity index 100% rename from src/app/core/shared/version-history.resource-type.ts rename to modules/core/src/lib/core/shared/version-history.resource-type.ts diff --git a/src/app/core/shared/version.model.ts b/modules/core/src/lib/core/shared/version.model.ts similarity index 85% rename from src/app/core/shared/version.model.ts rename to modules/core/src/lib/core/shared/version.model.ts index 105ba744167..442ac75f91c 100644 --- a/src/app/core/shared/version.model.ts +++ b/modules/core/src/lib/core/shared/version.model.ts @@ -8,11 +8,11 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../cache/builders/build-decorators'; -import { RemoteData } from '../data/remote-data'; -import { EPerson } from '../eperson/models/eperson.model'; -import { EPERSON } from '../eperson/models/eperson.resource-type'; -import { excludeFromEquals } from '../utilities/equals.decorators'; +} from '../cache'; +import { RemoteData } from '../data'; +import { EPerson } from '../eperson'; +import { EPERSON } from '../eperson'; +import { excludeFromEquals } from '../utilities'; import { DSpaceObject } from './dspace-object.model'; import { HALLink } from './hal-link.model'; import { Item } from './item.model'; diff --git a/src/app/core/shared/version.resource-type.ts b/modules/core/src/lib/core/shared/version.resource-type.ts similarity index 100% rename from src/app/core/shared/version.resource-type.ts rename to modules/core/src/lib/core/shared/version.resource-type.ts diff --git a/src/app/core/shared/view-mode.model.ts b/modules/core/src/lib/core/shared/view-mode.model.ts similarity index 100% rename from src/app/core/shared/view-mode.model.ts rename to modules/core/src/lib/core/shared/view-mode.model.ts diff --git a/src/app/admin/admin-registries/bitstream-formats/bitstream-format.actions.ts b/modules/core/src/lib/core/states/bitstream-format/bitstream-format.actions.ts similarity index 93% rename from src/app/admin/admin-registries/bitstream-formats/bitstream-format.actions.ts rename to modules/core/src/lib/core/states/bitstream-format/bitstream-format.actions.ts index 874274af8b6..d36ac203a18 100644 --- a/src/app/admin/admin-registries/bitstream-formats/bitstream-format.actions.ts +++ b/modules/core/src/lib/core/states/bitstream-format/bitstream-format.actions.ts @@ -1,8 +1,8 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { BitstreamFormat } from '../../../core/shared/bitstream-format.model'; -import { type } from '../../../shared/ngrx/type'; +import { BitstreamFormat } from '../../shared'; +import { type } from '../../shared'; /** * For each action type in an action group, make a simple diff --git a/src/app/admin/admin-registries/bitstream-formats/bitstream-format.reducers.spec.ts b/modules/core/src/lib/core/states/bitstream-format/bitstream-format.reducers.spec.ts similarity index 97% rename from src/app/admin/admin-registries/bitstream-formats/bitstream-format.reducers.spec.ts rename to modules/core/src/lib/core/states/bitstream-format/bitstream-format.reducers.spec.ts index 09c867bc725..8ced7c7f2bc 100644 --- a/src/app/admin/admin-registries/bitstream-formats/bitstream-format.reducers.spec.ts +++ b/modules/core/src/lib/core/states/bitstream-format/bitstream-format.reducers.spec.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { BitstreamFormat } from '../../../core/shared/bitstream-format.model'; +import { BitstreamFormat } from '../../shared/bitstream-format.model'; import { BitstreamFormatsRegistryDeselectAction, BitstreamFormatsRegistryDeselectAllAction, diff --git a/src/app/admin/admin-registries/bitstream-formats/bitstream-format.reducers.ts b/modules/core/src/lib/core/states/bitstream-format/bitstream-format.reducers.ts similarity index 95% rename from src/app/admin/admin-registries/bitstream-formats/bitstream-format.reducers.ts rename to modules/core/src/lib/core/states/bitstream-format/bitstream-format.reducers.ts index 40642a5fdbb..3d5e532feb6 100644 --- a/src/app/admin/admin-registries/bitstream-formats/bitstream-format.reducers.ts +++ b/modules/core/src/lib/core/states/bitstream-format/bitstream-format.reducers.ts @@ -1,4 +1,4 @@ -import { BitstreamFormat } from '../../../core/shared/bitstream-format.model'; +import { BitstreamFormat } from '../../shared'; import { BitstreamFormatsRegistryAction, BitstreamFormatsRegistryActionTypes, diff --git a/modules/core/src/lib/core/states/bitstream-format/index.ts b/modules/core/src/lib/core/states/bitstream-format/index.ts new file mode 100644 index 00000000000..21714440cb9 --- /dev/null +++ b/modules/core/src/lib/core/states/bitstream-format/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './bitstream-format.actions'; +export * from './bitstream-format.reducers'; diff --git a/src/app/correlation-id/correlation-id.actions.ts b/modules/core/src/lib/core/states/correlation-id/correlation-id.actions.ts similarity index 90% rename from src/app/correlation-id/correlation-id.actions.ts rename to modules/core/src/lib/core/states/correlation-id/correlation-id.actions.ts index 2f7edcabd96..fd5907fde50 100644 --- a/src/app/correlation-id/correlation-id.actions.ts +++ b/modules/core/src/lib/core/states/correlation-id/correlation-id.actions.ts @@ -1,6 +1,6 @@ import { Action } from '@ngrx/store'; -import { type } from '../shared/ngrx/type'; +import { type } from '../../shared'; export const CorrelationIDActionTypes = { SET: type('dspace/core/correlationId/SET'), diff --git a/src/app/correlation-id/correlation-id.reducer.spec.ts b/modules/core/src/lib/core/states/correlation-id/correlation-id.reducer.spec.ts similarity index 99% rename from src/app/correlation-id/correlation-id.reducer.spec.ts rename to modules/core/src/lib/core/states/correlation-id/correlation-id.reducer.spec.ts index 876bd931148..cdde9227d34 100644 --- a/src/app/correlation-id/correlation-id.reducer.spec.ts +++ b/modules/core/src/lib/core/states/correlation-id/correlation-id.reducer.spec.ts @@ -1,6 +1,7 @@ import { SetCorrelationIdAction } from './correlation-id.actions'; import { correlationIdReducer } from './correlation-id.reducer'; + describe('correlationIdReducer', () => { it('should set the correlatinId with SET action', () => { const initialState = null; diff --git a/src/app/correlation-id/correlation-id.reducer.ts b/modules/core/src/lib/core/states/correlation-id/correlation-id.reducer.ts similarity index 100% rename from src/app/correlation-id/correlation-id.reducer.ts rename to modules/core/src/lib/core/states/correlation-id/correlation-id.reducer.ts diff --git a/modules/core/src/lib/core/states/correlation-id/correlation-id.selector.ts b/modules/core/src/lib/core/states/correlation-id/correlation-id.selector.ts new file mode 100644 index 00000000000..8a7831d0557 --- /dev/null +++ b/modules/core/src/lib/core/states/correlation-id/correlation-id.selector.ts @@ -0,0 +1,2 @@ + +export const correlationIdSelector = (state: any) => state.core.correlationId; diff --git a/modules/core/src/lib/core/states/correlation-id/index.ts b/modules/core/src/lib/core/states/correlation-id/index.ts new file mode 100644 index 00000000000..efd77290bf4 --- /dev/null +++ b/modules/core/src/lib/core/states/correlation-id/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './correlation-id.actions'; +export * from './correlation-id.reducer'; +export * from './correlation-id.selector'; diff --git a/src/app/access-control/epeople-registry/epeople-registry.actions.ts b/modules/core/src/lib/core/states/epeople-registry/epeople-registry.actions.ts similarity index 92% rename from src/app/access-control/epeople-registry/epeople-registry.actions.ts rename to modules/core/src/lib/core/states/epeople-registry/epeople-registry.actions.ts index e6e7608ba3f..348f88c34f8 100644 --- a/src/app/access-control/epeople-registry/epeople-registry.actions.ts +++ b/modules/core/src/lib/core/states/epeople-registry/epeople-registry.actions.ts @@ -1,8 +1,8 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { EPerson } from '../../core/eperson/models/eperson.model'; -import { type } from '../../shared/ngrx/type'; +import { EPerson } from '../../eperson'; +import { type } from '../../shared'; /** * For each action type in an action group, make a simple diff --git a/src/app/access-control/epeople-registry/epeople-registry.reducers.spec.ts b/modules/core/src/lib/core/states/epeople-registry/epeople-registry.reducers.spec.ts similarity index 96% rename from src/app/access-control/epeople-registry/epeople-registry.reducers.spec.ts rename to modules/core/src/lib/core/states/epeople-registry/epeople-registry.reducers.spec.ts index 6bee3f84e21..4ff76e076f9 100644 --- a/src/app/access-control/epeople-registry/epeople-registry.reducers.spec.ts +++ b/modules/core/src/lib/core/states/epeople-registry/epeople-registry.reducers.spec.ts @@ -1,4 +1,4 @@ -import { EPersonMock } from '../../shared/testing/eperson.mock'; +import { EPersonMock } from '../../utilities/testing/eperson.mock'; import { EPeopleRegistryCancelEPersonAction, EPeopleRegistryEditEPersonAction, diff --git a/src/app/access-control/epeople-registry/epeople-registry.reducers.ts b/modules/core/src/lib/core/states/epeople-registry/epeople-registry.reducers.ts similarity index 94% rename from src/app/access-control/epeople-registry/epeople-registry.reducers.ts rename to modules/core/src/lib/core/states/epeople-registry/epeople-registry.reducers.ts index 3bab6769e12..2d64ce5d9a5 100644 --- a/src/app/access-control/epeople-registry/epeople-registry.reducers.ts +++ b/modules/core/src/lib/core/states/epeople-registry/epeople-registry.reducers.ts @@ -1,4 +1,4 @@ -import { EPerson } from '../../core/eperson/models/eperson.model'; +import { EPerson } from '../../eperson'; import { EPeopleRegistryAction, EPeopleRegistryActionTypes, diff --git a/modules/core/src/lib/core/states/epeople-registry/index.ts b/modules/core/src/lib/core/states/epeople-registry/index.ts new file mode 100644 index 00000000000..f67ae8555ca --- /dev/null +++ b/modules/core/src/lib/core/states/epeople-registry/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './epeople-registry.actions'; +export * from './epeople-registry.reducers'; diff --git a/src/app/shared/form/form.actions.ts b/modules/core/src/lib/core/states/form/form.actions.ts similarity index 98% rename from src/app/shared/form/form.actions.ts rename to modules/core/src/lib/core/states/form/form.actions.ts index 170fa25c11c..9bce74c2c03 100644 --- a/src/app/shared/form/form.actions.ts +++ b/modules/core/src/lib/core/states/form/form.actions.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../ngrx/type'; +import { type } from '../../shared/ngrx/type'; /** * For each action type in an action group, make a simple diff --git a/src/app/shared/form/form.reducer.ts b/modules/core/src/lib/core/states/form/form.reducer.ts similarity index 99% rename from src/app/shared/form/form.reducer.ts rename to modules/core/src/lib/core/states/form/form.reducer.ts index cacb4fd9fe9..fd38616b3de 100644 --- a/src/app/shared/form/form.reducer.ts +++ b/modules/core/src/lib/core/states/form/form.reducer.ts @@ -1,7 +1,7 @@ +import { hasValue } from '@dspace/shared/utils'; import isEqual from 'lodash/isEqual'; import uniqWith from 'lodash/uniqWith'; -import { hasValue } from '../empty.util'; import { FormAction, FormActionTypes, diff --git a/modules/core/src/lib/core/states/form/index.ts b/modules/core/src/lib/core/states/form/index.ts new file mode 100644 index 00000000000..4509187dfd4 --- /dev/null +++ b/modules/core/src/lib/core/states/form/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './form.actions'; +export * from './form.reducer'; diff --git a/src/app/access-control/group-registry/group-registry.actions.ts b/modules/core/src/lib/core/states/group-registry/group-registry.actions.ts similarity index 92% rename from src/app/access-control/group-registry/group-registry.actions.ts rename to modules/core/src/lib/core/states/group-registry/group-registry.actions.ts index d1bc62a95cc..210db0a9e22 100644 --- a/src/app/access-control/group-registry/group-registry.actions.ts +++ b/modules/core/src/lib/core/states/group-registry/group-registry.actions.ts @@ -1,8 +1,8 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { Group } from '../../core/eperson/models/group.model'; -import { type } from '../../shared/ngrx/type'; +import { Group } from '../../eperson'; +import { type } from '../../shared'; /** * For each action type in an action group, make a simple diff --git a/src/app/access-control/group-registry/group-registry.reducers.spec.ts b/modules/core/src/lib/core/states/group-registry/group-registry.reducers.spec.ts similarity index 96% rename from src/app/access-control/group-registry/group-registry.reducers.spec.ts rename to modules/core/src/lib/core/states/group-registry/group-registry.reducers.spec.ts index 83a6df580d5..70e4a052035 100644 --- a/src/app/access-control/group-registry/group-registry.reducers.spec.ts +++ b/modules/core/src/lib/core/states/group-registry/group-registry.reducers.spec.ts @@ -1,4 +1,4 @@ -import { GroupMock } from '../../shared/testing/group-mock'; +import { GroupMock } from '../../utilities/testing/group-mock'; import { GroupRegistryCancelGroupAction, GroupRegistryEditGroupAction, diff --git a/src/app/access-control/group-registry/group-registry.reducers.ts b/modules/core/src/lib/core/states/group-registry/group-registry.reducers.ts similarity index 94% rename from src/app/access-control/group-registry/group-registry.reducers.ts rename to modules/core/src/lib/core/states/group-registry/group-registry.reducers.ts index 0bb3ad4b5c2..46b05f526d8 100644 --- a/src/app/access-control/group-registry/group-registry.reducers.ts +++ b/modules/core/src/lib/core/states/group-registry/group-registry.reducers.ts @@ -1,4 +1,4 @@ -import { Group } from '../../core/eperson/models/group.model'; +import { Group } from '../../eperson'; import { GroupRegistryAction, GroupRegistryActionTypes, diff --git a/modules/core/src/lib/core/states/group-registry/index.ts b/modules/core/src/lib/core/states/group-registry/index.ts new file mode 100644 index 00000000000..3b6327f48cd --- /dev/null +++ b/modules/core/src/lib/core/states/group-registry/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './group-registry.actions'; +export * from './group-registry.reducers'; diff --git a/modules/core/src/lib/core/states/index.ts b/modules/core/src/lib/core/states/index.ts new file mode 100644 index 00000000000..f3f89e72f30 --- /dev/null +++ b/modules/core/src/lib/core/states/index.ts @@ -0,0 +1,13 @@ +// created from 'create-ts-index' + +export * from './bitstream-format'; +export * from './correlation-id'; +export * from './epeople-registry'; +export * from './form'; +export * from './group-registry'; +export * from './menu'; +export * from './metadata-registry'; +export * from './name-variant'; +export * from './search-filters'; +export * from './selectable-list'; +export * from './submission'; diff --git a/modules/core/src/lib/core/states/menu/index.ts b/modules/core/src/lib/core/states/menu/index.ts new file mode 100644 index 00000000000..8e6dd1dc6c0 --- /dev/null +++ b/modules/core/src/lib/core/states/menu/index.ts @@ -0,0 +1,14 @@ +// created from 'create-ts-index' + +export * from './initial-menus-state'; +export * from './menu-id.model'; +export * from './menu-item-type.model'; +export * from './menu-item.model'; +export * from './menu-section-Index.model'; +export * from './menu-section.model'; +export * from './menu-sections.model'; +export * from './menu-state.model'; +export * from './menu.actions'; +export * from './menu.effects'; +export * from './menu.reducer'; +export * from './menus-state.model'; diff --git a/src/app/shared/menu/initial-menus-state.ts b/modules/core/src/lib/core/states/menu/initial-menus-state.ts similarity index 100% rename from src/app/shared/menu/initial-menus-state.ts rename to modules/core/src/lib/core/states/menu/initial-menus-state.ts diff --git a/src/app/shared/menu/menu-id.model.ts b/modules/core/src/lib/core/states/menu/menu-id.model.ts similarity index 100% rename from src/app/shared/menu/menu-id.model.ts rename to modules/core/src/lib/core/states/menu/menu-id.model.ts diff --git a/src/app/shared/menu/menu-item-type.model.ts b/modules/core/src/lib/core/states/menu/menu-item-type.model.ts similarity index 100% rename from src/app/shared/menu/menu-item-type.model.ts rename to modules/core/src/lib/core/states/menu/menu-item-type.model.ts diff --git a/src/app/shared/menu/menu-item/models/menu-item.model.ts b/modules/core/src/lib/core/states/menu/menu-item.model.ts similarity index 70% rename from src/app/shared/menu/menu-item/models/menu-item.model.ts rename to modules/core/src/lib/core/states/menu/menu-item.model.ts index ddca3d222d9..d38d95546ee 100644 --- a/src/app/shared/menu/menu-item/models/menu-item.model.ts +++ b/modules/core/src/lib/core/states/menu/menu-item.model.ts @@ -1,4 +1,4 @@ -import { MenuItemType } from '../../menu-item-type.model'; +import { MenuItemType } from './menu-item-type.model'; /** * Interface for models representing a Menu Section diff --git a/src/app/shared/menu/menu-section-Index.model.ts b/modules/core/src/lib/core/states/menu/menu-section-Index.model.ts similarity index 100% rename from src/app/shared/menu/menu-section-Index.model.ts rename to modules/core/src/lib/core/states/menu/menu-section-Index.model.ts diff --git a/src/app/shared/menu/menu-section.model.ts b/modules/core/src/lib/core/states/menu/menu-section.model.ts similarity index 80% rename from src/app/shared/menu/menu-section.model.ts rename to modules/core/src/lib/core/states/menu/menu-section.model.ts index f14b029d776..bef55f549fe 100644 --- a/src/app/shared/menu/menu-section.model.ts +++ b/modules/core/src/lib/core/states/menu/menu-section.model.ts @@ -1,4 +1,4 @@ -import { MenuItemModel } from './menu-item/models/menu-item.model'; +import { MenuItemModel } from './menu-item.model'; /** * Represents the state of a single menu section in the store diff --git a/src/app/shared/menu/menu-sections.model.ts b/modules/core/src/lib/core/states/menu/menu-sections.model.ts similarity index 100% rename from src/app/shared/menu/menu-sections.model.ts rename to modules/core/src/lib/core/states/menu/menu-sections.model.ts diff --git a/src/app/shared/menu/menu-state.model.ts b/modules/core/src/lib/core/states/menu/menu-state.model.ts similarity index 100% rename from src/app/shared/menu/menu-state.model.ts rename to modules/core/src/lib/core/states/menu/menu-state.model.ts diff --git a/src/app/shared/menu/menu.actions.ts b/modules/core/src/lib/core/states/menu/menu.actions.ts similarity index 99% rename from src/app/shared/menu/menu.actions.ts rename to modules/core/src/lib/core/states/menu/menu.actions.ts index f3c9aa73dcc..cdb5e7db814 100644 --- a/src/app/shared/menu/menu.actions.ts +++ b/modules/core/src/lib/core/states/menu/menu.actions.ts @@ -1,7 +1,7 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../ngrx/type'; +import { type } from '../../shared/ngrx/type'; import { MenuID } from './menu-id.model'; import { MenuSection } from './menu-section.model'; diff --git a/src/app/shared/menu/menu.effects.spec.ts b/modules/core/src/lib/core/states/menu/menu.effects.spec.ts similarity index 86% rename from src/app/shared/menu/menu.effects.spec.ts rename to modules/core/src/lib/core/states/menu/menu.effects.spec.ts index f3b6d9ddde2..93052d591c7 100644 --- a/src/app/shared/menu/menu.effects.spec.ts +++ b/modules/core/src/lib/core/states/menu/menu.effects.spec.ts @@ -7,15 +7,18 @@ import { cold, hot, } from 'jasmine-marbles'; -import { Observable } from 'rxjs'; - import { - StoreAction, - StoreActionTypes, -} from '../../store.actions'; + Action, + Observable, +} from 'rxjs'; + +import { type } from '../../shared/ngrx/type'; import { ReinitMenuAction } from './menu.actions'; import { MenuEffects } from './menu.effects'; + + + describe('MenuEffects', () => { let menuEffects: MenuEffects; let actions: Observable; @@ -36,7 +39,7 @@ describe('MenuEffects', () => { describe('When a REHYDRATE action is triggered', () => { let action; beforeEach(() => { - action = new StoreAction(StoreActionTypes.REHYDRATE, null); + action = new Action(type('dspace/ngrx/REHYDRATE') as any, null); }); it('should return a ReinitMenuAction', () => { actions = hot('--a-', { a: action }); diff --git a/src/app/shared/menu/menu.effects.ts b/modules/core/src/lib/core/states/menu/menu.effects.ts similarity index 100% rename from src/app/shared/menu/menu.effects.ts rename to modules/core/src/lib/core/states/menu/menu.effects.ts diff --git a/src/app/shared/menu/menu.reducer.spec.ts b/modules/core/src/lib/core/states/menu/menu.reducer.spec.ts similarity index 99% rename from src/app/shared/menu/menu.reducer.spec.ts rename to modules/core/src/lib/core/states/menu/menu.reducer.spec.ts index da837f20629..51e3ff40444 100644 --- a/src/app/shared/menu/menu.reducer.spec.ts +++ b/modules/core/src/lib/core/states/menu/menu.reducer.spec.ts @@ -23,6 +23,8 @@ import { menusReducer } from './menu.reducer'; import { MenuID } from './menu-id.model'; import { MenuSectionIndex } from './menu-section-Index.model'; + + let visibleSection1; let dummyState; const menuID = MenuID.ADMIN; diff --git a/src/app/shared/menu/menu.reducer.ts b/modules/core/src/lib/core/states/menu/menu.reducer.ts similarity index 99% rename from src/app/shared/menu/menu.reducer.ts rename to modules/core/src/lib/core/states/menu/menu.reducer.ts index e0a6dc7d8b3..aa95b4cfc6c 100644 --- a/src/app/shared/menu/menu.reducer.ts +++ b/modules/core/src/lib/core/states/menu/menu.reducer.ts @@ -1,4 +1,5 @@ -import { hasValue } from '../empty.util'; +import { hasValue } from '@dspace/shared/utils'; + import { initialMenusState } from './initial-menus-state'; import { ActivateMenuSectionAction, diff --git a/src/app/shared/menu/menus-state.model.ts b/modules/core/src/lib/core/states/menu/menus-state.model.ts similarity index 100% rename from src/app/shared/menu/menus-state.model.ts rename to modules/core/src/lib/core/states/menu/menus-state.model.ts diff --git a/modules/core/src/lib/core/states/metadata-registry/index.ts b/modules/core/src/lib/core/states/metadata-registry/index.ts new file mode 100644 index 00000000000..803c7dd7889 --- /dev/null +++ b/modules/core/src/lib/core/states/metadata-registry/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './metadata-registry.actions'; +export * from './metadata-registry.reducers'; diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-registry.actions.ts b/modules/core/src/lib/core/states/metadata-registry/metadata-registry.actions.ts similarity index 95% rename from src/app/admin/admin-registries/metadata-registry/metadata-registry.actions.ts rename to modules/core/src/lib/core/states/metadata-registry/metadata-registry.actions.ts index 2e06d168ce7..c74398b9cc9 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-registry.actions.ts +++ b/modules/core/src/lib/core/states/metadata-registry/metadata-registry.actions.ts @@ -1,9 +1,9 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { MetadataField } from '../../../core/metadata/metadata-field.model'; -import { MetadataSchema } from '../../../core/metadata/metadata-schema.model'; -import { type } from '../../../shared/ngrx/type'; +import { MetadataField } from '../../metadata'; +import { MetadataSchema } from '../../metadata'; +import { type } from '../../shared'; /** * For each action type in an action group, make a simple diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-registry.reducers.spec.ts b/modules/core/src/lib/core/states/metadata-registry/metadata-registry.reducers.spec.ts similarity index 97% rename from src/app/admin/admin-registries/metadata-registry/metadata-registry.reducers.spec.ts rename to modules/core/src/lib/core/states/metadata-registry/metadata-registry.reducers.spec.ts index 07d01b8dc32..d06b25c0f36 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-registry.reducers.spec.ts +++ b/modules/core/src/lib/core/states/metadata-registry/metadata-registry.reducers.spec.ts @@ -1,5 +1,5 @@ -import { MetadataField } from '../../../core/metadata/metadata-field.model'; -import { MetadataSchema } from '../../../core/metadata/metadata-schema.model'; +import { MetadataField } from '../../metadata/metadata-field.model'; +import { MetadataSchema } from '../../metadata/metadata-schema.model'; import { MetadataRegistryCancelFieldAction, MetadataRegistryCancelSchemaAction, @@ -17,6 +17,7 @@ import { MetadataRegistryState, } from './metadata-registry.reducers'; + class NullAction extends MetadataRegistryEditSchemaAction { type = null; diff --git a/src/app/admin/admin-registries/metadata-registry/metadata-registry.reducers.ts b/modules/core/src/lib/core/states/metadata-registry/metadata-registry.reducers.ts similarity index 95% rename from src/app/admin/admin-registries/metadata-registry/metadata-registry.reducers.ts rename to modules/core/src/lib/core/states/metadata-registry/metadata-registry.reducers.ts index 6cb72a0a8b3..60e010e11e1 100644 --- a/src/app/admin/admin-registries/metadata-registry/metadata-registry.reducers.ts +++ b/modules/core/src/lib/core/states/metadata-registry/metadata-registry.reducers.ts @@ -1,5 +1,5 @@ -import { MetadataField } from '../../../core/metadata/metadata-field.model'; -import { MetadataSchema } from '../../../core/metadata/metadata-schema.model'; +import { MetadataField } from '../../metadata'; +import { MetadataSchema } from '../../metadata'; import { MetadataRegistryAction, MetadataRegistryActionTypes, diff --git a/modules/core/src/lib/core/states/name-variant/index.ts b/modules/core/src/lib/core/states/name-variant/index.ts new file mode 100644 index 00000000000..8f5cd418c3c --- /dev/null +++ b/modules/core/src/lib/core/states/name-variant/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './name-variant.actions'; +export * from './name-variant.reducer'; +export * from './relationship.actions'; +export * from './relationship.effects'; diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.actions.ts b/modules/core/src/lib/core/states/name-variant/name-variant.actions.ts similarity index 96% rename from src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.actions.ts rename to modules/core/src/lib/core/states/name-variant/name-variant.actions.ts index 59fd9feb77a..fb95b4e0afc 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.actions.ts +++ b/modules/core/src/lib/core/states/name-variant/name-variant.actions.ts @@ -4,7 +4,7 @@ */ import { Action } from '@ngrx/store'; -import { type } from '../../../../ngrx/type'; +import { type } from '../../shared'; export const NameVariantActionTypes = { SET_NAME_VARIANT: type('dspace/name-variant/SET_NAME_VARIANT'), diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.reducer.spec.ts b/modules/core/src/lib/core/states/name-variant/name-variant.reducer.spec.ts similarity index 99% rename from src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.reducer.spec.ts rename to modules/core/src/lib/core/states/name-variant/name-variant.reducer.spec.ts index 41a63c73d11..17feb8b6628 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.reducer.spec.ts +++ b/modules/core/src/lib/core/states/name-variant/name-variant.reducer.spec.ts @@ -6,6 +6,7 @@ import { } from './name-variant.actions'; import { nameVariantReducer } from './name-variant.reducer'; + class NullAction implements Action { type = null; } diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.reducer.ts b/modules/core/src/lib/core/states/name-variant/name-variant.reducer.ts similarity index 97% rename from src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.reducer.ts rename to modules/core/src/lib/core/states/name-variant/name-variant.reducer.ts index a80bd4dc6cd..351a1405474 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/name-variant.reducer.ts +++ b/modules/core/src/lib/core/states/name-variant/name-variant.reducer.ts @@ -2,7 +2,8 @@ * Represents the state of all lists containing name variants in the store */ -import { hasValue } from '../../../../empty.util'; +import { hasValue } from '@dspace/shared/utils'; + import { NameVariantAction, NameVariantActionTypes, diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.actions.ts b/modules/core/src/lib/core/states/name-variant/relationship.actions.ts similarity index 94% rename from src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.actions.ts rename to modules/core/src/lib/core/states/name-variant/relationship.actions.ts index 7d21fcb1f6f..108a34e7a1d 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.actions.ts +++ b/modules/core/src/lib/core/states/name-variant/relationship.actions.ts @@ -4,9 +4,9 @@ */ import { Action } from '@ngrx/store'; -import { Item } from '../../../../../core/shared/item.model'; -import { Relationship } from '../../../../../core/shared/item-relationships/relationship.model'; -import { type } from '../../../../ngrx/type'; +import { Item } from '../../shared'; +import { Relationship } from '../../shared'; +import { type } from '../../shared'; export const RelationshipActionTypes = { ADD_RELATIONSHIP: type('dspace/relationship/ADD_RELATIONSHIP'), diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.spec.ts b/modules/core/src/lib/core/states/name-variant/relationship.effects.spec.ts similarity index 89% rename from src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.spec.ts rename to modules/core/src/lib/core/states/name-variant/relationship.effects.spec.ts index 0588bab7d14..046864f55a4 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.spec.ts +++ b/modules/core/src/lib/core/states/name-variant/relationship.effects.spec.ts @@ -16,22 +16,22 @@ import { } from 'rxjs'; import { last } from 'rxjs/operators'; -import { ObjectCacheService } from '../../../../../core/cache/object-cache.service'; -import { RestResponse } from '../../../../../core/cache/response.models'; -import { RelationshipDataService } from '../../../../../core/data/relationship-data.service'; -import { RelationshipTypeDataService } from '../../../../../core/data/relationship-type-data.service'; -import { RequestService } from '../../../../../core/data/request.service'; -import { Item } from '../../../../../core/shared/item.model'; -import { ItemType } from '../../../../../core/shared/item-relationships/item-type.model'; -import { Relationship } from '../../../../../core/shared/item-relationships/relationship.model'; -import { RelationshipType } from '../../../../../core/shared/item-relationships/relationship-type.model'; -import { MetadataValue } from '../../../../../core/shared/metadata.models'; -import { DEBOUNCE_TIME_OPERATOR } from '../../../../../core/shared/operators'; -import { WorkspaceItem } from '../../../../../core/submission/models/workspaceitem.model'; -import { SubmissionObjectDataService } from '../../../../../core/submission/submission-object-data.service'; -import { NotificationsService } from '../../../../notifications/notifications.service'; -import { SelectableListService } from '../../../../object-list/selectable-list/selectable-list.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../../remote-data.utils'; +import { ObjectCacheService } from '../../cache/object-cache.service'; +import { RestResponse } from '../../cache/response.models'; +import { RelationshipDataService } from '../../data/relationship-data.service'; +import { RelationshipTypeDataService } from '../../data/relationship-type-data.service'; +import { RequestService } from '../../data/request.service'; +import { NotificationsService } from '../../notifications/notifications.service'; +import { Item } from '../../shared/item.model'; +import { ItemType } from '../../shared/item-relationships/item-type.model'; +import { Relationship } from '../../shared/item-relationships/relationship.model'; +import { RelationshipType } from '../../shared/item-relationships/relationship-type.model'; +import { MetadataValue } from '../../shared/metadata.models'; +import { DEBOUNCE_TIME_OPERATOR } from '../../shared/operators'; +import { WorkspaceItem } from '../../submission/models/workspaceitem.model'; +import { SubmissionObjectDataService } from '../../submission/submission-object-data.service'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; +import { SelectableListService } from '../selectable-list/selectable-list.service'; import { AddRelationshipAction, RelationshipActionTypes, diff --git a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.ts b/modules/core/src/lib/core/states/name-variant/relationship.effects.ts similarity index 87% rename from src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.ts rename to modules/core/src/lib/core/states/name-variant/relationship.effects.ts index cb49c831155..88e120bf17f 100644 --- a/src/app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/relationship.effects.ts +++ b/modules/core/src/lib/core/states/name-variant/relationship.effects.ts @@ -3,6 +3,11 @@ import { Inject, Injectable, } from '@angular/core'; +import { + hasNoValue, + hasValue, + hasValueOperator, +} from '@dspace/shared/utils'; import { Actions, createEffect, @@ -25,33 +30,28 @@ import { tap, } from 'rxjs/operators'; -import { ObjectCacheService } from '../../../../../core/cache/object-cache.service'; -import { ServerSyncBufferActionTypes } from '../../../../../core/cache/server-sync-buffer.actions'; -import { RelationshipDataService } from '../../../../../core/data/relationship-data.service'; -import { RelationshipTypeDataService } from '../../../../../core/data/relationship-type-data.service'; -import { RemoteData } from '../../../../../core/data/remote-data'; -import { RequestService } from '../../../../../core/data/request.service'; -import { JsonPatchOperationsActionTypes } from '../../../../../core/json-patch/json-patch-operations.actions'; -import { Item } from '../../../../../core/shared/item.model'; -import { Relationship } from '../../../../../core/shared/item-relationships/relationship.model'; -import { RelationshipType } from '../../../../../core/shared/item-relationships/relationship-type.model'; +import { SelectableListService } from '../selectable-list'; +import { SaveSubmissionSectionFormSuccessAction } from '../submission'; +import { SubmissionState } from '../submission'; +import { ObjectCacheService } from '../../cache'; +import { ServerSyncBufferActionTypes } from '../../cache'; +import { followLink } from '../../data'; +import { RelationshipDataService } from '../../data'; +import { RelationshipTypeDataService } from '../../data'; +import { RemoteData } from '../../data'; +import { RequestService } from '../../data'; +import { JsonPatchOperationsActionTypes } from '../../json-patch'; +import { NotificationsService } from '../../notifications'; +import { Item } from '../../shared'; +import { Relationship } from '../../shared'; +import { RelationshipType } from '../../shared'; import { DEBOUNCE_TIME_OPERATOR, getFirstSucceededRemoteData, getRemoteDataPayload, -} from '../../../../../core/shared/operators'; -import { SubmissionObject } from '../../../../../core/submission/models/submission-object.model'; -import { SubmissionObjectDataService } from '../../../../../core/submission/submission-object-data.service'; -import { SaveSubmissionSectionFormSuccessAction } from '../../../../../submission/objects/submission-objects.actions'; -import { SubmissionState } from '../../../../../submission/submission.reducers'; -import { - hasNoValue, - hasValue, - hasValueOperator, -} from '../../../../empty.util'; -import { NotificationsService } from '../../../../notifications/notifications.service'; -import { SelectableListService } from '../../../../object-list/selectable-list/selectable-list.service'; -import { followLink } from '../../../../utils/follow-link-config.model'; +} from '../../shared'; +import { SubmissionObject } from '../../submission'; +import { SubmissionObjectDataService } from '../../submission'; import { AddRelationshipAction, RelationshipAction, diff --git a/modules/core/src/lib/core/states/search-filters/index.ts b/modules/core/src/lib/core/states/search-filters/index.ts new file mode 100644 index 00000000000..5faa8186de2 --- /dev/null +++ b/modules/core/src/lib/core/states/search-filters/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './search-filter.actions'; +export * from './search-filter.reducer'; diff --git a/src/app/shared/search/search-filters/search-filter/search-filter.actions.ts b/modules/core/src/lib/core/states/search-filters/search-filter.actions.ts similarity index 95% rename from src/app/shared/search/search-filters/search-filter/search-filter.actions.ts rename to modules/core/src/lib/core/states/search-filters/search-filter.actions.ts index e8d8cee8e67..6a334607ced 100644 --- a/src/app/shared/search/search-filters/search-filter/search-filter.actions.ts +++ b/modules/core/src/lib/core/states/search-filters/search-filter.actions.ts @@ -1,8 +1,9 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../../ngrx/type'; -import { SearchFilterConfig } from '../../models/search-filter-config.model'; +import { type } from '../../shared/ngrx/type'; +import { SearchFilterConfig } from '../../shared/search/models/search-filter-config.model'; + /** * For each action type in an action group, make a simple diff --git a/src/app/shared/search/search-filters/search-filter/search-filter.reducer.ts b/modules/core/src/lib/core/states/search-filters/search-filter.reducer.ts similarity index 100% rename from src/app/shared/search/search-filters/search-filter/search-filter.reducer.ts rename to modules/core/src/lib/core/states/search-filters/search-filter.reducer.ts diff --git a/modules/core/src/lib/core/states/selectable-list/index.ts b/modules/core/src/lib/core/states/selectable-list/index.ts new file mode 100644 index 00000000000..d26b88e93eb --- /dev/null +++ b/modules/core/src/lib/core/states/selectable-list/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './selectable-list.actions'; +export * from './selectable-list.reducer'; +export * from './selectable-list.service'; diff --git a/src/app/shared/object-list/selectable-list/selectable-list.actions.ts b/modules/core/src/lib/core/states/selectable-list/selectable-list.actions.ts similarity index 95% rename from src/app/shared/object-list/selectable-list/selectable-list.actions.ts rename to modules/core/src/lib/core/states/selectable-list/selectable-list.actions.ts index 68762ab6f48..0ef3a871c7a 100644 --- a/src/app/shared/object-list/selectable-list/selectable-list.actions.ts +++ b/modules/core/src/lib/core/states/selectable-list/selectable-list.actions.ts @@ -1,8 +1,9 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { type } from '../../ngrx/type'; -import { ListableObject } from '../../object-collection/shared/listable-object.model'; +import { ListableObject } from '../../object-collection/listable-object.model'; +import { type } from '../../shared/ngrx/type'; + /** * For each action type in an action group, make a simple diff --git a/src/app/shared/object-list/selectable-list/selectable-list.reducer.spec.ts b/modules/core/src/lib/core/states/selectable-list/selectable-list.reducer.spec.ts similarity index 96% rename from src/app/shared/object-list/selectable-list/selectable-list.reducer.spec.ts rename to modules/core/src/lib/core/states/selectable-list/selectable-list.reducer.spec.ts index 7d1a8e86d40..c589b2d2e10 100644 --- a/src/app/shared/object-list/selectable-list/selectable-list.reducer.spec.ts +++ b/modules/core/src/lib/core/states/selectable-list/selectable-list.reducer.spec.ts @@ -1,6 +1,7 @@ /* eslint-disable max-classes-per-file */ -import { hasValue } from '../../empty.util'; -import { ListableObject } from '../../object-collection/shared/listable-object.model'; +import { hasValue } from '@dspace/shared/utils'; + +import { ListableObject } from '../../object-collection/listable-object.model'; import { SelectableListAction, SelectableListDeselectAction, @@ -12,6 +13,8 @@ import { } from './selectable-list.actions'; import { selectableListReducer } from './selectable-list.reducer'; + + class SelectableObject extends ListableObject { constructor(private value: string) { super(); diff --git a/src/app/shared/object-list/selectable-list/selectable-list.reducer.ts b/modules/core/src/lib/core/states/selectable-list/selectable-list.reducer.ts similarity index 97% rename from src/app/shared/object-list/selectable-list/selectable-list.reducer.ts rename to modules/core/src/lib/core/states/selectable-list/selectable-list.reducer.ts index 427f6395a02..c18c0ee443e 100644 --- a/src/app/shared/object-list/selectable-list/selectable-list.reducer.ts +++ b/modules/core/src/lib/core/states/selectable-list/selectable-list.reducer.ts @@ -1,5 +1,6 @@ -import { hasNoValue } from '../../empty.util'; -import { ListableObject } from '../../object-collection/shared/listable-object.model'; +import { hasNoValue } from '@dspace/shared/utils'; + +import { ListableObject } from '../../object-collection/listable-object.model'; import { SelectableListAction, SelectableListActionTypes, diff --git a/src/app/shared/object-list/selectable-list/selectable-list.service.spec.ts b/modules/core/src/lib/core/states/selectable-list/selectable-list.service.spec.ts similarity index 93% rename from src/app/shared/object-list/selectable-list/selectable-list.service.spec.ts rename to modules/core/src/lib/core/states/selectable-list/selectable-list.service.spec.ts index 23d2baaf007..9dde5fd0a19 100644 --- a/src/app/shared/object-list/selectable-list/selectable-list.service.spec.ts +++ b/modules/core/src/lib/core/states/selectable-list/selectable-list.service.spec.ts @@ -2,11 +2,11 @@ import { TestBed, waitForAsync, } from '@angular/core/testing'; +import { hasValue } from '@dspace/shared/utils'; import { Store } from '@ngrx/store'; -import { AppState } from '../../../app.reducer'; -import { hasValue } from '../../empty.util'; -import { ListableObject } from '../../object-collection/shared/listable-object.model'; +import { AppState } from '../../../../../../../src/app/app.reducer'; +import { ListableObject } from '../../object-collection/listable-object.model'; import { SelectableListDeselectAction, SelectableListDeselectSingleAction, @@ -15,6 +15,8 @@ import { } from './selectable-list.actions'; import { SelectableListService } from './selectable-list.service'; + + export class SelectableObject extends ListableObject { constructor(private value: string) { super(); diff --git a/src/app/shared/object-list/selectable-list/selectable-list.service.ts b/modules/core/src/lib/core/states/selectable-list/selectable-list.service.ts similarity index 85% rename from src/app/shared/object-list/selectable-list/selectable-list.service.ts rename to modules/core/src/lib/core/states/selectable-list/selectable-list.service.ts index c9fcd724569..cf893f8bd96 100644 --- a/src/app/shared/object-list/selectable-list/selectable-list.service.ts +++ b/modules/core/src/lib/core/states/selectable-list/selectable-list.service.ts @@ -1,5 +1,10 @@ import { Injectable } from '@angular/core'; import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; +import { + createSelector, MemoizedSelector, select, Store, @@ -10,15 +15,7 @@ import { map, } from 'rxjs/operators'; -import { - AppState, - keySelector, -} from '../../../app.reducer'; -import { - hasValue, - isNotEmpty, -} from '../../empty.util'; -import { ListableObject } from '../../object-collection/shared/listable-object.model'; +import { ListableObject } from '../../object-collection/listable-object.model'; import { SelectableListDeselectAction, SelectableListDeselectAllAction, @@ -28,16 +25,27 @@ import { } from './selectable-list.actions'; import { SelectableListState } from './selectable-list.reducer'; -const selectableListsStateSelector = (state: AppState) => state.selectableLists; +//TODO: reintroduce interface for appState and remove duplicated keySelector function +function keySelector(key: string, selector): MemoizedSelector { + return createSelector(selector, (state) => { + if (hasValue(state)) { + return state[key]; + } else { + return undefined; + } + }); +} + +const selectableListsStateSelector = (state: any) => state.selectableLists; -const menuByIDSelector = (id: string): MemoizedSelector => { +const menuByIDSelector = (id: string): MemoizedSelector => { return keySelector(id, selectableListsStateSelector); }; @Injectable({ providedIn: 'root' }) export class SelectableListService { - constructor(private store: Store) { + constructor(private store: Store) { } /** diff --git a/modules/core/src/lib/core/states/submission/index.ts b/modules/core/src/lib/core/states/submission/index.ts new file mode 100644 index 00000000000..9e24eeaf319 --- /dev/null +++ b/modules/core/src/lib/core/states/submission/index.ts @@ -0,0 +1,7 @@ +// created from 'create-ts-index' + +export * from './selectors'; +export * from './submission-objects.actions'; +export * from './submission-objects.reducer'; +export * from './submission-section-object.model'; +export * from './submission.reducers'; diff --git a/src/app/submission/selectors.ts b/modules/core/src/lib/core/states/submission/selectors.ts similarity index 70% rename from src/app/submission/selectors.ts rename to modules/core/src/lib/core/states/submission/selectors.ts index 432a5377a5a..5e5fe7bc059 100644 --- a/src/app/submission/selectors.ts +++ b/modules/core/src/lib/core/states/submission/selectors.ts @@ -1,42 +1,16 @@ -import { - createSelector, - MemoizedSelector, - Selector, -} from '@ngrx/store'; +import { MemoizedSelector } from '@ngrx/store'; -import { hasValue } from '../shared/empty.util'; -import { SubmissionObjectEntry } from './objects/submission-objects.reducer'; -import { SubmissionSectionObject } from './objects/submission-section-object.model'; +import { + keySelector, + subStateSelector, +} from '../../json-patch/selectors'; import { submissionSelector, SubmissionState, } from './submission.reducers'; +import { SubmissionObjectEntry } from './submission-objects.reducer'; +import { SubmissionSectionObject } from './submission-section-object.model'; -/** - * Export a function to return a subset of the state by key - */ -export function keySelector(parentSelector: Selector, subState: string, key: string): MemoizedSelector { - return createSelector(parentSelector, (state: T) => { - if (hasValue(state) && hasValue(state[subState])) { - return state[subState][key]; - } else { - return undefined; - } - }); -} - -/** - * Export a function to return a subset of the state - */ -export function subStateSelector(parentSelector: Selector, subState: string): MemoizedSelector { - return createSelector(parentSelector, (state: T) => { - if (hasValue(state) && hasValue(state[subState])) { - return state[subState]; - } else { - return undefined; - } - }); -} export function submissionObjectFromIdSelector(submissionId: string): MemoizedSelector { return keySelector(submissionSelector, 'objects', submissionId); diff --git a/src/app/submission/objects/submission-objects.actions.ts b/modules/core/src/lib/core/states/submission/submission-objects.actions.ts similarity index 97% rename from src/app/submission/objects/submission-objects.actions.ts rename to modules/core/src/lib/core/states/submission/submission-objects.actions.ts index 956c8f95336..37a79ab6a72 100644 --- a/src/app/submission/objects/submission-objects.actions.ts +++ b/modules/core/src/lib/core/states/submission/submission-objects.actions.ts @@ -1,22 +1,24 @@ /* eslint-disable max-classes-per-file */ import { Action } from '@ngrx/store'; -import { SubmissionDefinitionsModel } from '../../core/config/models/config-submission-definitions.model'; -import { Item } from '../../core/shared/item.model'; -import { SubmissionObject } from '../../core/submission/models/submission-object.model'; -import { WorkspaceitemSectionUploadFileObject } from '../../core/submission/models/workspaceitem-section-upload-file.model'; -import { - WorkspaceitemSectionDataType, - WorkspaceitemSectionsObject, -} from '../../core/submission/models/workspaceitem-sections.model'; +import { SubmissionDefinitionsModel } from '../../config/models/config-submission-definitions.model'; +import { Item } from '../../shared/item.model'; import { type } from '../../shared/ngrx/type'; -import { SectionsType } from '../sections/sections-type'; import { SectionScope, SectionVisibility, -} from './section-visibility.model'; -import { SubmissionError } from './submission-error.model'; -import { SubmissionSectionError } from './submission-section-error.model'; +} from '../../submission/models/section-visibility.model'; +import { SectionsType } from '../../submission/models/sections-type'; +import { SubmissionError } from '../../submission/models/submission-error.model'; +import { SubmissionObject } from '../../submission/models/submission-object.model'; +import { SubmissionSectionError } from '../../submission/models/submission-section-error.model'; +import { WorkspaceitemSectionUploadFileObject } from '../../submission/models/workspaceitem-section-upload-file.model'; +import { + WorkspaceitemSectionDataType, + WorkspaceitemSectionsObject, +} from '../../submission/models/workspaceitem-sections.model'; + + /** * For each action type in an action group, make a simple diff --git a/src/app/submission/objects/submission-objects.effects.spec.ts b/modules/core/src/lib/core/states/submission/submission-objects.effects.spec.ts similarity index 95% rename from src/app/submission/objects/submission-objects.effects.spec.ts rename to modules/core/src/lib/core/states/submission/submission-objects.effects.spec.ts index a16dc365f25..aa69f82c9e4 100644 --- a/src/app/submission/objects/submission-objects.effects.spec.ts +++ b/modules/core/src/lib/core/states/submission/submission-objects.effects.spec.ts @@ -22,14 +22,7 @@ import { import { AppState, storeModuleConfig, -} from '../../app.reducer'; -import { SubmissionSectionModel } from '../../core/config/models/config-submission-section.model'; -import { HALEndpointService } from '../../core/shared/hal-endpoint.service'; -import { Item } from '../../core/shared/item.model'; -import { SubmissionJsonPatchOperationsService } from '../../core/submission/submission-json-patch-operations.service'; -import { SubmissionObjectDataService } from '../../core/submission/submission-object-data.service'; -import { WorkflowItemDataService } from '../../core/submission/workflowitem-data.service'; -import { WorkspaceitemDataService } from '../../core/submission/workspaceitem-data.service'; +} from '../../../../../../../src/app/app.reducer'; import { mockSectionsData, mockSectionsDataTwo, @@ -42,18 +35,26 @@ import { mockSubmissionRestResponse, mockSubmissionSelfUrl, mockSubmissionState, -} from '../../shared/mocks/submission.mock'; -import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { SectionsServiceStub } from '../../shared/testing/sections-service.stub'; -import { StoreMock } from '../../shared/testing/store.mock'; -import { SubmissionJsonPatchOperationsServiceStub } from '../../shared/testing/submission-json-patch-operations-service.stub'; -import { mockSubmissionObjectDataService } from '../../shared/testing/submission-oject-data-service.mock'; -import { SubmissionServiceStub } from '../../shared/testing/submission-service.stub'; -import { SectionsService } from '../sections/sections.service'; -import { SubmissionService } from '../submission.service'; -import parseSectionErrors from '../utils/parseSectionErrors'; +} from '../../../../../../../src/app/shared/mocks/submission.mock'; +import { SectionsService } from '../../../../../../../src/app/submission/sections/sections.service'; +import { SubmissionObjectEffects } from '../../../../../../../src/app/submission/submission-objects.effects'; +import parseSectionErrors from '../../../../../../../src/app/submission/utils/parseSectionErrors'; +import { SubmissionSectionModel } from '../../config/models/config-submission-section.model'; +import { TranslateLoaderMock } from '../../mocks/translate-loader.mock'; +import { NotificationsService } from '../../notifications/notifications.service'; +import { HALEndpointService } from '../../shared/hal-endpoint.service'; +import { Item } from '../../shared/item.model'; +import { SubmissionService } from '../../submission/submission.service'; +import { SubmissionJsonPatchOperationsService } from '../../submission/submission-json-patch-operations.service'; +import { SubmissionObjectDataService } from '../../submission/submission-object-data.service'; +import { WorkflowItemDataService } from '../../submission/workflowitem-data.service'; +import { WorkspaceitemDataService } from '../../submission/workspaceitem-data.service'; +import { NotificationsServiceStub } from '../../utilities/testing/notifications-service.stub'; +import { SectionsServiceStub } from '../../utilities/testing/sections-service.stub'; +import { StoreMock } from '../../utilities/testing/store.mock'; +import { SubmissionJsonPatchOperationsServiceStub } from '../../utilities/testing/submission-json-patch-operations-service.stub'; +import { mockSubmissionObjectDataService } from '../../utilities/testing/submission-oject-data-service.mock'; +import { SubmissionServiceStub } from '../../utilities/testing/submission-service.stub'; import { CompleteInitSubmissionFormAction, DepositSubmissionAction, @@ -71,7 +72,6 @@ import { SubmissionObjectActionTypes, UpdateSectionDataAction, } from './submission-objects.actions'; -import { SubmissionObjectEffects } from './submission-objects.effects'; describe('SubmissionObjectEffects test suite', () => { let submissionObjectEffects: SubmissionObjectEffects; diff --git a/src/app/submission/objects/submission-objects.reducer.spec.ts b/modules/core/src/lib/core/states/submission/submission-objects.reducer.spec.ts similarity index 99% rename from src/app/submission/objects/submission-objects.reducer.spec.ts rename to modules/core/src/lib/core/states/submission/submission-objects.reducer.spec.ts index 2bbb875c3cd..7e8588a6708 100644 --- a/src/app/submission/objects/submission-objects.reducer.spec.ts +++ b/modules/core/src/lib/core/states/submission/submission-objects.reducer.spec.ts @@ -1,12 +1,12 @@ -import { Item } from '../../core/shared/item.model'; import { mockSubmissionCollectionId, mockSubmissionDefinitionResponse, mockSubmissionId, mockSubmissionSelfUrl, mockSubmissionState, -} from '../../shared/mocks/submission.mock'; -import { SectionsType } from '../sections/sections-type'; +} from '../../../../../../../src/app/shared/mocks/submission.mock'; +import { Item } from '../../shared/item.model'; +import { SectionsType } from '../../submission/models/sections-type'; import { CancelSubmissionFormAction, ChangeSubmissionCollectionAction, diff --git a/src/app/submission/objects/submission-objects.reducer.ts b/modules/core/src/lib/core/states/submission/submission-objects.reducer.ts similarity index 99% rename from src/app/submission/objects/submission-objects.reducer.ts rename to modules/core/src/lib/core/states/submission/submission-objects.reducer.ts index a34cf236b94..c5556b64f3f 100644 --- a/src/app/submission/objects/submission-objects.reducer.ts +++ b/modules/core/src/lib/core/states/submission/submission-objects.reducer.ts @@ -1,9 +1,3 @@ -import differenceWith from 'lodash/differenceWith'; -import findKey from 'lodash/findKey'; -import isEqual from 'lodash/isEqual'; -import uniqWith from 'lodash/uniqWith'; - -import { WorkspaceitemSectionUploadObject } from '../../core/submission/models/workspaceitem-section-upload.model'; import { hasValue, isEmpty, @@ -11,7 +5,13 @@ import { isNotNull, isNull, isUndefined, -} from '../../shared/empty.util'; +} from '@dspace/shared/utils'; +import differenceWith from 'lodash/differenceWith'; +import findKey from 'lodash/findKey'; +import isEqual from 'lodash/isEqual'; +import uniqWith from 'lodash/uniqWith'; + +import { WorkspaceitemSectionUploadObject } from '../../submission/models/workspaceitem-section-upload.model'; import { ChangeSubmissionCollectionAction, CleanDuplicateDetectionAction, diff --git a/src/app/submission/objects/submission-section-object.model.ts b/modules/core/src/lib/core/states/submission/submission-section-object.model.ts similarity index 82% rename from src/app/submission/objects/submission-section-object.model.ts rename to modules/core/src/lib/core/states/submission/submission-section-object.model.ts index 5d8a14c7450..b25472d4c3c 100644 --- a/src/app/submission/objects/submission-section-object.model.ts +++ b/modules/core/src/lib/core/states/submission/submission-section-object.model.ts @@ -1,10 +1,11 @@ -import { WorkspaceitemSectionDataType } from '../../core/submission/models/workspaceitem-sections.model'; -import { SectionsType } from '../sections/sections-type'; import { SectionScope, SectionVisibility, -} from './section-visibility.model'; -import { SubmissionSectionError } from './submission-section-error.model'; +} from '../../submission/models/section-visibility.model'; +import { SectionsType } from '../../submission/models/sections-type'; +import { SubmissionSectionError } from '../../submission/models/submission-section-error.model'; +import { WorkspaceitemSectionDataType } from '../../submission/models/workspaceitem-sections.model'; + /** * An interface to represent section object state diff --git a/src/app/submission/submission.reducers.ts b/modules/core/src/lib/core/states/submission/submission.reducers.ts similarity index 90% rename from src/app/submission/submission.reducers.ts rename to modules/core/src/lib/core/states/submission/submission.reducers.ts index 23cacbf13fe..d5c3a5d8f3c 100644 --- a/src/app/submission/submission.reducers.ts +++ b/modules/core/src/lib/core/states/submission/submission.reducers.ts @@ -6,7 +6,7 @@ import { import { submissionObjectReducer, SubmissionObjectState, -} from './objects/submission-objects.reducer'; +} from './submission-objects.reducer'; /** * The Submission State diff --git a/modules/core/src/lib/core/statistics/index.ts b/modules/core/src/lib/core/statistics/index.ts new file mode 100644 index 00000000000..6f4cf981fa1 --- /dev/null +++ b/modules/core/src/lib/core/statistics/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './usage-report-data.service'; diff --git a/modules/core/src/lib/core/statistics/models/index.ts b/modules/core/src/lib/core/statistics/models/index.ts new file mode 100644 index 00000000000..1ddaad497e2 --- /dev/null +++ b/modules/core/src/lib/core/statistics/models/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './usage-report.model'; +export * from './usage-report.resource-type'; diff --git a/src/app/core/statistics/models/usage-report.model.ts b/modules/core/src/lib/core/statistics/models/usage-report.model.ts similarity index 70% rename from src/app/core/statistics/models/usage-report.model.ts rename to modules/core/src/lib/core/statistics/models/usage-report.model.ts index a4924f3a3db..b90669b5fe6 100644 --- a/src/app/core/statistics/models/usage-report.model.ts +++ b/modules/core/src/lib/core/statistics/models/usage-report.model.ts @@ -5,11 +5,11 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { HALLink } from '../../shared/hal-link.model'; -import { HALResource } from '../../shared/hal-resource.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { HALLink } from '../../shared'; +import { HALResource } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { USAGE_REPORT } from './usage-report.resource-type'; /** diff --git a/src/app/core/statistics/models/usage-report.resource-type.ts b/modules/core/src/lib/core/statistics/models/usage-report.resource-type.ts similarity index 76% rename from src/app/core/statistics/models/usage-report.resource-type.ts rename to modules/core/src/lib/core/statistics/models/usage-report.resource-type.ts index 650a51b3c31..88bd7981de5 100644 --- a/src/app/core/statistics/models/usage-report.resource-type.ts +++ b/modules/core/src/lib/core/statistics/models/usage-report.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for License diff --git a/src/app/core/statistics/usage-report-data.service.spec.ts b/modules/core/src/lib/core/statistics/usage-report-data.service.spec.ts similarity index 100% rename from src/app/core/statistics/usage-report-data.service.spec.ts rename to modules/core/src/lib/core/statistics/usage-report-data.service.spec.ts diff --git a/src/app/core/statistics/usage-report-data.service.ts b/modules/core/src/lib/core/statistics/usage-report-data.service.ts similarity index 69% rename from src/app/core/statistics/usage-report-data.service.ts rename to modules/core/src/lib/core/statistics/usage-report-data.service.ts index 2737e875de9..fc797463918 100644 --- a/src/app/core/statistics/usage-report-data.service.ts +++ b/modules/core/src/lib/core/statistics/usage-report-data.service.ts @@ -2,25 +2,25 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { IdentifiableDataService } from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +} from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { getFirstSucceededRemoteData, getRemoteDataPayload, -} from '../shared/operators'; -import { UsageReport } from './models/usage-report.model'; +} from '../shared'; +import { UsageReport } from './models'; /** * A service to retrieve {@link UsageReport}s from the REST API diff --git a/src/app/store.actions.ts b/modules/core/src/lib/core/store.actions.ts similarity index 65% rename from src/app/store.actions.ts rename to modules/core/src/lib/core/store.actions.ts index 5839778ac05..461b2d8b93c 100644 --- a/src/app/store.actions.ts +++ b/modules/core/src/lib/core/store.actions.ts @@ -1,7 +1,7 @@ import { Action } from '@ngrx/store'; -import { AppState } from './app.reducer'; -import { type } from './shared/ngrx/type'; +import { type } from './shared'; +import { CoreState } from "./core-state.model"; export const StoreActionTypes = { REHYDRATE: type('dspace/ngrx/REHYDRATE'), @@ -10,9 +10,9 @@ export const StoreActionTypes = { export class StoreAction implements Action { type: string; - payload: AppState | Action[]; + payload: CoreState | Action[]; // eslint-disable-next-line @typescript-eslint/no-shadow - constructor(type: string, payload: AppState | Action[]) { + constructor(type: string, payload: CoreState | Action[]) { this.type = type; this.payload = payload; } diff --git a/src/app/core/submission/correctiontype-data.service.ts b/modules/core/src/lib/core/submission/correctiontype-data.service.ts similarity index 77% rename from src/app/core/submission/correctiontype-data.service.ts rename to modules/core/src/lib/core/submission/correctiontype-data.service.ts index 550fdcacbac..f6864c12cb3 100644 --- a/src/app/core/submission/correctiontype-data.service.ts +++ b/modules/core/src/lib/core/submission/correctiontype-data.service.ts @@ -4,22 +4,22 @@ import { Observable, } from 'rxjs'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { SearchDataImpl } from '../data/base/search-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { IdentifiableDataService } from '../data'; +import { SearchDataImpl } from '../data'; +import { FindListOptions } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; import { getAllSucceededRemoteDataPayload, getPaginatedListPayload, -} from '../shared/operators'; -import { CorrectionType } from './models/correctiontype.model'; +} from '../shared'; +import { CorrectionType } from './models'; /** * A service that provides methods to make REST requests with correctiontypes endpoint. diff --git a/modules/core/src/lib/core/submission/index.ts b/modules/core/src/lib/core/submission/index.ts new file mode 100644 index 00000000000..91dfbedfde8 --- /dev/null +++ b/modules/core/src/lib/core/submission/index.ts @@ -0,0 +1,21 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './resolver'; +export * from './sections'; +export * from './vocabularies'; +export * from './correctiontype-data.service'; +export * from './submission-cc-license-data.service'; +export * from './submission-cc-license-url-data.service'; +export * from './submission-duplicate-data.service'; +export * from './submission-field-scope-type'; +export * from './submission-json-patch-operations.service'; +export * from './submission-object-data.service'; +export * from './submission-parent-breadcrumb.service'; +export * from './submission-response-parsing.service'; +export * from './submission-response.model'; +export * from './submission-rest.service'; +export * from './submission-scope-type'; +export * from './submission.service'; +export * from './workflowitem-data.service'; +export * from './workspaceitem-data.service'; diff --git a/src/app/core/submission/models/access-condition.model.ts b/modules/core/src/lib/core/submission/models/access-condition.model.ts similarity index 100% rename from src/app/core/submission/models/access-condition.model.ts rename to modules/core/src/lib/core/submission/models/access-condition.model.ts diff --git a/src/app/core/submission/models/correctiontype.model.ts b/modules/core/src/lib/core/submission/models/correctiontype.model.ts similarity index 75% rename from src/app/core/submission/models/correctiontype.model.ts rename to modules/core/src/lib/core/submission/models/correctiontype.model.ts index 4b5bd1ddd68..2922dc404eb 100644 --- a/src/app/core/submission/models/correctiontype.model.ts +++ b/modules/core/src/lib/core/submission/models/correctiontype.model.ts @@ -3,11 +3,11 @@ import { deserialize, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { HALLink } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; @typedObject /** diff --git a/modules/core/src/lib/core/submission/models/index.ts b/modules/core/src/lib/core/submission/models/index.ts new file mode 100644 index 00000000000..4fd792b193d --- /dev/null +++ b/modules/core/src/lib/core/submission/models/index.ts @@ -0,0 +1,30 @@ +// created from 'create-ts-index' + +export * from './access-condition.model'; +export * from './correctiontype.model'; +export * from './section-visibility.model'; +export * from './sections-type'; +export * from './sherpa-policies-details.model'; +export * from './submission-accesses.resource-type'; +export * from './submission-cc-licence-link.resource-type'; +export * from './submission-cc-licence.resource-type'; +export * from './submission-cc-license-url.model'; +export * from './submission-cc-license.model'; +export * from './submission-error.model'; +export * from './submission-item-access-condition.model'; +export * from './submission-object.model'; +export * from './submission-section-error.model'; +export * from './submission-upload-file-access-condition.model'; +export * from './visibility-type'; +export * from './workflowitem.model'; +export * from './workspaceitem-section-accesses.model'; +export * from './workspaceitem-section-cc-license.model'; +export * from './workspaceitem-section-duplicates.model'; +export * from './workspaceitem-section-form.model'; +export * from './workspaceitem-section-identifiers.model'; +export * from './workspaceitem-section-license.model'; +export * from './workspaceitem-section-sherpa-policies.model'; +export * from './workspaceitem-section-upload-file.model'; +export * from './workspaceitem-section-upload.model'; +export * from './workspaceitem-sections.model'; +export * from './workspaceitem.model'; diff --git a/src/app/submission/objects/section-visibility.model.ts b/modules/core/src/lib/core/submission/models/section-visibility.model.ts similarity index 100% rename from src/app/submission/objects/section-visibility.model.ts rename to modules/core/src/lib/core/submission/models/section-visibility.model.ts diff --git a/src/app/submission/sections/sections-type.ts b/modules/core/src/lib/core/submission/models/sections-type.ts similarity index 100% rename from src/app/submission/sections/sections-type.ts rename to modules/core/src/lib/core/submission/models/sections-type.ts diff --git a/src/app/core/submission/models/sherpa-policies-details.model.ts b/modules/core/src/lib/core/submission/models/sherpa-policies-details.model.ts similarity index 95% rename from src/app/core/submission/models/sherpa-policies-details.model.ts rename to modules/core/src/lib/core/submission/models/sherpa-policies-details.model.ts index af4d4a58907..83695c32157 100644 --- a/src/app/core/submission/models/sherpa-policies-details.model.ts +++ b/modules/core/src/lib/core/submission/models/sherpa-policies-details.model.ts @@ -21,12 +21,12 @@ export class SherpaPoliciesDetailsObject { /** * The sherpa policies metadata */ - metadata: Metadata; + metadata: PolicyMetadata; } -export interface Metadata { +export interface PolicyMetadata { id: number; uri: string; dateCreated: string; diff --git a/src/app/core/submission/models/submission-accesses.resource-type.ts b/modules/core/src/lib/core/submission/models/submission-accesses.resource-type.ts similarity index 78% rename from src/app/core/submission/models/submission-accesses.resource-type.ts rename to modules/core/src/lib/core/submission/models/submission-accesses.resource-type.ts index 0634a633373..886397733c9 100644 --- a/src/app/core/submission/models/submission-accesses.resource-type.ts +++ b/modules/core/src/lib/core/submission/models/submission-accesses.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for Accesses section diff --git a/src/app/core/submission/models/submission-cc-licence-link.resource-type.ts b/modules/core/src/lib/core/submission/models/submission-cc-licence-link.resource-type.ts similarity index 78% rename from src/app/core/submission/models/submission-cc-licence-link.resource-type.ts rename to modules/core/src/lib/core/submission/models/submission-cc-licence-link.resource-type.ts index b4e38970f05..8da83a63532 100644 --- a/src/app/core/submission/models/submission-cc-licence-link.resource-type.ts +++ b/modules/core/src/lib/core/submission/models/submission-cc-licence-link.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for License diff --git a/src/app/core/submission/models/submission-cc-licence.resource-type.ts b/modules/core/src/lib/core/submission/models/submission-cc-licence.resource-type.ts similarity index 77% rename from src/app/core/submission/models/submission-cc-licence.resource-type.ts rename to modules/core/src/lib/core/submission/models/submission-cc-licence.resource-type.ts index a15b8a0c666..89c38ec51f5 100644 --- a/src/app/core/submission/models/submission-cc-licence.resource-type.ts +++ b/modules/core/src/lib/core/submission/models/submission-cc-licence.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for License diff --git a/src/app/core/submission/models/submission-cc-license-url.model.ts b/modules/core/src/lib/core/submission/models/submission-cc-license-url.model.ts similarity index 62% rename from src/app/core/submission/models/submission-cc-license-url.model.ts rename to modules/core/src/lib/core/submission/models/submission-cc-license-url.model.ts index b1e53aa206e..d27b5ff0e45 100644 --- a/src/app/core/submission/models/submission-cc-license-url.model.ts +++ b/modules/core/src/lib/core/submission/models/submission-cc-license-url.model.ts @@ -3,10 +3,10 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { HALResource } from '../../shared/hal-resource.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { HALResource } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { SUBMISSION_CC_LICENSE_URL } from './submission-cc-licence-link.resource-type'; @typedObject diff --git a/src/app/core/submission/models/submission-cc-license.model.ts b/modules/core/src/lib/core/submission/models/submission-cc-license.model.ts similarity index 72% rename from src/app/core/submission/models/submission-cc-license.model.ts rename to modules/core/src/lib/core/submission/models/submission-cc-license.model.ts index 8ab235941fc..c56a880be6f 100644 --- a/src/app/core/submission/models/submission-cc-license.model.ts +++ b/modules/core/src/lib/core/submission/models/submission-cc-license.model.ts @@ -3,10 +3,10 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { HALResource } from '../../shared/hal-resource.model'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { typedObject } from '../../cache'; +import { HALResource } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { SUBMISSION_CC_LICENSE } from './submission-cc-licence.resource-type'; @typedObject diff --git a/src/app/submission/objects/submission-error.model.ts b/modules/core/src/lib/core/submission/models/submission-error.model.ts similarity index 100% rename from src/app/submission/objects/submission-error.model.ts rename to modules/core/src/lib/core/submission/models/submission-error.model.ts diff --git a/src/app/core/submission/models/submission-item-access-condition.model.ts b/modules/core/src/lib/core/submission/models/submission-item-access-condition.model.ts similarity index 100% rename from src/app/core/submission/models/submission-item-access-condition.model.ts rename to modules/core/src/lib/core/submission/models/submission-item-access-condition.model.ts diff --git a/src/app/core/submission/models/submission-object.model.ts b/modules/core/src/lib/core/submission/models/submission-object.model.ts similarity index 70% rename from src/app/core/submission/models/submission-object.model.ts rename to modules/core/src/lib/core/submission/models/submission-object.model.ts index d4836f6dcf1..83675c56007 100644 --- a/src/app/core/submission/models/submission-object.model.ts +++ b/modules/core/src/lib/core/submission/models/submission-object.model.ts @@ -5,21 +5,21 @@ import { } from 'cerialize'; import { Observable } from 'rxjs'; -import { link } from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { SubmissionDefinitionsModel } from '../../config/models/config-submission-definitions.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { EPerson } from '../../eperson/models/eperson.model'; -import { EPERSON } from '../../eperson/models/eperson.resource-type'; -import { Collection } from '../../shared/collection.model'; -import { COLLECTION } from '../../shared/collection.resource-type'; -import { DSpaceObject } from '../../shared/dspace-object.model'; -import { HALLink } from '../../shared/hal-link.model'; -import { ITEM } from '../../shared/item.resource-type'; -import { SupervisionOrder } from '../../supervision-order/models/supervision-order.model'; -import { SUPERVISION_ORDER } from '../../supervision-order/models/supervision-order.resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +import { link } from '../../cache'; +import { CacheableObject } from '../../cache'; +import { SubmissionDefinitionsModel } from '../../config'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { EPerson } from '../../eperson'; +import { EPERSON } from '../../eperson'; +import { Collection } from '../../shared'; +import { COLLECTION } from '../../shared'; +import { DSpaceObject } from '../../shared'; +import { HALLink } from '../../shared'; +import { ITEM } from '../../shared'; +import { SupervisionOrder } from '../../supervision-order'; +import { SUPERVISION_ORDER } from '../../supervision-order'; +import { excludeFromEquals } from '../../utilities'; import { WorkspaceitemSectionsObject } from './workspaceitem-sections.model'; export interface SubmissionObjectError { diff --git a/src/app/submission/objects/submission-section-error.model.ts b/modules/core/src/lib/core/submission/models/submission-section-error.model.ts similarity index 100% rename from src/app/submission/objects/submission-section-error.model.ts rename to modules/core/src/lib/core/submission/models/submission-section-error.model.ts diff --git a/src/app/core/submission/models/submission-upload-file-access-condition.model.ts b/modules/core/src/lib/core/submission/models/submission-upload-file-access-condition.model.ts similarity index 100% rename from src/app/core/submission/models/submission-upload-file-access-condition.model.ts rename to modules/core/src/lib/core/submission/models/submission-upload-file-access-condition.model.ts diff --git a/src/app/submission/sections/visibility-type.ts b/modules/core/src/lib/core/submission/models/visibility-type.ts similarity index 100% rename from src/app/submission/sections/visibility-type.ts rename to modules/core/src/lib/core/submission/models/visibility-type.ts diff --git a/src/app/core/submission/models/workflowitem.model.ts b/modules/core/src/lib/core/submission/models/workflowitem.model.ts similarity index 78% rename from src/app/core/submission/models/workflowitem.model.ts rename to modules/core/src/lib/core/submission/models/workflowitem.model.ts index 63fdda7c10b..4160fa0a6a7 100644 --- a/src/app/core/submission/models/workflowitem.model.ts +++ b/modules/core/src/lib/core/submission/models/workflowitem.model.ts @@ -6,9 +6,9 @@ import { import { inheritLinkAnnotations, typedObject, -} from '../../cache/builders/build-decorators'; -import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer'; -import { WORKFLOWITEM } from '../../eperson/models/workflowitem.resource-type'; +} from '../../cache'; +import { IDToUUIDSerializer } from '../../cache'; +import { WORKFLOWITEM } from '../../eperson'; import { SubmissionObject } from './submission-object.model'; /** diff --git a/src/app/core/submission/models/workspaceitem-section-accesses.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-accesses.model.ts similarity index 100% rename from src/app/core/submission/models/workspaceitem-section-accesses.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-accesses.model.ts diff --git a/src/app/core/submission/models/workspaceitem-section-cc-license.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-cc-license.model.ts similarity index 100% rename from src/app/core/submission/models/workspaceitem-section-cc-license.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-cc-license.model.ts diff --git a/src/app/core/submission/models/workspaceitem-section-duplicates.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-duplicates.model.ts similarity index 70% rename from src/app/core/submission/models/workspaceitem-section-duplicates.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-duplicates.model.ts index f9441fa7905..1c27aa860c2 100644 --- a/src/app/core/submission/models/workspaceitem-section-duplicates.model.ts +++ b/modules/core/src/lib/core/submission/models/workspaceitem-section-duplicates.model.ts @@ -1,7 +1,7 @@ /* * Object model for the data returned by the REST API to present potential duplicates in a submission section */ -import { Duplicate } from '../../../shared/object-list/duplicate-data/duplicate.model'; +import { Duplicate } from '../../data'; export interface WorkspaceitemSectionDuplicatesObject { potentialDuplicates?: Duplicate[] diff --git a/src/app/core/submission/models/workspaceitem-section-form.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-form.model.ts similarity index 61% rename from src/app/core/submission/models/workspaceitem-section-form.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-form.model.ts index 1462a96d811..b5d592d998c 100644 --- a/src/app/core/submission/models/workspaceitem-section-form.model.ts +++ b/modules/core/src/lib/core/submission/models/workspaceitem-section-form.model.ts @@ -1,5 +1,5 @@ -import { FormFieldMetadataValueObject } from '../../../shared/form/builder/models/form-field-metadata-value.model'; -import { MetadataMapInterface } from '../../shared/metadata.models'; +import { FormFieldMetadataValueObject } from '../../config'; +import { MetadataMapInterface } from '../../shared'; /** * An interface to represent submission's form section data. diff --git a/src/app/core/submission/models/workspaceitem-section-identifiers.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-identifiers.model.ts similarity index 71% rename from src/app/core/submission/models/workspaceitem-section-identifiers.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-identifiers.model.ts index f6bfb1ae04f..e4617146147 100644 --- a/src/app/core/submission/models/workspaceitem-section-identifiers.model.ts +++ b/modules/core/src/lib/core/submission/models/workspaceitem-section-identifiers.model.ts @@ -1,7 +1,7 @@ /* * Object model for the data returned by the REST API to present minted identifiers in a submission section */ -import { Identifier } from '../../../shared/object-list/identifier-data/identifier.model'; +import { Identifier } from '../../data'; export interface WorkspaceitemSectionIdentifiersObject { identifiers?: Identifier[] diff --git a/src/app/core/submission/models/workspaceitem-section-license.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-license.model.ts similarity index 100% rename from src/app/core/submission/models/workspaceitem-section-license.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-license.model.ts diff --git a/src/app/core/submission/models/workspaceitem-section-sherpa-policies.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-sherpa-policies.model.ts similarity index 100% rename from src/app/core/submission/models/workspaceitem-section-sherpa-policies.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-sherpa-policies.model.ts diff --git a/src/app/core/submission/models/workspaceitem-section-upload-file.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-upload-file.model.ts similarity index 100% rename from src/app/core/submission/models/workspaceitem-section-upload-file.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-upload-file.model.ts diff --git a/src/app/core/submission/models/workspaceitem-section-upload.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-section-upload.model.ts similarity index 100% rename from src/app/core/submission/models/workspaceitem-section-upload.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-section-upload.model.ts diff --git a/src/app/core/submission/models/workspaceitem-sections.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem-sections.model.ts similarity index 100% rename from src/app/core/submission/models/workspaceitem-sections.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem-sections.model.ts diff --git a/src/app/core/submission/models/workspaceitem.model.ts b/modules/core/src/lib/core/submission/models/workspaceitem.model.ts similarity index 78% rename from src/app/core/submission/models/workspaceitem.model.ts rename to modules/core/src/lib/core/submission/models/workspaceitem.model.ts index d9aad957f27..475bbab648a 100644 --- a/src/app/core/submission/models/workspaceitem.model.ts +++ b/modules/core/src/lib/core/submission/models/workspaceitem.model.ts @@ -6,9 +6,9 @@ import { import { inheritLinkAnnotations, typedObject, -} from '../../cache/builders/build-decorators'; -import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer'; -import { WORKSPACEITEM } from '../../eperson/models/workspaceitem.resource-type'; +} from '../../cache'; +import { IDToUUIDSerializer } from '../../cache'; +import { WORKSPACEITEM } from '../../eperson'; import { SubmissionObject } from './submission-object.model'; /** diff --git a/modules/core/src/lib/core/submission/resolver/index.ts b/modules/core/src/lib/core/submission/resolver/index.ts new file mode 100644 index 00000000000..08ee5f057b5 --- /dev/null +++ b/modules/core/src/lib/core/submission/resolver/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './submission-links-to-follow'; +export * from './submission-object.resolver'; +export * from './submission-parent-breadcrumb.resolver'; diff --git a/src/app/core/submission/resolver/submission-links-to-follow.ts b/modules/core/src/lib/core/submission/resolver/submission-links-to-follow.ts similarity index 70% rename from src/app/core/submission/resolver/submission-links-to-follow.ts rename to modules/core/src/lib/core/submission/resolver/submission-links-to-follow.ts index 1ddda024c51..5d698ef1af3 100644 --- a/src/app/core/submission/resolver/submission-links-to-follow.ts +++ b/modules/core/src/lib/core/submission/resolver/submission-links-to-follow.ts @@ -1,9 +1,9 @@ import { followLink, FollowLinkConfig, -} from '../../../shared/utils/follow-link-config.model'; -import { WorkflowItem } from '../models/workflowitem.model'; -import { WorkspaceItem } from '../models/workspaceitem.model'; +} from '../../data'; +import { WorkflowItem } from '../models'; +import { WorkspaceItem } from '../models'; /** * The self links defined in this list are expected to be requested somewhere in the near future diff --git a/src/app/core/submission/resolver/submission-object.resolver.ts b/modules/core/src/lib/core/submission/resolver/submission-object.resolver.ts similarity index 80% rename from src/app/core/submission/resolver/submission-object.resolver.ts rename to modules/core/src/lib/core/submission/resolver/submission-object.resolver.ts index 3ead988c9ba..5e3127d62ec 100644 --- a/src/app/core/submission/resolver/submission-object.resolver.ts +++ b/modules/core/src/lib/core/submission/resolver/submission-object.resolver.ts @@ -5,11 +5,11 @@ import { import { Observable } from 'rxjs'; import { switchMap } from 'rxjs/operators'; -import { IdentifiableDataService } from '../../data/base/identifiable-data.service'; -import { RemoteData } from '../../data/remote-data'; -import { Item } from '../../shared/item.model'; -import { getFirstCompletedRemoteData } from '../../shared/operators'; -import { SubmissionObject } from '../models/submission-object.model'; +import { IdentifiableDataService } from '../../data'; +import { RemoteData } from '../../data'; +import { Item } from '../../shared'; +import { getFirstCompletedRemoteData } from '../../shared'; +import { SubmissionObject } from '../models'; import { SUBMISSION_LINKS_TO_FOLLOW } from './submission-links-to-follow'; /** diff --git a/src/app/core/submission/resolver/submission-parent-breadcrumb.resolver.ts b/modules/core/src/lib/core/submission/resolver/submission-parent-breadcrumb.resolver.ts similarity index 85% rename from src/app/core/submission/resolver/submission-parent-breadcrumb.resolver.ts rename to modules/core/src/lib/core/submission/resolver/submission-parent-breadcrumb.resolver.ts index 92412be8697..5125a2a39f1 100644 --- a/src/app/core/submission/resolver/submission-parent-breadcrumb.resolver.ts +++ b/modules/core/src/lib/core/submission/resolver/submission-parent-breadcrumb.resolver.ts @@ -6,13 +6,13 @@ import { import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { BreadcrumbConfig } from '../../../breadcrumbs/breadcrumb/breadcrumb-config.model'; -import { IdentifiableDataService } from '../../data/base/identifiable-data.service'; +import { BreadcrumbConfig } from '../../breadcrumbs'; +import { IdentifiableDataService } from '../../data'; import { getFirstCompletedRemoteData, getRemoteDataPayload, -} from '../../shared/operators'; -import { SubmissionObject } from '../models/submission-object.model'; +} from '../../shared'; +import { SubmissionObject } from '../models'; import { SubmissionParentBreadcrumbsService } from '../submission-parent-breadcrumb.service'; import { SUBMISSION_LINKS_TO_FOLLOW } from './submission-links-to-follow'; diff --git a/modules/core/src/lib/core/submission/sections/index.ts b/modules/core/src/lib/core/submission/sections/index.ts new file mode 100644 index 00000000000..a3b27345f18 --- /dev/null +++ b/modules/core/src/lib/core/submission/sections/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './section-data.model'; diff --git a/src/app/submission/sections/models/section-data.model.ts b/modules/core/src/lib/core/submission/sections/section-data.model.ts similarity index 76% rename from src/app/submission/sections/models/section-data.model.ts rename to modules/core/src/lib/core/submission/sections/section-data.model.ts index 7ecb820db77..639256e4db4 100644 --- a/src/app/submission/sections/models/section-data.model.ts +++ b/modules/core/src/lib/core/submission/sections/section-data.model.ts @@ -1,6 +1,7 @@ -import { WorkspaceitemSectionDataType } from '../../../core/submission/models/workspaceitem-sections.model'; -import { SubmissionSectionError } from '../../objects/submission-section-error.model'; -import { SectionsType } from '../sections-type'; +import { SectionsType } from '../models/sections-type'; +import { SubmissionSectionError } from '../models/submission-section-error.model'; +import { WorkspaceitemSectionDataType } from '../models/workspaceitem-sections.model'; + /** * An interface to represent section model diff --git a/src/app/core/submission/submission-cc-license-data.service.spec.ts b/modules/core/src/lib/core/submission/submission-cc-license-data.service.spec.ts similarity index 100% rename from src/app/core/submission/submission-cc-license-data.service.spec.ts rename to modules/core/src/lib/core/submission/submission-cc-license-data.service.spec.ts diff --git a/src/app/core/submission/submission-cc-license-data.service.ts b/modules/core/src/lib/core/submission/submission-cc-license-data.service.ts similarity index 74% rename from src/app/core/submission/submission-cc-license-data.service.ts rename to modules/core/src/lib/core/submission/submission-cc-license-data.service.ts index 2ecddf1b09d..ef6103048da 100644 --- a/src/app/core/submission/submission-cc-license-data.service.ts +++ b/modules/core/src/lib/core/submission/submission-cc-license-data.service.ts @@ -1,20 +1,20 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { BaseDataService } from '../data/base/base-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { BaseDataService } from '../data'; import { FindAllData, FindAllDataImpl, -} from '../data/base/find-all-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { SubmissionCcLicence } from './models/submission-cc-license.model'; +} from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; +import { SubmissionCcLicence } from './models'; @Injectable({ providedIn: 'root' }) export class SubmissionCcLicenseDataService extends BaseDataService implements FindAllData { diff --git a/src/app/core/submission/submission-cc-license-url-data.service.ts b/modules/core/src/lib/core/submission/submission-cc-license-url-data.service.ts similarity index 78% rename from src/app/core/submission/submission-cc-license-url-data.service.ts rename to modules/core/src/lib/core/submission/submission-cc-license-url-data.service.ts index 575f6113353..4ec3e0b8b55 100644 --- a/src/app/core/submission/submission-cc-license-url-data.service.ts +++ b/modules/core/src/lib/core/submission/submission-cc-license-url-data.service.ts @@ -5,30 +5,30 @@ import { switchMap, } from 'rxjs/operators'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { BaseDataService } from '../data/base/base-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { BaseDataService } from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +} from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; import { getFirstSucceededRemoteData, getRemoteDataPayload, -} from '../shared/operators'; +} from '../shared'; import { Field, Option, SubmissionCcLicence, -} from './models/submission-cc-license.model'; -import { SubmissionCcLicenceUrl } from './models/submission-cc-license-url.model'; +} from './models'; +import { SubmissionCcLicenceUrl } from './models'; @Injectable({ providedIn: 'root' }) export class SubmissionCcLicenseUrlDataService extends BaseDataService implements SearchData { diff --git a/src/app/core/submission/submission-duplicate-data.service.spec.ts b/modules/core/src/lib/core/submission/submission-duplicate-data.service.spec.ts similarity index 99% rename from src/app/core/submission/submission-duplicate-data.service.spec.ts rename to modules/core/src/lib/core/submission/submission-duplicate-data.service.spec.ts index 88d02b74e79..855fa6cee5b 100644 --- a/src/app/core/submission/submission-duplicate-data.service.spec.ts +++ b/modules/core/src/lib/core/submission/submission-duplicate-data.service.spec.ts @@ -1,10 +1,11 @@ +/** + * Basic tests for the submission-duplicate-data.service.ts service + */ import { RequestParam } from '../cache/models/request-param.model'; import { FindListOptions } from '../data/find-list-options.model'; import { SubmissionDuplicateDataService } from './submission-duplicate-data.service'; -/** - * Basic tests for the submission-duplicate-data.service.ts service - */ + describe('SubmissionDuplicateDataService', () => { const duplicateDataService = new SubmissionDuplicateDataService(null, null, null, null); diff --git a/src/app/core/submission/submission-duplicate-data.service.ts b/modules/core/src/lib/core/submission/submission-duplicate-data.service.ts similarity index 80% rename from src/app/core/submission/submission-duplicate-data.service.ts rename to modules/core/src/lib/core/submission/submission-duplicate-data.service.ts index b3273424690..55c45458edf 100644 --- a/src/app/core/submission/submission-duplicate-data.service.ts +++ b/modules/core/src/lib/core/submission/submission-duplicate-data.service.ts @@ -5,26 +5,26 @@ import { } from '@angular/core'; import { Observable } from 'rxjs'; -import { Duplicate } from '../../shared/object-list/duplicate-data/duplicate.model'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { BaseDataService } from '../data/base/base-data.service'; +import { Duplicate } from '../data'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { BaseDataService } from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { ResponseParsingService } from '../data/parsing.service'; -import { RemoteData } from '../data/remote-data'; -import { GetRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RestRequest } from '../data/rest-request.model'; -import { SearchResponseParsingService } from '../data/search-response-parsing.service'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +} from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { ResponseParsingService } from '../data'; +import { RemoteData } from '../data'; +import { GetRequest } from '../data'; +import { RequestService } from '../data'; +import { RestRequest } from '../data'; +import { SearchResponseParsingService } from '../data'; +import { GenericConstructor } from '../shared'; +import { HALEndpointService } from '../shared'; /** * Service that handles search requests for potential duplicate items. diff --git a/src/app/core/submission/submission-field-scope-type.ts b/modules/core/src/lib/core/submission/submission-field-scope-type.ts similarity index 100% rename from src/app/core/submission/submission-field-scope-type.ts rename to modules/core/src/lib/core/submission/submission-field-scope-type.ts diff --git a/src/app/core/submission/submission-json-patch-operations.service.spec.ts b/modules/core/src/lib/core/submission/submission-json-patch-operations.service.spec.ts similarity index 100% rename from src/app/core/submission/submission-json-patch-operations.service.spec.ts rename to modules/core/src/lib/core/submission/submission-json-patch-operations.service.spec.ts diff --git a/src/app/core/submission/submission-json-patch-operations.service.ts b/modules/core/src/lib/core/submission/submission-json-patch-operations.service.ts similarity index 69% rename from src/app/core/submission/submission-json-patch-operations.service.ts rename to modules/core/src/lib/core/submission/submission-json-patch-operations.service.ts index 8d454ae2112..6596af2388f 100644 --- a/src/app/core/submission/submission-json-patch-operations.service.ts +++ b/modules/core/src/lib/core/submission/submission-json-patch-operations.service.ts @@ -1,14 +1,14 @@ import { Injectable } from '@angular/core'; import { Store } from '@ngrx/store'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; +import { RemoteDataBuildService } from '../cache'; import { CoreState } from '../core-state.model'; -import { SubmissionPatchRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { JsonPatchOperationsService } from '../json-patch/json-patch-operations.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { SubmitDataResponseDefinitionObject } from '../shared/submit-data-response-definition.model'; -import { URLCombiner } from '../url-combiner/url-combiner'; +import { SubmissionPatchRequest } from '../data'; +import { RequestService } from '../data'; +import { JsonPatchOperationsService } from '../json-patch'; +import { HALEndpointService } from '../shared'; +import { SubmitDataResponseDefinitionObject } from '../shared'; +import { URLCombiner } from '../url-combiner'; /** * A service that provides methods to make JSON Patch requests. diff --git a/src/app/core/submission/submission-object-data.service.spec.ts b/modules/core/src/lib/core/submission/submission-object-data.service.spec.ts similarity index 98% rename from src/app/core/submission/submission-object-data.service.spec.ts rename to modules/core/src/lib/core/submission/submission-object-data.service.spec.ts index 168fb915d3d..0d9b7fae02d 100644 --- a/src/app/core/submission/submission-object-data.service.spec.ts +++ b/modules/core/src/lib/core/submission/submission-object-data.service.spec.ts @@ -1,12 +1,13 @@ -import { SubmissionService } from '../../submission/submission.service'; import { RemoteData } from '../data/remote-data'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { SubmissionObject } from './models/submission-object.model'; +import { SubmissionService } from './submission.service'; import { SubmissionObjectDataService } from './submission-object-data.service'; import { SubmissionScopeType } from './submission-scope-type'; import { WorkflowItemDataService } from './workflowitem-data.service'; import { WorkspaceitemDataService } from './workspaceitem-data.service'; + describe('SubmissionObjectDataService', () => { let service: SubmissionObjectDataService; let submissionService: SubmissionService; diff --git a/src/app/core/submission/submission-object-data.service.ts b/modules/core/src/lib/core/submission/submission-object-data.service.ts similarity index 81% rename from src/app/core/submission/submission-object-data.service.ts rename to modules/core/src/lib/core/submission/submission-object-data.service.ts index c044cb8129d..cc40c11d5a1 100644 --- a/src/app/core/submission/submission-object-data.service.ts +++ b/modules/core/src/lib/core/submission/submission-object-data.service.ts @@ -1,18 +1,24 @@ -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; import { Observable, of as observableOf, } from 'rxjs'; import { map } from 'rxjs/operators'; -import { environment } from '../../../environments/environment'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { SubmissionService } from '../../submission/submission.service'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { RemoteData } from '../data/remote-data'; -import { RequestEntryState } from '../data/request-entry-state.model'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { SubmissionObject } from './models/submission-object.model'; +import { SubmissionService } from './submission.service'; +import { + APP_CONFIG, + AppConfig, +} from '../config'; +import { IdentifiableDataService } from '../data'; +import { FollowLinkConfig } from '../data'; +import { RemoteData } from '../data'; +import { RequestEntryState } from '../data'; +import { HALEndpointService } from '../shared'; +import { SubmissionObject } from './models'; import { SubmissionScopeType } from './submission-scope-type'; import { WorkflowItemDataService } from './workflowitem-data.service'; import { WorkspaceitemDataService } from './workspaceitem-data.service'; @@ -25,6 +31,8 @@ import { WorkspaceitemDataService } from './workspaceitem-data.service'; providedIn: 'root', }) export class SubmissionObjectDataService { + private readonly appConfig: AppConfig = inject(APP_CONFIG); + constructor( private workspaceitemDataService: WorkspaceitemDataService, private workflowItemDataService: WorkflowItemDataService, @@ -65,7 +73,7 @@ export class SubmissionObjectDataService { const now = new Date().getTime(); return observableOf(new RemoteData( now, - environment.cache.msToLive.default, + this.appConfig.cache.msToLive.default, now, RequestEntryState.Error, 'The request could not be sent. Unable to determine the type of submission object', diff --git a/src/app/core/submission/submission-parent-breadcrumb.service.ts b/modules/core/src/lib/core/submission/submission-parent-breadcrumb.service.ts similarity index 71% rename from src/app/core/submission/submission-parent-breadcrumb.service.ts rename to modules/core/src/lib/core/submission/submission-parent-breadcrumb.service.ts index 2f9051b8581..5e01b156e03 100644 --- a/src/app/core/submission/submission-parent-breadcrumb.service.ts +++ b/modules/core/src/lib/core/submission/submission-parent-breadcrumb.service.ts @@ -1,4 +1,8 @@ import { Injectable } from '@angular/core'; +import { + hasValue, + isEmpty, +} from '@dspace/shared/utils'; import { combineLatest, Observable, @@ -6,24 +10,20 @@ import { switchMap, } from 'rxjs'; -import { getDSORoute } from '../../app-routing-paths'; -import { Breadcrumb } from '../../breadcrumbs/breadcrumb/breadcrumb.model'; -import { - hasValue, - isEmpty, -} from '../../shared/empty.util'; -import { SubmissionService } from '../../submission/submission.service'; -import { BreadcrumbsProviderService } from '../breadcrumbs/breadcrumbsProviderService'; -import { DSOBreadcrumbsService } from '../breadcrumbs/dso-breadcrumbs.service'; -import { DSONameService } from '../breadcrumbs/dso-name.service'; -import { CollectionDataService } from '../data/collection-data.service'; -import { RemoteData } from '../data/remote-data'; -import { Collection } from '../shared/collection.model'; +import { SubmissionService } from './submission.service'; +import { Breadcrumb } from '../breadcrumbs'; +import { BreadcrumbsProviderService } from '../breadcrumbs'; +import { DSOBreadcrumbsService } from '../breadcrumbs'; +import { DSONameService } from '../breadcrumbs'; +import { CollectionDataService } from '../data'; +import { RemoteData } from '../data'; +import { getDSpaceObjectRoute } from '../router'; +import { Collection } from '../shared'; import { getFirstCompletedRemoteData, getRemoteDataPayload, -} from '../shared/operators'; -import { SubmissionObject } from './models/submission-object.model'; +} from '../shared'; +import { SubmissionObject } from './models'; /** * Service to calculate the parent {@link DSpaceObject} breadcrumbs for a {@link SubmissionObject} @@ -70,7 +70,7 @@ export class SubmissionParentBreadcrumbsService implements BreadcrumbsProviderSe return observableOf(collection); } }), - switchMap((collection: Collection) => this.dsoBreadcrumbsService.getBreadcrumbs(collection, getDSORoute(collection))), + switchMap((collection: Collection) => this.dsoBreadcrumbsService.getBreadcrumbs(collection, getDSpaceObjectRoute(collection))), ); } diff --git a/src/app/core/submission/submission-response-parsing.service.ts b/modules/core/src/lib/core/submission/submission-response-parsing.service.ts similarity index 87% rename from src/app/core/submission/submission-response-parsing.service.ts rename to modules/core/src/lib/core/submission/submission-response-parsing.service.ts index 1e5ba027f83..8ccb4ddac87 100644 --- a/src/app/core/submission/submission-response-parsing.service.ts +++ b/modules/core/src/lib/core/submission/submission-response-parsing.service.ts @@ -1,23 +1,23 @@ import { Injectable } from '@angular/core'; -import { deepClone } from 'fast-json-patch'; - import { isEmpty, isNotEmpty, isNotNull, -} from '../../shared/empty.util'; -import { FormFieldMetadataValueObject } from '../../shared/form/builder/models/form-field-metadata-value.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { ParsedResponse } from '../cache/response.models'; -import { ConfigObject } from '../config/models/config.model'; -import { BaseResponseParsingService } from '../data/base-response-parsing.service'; -import { DSOResponseParsingService } from '../data/dso-response-parsing.service'; -import { ResponseParsingService } from '../data/parsing.service'; -import { RestRequest } from '../data/rest-request.model'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; -import { SubmissionObject } from './models/submission-object.model'; -import { WorkflowItem } from './models/workflowitem.model'; -import { WorkspaceItem } from './models/workspaceitem.model'; +} from '@dspace/shared/utils'; +import { deepClone } from 'fast-json-patch'; + +import { FormFieldMetadataValueObject } from '../config'; +import { ObjectCacheService } from '../cache'; +import { ParsedResponse } from '../cache'; +import { ConfigObject } from '../config'; +import { BaseResponseParsingService } from '../data'; +import { DSOResponseParsingService } from '../data'; +import { ResponseParsingService } from '../data'; +import { RestRequest } from '../data'; +import { RawRestResponse } from '../dspace-rest'; +import { SubmissionObject } from './models'; +import { WorkflowItem } from './models'; +import { WorkspaceItem } from './models'; /** * Export a function to check if object has same properties of FormFieldMetadataValueObject diff --git a/src/app/core/submission/submission-response.model.ts b/modules/core/src/lib/core/submission/submission-response.model.ts similarity index 55% rename from src/app/core/submission/submission-response.model.ts rename to modules/core/src/lib/core/submission/submission-response.model.ts index 53a4146f706..56a422a41a9 100644 --- a/src/app/core/submission/submission-response.model.ts +++ b/modules/core/src/lib/core/submission/submission-response.model.ts @@ -1,4 +1,4 @@ -import { UnCacheableObject } from '../shared/uncacheable-object.model'; +import { UnCacheableObject } from '../shared'; export class SubmissionResponse implements UnCacheableObject { dataDefinition: any; diff --git a/src/app/core/submission/submission-rest.service.spec.ts b/modules/core/src/lib/core/submission/submission-rest.service.spec.ts similarity index 89% rename from src/app/core/submission/submission-rest.service.spec.ts rename to modules/core/src/lib/core/submission/submission-rest.service.spec.ts index ee6a157b82e..8583e84fe1b 100644 --- a/src/app/core/submission/submission-rest.service.spec.ts +++ b/modules/core/src/lib/core/submission/submission-rest.service.spec.ts @@ -1,11 +1,8 @@ import { getTestScheduler } from 'jasmine-marbles'; import { TestScheduler } from 'rxjs/testing'; -import { FormFieldMetadataValueObject } from '../../shared/form/builder/models/form-field-metadata-value.model'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; +import { FormFieldMetadataValueObject } from '../config/models/form-field-metadata-value.model'; import { SubmissionDeleteRequest, SubmissionPatchRequest, @@ -13,6 +10,9 @@ import { SubmissionRequest, } from '../data/request.models'; import { RequestService } from '../data/request.service'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { SubmissionRestService } from './submission-rest.service'; describe('SubmissionRestService test suite', () => { diff --git a/src/app/core/submission/submission-rest.service.ts b/modules/core/src/lib/core/submission/submission-rest.service.ts similarity index 88% rename from src/app/core/submission/submission-rest.service.ts rename to modules/core/src/lib/core/submission/submission-rest.service.ts index b1f4ad9e1b6..ef451b8f079 100644 --- a/src/app/core/submission/submission-rest.service.ts +++ b/modules/core/src/lib/core/submission/submission-rest.service.ts @@ -1,4 +1,8 @@ import { Injectable } from '@angular/core'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -8,13 +12,9 @@ import { tap, } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { ErrorResponse } from '../cache/response.models'; -import { RemoteData } from '../data/remote-data'; +import { RemoteDataBuildService } from '../cache'; +import { ErrorResponse } from '../cache'; +import { RemoteData } from '../data'; import { DeleteRequest, PostRequest, @@ -22,15 +22,15 @@ import { SubmissionPatchRequest, SubmissionPostRequest, SubmissionRequest, -} from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { RequestError } from '../data/request-error.model'; -import { RestRequest } from '../data/rest-request.model'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { SubmitDataResponseDefinitionObject } from '../shared/submit-data-response-definition.model'; -import { URLCombiner } from '../url-combiner/url-combiner'; +} from '../data'; +import { RequestService } from '../data'; +import { RequestError } from '../data'; +import { RestRequest } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { HALEndpointService } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { SubmitDataResponseDefinitionObject } from '../shared'; +import { URLCombiner } from '../url-combiner'; import { SubmissionResponse } from './submission-response.model'; /** diff --git a/src/app/core/submission/submission-scope-type.ts b/modules/core/src/lib/core/submission/submission-scope-type.ts similarity index 100% rename from src/app/core/submission/submission-scope-type.ts rename to modules/core/src/lib/core/submission/submission-scope-type.ts diff --git a/src/app/submission/submission.service.spec.ts b/modules/core/src/lib/core/submission/submission.service.spec.ts similarity index 94% rename from src/app/submission/submission.service.spec.ts rename to modules/core/src/lib/core/submission/submission.service.spec.ts index b8f982101ce..3caf5fa648d 100644 --- a/src/app/submission/submission.service.spec.ts +++ b/modules/core/src/lib/core/submission/submission.service.spec.ts @@ -27,32 +27,25 @@ import { } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { environment } from '../../environments/environment'; -import { storeModuleConfig } from '../app.reducer'; -import { ErrorResponse } from '../core/cache/response.models'; -import { RequestService } from '../core/data/request.service'; -import { RequestError } from '../core/data/request-error.model'; -import { HttpOptions } from '../core/dspace-rest/dspace-rest.service'; -import { RouteService } from '../core/services/route.service'; -import { Item } from '../core/shared/item.model'; -import { SearchService } from '../core/shared/search/search.service'; -import { SubmissionJsonPatchOperationsService } from '../core/submission/submission-json-patch-operations.service'; -import { SubmissionRestService } from '../core/submission/submission-rest.service'; -import { SubmissionScopeType } from '../core/submission/submission-scope-type'; -import { MockActivatedRoute } from '../shared/mocks/active-router.mock'; -import { getMockRequestService } from '../shared/mocks/request.service.mock'; -import { RouterMock } from '../shared/mocks/router.mock'; -import { getMockSearchService } from '../shared/mocks/search-service.mock'; +import { storeModuleConfig } from '../../../../../../src/app/app.reducer'; +import { MockActivatedRoute } from '../../../../../../src/app/shared/mocks/active-router.mock'; +import { getMockSearchService } from '../../../../../../src/app/shared/mocks/search-service.mock'; import { mockSubmissionDefinition, mockSubmissionRestResponse, -} from '../shared/mocks/submission.mock'; -import { TranslateLoaderMock } from '../shared/mocks/translate-loader.mock'; -import { NotificationsService } from '../shared/notifications/notifications.service'; -import { createFailedRemoteDataObject } from '../shared/remote-data.utils'; -import { SubmissionJsonPatchOperationsServiceStub } from '../shared/testing/submission-json-patch-operations-service.stub'; -import { SubmissionRestServiceStub } from '../shared/testing/submission-rest-service.stub'; -import { SectionScope } from './objects/section-visibility.model'; +} from '../../../../../../src/app/shared/mocks/submission.mock'; +import { ErrorResponse } from '../cache/response.models'; +import { RequestService } from '../data/request.service'; +import { RequestError } from '../data/request-error.model'; +import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { RouterMock } from '../mocks/router.mock'; +import { TranslateLoaderMock } from '../mocks/translate-loader.mock'; +import { NotificationsService } from '../notifications/notifications.service'; +import { RouteService } from '../services/route.service'; +import { Item } from '../shared/item.model'; +import { SearchService } from '../shared/search/search.service'; +import { submissionReducers } from '../states/submission/submission.reducers'; import { CancelSubmissionFormAction, ChangeSubmissionCollectionAction, @@ -64,9 +57,15 @@ import { SaveSubmissionFormAction, SaveSubmissionSectionFormAction, SetActiveSectionAction, -} from './objects/submission-objects.actions'; -import { submissionReducers } from './submission.reducers'; +} from '../states/submission/submission-objects.actions'; +import { createFailedRemoteDataObject } from '../utilities/remote-data.utils'; +import { SubmissionJsonPatchOperationsServiceStub } from '../utilities/testing/submission-json-patch-operations-service.stub'; +import { SubmissionRestServiceStub } from '../utilities/testing/submission-rest-service.stub'; +import { SectionScope } from './models/section-visibility.model'; import { SubmissionService } from './submission.service'; +import { SubmissionJsonPatchOperationsService } from './submission-json-patch-operations.service'; +import { SubmissionRestService } from './submission-rest.service'; +import { SubmissionScopeType } from './submission-scope-type'; describe('SubmissionService test suite', () => { const collectionId = '43fe1f8c-09a6-4fcf-9c78-5d4fed8f2c8f'; @@ -391,6 +390,13 @@ describe('SubmissionService test suite', () => { const selfUrl = 'https://rest.api/dspace-spring-rest/api/submission/workspaceitems/826'; const submissionDefinition: any = mockSubmissionDefinition; const submissionJsonPatchOperationsService = new SubmissionJsonPatchOperationsServiceStub(); + const mockEnvironment = { + submission: { + autosave: { + timer: 1000, + }, + }, + }; let scheduler: TestScheduler; let service: SubmissionService; @@ -1166,11 +1172,11 @@ describe('SubmissionService test suite', () => { let environmentAutoSaveTimerOriginalValue; beforeEach(() => { - environmentAutoSaveTimerOriginalValue = environment.submission.autosave.timer; + environmentAutoSaveTimerOriginalValue = mockEnvironment.submission.autosave.timer; }); it('should start Auto Save', fakeAsync(() => { - const duration = environment.submission.autosave.timer; + const duration = mockEnvironment.submission.autosave.timer; service.startAutoSave('826'); const sub = (service as any).timer$.subscribe(); @@ -1186,7 +1192,7 @@ describe('SubmissionService test suite', () => { })); it('should not start Auto Save if timer is 0', fakeAsync(() => { - environment.submission.autosave.timer = 0; + mockEnvironment.submission.autosave.timer = 0; service.startAutoSave('826'); @@ -1194,7 +1200,7 @@ describe('SubmissionService test suite', () => { })); afterEach(() => { - environment.submission.autosave.timer = environmentAutoSaveTimerOriginalValue; + mockEnvironment.submission.autosave.timer = environmentAutoSaveTimerOriginalValue; }); }); diff --git a/src/app/submission/submission.service.ts b/modules/core/src/lib/core/submission/submission.service.ts similarity index 91% rename from src/app/submission/submission.service.ts rename to modules/core/src/lib/core/submission/submission.service.ts index ba8eff4f382..347096762ff 100644 --- a/src/app/submission/submission.service.ts +++ b/modules/core/src/lib/core/submission/submission.service.ts @@ -1,6 +1,14 @@ import { HttpHeaders } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; import { Router } from '@angular/router'; +import { + hasValue, + isEmpty, + isNotUndefined, +} from '@dspace/shared/utils'; import { createSelector, MemoizedSelector, @@ -26,32 +34,21 @@ import { tap, } from 'rxjs/operators'; -import { environment } from '../../environments/environment'; -import { ErrorResponse } from '../core/cache/response.models'; -import { SubmissionDefinitionsModel } from '../core/config/models/config-submission-definitions.model'; -import { RemoteData } from '../core/data/remote-data'; -import { RequestService } from '../core/data/request.service'; -import { HttpOptions } from '../core/dspace-rest/dspace-rest.service'; -import { RouteService } from '../core/services/route.service'; -import { Item } from '../core/shared/item.model'; -import { SearchService } from '../core/shared/search/search.service'; -import { SubmissionObject } from '../core/submission/models/submission-object.model'; -import { WorkspaceitemSectionsObject } from '../core/submission/models/workspaceitem-sections.model'; -import { SubmissionJsonPatchOperationsService } from '../core/submission/submission-json-patch-operations.service'; -import { SubmissionRestService } from '../core/submission/submission-rest.service'; -import { SubmissionScopeType } from '../core/submission/submission-scope-type'; -import { - hasValue, - isEmpty, - isNotUndefined, -} from '../shared/empty.util'; -import { NotificationsService } from '../shared/notifications/notifications.service'; +import { ErrorResponse } from '../cache/response.models'; +import { APP_CONFIG } from '../config/app-config.interface'; +import { SubmissionDefinitionsModel } from '../config/models/config-submission-definitions.model'; +import { RemoteData } from '../data/remote-data'; +import { RequestService } from '../data/request.service'; +import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { NotificationsService } from '../notifications/notifications.service'; +import { RouteService } from '../services/route.service'; +import { Item } from '../shared/item.model'; +import { SearchService } from '../shared/search/search.service'; +import { submissionObjectFromIdSelector } from '../states/submission/selectors'; import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject, -} from '../shared/remote-data.utils'; -import { SectionScope } from './objects/section-visibility.model'; -import { SubmissionError } from './objects/submission-error.model'; + submissionSelector, + SubmissionState, +} from '../states/submission/submission.reducers'; import { CancelSubmissionFormAction, ChangeSubmissionCollectionAction, @@ -63,19 +60,25 @@ import { SaveSubmissionFormAction, SaveSubmissionSectionFormAction, SetActiveSectionAction, -} from './objects/submission-objects.actions'; +} from '../states/submission/submission-objects.actions'; import { SubmissionObjectEntry, SubmissionSectionEntry, -} from './objects/submission-objects.reducer'; -import { SubmissionSectionObject } from './objects/submission-section-object.model'; -import { SectionDataObject } from './sections/models/section-data.model'; -import { SectionsType } from './sections/sections-type'; -import { submissionObjectFromIdSelector } from './selectors'; +} from '../states/submission/submission-objects.reducer'; +import { SubmissionSectionObject } from '../states/submission/submission-section-object.model'; import { - submissionSelector, - SubmissionState, -} from './submission.reducers'; + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject, +} from '../utilities/remote-data.utils'; +import { SectionScope } from './models/section-visibility.model'; +import { SectionsType } from './models/sections-type'; +import { SubmissionError } from './models/submission-error.model'; +import { SubmissionObject } from './models/submission-object.model'; +import { WorkspaceitemSectionsObject } from './models/workspaceitem-sections.model'; +import { SectionDataObject } from './sections/section-data.model'; +import { SubmissionJsonPatchOperationsService } from './submission-json-patch-operations.service'; +import { SubmissionRestService } from './submission-rest.service'; +import { SubmissionScopeType } from './submission-scope-type'; function getSubmissionSelector(submissionId: string): MemoizedSelector { return createSelector( @@ -96,7 +99,7 @@ function getSubmissionCollectionIdSelector(submissionId: string): MemoizedSelect */ @Injectable() export class SubmissionService { - + private readonly appConfig = inject(APP_CONFIG); /** * Subscription */ @@ -639,12 +642,12 @@ export class SubmissionService { */ startAutoSave(submissionId) { this.stopAutoSave(); - if (environment.submission.autosave.timer === 0) { + if (this.appConfig.submission.autosave.timer === 0) { return; } // AUTOSAVE submission - const duration = environment.submission.autosave.timer; + const duration = this.appConfig.submission.autosave.timer; // Dispatch save action after given duration this.timer$ = observableTimer(duration, duration); this.autoSaveSub = this.timer$ diff --git a/modules/core/src/lib/core/submission/vocabularies/index.ts b/modules/core/src/lib/core/submission/vocabularies/index.ts new file mode 100644 index 00000000000..7b214919f5a --- /dev/null +++ b/modules/core/src/lib/core/submission/vocabularies/index.ts @@ -0,0 +1,6 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './vocabulary-entry-details.data.service'; +export * from './vocabulary.data.service'; +export * from './vocabulary.service'; diff --git a/modules/core/src/lib/core/submission/vocabularies/models/index.ts b/modules/core/src/lib/core/submission/vocabularies/models/index.ts new file mode 100644 index 00000000000..27308f65974 --- /dev/null +++ b/modules/core/src/lib/core/submission/vocabularies/models/index.ts @@ -0,0 +1,8 @@ +// created from 'create-ts-index' + +export * from './vocabularies.resource-type'; +export * from './vocabulary-entry-detail.model'; +export * from './vocabulary-entry.model'; +export * from './vocabulary-find-options.model'; +export * from './vocabulary-options.model'; +export * from './vocabulary.model'; diff --git a/src/app/core/submission/vocabularies/models/vocabularies.resource-type.ts b/modules/core/src/lib/core/submission/vocabularies/models/vocabularies.resource-type.ts similarity index 84% rename from src/app/core/submission/vocabularies/models/vocabularies.resource-type.ts rename to modules/core/src/lib/core/submission/vocabularies/models/vocabularies.resource-type.ts index 5902fe4e173..49205bfd9cd 100644 --- a/src/app/core/submission/vocabularies/models/vocabularies.resource-type.ts +++ b/modules/core/src/lib/core/submission/vocabularies/models/vocabularies.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../../shared/resource-type'; +import { ResourceType } from '../../../shared'; /** * The resource type for vocabulary models diff --git a/src/app/core/submission/vocabularies/models/vocabulary-entry-detail.model.ts b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary-entry-detail.model.ts similarity index 86% rename from src/app/core/submission/vocabularies/models/vocabulary-entry-detail.model.ts rename to modules/core/src/lib/core/submission/vocabularies/models/vocabulary-entry-detail.model.ts index f7dff16a405..20044191170 100644 --- a/src/app/core/submission/vocabularies/models/vocabulary-entry-detail.model.ts +++ b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary-entry-detail.model.ts @@ -4,8 +4,8 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../../cache/builders/build-decorators'; -import { HALLink } from '../../../shared/hal-link.model'; +import { typedObject } from '../../../cache'; +import { HALLink } from '../../../shared'; import { VOCABULARY_ENTRY_DETAIL } from './vocabularies.resource-type'; import { VocabularyEntry } from './vocabulary-entry.model'; diff --git a/src/app/core/submission/vocabularies/models/vocabulary-entry.model.ts b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary-entry.model.ts similarity index 74% rename from src/app/core/submission/vocabularies/models/vocabulary-entry.model.ts rename to modules/core/src/lib/core/submission/vocabularies/models/vocabulary-entry.model.ts index 85b310bad88..5a54e4d5597 100644 --- a/src/app/core/submission/vocabularies/models/vocabulary-entry.model.ts +++ b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary-entry.model.ts @@ -1,16 +1,16 @@ +import { isNotEmpty } from '@dspace/shared/utils'; import { autoserialize, deserialize, } from 'cerialize'; -import { isNotEmpty } from '../../../../shared/empty.util'; -import { PLACEHOLDER_PARENT_METADATA } from '../../../../shared/form/builder/ds-dynamic-form-ui/ds-dynamic-form-constants'; -import { OtherInformation } from '../../../../shared/form/builder/models/form-field-metadata-value.model'; -import { ListableObject } from '../../../../shared/object-collection/shared/listable-object.model'; -import { typedObject } from '../../../cache/builders/build-decorators'; -import { GenericConstructor } from '../../../shared/generic-constructor'; -import { HALLink } from '../../../shared/hal-link.model'; -import { excludeFromEquals } from '../../../utilities/equals.decorators'; +import { PLACEHOLDER_PARENT_METADATA } from '../../../config'; +import { OtherInformation } from '../../../config'; +import { typedObject } from '../../../cache'; +import { ListableObject } from '../../../object-collection'; +import { GenericConstructor } from '../../../shared'; +import { HALLink } from '../../../shared'; +import { excludeFromEquals } from '../../../utilities'; import { VOCABULARY_ENTRY } from './vocabularies.resource-type'; /** diff --git a/src/app/core/submission/vocabularies/models/vocabulary-find-options.model.ts b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary-find-options.model.ts similarity index 76% rename from src/app/core/submission/vocabularies/models/vocabulary-find-options.model.ts rename to modules/core/src/lib/core/submission/vocabularies/models/vocabulary-find-options.model.ts index f9b061f0f74..bac43ebb5cd 100644 --- a/src/app/core/submission/vocabularies/models/vocabulary-find-options.model.ts +++ b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary-find-options.model.ts @@ -1,7 +1,8 @@ -import { isNotEmpty } from '../../../../shared/empty.util'; -import { RequestParam } from '../../../cache/models/request-param.model'; -import { SortOptions } from '../../../cache/models/sort-options.model'; -import { FindListOptions } from '../../../data/find-list-options.model'; +import { isNotEmpty } from '@dspace/shared/utils'; + +import { RequestParam } from '../../../cache'; +import { SortOptions } from '../../../cache'; +import { FindListOptions } from '../../../data'; /** * Representing properties used to build a vocabulary find request diff --git a/src/app/core/submission/vocabularies/models/vocabulary-options.model.ts b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary-options.model.ts similarity index 100% rename from src/app/core/submission/vocabularies/models/vocabulary-options.model.ts rename to modules/core/src/lib/core/submission/vocabularies/models/vocabulary-options.model.ts diff --git a/src/app/core/submission/vocabularies/models/vocabulary.model.ts b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary.model.ts similarity index 79% rename from src/app/core/submission/vocabularies/models/vocabulary.model.ts rename to modules/core/src/lib/core/submission/vocabularies/models/vocabulary.model.ts index 9da5ade3267..92d2356800b 100644 --- a/src/app/core/submission/vocabularies/models/vocabulary.model.ts +++ b/modules/core/src/lib/core/submission/vocabularies/models/vocabulary.model.ts @@ -7,12 +7,12 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../../cache/builders/build-decorators'; -import { CacheableObject } from '../../../cache/cacheable-object.model'; -import { PaginatedList } from '../../../data/paginated-list.model'; -import { RemoteData } from '../../../data/remote-data'; -import { HALLink } from '../../../shared/hal-link.model'; -import { excludeFromEquals } from '../../../utilities/equals.decorators'; +} from '../../../cache'; +import { CacheableObject } from '../../../cache'; +import { PaginatedList } from '../../../data'; +import { RemoteData } from '../../../data'; +import { HALLink } from '../../../shared'; +import { excludeFromEquals } from '../../../utilities'; import { VOCABULARY, VOCABULARY_ENTRY, diff --git a/src/app/core/submission/vocabularies/vocabulary-entries-response-parsing.service.spec.ts b/modules/core/src/lib/core/submission/vocabularies/vocabulary-entries-response-parsing.service.spec.ts similarity index 100% rename from src/app/core/submission/vocabularies/vocabulary-entries-response-parsing.service.spec.ts rename to modules/core/src/lib/core/submission/vocabularies/vocabulary-entries-response-parsing.service.spec.ts diff --git a/src/app/core/submission/vocabularies/vocabulary-entry-details.data.service.spec.ts b/modules/core/src/lib/core/submission/vocabularies/vocabulary-entry-details.data.service.spec.ts similarity index 99% rename from src/app/core/submission/vocabularies/vocabulary-entry-details.data.service.spec.ts rename to modules/core/src/lib/core/submission/vocabularies/vocabulary-entry-details.data.service.spec.ts index 04fa7240ba1..6561430a048 100644 --- a/src/app/core/submission/vocabularies/vocabulary-entry-details.data.service.spec.ts +++ b/modules/core/src/lib/core/submission/vocabularies/vocabulary-entry-details.data.service.spec.ts @@ -5,7 +5,6 @@ * * http://www.dspace.org/license/ */ - import { testFindAllDataImplementation } from '../../data/base/find-all-data.spec'; import { testSearchDataImplementation } from '../../data/base/search-data.spec'; import { VocabularyEntryDetailsDataService } from './vocabulary-entry-details.data.service'; diff --git a/src/app/core/submission/vocabularies/vocabulary-entry-details.data.service.ts b/modules/core/src/lib/core/submission/vocabularies/vocabulary-entry-details.data.service.ts similarity index 82% rename from src/app/core/submission/vocabularies/vocabulary-entry-details.data.service.ts rename to modules/core/src/lib/core/submission/vocabularies/vocabulary-entry-details.data.service.ts index 2b1b796b721..ea25801d6f2 100644 --- a/src/app/core/submission/vocabularies/vocabulary-entry-details.data.service.ts +++ b/modules/core/src/lib/core/submission/vocabularies/vocabulary-entry-details.data.service.ts @@ -8,24 +8,24 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../cache/object-cache.service'; +import { RemoteDataBuildService } from '../../cache'; +import { ObjectCacheService } from '../../cache'; import { FindAllData, FindAllDataImpl, -} from '../../data/base/find-all-data'; -import { IdentifiableDataService } from '../../data/base/identifiable-data.service'; +} from '../../data'; +import { IdentifiableDataService } from '../../data'; import { SearchData, SearchDataImpl, -} from '../../data/base/search-data'; -import { FindListOptions } from '../../data/find-list-options.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { RequestService } from '../../data/request.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { VocabularyEntryDetail } from './models/vocabulary-entry-detail.model'; +} from '../../data'; +import { FindListOptions } from '../../data'; +import { FollowLinkConfig } from '../../data'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { RequestService } from '../../data'; +import { HALEndpointService } from '../../shared'; +import { VocabularyEntryDetail } from './models'; /** * Data service to retrieve vocabulary entry details from the REST server. diff --git a/src/app/core/submission/vocabularies/vocabulary.data.service.spec.ts b/modules/core/src/lib/core/submission/vocabularies/vocabulary.data.service.spec.ts similarity index 95% rename from src/app/core/submission/vocabularies/vocabulary.data.service.spec.ts rename to modules/core/src/lib/core/submission/vocabularies/vocabulary.data.service.spec.ts index 0596b21d577..22137ff6695 100644 --- a/src/app/core/submission/vocabularies/vocabulary.data.service.spec.ts +++ b/modules/core/src/lib/core/submission/vocabularies/vocabulary.data.service.spec.ts @@ -5,11 +5,10 @@ * * http://www.dspace.org/license/ */ -import { createSuccessfulRemoteDataObject$ } from 'src/app/shared/remote-data.utils'; - import { RequestParam } from '../../cache/models/request-param.model'; import { testFindAllDataImplementation } from '../../data/base/find-all-data.spec'; import { FindListOptions } from '../../data/find-list-options.model'; +import { createSuccessfulRemoteDataObject$ } from '../../utilities/remote-data.utils'; import { VocabularyDataService } from './vocabulary.data.service'; describe('VocabularyDataService', () => { diff --git a/src/app/core/submission/vocabularies/vocabulary.data.service.ts b/modules/core/src/lib/core/submission/vocabularies/vocabulary.data.service.ts similarity index 82% rename from src/app/core/submission/vocabularies/vocabulary.data.service.ts rename to modules/core/src/lib/core/submission/vocabularies/vocabulary.data.service.ts index 62691cef8f2..f6a902e4894 100644 --- a/src/app/core/submission/vocabularies/vocabulary.data.service.ts +++ b/modules/core/src/lib/core/submission/vocabularies/vocabulary.data.service.ts @@ -8,22 +8,22 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; -import { RequestParam } from '../../cache/models/request-param.model'; -import { ObjectCacheService } from '../../cache/object-cache.service'; +import { RemoteDataBuildService } from '../../cache'; +import { RequestParam } from '../../cache'; +import { ObjectCacheService } from '../../cache'; import { FindAllData, FindAllDataImpl, -} from '../../data/base/find-all-data'; -import { IdentifiableDataService } from '../../data/base/identifiable-data.service'; -import { SearchDataImpl } from '../../data/base/search-data'; -import { FindListOptions } from '../../data/find-list-options.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { RequestService } from '../../data/request.service'; -import { HALEndpointService } from '../../shared/hal-endpoint.service'; -import { Vocabulary } from './models/vocabulary.model'; +} from '../../data'; +import { IdentifiableDataService } from '../../data'; +import { SearchDataImpl } from '../../data'; +import { FindListOptions } from '../../data'; +import { FollowLinkConfig } from '../../data'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { RequestService } from '../../data'; +import { HALEndpointService } from '../../shared'; +import { Vocabulary } from './models'; /** * Data service to retrieve vocabularies from the REST server. diff --git a/src/app/core/submission/vocabularies/vocabulary.service.spec.ts b/modules/core/src/lib/core/submission/vocabularies/vocabulary.service.spec.ts similarity index 98% rename from src/app/core/submission/vocabularies/vocabulary.service.spec.ts rename to modules/core/src/lib/core/submission/vocabularies/vocabulary.service.spec.ts index 5e3fdeb034b..8e80834e1d7 100644 --- a/src/app/core/submission/vocabularies/vocabulary.service.spec.ts +++ b/modules/core/src/lib/core/submission/vocabularies/vocabulary.service.spec.ts @@ -6,15 +6,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockHrefOnlyDataService } from '../../../shared/mocks/href-only-data.service.mock'; -import { getMockRemoteDataBuildService } from '../../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../../shared/mocks/request.service.mock'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../../shared/remote-data.utils'; -import { ObjectCacheServiceStub } from '../../../shared/testing/object-cache-service.stub'; -import { createPaginatedList } from '../../../shared/testing/utils.test'; import { RemoteDataBuildService } from '../../cache/builders/remote-data-build.service'; import { RequestParam } from '../../cache/models/request-param.model'; import { ObjectCacheService } from '../../cache/object-cache.service'; @@ -23,8 +14,17 @@ import { HrefOnlyDataService } from '../../data/href-only-data.service'; import { buildPaginatedList } from '../../data/paginated-list.model'; import { RequestService } from '../../data/request.service'; import { RequestEntry } from '../../data/request-entry.model'; +import { getMockHrefOnlyDataService } from '../../mocks/href-only-data.service.mock'; +import { getMockRemoteDataBuildService } from '../../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../../mocks/request.service.mock'; import { HALEndpointService } from '../../shared/hal-endpoint.service'; import { PageInfo } from '../../shared/page-info.model'; +import { + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../../utilities/remote-data.utils'; +import { ObjectCacheServiceStub } from '../../utilities/testing/object-cache-service.stub'; +import { createPaginatedList } from '../../utilities/testing/utils.test'; import { VocabularyFindOptions } from './models/vocabulary-find-options.model'; import { VocabularyOptions } from './models/vocabulary-options.model'; import { VocabularyDataService } from './vocabulary.data.service'; diff --git a/src/app/core/submission/vocabularies/vocabulary.service.ts b/modules/core/src/lib/core/submission/vocabularies/vocabulary.service.ts similarity index 95% rename from src/app/core/submission/vocabularies/vocabulary.service.ts rename to modules/core/src/lib/core/submission/vocabularies/vocabulary.service.ts index e2d18975cd7..7bec58d18b9 100644 --- a/src/app/core/submission/vocabularies/vocabulary.service.ts +++ b/modules/core/src/lib/core/submission/vocabularies/vocabulary.service.ts @@ -1,4 +1,5 @@ import { Injectable } from '@angular/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { map, @@ -6,26 +7,25 @@ import { switchMap, } from 'rxjs/operators'; -import { isNotEmpty } from '../../../shared/empty.util'; +import { RequestParam } from '../../cache'; +import { FindListOptions } from '../../data'; import { followLink, FollowLinkConfig, -} from '../../../shared/utils/follow-link-config.model'; -import { RequestParam } from '../../cache/models/request-param.model'; -import { FindListOptions } from '../../data/find-list-options.model'; -import { PaginatedList } from '../../data/paginated-list.model'; -import { RemoteData } from '../../data/remote-data'; -import { RequestService } from '../../data/request.service'; +} from '../../data'; +import { PaginatedList } from '../../data'; +import { RemoteData } from '../../data'; +import { RequestService } from '../../data'; import { getFirstSucceededRemoteDataPayload, getFirstSucceededRemoteListPayload, -} from '../../shared/operators'; -import { PageInfo } from '../../shared/page-info.model'; -import { Vocabulary } from './models/vocabulary.model'; -import { VocabularyEntry } from './models/vocabulary-entry.model'; -import { VocabularyEntryDetail } from './models/vocabulary-entry-detail.model'; -import { VocabularyFindOptions } from './models/vocabulary-find-options.model'; -import { VocabularyOptions } from './models/vocabulary-options.model'; +} from '../../shared'; +import { PageInfo } from '../../shared'; +import { Vocabulary } from './models'; +import { VocabularyEntry } from './models'; +import { VocabularyEntryDetail } from './models'; +import { VocabularyFindOptions } from './models'; +import { VocabularyOptions } from './models'; import { VocabularyDataService } from './vocabulary.data.service'; import { VocabularyEntryDetailsDataService } from './vocabulary-entry-details.data.service'; diff --git a/src/app/core/submission/workflowitem-data.service.spec.ts b/modules/core/src/lib/core/submission/workflowitem-data.service.spec.ts similarity index 95% rename from src/app/core/submission/workflowitem-data.service.spec.ts rename to modules/core/src/lib/core/submission/workflowitem-data.service.spec.ts index a07ac238cdb..ed6950e9ec3 100644 --- a/src/app/core/submission/workflowitem-data.service.spec.ts +++ b/modules/core/src/lib/core/submission/workflowitem-data.service.spec.ts @@ -8,9 +8,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { RestResponse } from '../cache/response.models'; @@ -18,9 +15,12 @@ import { CoreState } from '../core-state.model'; import { HrefOnlyDataService } from '../data/href-only-data.service'; import { RequestService } from '../data/request.service'; import { RequestEntry } from '../data/request-entry.model'; +import { getMockHrefOnlyDataService } from '../mocks/href-only-data.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; import { PageInfo } from '../shared/page-info.model'; +import { createSuccessfulRemoteDataObject } from '../utilities/remote-data.utils'; import { WorkflowItem } from './models/workflowitem.model'; import { WorkflowItemDataService } from './workflowitem-data.service'; diff --git a/src/app/core/submission/workflowitem-data.service.ts b/modules/core/src/lib/core/submission/workflowitem-data.service.ts similarity index 84% rename from src/app/core/submission/workflowitem-data.service.ts rename to modules/core/src/lib/core/submission/workflowitem-data.service.ts index bb0acb57610..60ba0d1a37d 100644 --- a/src/app/core/submission/workflowitem-data.service.ts +++ b/modules/core/src/lib/core/submission/workflowitem-data.service.ts @@ -1,34 +1,34 @@ import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { find, map, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; import { DeleteData, DeleteDataImpl, -} from '../data/base/delete-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +} from '../data'; +import { IdentifiableDataService } from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { DeleteByIDRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { WorkflowItem } from './models/workflowitem.model'; +} from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { DeleteByIDRequest } from '../data'; +import { RequestService } from '../data'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { WorkflowItem } from './models'; /** * A service that provides methods to make REST requests with workflow items endpoint. diff --git a/src/app/core/submission/workspaceitem-data.service.spec.ts b/modules/core/src/lib/core/submission/workspaceitem-data.service.spec.ts similarity index 96% rename from src/app/core/submission/workspaceitem-data.service.spec.ts rename to modules/core/src/lib/core/submission/workspaceitem-data.service.spec.ts index 8837792a786..de75b830d62 100644 --- a/src/app/core/submission/workspaceitem-data.service.spec.ts +++ b/modules/core/src/lib/core/submission/workspaceitem-data.service.spec.ts @@ -16,12 +16,6 @@ import { import { map } from 'rxjs/operators'; import { TestScheduler } from 'rxjs/testing'; -import { getMockHrefOnlyDataService } from '../../shared/mocks/href-only-data.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RequestParam } from '../cache/models/request-param.model'; import { ObjectCacheService } from '../cache/object-cache.service'; @@ -36,9 +30,15 @@ import { PostRequest } from '../data/request.models'; import { RequestService } from '../data/request.service'; import { RequestEntry } from '../data/request-entry.model'; import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { getMockHrefOnlyDataService } from '../mocks/href-only-data.service.mock'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { Item } from '../shared/item.model'; import { PageInfo } from '../shared/page-info.model'; +import { + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, +} from '../utilities/remote-data.utils'; import { WorkspaceItem } from './models/workspaceitem.model'; import { WorkspaceitemDataService } from './workspaceitem-data.service'; diff --git a/src/app/core/submission/workspaceitem-data.service.ts b/modules/core/src/lib/core/submission/workspaceitem-data.service.ts similarity index 83% rename from src/app/core/submission/workspaceitem-data.service.ts rename to modules/core/src/lib/core/submission/workspaceitem-data.service.ts index 17aafaf6514..f6409ee1472 100644 --- a/src/app/core/submission/workspaceitem-data.service.ts +++ b/modules/core/src/lib/core/submission/workspaceitem-data.service.ts @@ -3,6 +3,7 @@ import { HttpHeaders, } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { hasValue } from '@dspace/shared/utils'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; import { @@ -10,32 +11,31 @@ import { map, } from 'rxjs/operators'; -import { hasValue } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; import { CoreState } from '../core-state.model'; import { DeleteData, DeleteDataImpl, -} from '../data/base/delete-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +} from '../data'; +import { IdentifiableDataService } from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { DSOChangeAnalyzer } from '../data/dso-change-analyzer.service'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; -import { PostRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; -import { WorkspaceItem } from './models/workspaceitem.model'; +} from '../data'; +import { DSOChangeAnalyzer } from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; +import { PostRequest } from '../data'; +import { RequestService } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { NotificationsService } from '../notifications'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; +import { WorkspaceItem } from './models'; /** * A service that provides methods to make REST requests with workspaceitems endpoint. diff --git a/modules/core/src/lib/core/subscription/index.ts b/modules/core/src/lib/core/subscription/index.ts new file mode 100644 index 00000000000..fcd39b11e65 --- /dev/null +++ b/modules/core/src/lib/core/subscription/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './subscription.model'; diff --git a/src/app/shared/subscriptions/models/subscription.model.ts b/modules/core/src/lib/core/subscription/subscription.model.ts similarity index 72% rename from src/app/shared/subscriptions/models/subscription.model.ts rename to modules/core/src/lib/core/subscription/subscription.model.ts index 513b239259e..5804bdbb607 100644 --- a/src/app/shared/subscriptions/models/subscription.model.ts +++ b/modules/core/src/lib/core/subscription/subscription.model.ts @@ -8,14 +8,14 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../../core/cache/builders/build-decorators'; -import { RemoteData } from '../../../core/data/remote-data'; -import { EPerson } from '../../../core/eperson/models/eperson.model'; -import { EPERSON } from '../../../core/eperson/models/eperson.resource-type'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { DSPACE_OBJECT } from '../../../core/shared/dspace-object.resource-type'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { SUBSCRIPTION } from './subscription.resource-type'; +} from '../cache/builders/build-decorators'; +import { RemoteData } from '../data/remote-data'; +import { SUBSCRIPTION } from '../data/subscription.resource-type'; +import { EPerson } from '../eperson/models/eperson.model'; +import { EPERSON } from '../eperson/models/eperson.resource-type'; +import { DSpaceObject } from '../shared/dspace-object.model'; +import { DSPACE_OBJECT } from '../shared/dspace-object.resource-type'; +import { HALLink } from '../shared/hal-link.model'; @typedObject @inheritSerialization(DSpaceObject) diff --git a/modules/core/src/lib/core/supervision-order/index.ts b/modules/core/src/lib/core/supervision-order/index.ts new file mode 100644 index 00000000000..9dc34aa62b8 --- /dev/null +++ b/modules/core/src/lib/core/supervision-order/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './supervision-order-data.service'; diff --git a/src/app/core/supervision-order/models/action-type.model.ts b/modules/core/src/lib/core/supervision-order/models/action-type.model.ts similarity index 94% rename from src/app/core/supervision-order/models/action-type.model.ts rename to modules/core/src/lib/core/supervision-order/models/action-type.model.ts index 0e556890698..0917039c05e 100644 --- a/src/app/core/supervision-order/models/action-type.model.ts +++ b/modules/core/src/lib/core/supervision-order/models/action-type.model.ts @@ -1,7 +1,7 @@ /** * Enum representing the Action Type of a Resource Policy */ -export enum ActionType { +export enum SupervisionActionType { /** * Action of reading, viewing or downloading something */ diff --git a/modules/core/src/lib/core/supervision-order/models/index.ts b/modules/core/src/lib/core/supervision-order/models/index.ts new file mode 100644 index 00000000000..f8763a0cc81 --- /dev/null +++ b/modules/core/src/lib/core/supervision-order/models/index.ts @@ -0,0 +1,5 @@ +// created from 'create-ts-index' + +export * from './action-type.model'; +export * from './supervision-order.model'; +export * from './supervision-order.resource-type'; diff --git a/src/app/core/supervision-order/models/supervision-order.model.ts b/modules/core/src/lib/core/supervision-order/models/supervision-order.model.ts similarity index 69% rename from src/app/core/supervision-order/models/supervision-order.model.ts rename to modules/core/src/lib/core/supervision-order/models/supervision-order.model.ts index 6426f62aeca..eeaadcff301 100644 --- a/src/app/core/supervision-order/models/supervision-order.model.ts +++ b/modules/core/src/lib/core/supervision-order/models/supervision-order.model.ts @@ -8,17 +8,17 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { IDToUUIDSerializer } from '../../cache/id-to-uuid-serializer'; -import { RemoteData } from '../../data/remote-data'; -import { Group } from '../../eperson/models/group.model'; -import { GROUP } from '../../eperson/models/group.resource-type'; -import { HALLink } from '../../shared/hal-link.model'; -import { Item } from '../../shared/item.model'; -import { ITEM } from '../../shared/item.resource-type'; -import { ResourceType } from '../../shared/resource-type'; -import { excludeFromEquals } from '../../utilities/equals.decorators'; +} from '../../cache'; +import { CacheableObject } from '../../cache'; +import { IDToUUIDSerializer } from '../../cache'; +import { RemoteData } from '../../data'; +import { Group } from '../../eperson'; +import { GROUP } from '../../eperson'; +import { HALLink } from '../../shared'; +import { Item } from '../../shared'; +import { ITEM } from '../../shared'; +import { ResourceType } from '../../shared'; +import { excludeFromEquals } from '../../utilities'; import { SUPERVISION_ORDER } from './supervision-order.resource-type'; /** diff --git a/src/app/core/supervision-order/models/supervision-order.resource-type.ts b/modules/core/src/lib/core/supervision-order/models/supervision-order.resource-type.ts similarity index 77% rename from src/app/core/supervision-order/models/supervision-order.resource-type.ts rename to modules/core/src/lib/core/supervision-order/models/supervision-order.resource-type.ts index 994c93ab741..c135a3c826c 100644 --- a/src/app/core/supervision-order/models/supervision-order.resource-type.ts +++ b/modules/core/src/lib/core/supervision-order/models/supervision-order.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for SupervisionOrder diff --git a/src/app/core/supervision-order/supervision-order-data.service.spec.ts b/modules/core/src/lib/core/supervision-order/supervision-order-data.service.spec.ts similarity index 96% rename from src/app/core/supervision-order/supervision-order-data.service.spec.ts rename to modules/core/src/lib/core/supervision-order/supervision-order-data.service.spec.ts index 945a3f44e8c..724774c2351 100644 --- a/src/app/core/supervision-order/supervision-order-data.service.spec.ts +++ b/modules/core/src/lib/core/supervision-order/supervision-order-data.service.spec.ts @@ -6,9 +6,6 @@ import { import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject } from '../../shared/remote-data.utils'; -import { ObjectCacheServiceStub } from '../../shared/testing/object-cache-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RequestParam } from '../cache/models/request-param.model'; import { ObjectCacheService } from '../cache/object-cache.service'; @@ -18,9 +15,12 @@ import { buildPaginatedList } from '../data/paginated-list.model'; import { RequestService } from '../data/request.service'; import { RequestEntry } from '../data/request-entry.model'; import { GroupDataService } from '../eperson/group-data.service'; +import { NotificationsService } from '../notifications/notifications.service'; import { HALEndpointService } from '../shared/hal-endpoint.service'; import { PageInfo } from '../shared/page-info.model'; -import { ActionType } from './models/action-type.model'; +import { createSuccessfulRemoteDataObject } from '../utilities/remote-data.utils'; +import { ObjectCacheServiceStub } from '../utilities/testing/object-cache-service.stub'; +import { SupervisionActionType } from './models/action-type.model'; import { SupervisionOrderDataService } from './supervision-order-data.service'; describe('SupervisionOrderService', () => { @@ -37,7 +37,7 @@ describe('SupervisionOrderService', () => { id: '1', name: null, description: null, - action: ActionType.READ, + action: SupervisionActionType.READ, startDate: null, endDate: null, type: 'supervisionOrder', @@ -56,7 +56,7 @@ describe('SupervisionOrderService', () => { id: '2', name: null, description: null, - action: ActionType.WRITE, + action: SupervisionActionType.WRITE, startDate: null, endDate: null, type: 'supervisionOrder', diff --git a/src/app/core/supervision-order/supervision-order-data.service.ts b/modules/core/src/lib/core/supervision-order/supervision-order-data.service.ts similarity index 80% rename from src/app/core/supervision-order/supervision-order-data.service.ts rename to modules/core/src/lib/core/supervision-order/supervision-order-data.service.ts index 72a634604c0..0b75d9b82d3 100644 --- a/src/app/core/supervision-order/supervision-order-data.service.ts +++ b/modules/core/src/lib/core/supervision-order/supervision-order-data.service.ts @@ -1,37 +1,37 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { first, map, } from 'rxjs/operators'; -import { isNotEmpty } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { CreateDataImpl } from '../data/base/create-data'; -import { DeleteDataImpl } from '../data/base/delete-data'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; -import { PatchDataImpl } from '../data/base/patch-data'; -import { SearchDataImpl } from '../data/base/search-data'; -import { DefaultChangeAnalyzer } from '../data/default-change-analyzer.service'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { ResponseParsingService } from '../data/parsing.service'; -import { RemoteData } from '../data/remote-data'; -import { PutRequest } from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { StatusCodeOnlyResponseParsingService } from '../data/status-code-only-response-parsing.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { GroupDataService } from '../eperson/group-data.service'; -import { GenericConstructor } from '../shared/generic-constructor'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { NoContent } from '../shared/NoContent.model'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { SupervisionOrder } from './models/supervision-order.model'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { CreateDataImpl } from '../data'; +import { DeleteDataImpl } from '../data'; +import { IdentifiableDataService } from '../data'; +import { PatchDataImpl } from '../data'; +import { SearchDataImpl } from '../data'; +import { DefaultChangeAnalyzer } from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { ResponseParsingService } from '../data'; +import { RemoteData } from '../data'; +import { PutRequest } from '../data'; +import { RequestService } from '../data'; +import { StatusCodeOnlyResponseParsingService } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { GroupDataService } from '../eperson'; +import { NotificationsService } from '../notifications'; +import { GenericConstructor } from '../shared'; +import { HALEndpointService } from '../shared'; +import { NoContent } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { SupervisionOrder } from './models'; /** * A service responsible for fetching/sending data from/to the REST API on the supervisionorders endpoint @@ -131,7 +131,7 @@ export class SupervisionOrderDataService extends IdentifiableDataService { diff --git a/src/app/core/tasks/claimed-task-data.service.ts b/modules/core/src/lib/core/tasks/claimed-task-data.service.ts similarity index 78% rename from src/app/core/tasks/claimed-task-data.service.ts rename to modules/core/src/lib/core/tasks/claimed-task-data.service.ts index f932f8ca827..84945a0ca2f 100644 --- a/src/app/core/tasks/claimed-task-data.service.ts +++ b/modules/core/src/lib/core/tasks/claimed-task-data.service.ts @@ -2,17 +2,17 @@ import { HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { FindListOptions } from '../data/find-list-options.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstSucceededRemoteData } from '../shared/operators'; -import { ClaimedTask } from './models/claimed-task-object.model'; -import { ProcessTaskResponse } from './models/process-task-response'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { FindListOptions } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { HALEndpointService } from '../shared'; +import { getFirstSucceededRemoteData } from '../shared'; +import { ClaimedTask } from './models'; +import { ProcessTaskResponse } from './models'; import { TasksService } from './tasks.service'; /** diff --git a/modules/core/src/lib/core/tasks/index.ts b/modules/core/src/lib/core/tasks/index.ts new file mode 100644 index 00000000000..76475f8d237 --- /dev/null +++ b/modules/core/src/lib/core/tasks/index.ts @@ -0,0 +1,7 @@ +// created from 'create-ts-index' + +export * from './models'; +export * from './claimed-task-data.service'; +export * from './pool-task-data.service'; +export * from './task-response-parsing.service'; +export * from './tasks.service'; diff --git a/src/app/core/tasks/models/advanced-workflow-info.model.ts b/modules/core/src/lib/core/tasks/models/advanced-workflow-info.model.ts similarity index 100% rename from src/app/core/tasks/models/advanced-workflow-info.model.ts rename to modules/core/src/lib/core/tasks/models/advanced-workflow-info.model.ts diff --git a/src/app/core/tasks/models/advanced-workflow-info.resource-type.ts b/modules/core/src/lib/core/tasks/models/advanced-workflow-info.resource-type.ts similarity index 89% rename from src/app/core/tasks/models/advanced-workflow-info.resource-type.ts rename to modules/core/src/lib/core/tasks/models/advanced-workflow-info.resource-type.ts index 4e7793f875c..aaac99aed5c 100644 --- a/src/app/core/tasks/models/advanced-workflow-info.resource-type.ts +++ b/modules/core/src/lib/core/tasks/models/advanced-workflow-info.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for {@link RatingAdvancedWorkflowInfo} diff --git a/src/app/core/tasks/models/claimed-task-object.model.ts b/modules/core/src/lib/core/tasks/models/claimed-task-object.model.ts similarity index 89% rename from src/app/core/tasks/models/claimed-task-object.model.ts rename to modules/core/src/lib/core/tasks/models/claimed-task-object.model.ts index 456c01cc79c..ed126924eb7 100644 --- a/src/app/core/tasks/models/claimed-task-object.model.ts +++ b/modules/core/src/lib/core/tasks/models/claimed-task-object.model.ts @@ -3,7 +3,7 @@ import { inheritSerialization } from 'cerialize'; import { inheritLinkAnnotations, typedObject, -} from '../../cache/builders/build-decorators'; +} from '../../cache'; import { CLAIMED_TASK } from './claimed-task-object.resource-type'; import { TaskObject } from './task-object.model'; diff --git a/src/app/core/tasks/models/claimed-task-object.resource-type.ts b/modules/core/src/lib/core/tasks/models/claimed-task-object.resource-type.ts similarity index 76% rename from src/app/core/tasks/models/claimed-task-object.resource-type.ts rename to modules/core/src/lib/core/tasks/models/claimed-task-object.resource-type.ts index 9ad48fb2299..aedbcb1afef 100644 --- a/src/app/core/tasks/models/claimed-task-object.resource-type.ts +++ b/modules/core/src/lib/core/tasks/models/claimed-task-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for ClaimedTask diff --git a/modules/core/src/lib/core/tasks/models/index.ts b/modules/core/src/lib/core/tasks/models/index.ts new file mode 100644 index 00000000000..dff2781d516 --- /dev/null +++ b/modules/core/src/lib/core/tasks/models/index.ts @@ -0,0 +1,15 @@ +// created from 'create-ts-index' + +export * from './advanced-workflow-info.model'; +export * from './advanced-workflow-info.resource-type'; +export * from './claimed-task-object.model'; +export * from './claimed-task-object.resource-type'; +export * from './pool-task-object.model'; +export * from './pool-task-object.resource-type'; +export * from './process-task-response'; +export * from './rating-advanced-workflow-info.model'; +export * from './select-reviewer-advanced-workflow-info.model'; +export * from './task-object.model'; +export * from './task-object.resource-type'; +export * from './workflow-action-object.model'; +export * from './workflow-action-object.resource-type'; diff --git a/src/app/core/tasks/models/pool-task-object.model.ts b/modules/core/src/lib/core/tasks/models/pool-task-object.model.ts similarity index 89% rename from src/app/core/tasks/models/pool-task-object.model.ts rename to modules/core/src/lib/core/tasks/models/pool-task-object.model.ts index a3fb26a4c20..4a7e6380004 100644 --- a/src/app/core/tasks/models/pool-task-object.model.ts +++ b/modules/core/src/lib/core/tasks/models/pool-task-object.model.ts @@ -3,7 +3,7 @@ import { inheritSerialization } from 'cerialize'; import { inheritLinkAnnotations, typedObject, -} from '../../cache/builders/build-decorators'; +} from '../../cache'; import { POOL_TASK } from './pool-task-object.resource-type'; import { TaskObject } from './task-object.model'; diff --git a/src/app/core/tasks/models/pool-task-object.resource-type.ts b/modules/core/src/lib/core/tasks/models/pool-task-object.resource-type.ts similarity index 75% rename from src/app/core/tasks/models/pool-task-object.resource-type.ts rename to modules/core/src/lib/core/tasks/models/pool-task-object.resource-type.ts index cab8ec16078..867bc37285c 100644 --- a/src/app/core/tasks/models/pool-task-object.resource-type.ts +++ b/modules/core/src/lib/core/tasks/models/pool-task-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for PoolTask diff --git a/src/app/core/tasks/models/process-task-response.ts b/modules/core/src/lib/core/tasks/models/process-task-response.ts similarity index 100% rename from src/app/core/tasks/models/process-task-response.ts rename to modules/core/src/lib/core/tasks/models/process-task-response.ts diff --git a/src/app/core/tasks/models/rating-advanced-workflow-info.model.ts b/modules/core/src/lib/core/tasks/models/rating-advanced-workflow-info.model.ts similarity index 83% rename from src/app/core/tasks/models/rating-advanced-workflow-info.model.ts rename to modules/core/src/lib/core/tasks/models/rating-advanced-workflow-info.model.ts index 6ecb0e6dbfe..7553b2e3bf0 100644 --- a/src/app/core/tasks/models/rating-advanced-workflow-info.model.ts +++ b/modules/core/src/lib/core/tasks/models/rating-advanced-workflow-info.model.ts @@ -3,8 +3,8 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { ResourceType } from '../../shared/resource-type'; +import { typedObject } from '../../cache'; +import { ResourceType } from '../../shared'; import { AdvancedWorkflowInfo } from './advanced-workflow-info.model'; import { RATING_ADVANCED_WORKFLOW_INFO } from './advanced-workflow-info.resource-type'; diff --git a/src/app/core/tasks/models/select-reviewer-advanced-workflow-info.model.ts b/modules/core/src/lib/core/tasks/models/select-reviewer-advanced-workflow-info.model.ts similarity index 81% rename from src/app/core/tasks/models/select-reviewer-advanced-workflow-info.model.ts rename to modules/core/src/lib/core/tasks/models/select-reviewer-advanced-workflow-info.model.ts index 307caeaa1fe..0c41b3f7605 100644 --- a/src/app/core/tasks/models/select-reviewer-advanced-workflow-info.model.ts +++ b/modules/core/src/lib/core/tasks/models/select-reviewer-advanced-workflow-info.model.ts @@ -3,8 +3,8 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { ResourceType } from '../../shared/resource-type'; +import { typedObject } from '../../cache'; +import { ResourceType } from '../../shared'; import { AdvancedWorkflowInfo } from './advanced-workflow-info.model'; import { SELECT_REVIEWER_ADVANCED_WORKFLOW_INFO } from './advanced-workflow-info.resource-type'; diff --git a/src/app/core/tasks/models/task-object.model.ts b/modules/core/src/lib/core/tasks/models/task-object.model.ts similarity index 74% rename from src/app/core/tasks/models/task-object.model.ts rename to modules/core/src/lib/core/tasks/models/task-object.model.ts index 0e5022d5797..18ba69284ad 100644 --- a/src/app/core/tasks/models/task-object.model.ts +++ b/modules/core/src/lib/core/tasks/models/task-object.model.ts @@ -8,16 +8,16 @@ import { Observable } from 'rxjs'; import { link, typedObject, -} from '../../cache/builders/build-decorators'; -import { CacheableObject } from '../../cache/cacheable-object.model'; -import { RemoteData } from '../../data/remote-data'; -import { EPerson } from '../../eperson/models/eperson.model'; -import { EPERSON } from '../../eperson/models/eperson.resource-type'; -import { Group } from '../../eperson/models/group.model'; -import { GROUP } from '../../eperson/models/group.resource-type'; -import { WORKFLOWITEM } from '../../eperson/models/workflowitem.resource-type'; -import { DSpaceObject } from '../../shared/dspace-object.model'; -import { HALLink } from '../../shared/hal-link.model'; +} from '../../cache'; +import { CacheableObject } from '../../cache'; +import { RemoteData } from '../../data'; +import { EPerson } from '../../eperson'; +import { EPERSON } from '../../eperson'; +import { Group } from '../../eperson'; +import { GROUP } from '../../eperson'; +import { WORKFLOWITEM } from '../../eperson'; +import { DSpaceObject } from '../../shared'; +import { HALLink } from '../../shared'; import { TASK_OBJECT } from './task-object.resource-type'; import { WorkflowAction } from './workflow-action-object.model'; import { WORKFLOW_ACTION } from './workflow-action-object.resource-type'; diff --git a/src/app/core/tasks/models/task-object.resource-type.ts b/modules/core/src/lib/core/tasks/models/task-object.resource-type.ts similarity index 76% rename from src/app/core/tasks/models/task-object.resource-type.ts rename to modules/core/src/lib/core/tasks/models/task-object.resource-type.ts index d25e27ee949..a986d29fa58 100644 --- a/src/app/core/tasks/models/task-object.resource-type.ts +++ b/modules/core/src/lib/core/tasks/models/task-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for TaskObject diff --git a/src/app/core/tasks/models/workflow-action-object.model.ts b/modules/core/src/lib/core/tasks/models/workflow-action-object.model.ts similarity index 87% rename from src/app/core/tasks/models/workflow-action-object.model.ts rename to modules/core/src/lib/core/tasks/models/workflow-action-object.model.ts index a1010008851..a33e967d657 100644 --- a/src/app/core/tasks/models/workflow-action-object.model.ts +++ b/modules/core/src/lib/core/tasks/models/workflow-action-object.model.ts @@ -3,8 +3,8 @@ import { inheritSerialization, } from 'cerialize'; -import { typedObject } from '../../cache/builders/build-decorators'; -import { DSpaceObject } from '../../shared/dspace-object.model'; +import { typedObject } from '../../cache'; +import { DSpaceObject } from '../../shared'; import { AdvancedWorkflowInfo } from './advanced-workflow-info.model'; import { WORKFLOW_ACTION } from './workflow-action-object.resource-type'; diff --git a/src/app/core/tasks/models/workflow-action-object.resource-type.ts b/modules/core/src/lib/core/tasks/models/workflow-action-object.resource-type.ts similarity index 77% rename from src/app/core/tasks/models/workflow-action-object.resource-type.ts rename to modules/core/src/lib/core/tasks/models/workflow-action-object.resource-type.ts index d48ffd18f45..732966c6e8b 100644 --- a/src/app/core/tasks/models/workflow-action-object.resource-type.ts +++ b/modules/core/src/lib/core/tasks/models/workflow-action-object.resource-type.ts @@ -1,4 +1,4 @@ -import { ResourceType } from '../../shared/resource-type'; +import { ResourceType } from '../../shared'; /** * The resource type for WorkflowAction diff --git a/src/app/core/tasks/pool-task-data.service.spec.ts b/modules/core/src/lib/core/tasks/pool-task-data.service.spec.ts similarity index 93% rename from src/app/core/tasks/pool-task-data.service.spec.ts rename to modules/core/src/lib/core/tasks/pool-task-data.service.spec.ts index 266c3c62235..26a3151014e 100644 --- a/src/app/core/tasks/pool-task-data.service.spec.ts +++ b/modules/core/src/lib/core/tasks/pool-task-data.service.spec.ts @@ -3,16 +3,18 @@ import { getTestScheduler } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { RequestParam } from '../cache/models/request-param.model'; import { testSearchDataImplementation } from '../data/base/search-data.spec'; import { FindListOptions } from '../data/find-list-options.model'; import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { getMockRequestService } from '../mocks/request.service.mock'; +import { createSuccessfulRemoteDataObject$ } from '../utilities/remote-data.utils'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { PoolTaskDataService } from './pool-task-data.service'; + + describe('PoolTaskDataService', () => { let scheduler: TestScheduler; let service: PoolTaskDataService; diff --git a/src/app/core/tasks/pool-task-data.service.ts b/modules/core/src/lib/core/tasks/pool-task-data.service.ts similarity index 72% rename from src/app/core/tasks/pool-task-data.service.ts rename to modules/core/src/lib/core/tasks/pool-task-data.service.ts index ff3796cfa6e..a506dfb7970 100644 --- a/src/app/core/tasks/pool-task-data.service.ts +++ b/modules/core/src/lib/core/tasks/pool-task-data.service.ts @@ -1,15 +1,15 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { RequestParam } from '../cache/models/request-param.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { FindListOptions } from '../data/find-list-options.model'; -import { RemoteData } from '../data/remote-data'; -import { RequestService } from '../data/request.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; -import { getFirstCompletedRemoteData } from '../shared/operators'; -import { PoolTask } from './models/pool-task-object.model'; +import { RemoteDataBuildService } from '../cache'; +import { RequestParam } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { FindListOptions } from '../data'; +import { RemoteData } from '../data'; +import { RequestService } from '../data'; +import { HALEndpointService } from '../shared'; +import { getFirstCompletedRemoteData } from '../shared'; +import { PoolTask } from './models'; import { TasksService } from './tasks.service'; /** diff --git a/src/app/core/tasks/task-response-parsing.service.ts b/modules/core/src/lib/core/tasks/task-response-parsing.service.ts similarity index 68% rename from src/app/core/tasks/task-response-parsing.service.ts rename to modules/core/src/lib/core/tasks/task-response-parsing.service.ts index a8213e0a90f..0ef36e74c04 100644 --- a/src/app/core/tasks/task-response-parsing.service.ts +++ b/modules/core/src/lib/core/tasks/task-response-parsing.service.ts @@ -1,11 +1,11 @@ import { Injectable } from '@angular/core'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { ParsedResponse } from '../cache/response.models'; -import { BaseResponseParsingService } from '../data/base-response-parsing.service'; -import { ResponseParsingService } from '../data/parsing.service'; -import { RestRequest } from '../data/rest-request.model'; -import { RawRestResponse } from '../dspace-rest/raw-rest-response.model'; +import { ObjectCacheService } from '../cache'; +import { ParsedResponse } from '../cache'; +import { BaseResponseParsingService } from '../data'; +import { ResponseParsingService } from '../data'; +import { RestRequest } from '../data'; +import { RawRestResponse } from '../dspace-rest'; /** * Provides methods to parse response for a task request. diff --git a/src/app/core/tasks/tasks.service.spec.ts b/modules/core/src/lib/core/tasks/tasks.service.spec.ts similarity index 95% rename from src/app/core/tasks/tasks.service.spec.ts rename to modules/core/src/lib/core/tasks/tasks.service.spec.ts index 8c1d33d953c..77043e2002c 100644 --- a/src/app/core/tasks/tasks.service.spec.ts +++ b/modules/core/src/lib/core/tasks/tasks.service.spec.ts @@ -9,9 +9,6 @@ import { getTestScheduler } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { getMockRemoteDataBuildService } from '../../shared/mocks/remote-data-build.service.mock'; -import { getMockRequestService } from '../../shared/mocks/request.service.mock'; -import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; import { ObjectCacheService } from '../cache/object-cache.service'; import { CoreState } from '../core-state.model'; @@ -24,7 +21,10 @@ import { } from '../data/request.models'; import { RequestService } from '../data/request.service'; import { HttpOptions } from '../dspace-rest/dspace-rest.service'; +import { getMockRemoteDataBuildService } from '../mocks/remote-data-build.service.mock'; +import { getMockRequestService } from '../mocks/request.service.mock'; import { HALEndpointService } from '../shared/hal-endpoint.service'; +import { HALEndpointServiceStub } from '../utilities/testing/hal-endpoint-service.stub'; import { TaskObject } from './models/task-object.model'; import { TasksService } from './tasks.service'; diff --git a/src/app/core/tasks/tasks.service.ts b/modules/core/src/lib/core/tasks/tasks.service.ts similarity index 87% rename from src/app/core/tasks/tasks.service.ts rename to modules/core/src/lib/core/tasks/tasks.service.ts index 2920fe4ac8d..ac231026ffa 100644 --- a/src/app/core/tasks/tasks.service.ts +++ b/modules/core/src/lib/core/tasks/tasks.service.ts @@ -1,4 +1,8 @@ import { HttpHeaders } from '@angular/common/http'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { distinctUntilChanged, @@ -9,36 +13,32 @@ import { tap, } from 'rxjs/operators'; -import { - hasValue, - isNotEmpty, -} from '../../shared/empty.util'; -import { FollowLinkConfig } from '../../shared/utils/follow-link-config.model'; -import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service'; -import { CacheableObject } from '../cache/cacheable-object.model'; -import { ObjectCacheService } from '../cache/object-cache.service'; -import { IdentifiableDataService } from '../data/base/identifiable-data.service'; +import { RemoteDataBuildService } from '../cache'; +import { CacheableObject } from '../cache'; +import { ObjectCacheService } from '../cache'; +import { IdentifiableDataService } from '../data'; import { SearchData, SearchDataImpl, -} from '../data/base/search-data'; -import { FindListOptions } from '../data/find-list-options.model'; -import { PaginatedList } from '../data/paginated-list.model'; -import { RemoteData } from '../data/remote-data'; +} from '../data'; +import { FindListOptions } from '../data'; +import { FollowLinkConfig } from '../data'; +import { PaginatedList } from '../data'; +import { RemoteData } from '../data'; import { DeleteRequest, PostRequest, TaskDeleteRequest, TaskPostRequest, -} from '../data/request.models'; -import { RequestService } from '../data/request.service'; -import { HttpOptions } from '../dspace-rest/dspace-rest.service'; -import { HALEndpointService } from '../shared/hal-endpoint.service'; +} from '../data'; +import { RequestService } from '../data'; +import { HttpOptions } from '../dspace-rest'; +import { HALEndpointService } from '../shared'; import { getAllCompletedRemoteData, getFirstCompletedRemoteData, -} from '../shared/operators'; -import { ProcessTaskResponse } from './models/process-task-response'; +} from '../shared'; +import { ProcessTaskResponse } from './models'; /** * An abstract class that provides methods to handle task requests. todo: data in name diff --git a/src/express.tokens.ts b/modules/core/src/lib/core/tokens/express.tokens.ts similarity index 100% rename from src/express.tokens.ts rename to modules/core/src/lib/core/tokens/express.tokens.ts diff --git a/modules/core/src/lib/core/tokens/index.ts b/modules/core/src/lib/core/tokens/index.ts new file mode 100644 index 00000000000..1612bd40ac3 --- /dev/null +++ b/modules/core/src/lib/core/tokens/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './express.tokens'; diff --git a/modules/core/src/lib/core/url-baser/index.ts b/modules/core/src/lib/core/url-baser/index.ts new file mode 100644 index 00000000000..3af04748e28 --- /dev/null +++ b/modules/core/src/lib/core/url-baser/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './url-baser'; diff --git a/src/app/core/url-baser/url-baser.ts b/modules/core/src/lib/core/url-baser/url-baser.ts similarity index 93% rename from src/app/core/url-baser/url-baser.ts rename to modules/core/src/lib/core/url-baser/url-baser.ts index 290f91fe830..82107d544ad 100644 --- a/src/app/core/url-baser/url-baser.ts +++ b/modules/core/src/lib/core/url-baser/url-baser.ts @@ -1,4 +1,4 @@ -import { isEmpty } from '../../shared/empty.util'; +import { isEmpty } from '@dspace/shared/utils'; /** * Extracts the base URL diff --git a/modules/core/src/lib/core/url-combiner/index.ts b/modules/core/src/lib/core/url-combiner/index.ts new file mode 100644 index 00000000000..466424d3418 --- /dev/null +++ b/modules/core/src/lib/core/url-combiner/index.ts @@ -0,0 +1,4 @@ +// created from 'create-ts-index' + +export * from './rest-url-combiner'; +export * from './url-combiner'; diff --git a/src/app/core/url-combiner/rest-url-combiner.ts b/modules/core/src/lib/core/url-combiner/rest-url-combiner.ts similarity index 65% rename from src/app/core/url-combiner/rest-url-combiner.ts rename to modules/core/src/lib/core/url-combiner/rest-url-combiner.ts index e3667dbe294..cb64537d711 100644 --- a/src/app/core/url-combiner/rest-url-combiner.ts +++ b/modules/core/src/lib/core/url-combiner/rest-url-combiner.ts @@ -1,4 +1,3 @@ -import { environment } from '../../../environments/environment'; import { URLCombiner } from './url-combiner'; /** @@ -8,7 +7,7 @@ import { URLCombiner } from './url-combiner'; * TODO write tests once GlobalConfig becomes injectable */ export class RESTURLCombiner extends URLCombiner { - constructor(...parts: string[]) { - super(environment.rest.baseUrl, '/api', ...parts); + constructor(baseUrl: string, ...parts: string[]) { + super(baseUrl, '/api', ...parts); } } diff --git a/src/app/core/url-combiner/url-combiner.spec.ts b/modules/core/src/lib/core/url-combiner/url-combiner.spec.ts similarity index 100% rename from src/app/core/url-combiner/url-combiner.spec.ts rename to modules/core/src/lib/core/url-combiner/url-combiner.spec.ts diff --git a/src/app/core/url-combiner/url-combiner.ts b/modules/core/src/lib/core/url-combiner/url-combiner.ts similarity index 95% rename from src/app/core/url-combiner/url-combiner.ts rename to modules/core/src/lib/core/url-combiner/url-combiner.ts index e7468c61073..b0ab2cc788f 100644 --- a/src/app/core/url-combiner/url-combiner.ts +++ b/modules/core/src/lib/core/url-combiner/url-combiner.ts @@ -1,4 +1,4 @@ -import { isEmpty } from '../../shared/empty.util'; +import { isEmpty } from '@dspace/shared/utils'; /** * Combines a variable number of strings representing parts diff --git a/src/app/core/utilities/enter-zone.scheduler.ts b/modules/core/src/lib/core/utilities/enter-zone.scheduler.ts similarity index 100% rename from src/app/core/utilities/enter-zone.scheduler.ts rename to modules/core/src/lib/core/utilities/enter-zone.scheduler.ts diff --git a/src/app/core/utilities/equals.decorators.ts b/modules/core/src/lib/core/utilities/equals.decorators.ts similarity index 97% rename from src/app/core/utilities/equals.decorators.ts rename to modules/core/src/lib/core/utilities/equals.decorators.ts index 78bfd01740c..e4c3feadf02 100644 --- a/src/app/core/utilities/equals.decorators.ts +++ b/modules/core/src/lib/core/utilities/equals.decorators.ts @@ -2,8 +2,9 @@ import { hasNoValue, hasValue, isEmpty, -} from '../../shared/empty.util'; -import { GenericConstructor } from '../shared/generic-constructor'; +} from '@dspace/shared/utils'; + +import { GenericConstructor } from '../shared'; const excludedFromEquals = new Map(); const fieldsForEqualsMap = new Map(); diff --git a/src/app/core/utilities/equatable.spec.ts b/modules/core/src/lib/core/utilities/equatable.spec.ts similarity index 100% rename from src/app/core/utilities/equatable.spec.ts rename to modules/core/src/lib/core/utilities/equatable.spec.ts diff --git a/modules/core/src/lib/core/utilities/index.ts b/modules/core/src/lib/core/utilities/index.ts new file mode 100644 index 00000000000..954cf6fbe66 --- /dev/null +++ b/modules/core/src/lib/core/utilities/index.ts @@ -0,0 +1,9 @@ +// created from 'create-ts-index' + +export * from './enter-zone.scheduler'; +export * from './equals.decorators'; +export * from './leave-zone.scheduler'; +export * from './relation-query.utils'; +export * from './remote-data.utils'; +export * from './route.utils'; +export * from './search.utils'; diff --git a/src/app/core/utilities/leave-zone.scheduler.ts b/modules/core/src/lib/core/utilities/leave-zone.scheduler.ts similarity index 100% rename from src/app/core/utilities/leave-zone.scheduler.ts rename to modules/core/src/lib/core/utilities/leave-zone.scheduler.ts diff --git a/src/app/shared/utils/relation-query.utils.spec.ts b/modules/core/src/lib/core/utilities/relation-query.utils.spec.ts similarity index 100% rename from src/app/shared/utils/relation-query.utils.spec.ts rename to modules/core/src/lib/core/utilities/relation-query.utils.spec.ts diff --git a/src/app/shared/utils/relation-query.utils.ts b/modules/core/src/lib/core/utilities/relation-query.utils.ts similarity index 89% rename from src/app/shared/utils/relation-query.utils.ts rename to modules/core/src/lib/core/utilities/relation-query.utils.ts index 158744e78c3..7900cde670a 100644 --- a/src/app/shared/utils/relation-query.utils.ts +++ b/modules/core/src/lib/core/utilities/relation-query.utils.ts @@ -1,9 +1,9 @@ -import { Item } from '../../core/shared/item.model'; -import { Relationship } from '../../core/shared/item-relationships/relationship.model'; import { followLink, FollowLinkConfig, -} from './follow-link-config.model'; +} from '../data'; +import { Item } from '../shared'; +import { Relationship } from '../shared'; /** * Get the query for looking up items by relation type diff --git a/src/app/shared/remote-data.utils.ts b/modules/core/src/lib/core/utilities/remote-data.utils.ts similarity index 93% rename from src/app/shared/remote-data.utils.ts rename to modules/core/src/lib/core/utilities/remote-data.utils.ts index 044e50b360e..4a1aece3baa 100644 --- a/src/app/shared/remote-data.utils.ts +++ b/modules/core/src/lib/core/utilities/remote-data.utils.ts @@ -4,9 +4,8 @@ import { of as observableOf, } from 'rxjs'; -import { environment } from '../../environments/environment'; -import { RemoteData } from '../core/data/remote-data'; -import { RequestEntryState } from '../core/data/request-entry-state.model'; +import { RemoteData } from '../data'; +import { RequestEntryState } from '../data'; /** * A fixed timestamp to use in tests @@ -21,7 +20,7 @@ const FIXED_TIMESTAMP = new Date().getTime(); export function createSuccessfulRemoteDataObject(object: T, timeCompleted = FIXED_TIMESTAMP): RemoteData { return new RemoteData( timeCompleted, - environment.cache.msToLive.default, + 15 * 60 * 1000, timeCompleted, RequestEntryState.Success, undefined, @@ -49,7 +48,7 @@ export function createSuccessfulRemoteDataObject$(object: T, timeCompleted?: export function createFailedRemoteDataObject(errorMessage?: string, statusCode?: number, timeCompleted = 1577836800000): RemoteData { return new RemoteData( timeCompleted, - environment.cache.msToLive.default, + 15 * 60 * 1000, timeCompleted, RequestEntryState.Error, errorMessage, @@ -76,7 +75,7 @@ export function createFailedRemoteDataObject$(errorMessage?: string, statusCo export function createPendingRemoteDataObject(lastVerified = FIXED_TIMESTAMP): RemoteData { return new RemoteData( undefined, - environment.cache.msToLive.default, + 15 * 60 * 1000, lastVerified, RequestEntryState.ResponsePending, undefined, diff --git a/src/app/shared/utils/route.utils.ts b/modules/core/src/lib/core/utilities/route.utils.ts similarity index 86% rename from src/app/shared/utils/route.utils.ts rename to modules/core/src/lib/core/utilities/route.utils.ts index 9f45b7ec239..86a32a2e3d5 100644 --- a/src/app/shared/utils/route.utils.ts +++ b/modules/core/src/lib/core/utilities/route.utils.ts @@ -2,9 +2,11 @@ import { ActivatedRouteSnapshot, Router, } from '@angular/router'; +import { hasValue } from '@dspace/shared/utils'; + +import { URLCombiner } from '../url-combiner/url-combiner'; + -import { URLCombiner } from '../../core/url-combiner/url-combiner'; -import { hasValue } from '../empty.util'; /** * Util function to retrieve the current path (without query parameters) the user is on diff --git a/src/app/shared/search/search.utils.spec.ts b/modules/core/src/lib/core/utilities/search.utils.spec.ts similarity index 97% rename from src/app/shared/search/search.utils.spec.ts rename to modules/core/src/lib/core/utilities/search.utils.spec.ts index 1689fa4cbbe..49f7958a21b 100644 --- a/src/app/shared/search/search.utils.spec.ts +++ b/modules/core/src/lib/core/utilities/search.utils.spec.ts @@ -1,5 +1,5 @@ -import { FacetValue } from './models/facet-value.model'; -import { SearchFilterConfig } from './models/search-filter-config.model'; +import { FacetValue } from '../shared/search/models/facet-value.model'; +import { SearchFilterConfig } from '../shared/search/models/search-filter-config.model'; import { addOperatorToFilterValue, escapeRegExp, diff --git a/src/app/shared/search/search.utils.ts b/modules/core/src/lib/core/utilities/search.utils.ts similarity index 89% rename from src/app/shared/search/search.utils.ts rename to modules/core/src/lib/core/utilities/search.utils.ts index f2be597d751..841d9703c24 100644 --- a/src/app/shared/search/search.utils.ts +++ b/modules/core/src/lib/core/utilities/search.utils.ts @@ -1,6 +1,7 @@ -import { isNotEmpty } from '../empty.util'; -import { FacetValue } from './models/facet-value.model'; -import { SearchFilterConfig } from './models/search-filter-config.model'; +import { isNotEmpty } from '@dspace/shared/utils'; + +import { FacetValue } from '../shared/search/models/facet-value.model'; +import { SearchFilterConfig } from '../shared/search/models/search-filter-config.model'; /** * Get a facet's value by matching its parameter in the search href, this will include the operator of the facet value diff --git a/src/app/shared/testing/action.mock.ts b/modules/core/src/lib/core/utilities/testing/action.mock.ts similarity index 100% rename from src/app/shared/testing/action.mock.ts rename to modules/core/src/lib/core/utilities/testing/action.mock.ts diff --git a/src/app/shared/testing/active-router.stub.ts b/modules/core/src/lib/core/utilities/testing/active-router.stub.ts similarity index 100% rename from src/app/shared/testing/active-router.stub.ts rename to modules/core/src/lib/core/utilities/testing/active-router.stub.ts diff --git a/src/app/shared/testing/auth-request-service.stub.ts b/modules/core/src/lib/core/utilities/testing/auth-request-service.stub.ts similarity index 90% rename from src/app/shared/testing/auth-request-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/auth-request-service.stub.ts index aeebc08df4c..fff1e938bd5 100644 --- a/src/app/shared/testing/auth-request-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/auth-request-service.stub.ts @@ -1,13 +1,13 @@ +import { isNotEmpty } from '@dspace/shared/utils'; import { Observable, of as observableOf, } from 'rxjs'; -import { AuthStatus } from '../../core/auth/models/auth-status.model'; -import { AuthTokenInfo } from '../../core/auth/models/auth-token-info.model'; -import { HttpOptions } from '../../core/dspace-rest/dspace-rest.service'; -import { EPerson } from '../../core/eperson/models/eperson.model'; -import { isNotEmpty } from '../empty.util'; +import { AuthStatus } from '../../auth/models/auth-status.model'; +import { AuthTokenInfo } from '../../auth/models/auth-token-info.model'; +import { HttpOptions } from '../../dspace-rest/dspace-rest.service'; +import { EPerson } from '../../eperson/models/eperson.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; import { EPersonMock } from './eperson.mock'; diff --git a/src/app/shared/testing/auth-service.stub.ts b/modules/core/src/lib/core/utilities/testing/auth-service.stub.ts similarity index 90% rename from src/app/shared/testing/auth-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/auth-service.stub.ts index 5a40e05d1db..4cf0df40dd6 100644 --- a/src/app/shared/testing/auth-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/auth-service.stub.ts @@ -1,14 +1,14 @@ +import { hasValue } from '@dspace/shared/utils'; import { Observable, of as observableOf, } from 'rxjs'; -import { AuthMethod } from '../../core/auth/models/auth.method'; -import { AuthMethodType } from '../../core/auth/models/auth.method-type'; -import { AuthStatus } from '../../core/auth/models/auth-status.model'; -import { AuthTokenInfo } from '../../core/auth/models/auth-token-info.model'; -import { EPerson } from '../../core/eperson/models/eperson.model'; -import { hasValue } from '../empty.util'; +import { AuthMethod } from '../../auth/models/auth.method'; +import { AuthMethodType } from '../../auth/models/auth.method-type'; +import { AuthStatus } from '../../auth/models/auth-status.model'; +import { AuthTokenInfo } from '../../auth/models/auth-token-info.model'; +import { EPerson } from '../../eperson/models/eperson.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; import { EPersonMock } from './eperson.mock'; diff --git a/src/app/shared/testing/authorization-service.stub.ts b/modules/core/src/lib/core/utilities/testing/authorization-service.stub.ts similarity index 76% rename from src/app/shared/testing/authorization-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/authorization-service.stub.ts index 8e7c0e586fe..4e676e3728d 100644 --- a/src/app/shared/testing/authorization-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/authorization-service.stub.ts @@ -3,7 +3,7 @@ import { of as observableOf, } from 'rxjs'; -import { FeatureID } from '../../core/data/feature-authorization/feature-id'; +import { FeatureID } from '../../data'; export class AuthorizationDataServiceStub { isAuthorized(featureId?: FeatureID, objectUrl?: string, ePersonUuid?: string): Observable { diff --git a/src/app/shared/testing/base-data-service.stub.ts b/modules/core/src/lib/core/utilities/testing/base-data-service.stub.ts similarity index 75% rename from src/app/shared/testing/base-data-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/base-data-service.stub.ts index 65b761ba712..e619394e077 100644 --- a/src/app/shared/testing/base-data-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/base-data-service.stub.ts @@ -3,10 +3,11 @@ import { of as observableOf, } from 'rxjs'; -import { CacheableObject } from '../../core/cache/cacheable-object.model'; -import { RemoteData } from '../../core/data/remote-data'; +import { CacheableObject } from '../../cache/cacheable-object.model'; +import { FollowLinkConfig } from '../../data/follow-link-config.model'; +import { RemoteData } from '../../data/remote-data'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; -import { FollowLinkConfig } from '../utils/follow-link-config.model'; + /** * Stub class for {@link BaseDataService} diff --git a/src/app/shared/testing/bitstream-data-service.stub.ts b/modules/core/src/lib/core/utilities/testing/bitstream-data-service.stub.ts similarity index 50% rename from src/app/shared/testing/bitstream-data-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/bitstream-data-service.stub.ts index 932d20b3230..7f625ed478b 100644 --- a/src/app/shared/testing/bitstream-data-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/bitstream-data-service.stub.ts @@ -3,10 +3,10 @@ import { of as observableOf, } from 'rxjs'; -import { RemoteData } from '../../core/data/remote-data'; -import { RequestEntryState } from '../../core/data/request-entry-state.model'; -import { Bitstream } from '../../core/shared/bitstream.model'; -import { NoContent } from '../../core/shared/NoContent.model'; +import { RemoteData } from '../../data'; +import { RequestEntryState } from '../../data'; +import { Bitstream } from '../../shared'; +import { NoContent } from '../../shared'; export class BitstreamDataServiceStub { diff --git a/src/app/shared/testing/browse-definition-data-service.stub.ts b/modules/core/src/lib/core/utilities/testing/browse-definition-data-service.stub.ts similarity index 79% rename from src/app/shared/testing/browse-definition-data-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/browse-definition-data-service.stub.ts index 3bad04b668e..916215efd12 100644 --- a/src/app/shared/testing/browse-definition-data-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/browse-definition-data-service.stub.ts @@ -4,16 +4,16 @@ import { of as observableOf, } from 'rxjs'; -import { BrowseService } from '../../core/browse/browse.service'; +import { BrowseService } from '../../browse/browse.service'; import { buildPaginatedList, PaginatedList, -} from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { BrowseDefinition } from '../../core/shared/browse-definition.model'; -import { FlatBrowseDefinition } from '../../core/shared/flat-browse-definition.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { ValueListBrowseDefinition } from '../../core/shared/value-list-browse-definition.model'; +} from '../../data/paginated-list.model'; +import { RemoteData } from '../../data/remote-data'; +import { BrowseDefinition } from '../../shared/browse-definition.model'; +import { FlatBrowseDefinition } from '../../shared/flat-browse-definition.model'; +import { PageInfo } from '../../shared/page-info.model'; +import { ValueListBrowseDefinition } from '../../shared/value-list-browse-definition.model'; import { createSuccessfulRemoteDataObject } from '../remote-data.utils'; // This data is in post-serialized form (metadata -> metadataKeys) diff --git a/src/app/shared/testing/browse-service.stub.ts b/modules/core/src/lib/core/utilities/testing/browse-service.stub.ts similarity index 77% rename from src/app/shared/testing/browse-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/browse-service.stub.ts index 85ca717cb03..59e75b01132 100644 --- a/src/app/shared/testing/browse-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/browse-service.stub.ts @@ -6,13 +6,13 @@ import { import { buildPaginatedList, PaginatedList, -} from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { BrowseDefinition } from '../../core/shared/browse-definition.model'; -import { FlatBrowseDefinition } from '../../core/shared/flat-browse-definition.model'; -import { HierarchicalBrowseDefinition } from '../../core/shared/hierarchical-browse-definition.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { ValueListBrowseDefinition } from '../../core/shared/value-list-browse-definition.model'; +} from '../../data/paginated-list.model'; +import { RemoteData } from '../../data/remote-data'; +import { BrowseDefinition } from '../../shared/browse-definition.model'; +import { FlatBrowseDefinition } from '../../shared/flat-browse-definition.model'; +import { HierarchicalBrowseDefinition } from '../../shared/hierarchical-browse-definition.model'; +import { PageInfo } from '../../shared/page-info.model'; +import { ValueListBrowseDefinition } from '../../shared/value-list-browse-definition.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; const mockData = [ diff --git a/src/app/shared/testing/browser-only-mock.pipe.ts b/modules/core/src/lib/core/utilities/testing/browser-only-mock.pipe.ts similarity index 100% rename from src/app/shared/testing/browser-only-mock.pipe.ts rename to modules/core/src/lib/core/utilities/testing/browser-only-mock.pipe.ts diff --git a/src/app/shared/testing/claimed-task-data-service.stub.ts b/modules/core/src/lib/core/utilities/testing/claimed-task-data-service.stub.ts similarity index 57% rename from src/app/shared/testing/claimed-task-data-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/claimed-task-data-service.stub.ts index 610098a3378..097ab943cd8 100644 --- a/src/app/shared/testing/claimed-task-data-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/claimed-task-data-service.stub.ts @@ -3,9 +3,9 @@ import { Observable, } from 'rxjs'; -import { RemoteData } from '../../core/data/remote-data'; -import { ClaimedTask } from '../../core/tasks/models/claimed-task-object.model'; -import { ProcessTaskResponse } from '../../core/tasks/models/process-task-response'; +import { RemoteData } from '../../data'; +import { ClaimedTask } from '../../tasks'; +import { ProcessTaskResponse } from '../../tasks'; export class ClaimedTaskDataServiceStub { diff --git a/src/app/shared/testing/configuration-data.service.stub.ts b/modules/core/src/lib/core/utilities/testing/configuration-data.service.stub.ts similarity index 74% rename from src/app/shared/testing/configuration-data.service.stub.ts rename to modules/core/src/lib/core/utilities/testing/configuration-data.service.stub.ts index 66324218f5f..107babafb2f 100644 --- a/src/app/shared/testing/configuration-data.service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/configuration-data.service.stub.ts @@ -1,7 +1,7 @@ import { Observable } from 'rxjs'; -import { RemoteData } from '../../core/data/remote-data'; -import { ConfigurationProperty } from '../../core/shared/configuration-property.model'; +import { RemoteData } from '../../data/remote-data'; +import { ConfigurationProperty } from '../../shared/configuration-property.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; export class ConfigurationDataServiceStub { diff --git a/src/app/shared/testing/css-variable-service.stub.ts b/modules/core/src/lib/core/utilities/testing/css-variable-service.stub.ts similarity index 90% rename from src/app/shared/testing/css-variable-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/css-variable-service.stub.ts index b1f1ba6ee22..c9655c3449a 100644 --- a/src/app/shared/testing/css-variable-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/css-variable-service.stub.ts @@ -3,7 +3,8 @@ import { of as observableOf, } from 'rxjs'; -import { KeyValuePair } from '../key-value-pair.model'; +import { KeyValuePair } from '../../config/models/key-value-pair.model'; + const variables = { '--bs-sm-min': '576px,', diff --git a/src/app/shared/testing/dynamic-form-mock-services.ts b/modules/core/src/lib/core/utilities/testing/dynamic-form-mock-services.ts similarity index 100% rename from src/app/shared/testing/dynamic-form-mock-services.ts rename to modules/core/src/lib/core/utilities/testing/dynamic-form-mock-services.ts diff --git a/src/app/shared/testing/edit-item-relationships.service.stub.ts b/modules/core/src/lib/core/utilities/testing/edit-item-relationships.service.stub.ts similarity index 76% rename from src/app/shared/testing/edit-item-relationships.service.stub.ts rename to modules/core/src/lib/core/utilities/testing/edit-item-relationships.service.stub.ts index 1d295697936..82acb635bff 100644 --- a/src/app/shared/testing/edit-item-relationships.service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/edit-item-relationships.service.stub.ts @@ -7,11 +7,11 @@ import { import { DeleteRelationship, RelationshipIdentifiable, -} from '../../core/data/object-updates/object-updates.reducer'; -import { RemoteData } from '../../core/data/remote-data'; -import { Item } from '../../core/shared/item.model'; -import { Relationship } from '../../core/shared/item-relationships/relationship.model'; -import { NoContent } from '../../core/shared/NoContent.model'; +} from '../../data/object-updates/object-updates.reducer'; +import { RemoteData } from '../../data/remote-data'; +import { Item } from '../../shared/item.model'; +import { Relationship } from '../../shared/item-relationships/relationship.model'; +import { NoContent } from '../../shared/NoContent.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; /** diff --git a/src/app/shared/testing/element-ref.mock.ts b/modules/core/src/lib/core/utilities/testing/element-ref.mock.ts similarity index 100% rename from src/app/shared/testing/element-ref.mock.ts rename to modules/core/src/lib/core/utilities/testing/element-ref.mock.ts diff --git a/src/app/shared/testing/entity-type-data.service.stub.ts b/modules/core/src/lib/core/utilities/testing/entity-type-data.service.stub.ts similarity index 100% rename from src/app/shared/testing/entity-type-data.service.stub.ts rename to modules/core/src/lib/core/utilities/testing/entity-type-data.service.stub.ts diff --git a/src/app/shared/testing/eperson.mock.ts b/modules/core/src/lib/core/utilities/testing/eperson.mock.ts similarity index 96% rename from src/app/shared/testing/eperson.mock.ts rename to modules/core/src/lib/core/utilities/testing/eperson.mock.ts index 002ee9326f6..d008186a193 100644 --- a/src/app/shared/testing/eperson.mock.ts +++ b/modules/core/src/lib/core/utilities/testing/eperson.mock.ts @@ -1,4 +1,4 @@ -import { EPerson } from '../../core/eperson/models/eperson.model'; +import { EPerson } from '../../eperson/models/eperson.model'; export const EPersonMock: EPerson = Object.assign(new EPerson(), { handle: null, diff --git a/src/app/shared/testing/file-service.stub.ts b/modules/core/src/lib/core/utilities/testing/file-service.stub.ts similarity index 100% rename from src/app/shared/testing/file-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/file-service.stub.ts diff --git a/src/app/shared/testing/form-event.stub.ts b/modules/core/src/lib/core/utilities/testing/form-event.stub.ts similarity index 100% rename from src/app/shared/testing/form-event.stub.ts rename to modules/core/src/lib/core/utilities/testing/form-event.stub.ts diff --git a/src/app/shared/testing/group-mock.ts b/modules/core/src/lib/core/utilities/testing/group-mock.ts similarity index 95% rename from src/app/shared/testing/group-mock.ts rename to modules/core/src/lib/core/utilities/testing/group-mock.ts index 599afaa20d2..4ac90ad7f72 100644 --- a/src/app/shared/testing/group-mock.ts +++ b/modules/core/src/lib/core/utilities/testing/group-mock.ts @@ -1,4 +1,4 @@ -import { Group } from '../../core/eperson/models/group.model'; +import { Group } from '../../eperson/models/group.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; import { EPersonMock } from './eperson.mock'; diff --git a/src/app/shared/testing/hal-endpoint-service.stub.ts b/modules/core/src/lib/core/utilities/testing/hal-endpoint-service.stub.ts similarity index 86% rename from src/app/shared/testing/hal-endpoint-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/hal-endpoint-service.stub.ts index f53eecb0bb0..ef515521628 100644 --- a/src/app/shared/testing/hal-endpoint-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/hal-endpoint-service.stub.ts @@ -1,7 +1,6 @@ +import { hasValue } from '@dspace/shared/utils'; import { of as observableOf } from 'rxjs'; -import { hasValue } from '../empty.util'; - export class HALEndpointServiceStub { constructor(private url: string) {} diff --git a/src/app/shared/testing/identifiable-data-service.stub.ts b/modules/core/src/lib/core/utilities/testing/identifiable-data-service.stub.ts similarity index 69% rename from src/app/shared/testing/identifiable-data-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/identifiable-data-service.stub.ts index e8928b568db..4611d98df20 100644 --- a/src/app/shared/testing/identifiable-data-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/identifiable-data-service.stub.ts @@ -3,9 +3,9 @@ import { Observable, } from 'rxjs'; -import { CacheableObject } from '../../core/cache/cacheable-object.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { FollowLinkConfig } from '../utils/follow-link-config.model'; +import { CacheableObject } from '../../cache'; +import { FollowLinkConfig } from '../../data'; +import { RemoteData } from '../../data'; import { BaseDataServiceStub } from './base-data-service.stub'; /** diff --git a/src/app/shared/testing/item-data.service.stub.ts b/modules/core/src/lib/core/utilities/testing/item-data.service.stub.ts similarity index 79% rename from src/app/shared/testing/item-data.service.stub.ts rename to modules/core/src/lib/core/utilities/testing/item-data.service.stub.ts index eed5d4bb119..3b7dec57282 100644 --- a/src/app/shared/testing/item-data.service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/item-data.service.stub.ts @@ -1,4 +1,4 @@ -import { Item } from '../../core/shared/item.model'; +import { Item } from '../../shared'; import { IdentifiableDataServiceStub } from './identifiable-data-service.stub'; /** diff --git a/src/app/shared/testing/location.stub.ts b/modules/core/src/lib/core/utilities/testing/location.stub.ts similarity index 100% rename from src/app/shared/testing/location.stub.ts rename to modules/core/src/lib/core/utilities/testing/location.stub.ts diff --git a/src/app/shared/testing/menu-service.stub.ts b/modules/core/src/lib/core/utilities/testing/menu-service.stub.ts similarity index 91% rename from src/app/shared/testing/menu-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/menu-service.stub.ts index e2e11180218..479436ff28e 100644 --- a/src/app/shared/testing/menu-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/menu-service.stub.ts @@ -3,9 +3,10 @@ import { of as observableOf, } from 'rxjs'; -import { MenuID } from '../menu/menu-id.model'; -import { MenuSection } from '../menu/menu-section.model'; -import { MenuState } from '../menu/menu-state.model'; +import { MenuID } from '../../states/menu/menu-id.model'; +import { MenuSection } from '../../states/menu/menu-section.model'; +import { MenuState } from '../../states/menu/menu-state.model'; + export class MenuServiceStub { visibleSection1 = { diff --git a/modules/core/src/lib/core/utilities/testing/mock-state-utilities.ts b/modules/core/src/lib/core/utilities/testing/mock-state-utilities.ts new file mode 100644 index 00000000000..052f2ca2477 --- /dev/null +++ b/modules/core/src/lib/core/utilities/testing/mock-state-utilities.ts @@ -0,0 +1,6 @@ +export const mockStoreModuleConfig = { + runtimeChecks: { + strictStateImmutability: true, + strictActionImmutability: true, + }, +}; diff --git a/src/app/shared/testing/ng-component-outlet-directive.stub.ts b/modules/core/src/lib/core/utilities/testing/ng-component-outlet-directive.stub.ts similarity index 100% rename from src/app/shared/testing/ng-component-outlet-directive.stub.ts rename to modules/core/src/lib/core/utilities/testing/ng-component-outlet-directive.stub.ts diff --git a/src/app/shared/testing/notifications-service.stub.ts b/modules/core/src/lib/core/utilities/testing/notifications-service.stub.ts similarity index 80% rename from src/app/shared/testing/notifications-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/notifications-service.stub.ts index 154c5b43516..3662a1794ed 100644 --- a/src/app/shared/testing/notifications-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/notifications-service.stub.ts @@ -1,4 +1,4 @@ -import { NotificationOptions } from '../notifications/models/notification-options.model'; +import { NotificationOptions } from '../../notifications/models/notification-options.model'; export class NotificationsServiceStub { diff --git a/src/app/shared/testing/object-cache-service.stub.ts b/modules/core/src/lib/core/utilities/testing/object-cache-service.stub.ts similarity index 82% rename from src/app/shared/testing/object-cache-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/object-cache-service.stub.ts index d6b21b39220..7186b45566d 100644 --- a/src/app/shared/testing/object-cache-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/object-cache-service.stub.ts @@ -3,8 +3,8 @@ import { of as observableOf, } from 'rxjs'; -import { CacheableObject } from '../../core/cache/cacheable-object.model'; -import { ObjectCacheEntry } from '../../core/cache/object-cache.reducer'; +import { CacheableObject } from '../../cache'; +import { ObjectCacheEntry } from '../../cache'; /* eslint-disable @typescript-eslint/no-empty-function */ /** diff --git a/src/app/shared/testing/object-select-service.stub.ts b/modules/core/src/lib/core/utilities/testing/object-select-service.stub.ts similarity index 100% rename from src/app/shared/testing/object-select-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/object-select-service.stub.ts diff --git a/src/app/shared/testing/pagination-service.stub.ts b/modules/core/src/lib/core/utilities/testing/pagination-service.stub.ts similarity index 84% rename from src/app/shared/testing/pagination-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/pagination-service.stub.ts index 8755adc7595..279567f94ac 100644 --- a/src/app/shared/testing/pagination-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/pagination-service.stub.ts @@ -3,9 +3,9 @@ import { of as observableOf } from 'rxjs'; import { SortDirection, SortOptions, -} from '../../core/cache/models/sort-options.model'; -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; +} from '../../cache'; +import { FindListOptions } from '../../data'; +import { PaginationComponentOptions } from '../../shared'; export class PaginationServiceStub { diff --git a/src/app/shared/testing/query-params-directive.stub.ts b/modules/core/src/lib/core/utilities/testing/query-params-directive.stub.ts similarity index 100% rename from src/app/shared/testing/query-params-directive.stub.ts rename to modules/core/src/lib/core/utilities/testing/query-params-directive.stub.ts diff --git a/src/app/shared/testing/registry.service.stub.ts b/modules/core/src/lib/core/utilities/testing/registry.service.stub.ts similarity index 87% rename from src/app/shared/testing/registry.service.stub.ts rename to modules/core/src/lib/core/utilities/testing/registry.service.stub.ts index 9d2ca1df428..1585317bde8 100644 --- a/src/app/shared/testing/registry.service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/registry.service.stub.ts @@ -4,14 +4,14 @@ import { of as observableOf, } from 'rxjs'; -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { PaginatedList } from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { MetadataField } from '../../core/metadata/metadata-field.model'; -import { MetadataSchema } from '../../core/metadata/metadata-schema.model'; -import { NoContent } from '../../core/shared/NoContent.model'; +import { FindListOptions } from '../../data/find-list-options.model'; +import { FollowLinkConfig } from '../../data/follow-link-config.model'; +import { PaginatedList } from '../../data/paginated-list.model'; +import { RemoteData } from '../../data/remote-data'; +import { MetadataField } from '../../metadata/metadata-field.model'; +import { MetadataSchema } from '../../metadata/metadata-schema.model'; +import { NoContent } from '../../shared/NoContent.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; -import { FollowLinkConfig } from '../utils/follow-link-config.model'; import { createPaginatedList } from './utils.test'; /** diff --git a/src/app/shared/testing/related-relationships.mock.ts b/modules/core/src/lib/core/utilities/testing/related-relationships.mock.ts similarity index 100% rename from src/app/shared/testing/related-relationships.mock.ts rename to modules/core/src/lib/core/utilities/testing/related-relationships.mock.ts diff --git a/src/app/shared/testing/relationship-data.service.stub.ts b/modules/core/src/lib/core/utilities/testing/relationship-data.service.stub.ts similarity index 81% rename from src/app/shared/testing/relationship-data.service.stub.ts rename to modules/core/src/lib/core/utilities/testing/relationship-data.service.stub.ts index f0463b3e6ca..bc7001e2287 100644 --- a/src/app/shared/testing/relationship-data.service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/relationship-data.service.stub.ts @@ -4,17 +4,19 @@ import { of as observableOf, } from 'rxjs'; -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { PaginatedList } from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { DSpaceObject } from '../../core/shared/dspace-object.model'; -import { Item } from '../../core/shared/item.model'; -import { Relationship } from '../../core/shared/item-relationships/relationship.model'; -import { MetadataValue } from '../../core/shared/metadata.models'; -import { MetadataRepresentation } from '../../core/shared/metadata-representation/metadata-representation.model'; -import { NoContent } from '../../core/shared/NoContent.model'; +import { FindListOptions } from '../../data/find-list-options.model'; +import { FollowLinkConfig } from '../../data/follow-link-config.model'; +import { PaginatedList } from '../../data/paginated-list.model'; +import { RemoteData } from '../../data/remote-data'; +import { DSpaceObject } from '../../shared/dspace-object.model'; +import { Item } from '../../shared/item.model'; +import { Relationship } from '../../shared/item-relationships/relationship.model'; +import { MetadataValue } from '../../shared/metadata.models'; +import { MetadataRepresentation } from '../../shared/metadata-representation/metadata-representation.model'; +import { NoContent } from '../../shared/NoContent.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; -import { FollowLinkConfig } from '../utils/follow-link-config.model'; + + /** * Stub class of {@link RelationshipDataService} diff --git a/src/app/shared/testing/relationship-types.mock.ts b/modules/core/src/lib/core/utilities/testing/relationship-types.mock.ts similarity index 100% rename from src/app/shared/testing/relationship-types.mock.ts rename to modules/core/src/lib/core/utilities/testing/relationship-types.mock.ts diff --git a/src/app/shared/testing/request-service.stub.ts b/modules/core/src/lib/core/utilities/testing/request-service.stub.ts similarity index 100% rename from src/app/shared/testing/request-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/request-service.stub.ts diff --git a/src/app/shared/testing/route-service.stub.ts b/modules/core/src/lib/core/utilities/testing/route-service.stub.ts similarity index 100% rename from src/app/shared/testing/route-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/route-service.stub.ts diff --git a/src/app/shared/testing/router-link-directive.stub.ts b/modules/core/src/lib/core/utilities/testing/router-link-directive.stub.ts similarity index 100% rename from src/app/shared/testing/router-link-directive.stub.ts rename to modules/core/src/lib/core/utilities/testing/router-link-directive.stub.ts diff --git a/src/app/shared/testing/router.stub.ts b/modules/core/src/lib/core/utilities/testing/router.stub.ts similarity index 100% rename from src/app/shared/testing/router.stub.ts rename to modules/core/src/lib/core/utilities/testing/router.stub.ts diff --git a/src/app/shared/testing/search-configuration-service.stub.ts b/modules/core/src/lib/core/utilities/testing/search-configuration-service.stub.ts similarity index 87% rename from src/app/shared/testing/search-configuration-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/search-configuration-service.stub.ts index 426dc72930a..c3d023c0386 100644 --- a/src/app/shared/testing/search-configuration-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/search-configuration-service.stub.ts @@ -5,12 +5,12 @@ import { of as observableOf, } from 'rxjs'; +import { PaginatedSearchOptions } from '../../shared'; +import { SearchOptions } from '../../shared'; import { FilterConfig, SearchConfig, -} from '../../core/shared/search/search-filters/search-config.model'; -import { PaginatedSearchOptions } from '../search/models/paginated-search-options.model'; -import { SearchOptions } from '../search/models/search-options.model'; +} from '../../shared'; /** * Stub class of {@link SearchConfigurationService} diff --git a/src/app/shared/testing/search-filter-service.stub.ts b/modules/core/src/lib/core/utilities/testing/search-filter-service.stub.ts similarity index 88% rename from src/app/shared/testing/search-filter-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/search-filter-service.stub.ts index 1c82a448886..bae0f189730 100644 --- a/src/app/shared/testing/search-filter-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/search-filter-service.stub.ts @@ -7,9 +7,9 @@ import { import { SortDirection, SortOptions, -} from '../../core/cache/models/sort-options.model'; -import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; -import { SearchFilterConfig } from '../search/models/search-filter-config.model'; +} from '../../cache'; +import { PaginationComponentOptions } from '../../shared'; +import { SearchFilterConfig } from '../../shared'; /* eslint-disable no-empty,@typescript-eslint/no-empty-function */ /** diff --git a/src/app/shared/testing/search-service.stub.ts b/modules/core/src/lib/core/utilities/testing/search-service.stub.ts similarity index 79% rename from src/app/shared/testing/search-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/search-service.stub.ts index 552fee9a059..d36bbf72129 100644 --- a/src/app/shared/testing/search-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/search-service.stub.ts @@ -4,10 +4,10 @@ import { of as observableOf, } from 'rxjs'; -import { ViewMode } from '../../core/shared/view-mode.model'; -import { AppliedFilter } from '../search/models/applied-filter.model'; -import { PaginatedSearchOptions } from '../search/models/paginated-search-options.model'; -import { SearchFilterConfig } from '../search/models/search-filter-config.model'; +import { PaginatedSearchOptions } from '../../shared'; +import { AppliedFilter } from '../../shared'; +import { SearchFilterConfig } from '../../shared'; +import { ViewMode } from '../../shared'; /** * Stub class of {@link SearchService} diff --git a/src/app/shared/testing/sections-service.stub.ts b/modules/core/src/lib/core/utilities/testing/sections-service.stub.ts similarity index 100% rename from src/app/shared/testing/sections-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/sections-service.stub.ts diff --git a/src/app/shared/testing/server-response-service.stub.ts b/modules/core/src/lib/core/utilities/testing/server-response-service.stub.ts similarity index 100% rename from src/app/shared/testing/server-response-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/server-response-service.stub.ts diff --git a/src/app/shared/testing/sidebar-service.stub.ts b/modules/core/src/lib/core/utilities/testing/sidebar-service.stub.ts similarity index 100% rename from src/app/shared/testing/sidebar-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/sidebar-service.stub.ts diff --git a/src/app/shared/testing/special-group.mock.ts b/modules/core/src/lib/core/utilities/testing/special-group.mock.ts similarity index 90% rename from src/app/shared/testing/special-group.mock.ts rename to modules/core/src/lib/core/utilities/testing/special-group.mock.ts index 6d5f123ffe2..ebd8806f1ba 100644 --- a/src/app/shared/testing/special-group.mock.ts +++ b/modules/core/src/lib/core/utilities/testing/special-group.mock.ts @@ -3,10 +3,10 @@ import { Observable } from 'rxjs'; import { buildPaginatedList, PaginatedList, -} from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { Group } from '../../core/eperson/models/group.model'; -import { PageInfo } from '../../core/shared/page-info.model'; +} from '../../data/paginated-list.model'; +import { RemoteData } from '../../data/remote-data'; +import { Group } from '../../eperson/models/group.model'; +import { PageInfo } from '../../shared/page-info.model'; import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$, diff --git a/src/app/shared/testing/store.mock.ts b/modules/core/src/lib/core/utilities/testing/store.mock.ts similarity index 100% rename from src/app/shared/testing/store.mock.ts rename to modules/core/src/lib/core/utilities/testing/store.mock.ts diff --git a/src/app/shared/testing/submission-json-patch-operations-service.stub.ts b/modules/core/src/lib/core/utilities/testing/submission-json-patch-operations-service.stub.ts similarity index 84% rename from src/app/shared/testing/submission-json-patch-operations-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/submission-json-patch-operations-service.stub.ts index 593cf921553..d1cae76acf2 100644 --- a/src/app/shared/testing/submission-json-patch-operations-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/submission-json-patch-operations-service.stub.ts @@ -1,4 +1,4 @@ -import { SubmissionPatchRequest } from '../../core/data/request.models'; +import { SubmissionPatchRequest } from '../../data'; export class SubmissionJsonPatchOperationsServiceStub { protected linkPath = 'workspaceitems'; diff --git a/src/app/shared/testing/submission-oject-data-service.mock.ts b/modules/core/src/lib/core/utilities/testing/submission-oject-data-service.mock.ts similarity index 100% rename from src/app/shared/testing/submission-oject-data-service.mock.ts rename to modules/core/src/lib/core/utilities/testing/submission-oject-data-service.mock.ts diff --git a/src/app/shared/testing/submission-rest-service.stub.ts b/modules/core/src/lib/core/utilities/testing/submission-rest-service.stub.ts similarity index 79% rename from src/app/shared/testing/submission-rest-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/submission-rest-service.stub.ts index 677fb050263..59ad2468d5c 100644 --- a/src/app/shared/testing/submission-rest-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/submission-rest-service.stub.ts @@ -1,9 +1,9 @@ import { Store } from '@ngrx/store'; import { of as observableOf } from 'rxjs'; -import { CoreState } from '../../core/core-state.model'; -import { RequestService } from '../../core/data/request.service'; -import { HALEndpointService } from '../../core/shared/hal-endpoint.service'; +import { CoreState } from '../../core-state.model'; +import { RequestService } from '../../data/request.service'; +import { HALEndpointService } from '../../shared/hal-endpoint.service'; export class SubmissionRestServiceStub { protected linkPath = 'workspaceitems'; diff --git a/src/app/shared/testing/submission-service.stub.ts b/modules/core/src/lib/core/utilities/testing/submission-service.stub.ts similarity index 100% rename from src/app/shared/testing/submission-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/submission-service.stub.ts diff --git a/src/app/shared/testing/subscriptions-data.mock.ts b/modules/core/src/lib/core/utilities/testing/subscriptions-data.mock.ts similarity index 94% rename from src/app/shared/testing/subscriptions-data.mock.ts rename to modules/core/src/lib/core/utilities/testing/subscriptions-data.mock.ts index 771f1e38fb8..174ad618fcb 100644 --- a/src/app/shared/testing/subscriptions-data.mock.ts +++ b/modules/core/src/lib/core/utilities/testing/subscriptions-data.mock.ts @@ -1,8 +1,9 @@ -import { EPerson } from '../../core/eperson/models/eperson.model'; -import { Item } from '../../core/shared/item.model'; -import { ITEM_TYPE } from '../../core/shared/item-relationships/item-type.resource-type'; +import { EPerson } from '../../eperson/models/eperson.model'; +import { Item } from '../../shared/item.model'; +import { ITEM_TYPE } from '../../shared/item-relationships/item-type.resource-type'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; + export const mockSubscriptionEperson = Object.assign(new EPerson(), { 'id': 'fake-eperson-id', 'uuid': 'fake-eperson-id', diff --git a/src/app/shared/testing/supervision-order.mock.ts b/modules/core/src/lib/core/utilities/testing/supervision-order.mock.ts similarity index 88% rename from src/app/shared/testing/supervision-order.mock.ts rename to modules/core/src/lib/core/utilities/testing/supervision-order.mock.ts index bc98de0dfb8..d84d6bcb28e 100644 --- a/src/app/shared/testing/supervision-order.mock.ts +++ b/modules/core/src/lib/core/utilities/testing/supervision-order.mock.ts @@ -1,7 +1,8 @@ -import { buildPaginatedList } from '../../core/data/paginated-list.model'; -import { Item } from '../../core/shared/item.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { SupervisionOrder } from '../../core/supervision-order/models/supervision-order.model'; + +import { buildPaginatedList } from '../../data/paginated-list.model'; +import { Item } from '../../shared/item.model'; +import { PageInfo } from '../../shared/page-info.model'; +import { SupervisionOrder } from '../../supervision-order/models/supervision-order.model'; import { createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$, diff --git a/src/app/shared/testing/test-data-service.mock.ts b/modules/core/src/lib/core/utilities/testing/test-data-service.mock.ts similarity index 75% rename from src/app/shared/testing/test-data-service.mock.ts rename to modules/core/src/lib/core/utilities/testing/test-data-service.mock.ts index b5529f4a070..a572fb7898b 100644 --- a/src/app/shared/testing/test-data-service.mock.ts +++ b/modules/core/src/lib/core/utilities/testing/test-data-service.mock.ts @@ -5,11 +5,11 @@ import { of, } from 'rxjs'; -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { Item } from '../../core/shared/item.model'; +import { FindListOptions } from '../../data/find-list-options.model'; +import { FollowLinkConfig } from '../../data/follow-link-config.model'; +import { RemoteData } from '../../data/remote-data'; +import { Item } from '../../shared/item.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; -import { FollowLinkConfig } from '../utils/follow-link-config.model'; @Injectable() export class TestDataService { diff --git a/src/app/shared/testing/truncatable-service.stub.ts b/modules/core/src/lib/core/utilities/testing/truncatable-service.stub.ts similarity index 100% rename from src/app/shared/testing/truncatable-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/truncatable-service.stub.ts diff --git a/src/app/shared/testing/utils.test.ts b/modules/core/src/lib/core/utilities/testing/utils.test.ts similarity index 90% rename from src/app/shared/testing/utils.test.ts rename to modules/core/src/lib/core/utilities/testing/utils.test.ts index a318f0b5477..b162ab33050 100644 --- a/src/app/shared/testing/utils.test.ts +++ b/modules/core/src/lib/core/utilities/testing/utils.test.ts @@ -12,11 +12,11 @@ import { import { buildPaginatedList, PaginatedList, -} from '../../core/data/paginated-list.model'; -import { RequestEntry } from '../../core/data/request-entry.model'; -import { RequestEntryState } from '../../core/data/request-entry-state.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { UnCacheableObject } from '../../core/shared/uncacheable-object.model'; +} from '../../data'; +import { RequestEntry } from '../../data'; +import { RequestEntryState } from '../../data'; +import { PageInfo } from '../../shared'; +import { UnCacheableObject } from '../../shared'; /** * Returns true if a Native Element has a specified css class. diff --git a/src/app/shared/testing/vocabulary-service.stub.ts b/modules/core/src/lib/core/utilities/testing/vocabulary-service.stub.ts similarity index 80% rename from src/app/shared/testing/vocabulary-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/vocabulary-service.stub.ts index 10f2978e32e..dfe2389ce14 100644 --- a/src/app/shared/testing/vocabulary-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/vocabulary-service.stub.ts @@ -6,12 +6,12 @@ import { import { buildPaginatedList, PaginatedList, -} from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { Vocabulary } from '../../core/submission/vocabularies/models/vocabulary.model'; -import { VocabularyEntry } from '../../core/submission/vocabularies/models/vocabulary-entry.model'; -import { VocabularyOptions } from '../../core/submission/vocabularies/models/vocabulary-options.model'; +} from '../../data/paginated-list.model'; +import { RemoteData } from '../../data/remote-data'; +import { PageInfo } from '../../shared/page-info.model'; +import { Vocabulary } from '../../submission/vocabularies/models/vocabulary.model'; +import { VocabularyEntry } from '../../submission/vocabularies/models/vocabulary-entry.model'; +import { VocabularyOptions } from '../../submission/vocabularies/models/vocabulary-options.model'; import { createSuccessfulRemoteDataObject$ } from '../remote-data.utils'; export class VocabularyServiceStub { diff --git a/src/app/shared/testing/workflow-action-data-service.stub.ts b/modules/core/src/lib/core/utilities/testing/workflow-action-data-service.stub.ts similarity index 60% rename from src/app/shared/testing/workflow-action-data-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/workflow-action-data-service.stub.ts index 9cd61d7955a..3ed949f794e 100644 --- a/src/app/shared/testing/workflow-action-data-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/workflow-action-data-service.stub.ts @@ -3,11 +3,11 @@ import { Observable, } from 'rxjs'; -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { WorkflowItem } from '../../core/submission/models/workflowitem.model'; -import { WorkspaceItem } from '../../core/submission/models/workspaceitem.model'; -import { FollowLinkConfig } from '../utils/follow-link-config.model'; +import { FindListOptions } from '../../data/find-list-options.model'; +import { FollowLinkConfig } from '../../data/follow-link-config.model'; +import { RemoteData } from '../../data/remote-data'; +import { WorkflowItem } from '../../submission/models/workflowitem.model'; +import { WorkspaceItem } from '../../submission/models/workspaceitem.model'; import { IdentifiableDataServiceStub } from './identifiable-data-service.stub'; /** diff --git a/src/app/shared/testing/workflow-item-data-service.stub.ts b/modules/core/src/lib/core/utilities/testing/workflow-item-data-service.stub.ts similarity index 74% rename from src/app/shared/testing/workflow-item-data-service.stub.ts rename to modules/core/src/lib/core/utilities/testing/workflow-item-data-service.stub.ts index 3b5ce938f85..5c68718c490 100644 --- a/src/app/shared/testing/workflow-item-data-service.stub.ts +++ b/modules/core/src/lib/core/utilities/testing/workflow-item-data-service.stub.ts @@ -1,4 +1,5 @@ -import { WorkflowItem } from '../../core/submission/models/workflowitem.model'; + +import { WorkflowItem } from '../../submission/models/workflowitem.model'; import { IdentifiableDataServiceStub } from './identifiable-data-service.stub'; /** diff --git a/src/app/core/xsrf/browser-xsrf.service.spec.ts b/modules/core/src/lib/core/xsrf/browser-xsrf.service.spec.ts similarity index 100% rename from src/app/core/xsrf/browser-xsrf.service.spec.ts rename to modules/core/src/lib/core/xsrf/browser-xsrf.service.spec.ts diff --git a/src/app/core/xsrf/browser-xsrf.service.ts b/modules/core/src/lib/core/xsrf/browser-xsrf.service.ts similarity index 74% rename from src/app/core/xsrf/browser-xsrf.service.ts rename to modules/core/src/lib/core/xsrf/browser-xsrf.service.ts index 121defc061b..4709eac72a2 100644 --- a/src/app/core/xsrf/browser-xsrf.service.ts +++ b/modules/core/src/lib/core/xsrf/browser-xsrf.service.ts @@ -1,8 +1,12 @@ import { HttpClient } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; import { take } from 'rxjs/operators'; -import { RESTURLCombiner } from '../url-combiner/rest-url-combiner'; +import { APP_CONFIG } from '../config'; +import { RESTURLCombiner } from '../url-combiner'; import { XSRFService } from './xsrf.service'; /** @@ -13,10 +17,12 @@ import { XSRFService } from './xsrf.service'; */ @Injectable() export class BrowserXSRFService extends XSRFService { + private readonly appConfig = inject(APP_CONFIG); + initXSRFToken(httpClient: HttpClient): () => Promise { return () => new Promise((resolve) => { // Force a new token to be created by calling the CSRF endpoint - httpClient.get(new RESTURLCombiner('/security/csrf').toString(), undefined).pipe( + httpClient.get(new RESTURLCombiner(this.appConfig.rest.baseUrl, '/security/csrf').toString(), undefined).pipe( take(1), ).subscribe(() => { // Once token is returned, set tokenInitialized to true. diff --git a/modules/core/src/lib/core/xsrf/index.ts b/modules/core/src/lib/core/xsrf/index.ts new file mode 100644 index 00000000000..51ab205c833 --- /dev/null +++ b/modules/core/src/lib/core/xsrf/index.ts @@ -0,0 +1,6 @@ + +export * from './browser-xsrf.service'; +export * from './server-xsrf.service'; +export * from './xsrf.constants'; +export * from './xsrf.interceptor'; +export * from './xsrf.service'; diff --git a/src/app/core/xsrf/server-xsrf.service.spec.ts b/modules/core/src/lib/core/xsrf/server-xsrf.service.spec.ts similarity index 99% rename from src/app/core/xsrf/server-xsrf.service.spec.ts rename to modules/core/src/lib/core/xsrf/server-xsrf.service.spec.ts index 05728edb423..9aaa8efd866 100644 --- a/src/app/core/xsrf/server-xsrf.service.spec.ts +++ b/modules/core/src/lib/core/xsrf/server-xsrf.service.spec.ts @@ -2,6 +2,8 @@ import { HttpClient } from '@angular/common/http'; import { ServerXSRFService } from './server-xsrf.service'; + + describe(`ServerXSRFService`, () => { let service: ServerXSRFService; let httpClient: HttpClient; diff --git a/src/app/core/xsrf/server-xsrf.service.ts b/modules/core/src/lib/core/xsrf/server-xsrf.service.ts similarity index 100% rename from src/app/core/xsrf/server-xsrf.service.ts rename to modules/core/src/lib/core/xsrf/server-xsrf.service.ts diff --git a/src/app/core/xsrf/xsrf.constants.ts b/modules/core/src/lib/core/xsrf/xsrf.constants.ts similarity index 100% rename from src/app/core/xsrf/xsrf.constants.ts rename to modules/core/src/lib/core/xsrf/xsrf.constants.ts diff --git a/src/app/core/xsrf/xsrf.interceptor.spec.ts b/modules/core/src/lib/core/xsrf/xsrf.interceptor.spec.ts similarity index 97% rename from src/app/core/xsrf/xsrf.interceptor.spec.ts rename to modules/core/src/lib/core/xsrf/xsrf.interceptor.spec.ts index 1668407e04c..a6577d5de83 100644 --- a/src/app/core/xsrf/xsrf.interceptor.spec.ts +++ b/modules/core/src/lib/core/xsrf/xsrf.interceptor.spec.ts @@ -9,14 +9,16 @@ import { } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; -import { CookieServiceMock } from '../../shared/mocks/cookie.service.mock'; -import { HttpXsrfTokenExtractorMock } from '../../shared/mocks/http-xsrf-token-extractor.mock'; import { RequestError } from '../data/request-error.model'; import { RestRequestMethod } from '../data/rest-request-method'; import { DspaceRestService } from '../dspace-rest/dspace-rest.service'; +import { CookieServiceMock } from '../mocks/cookie.service.mock'; +import { HttpXsrfTokenExtractorMock } from '../mocks/http-xsrf-token-extractor.mock'; import { CookieService } from '../services/cookie.service'; import { XsrfInterceptor } from './xsrf.interceptor'; + + describe(`XsrfInterceptor`, () => { let service: DspaceRestService; let httpMock: HttpTestingController; diff --git a/src/app/core/xsrf/xsrf.interceptor.ts b/modules/core/src/lib/core/xsrf/xsrf.interceptor.ts similarity index 93% rename from src/app/core/xsrf/xsrf.interceptor.ts rename to modules/core/src/lib/core/xsrf/xsrf.interceptor.ts index 91e780590b2..e515c1b3485 100644 --- a/src/app/core/xsrf/xsrf.interceptor.ts +++ b/modules/core/src/lib/core/xsrf/xsrf.interceptor.ts @@ -7,7 +7,10 @@ import { HttpResponse, HttpXsrfTokenExtractor, } from '@angular/common/http'; -import { Injectable } from '@angular/core'; +import { + inject, + Injectable, +} from '@angular/core'; import { Observable, throwError, @@ -17,8 +20,9 @@ import { tap, } from 'rxjs/operators'; -import { CookieService } from '../services/cookie.service'; -import { RESTURLCombiner } from '../url-combiner/rest-url-combiner'; +import { APP_CONFIG } from '../config'; +import { CookieService } from '../services'; +import { RESTURLCombiner } from '../url-combiner'; import { XSRF_COOKIE, XSRF_REQUEST_HEADER, @@ -52,6 +56,7 @@ import { */ @Injectable() export class XsrfInterceptor implements HttpInterceptor { + private readonly appConfig = inject(APP_CONFIG); constructor(private tokenExtractor: HttpXsrfTokenExtractor, private cookieService: CookieService) { } @@ -75,7 +80,7 @@ export class XsrfInterceptor implements HttpInterceptor { const reqUrl = req.url.toLowerCase(); // Get root URL of configured REST API - const restUrl = new RESTURLCombiner('/').toString().toLowerCase(); + const restUrl = new RESTURLCombiner(this.appConfig.rest.baseUrl, '/').toString().toLowerCase(); // Skip any non-mutating request. This is because our REST API does NOT // require CSRF verification for read-only requests like GET or HEAD diff --git a/src/app/core/xsrf/xsrf.service.spec.ts b/modules/core/src/lib/core/xsrf/xsrf.service.spec.ts similarity index 100% rename from src/app/core/xsrf/xsrf.service.spec.ts rename to modules/core/src/lib/core/xsrf/xsrf.service.spec.ts diff --git a/src/app/core/xsrf/xsrf.service.ts b/modules/core/src/lib/core/xsrf/xsrf.service.ts similarity index 100% rename from src/app/core/xsrf/xsrf.service.ts rename to modules/core/src/lib/core/xsrf/xsrf.service.ts diff --git a/modules/core/src/lib/index.ts b/modules/core/src/lib/index.ts new file mode 100644 index 00000000000..8e9d2730447 --- /dev/null +++ b/modules/core/src/lib/index.ts @@ -0,0 +1,3 @@ +// created from 'create-ts-index' + +export * from './core'; diff --git a/modules/core/src/test-setup.ts b/modules/core/src/test-setup.ts new file mode 100644 index 00000000000..ea414013fc0 --- /dev/null +++ b/modules/core/src/test-setup.ts @@ -0,0 +1,6 @@ +import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; + +setupZoneTestEnv({ + errorOnUnknownElements: true, + errorOnUnknownProperties: true, +}); diff --git a/modules/core/tsconfig.json b/modules/core/tsconfig.json new file mode 100644 index 00000000000..ab11a02c842 --- /dev/null +++ b/modules/core/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true, + "fullTemplateTypeCheck": true, + "extendedDiagnostics": { + "checks": { + "missingControlFlowDirective": "error" + } + } + } +} diff --git a/modules/core/tsconfig.lib.json b/modules/core/tsconfig.lib.json new file mode 100644 index 00000000000..4167bdc6f07 --- /dev/null +++ b/modules/core/tsconfig.lib.json @@ -0,0 +1,21 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "resolveJsonModule": true, + "types": [ + "node", + "grecaptcha" + ] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/modules/core/tsconfig.lib.prod.json b/modules/core/tsconfig.lib.prod.json new file mode 100644 index 00000000000..61b523783f2 --- /dev/null +++ b/modules/core/tsconfig.lib.prod.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false + }, + "angularCompilerOptions": {} +} diff --git a/modules/core/tsconfig.spec.json b/modules/core/tsconfig.spec.json new file mode 100644 index 00000000000..c4cfa2475ff --- /dev/null +++ b/modules/core/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node", "jasmine"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/modules/shared/utils/README.md b/modules/shared/utils/README.md new file mode 100644 index 00000000000..7c44079c5f0 --- /dev/null +++ b/modules/shared/utils/README.md @@ -0,0 +1,7 @@ +# utils + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test utils` to execute the unit tests. diff --git a/modules/shared/utils/jest.config.ts b/modules/shared/utils/jest.config.ts new file mode 100644 index 00000000000..40937f77437 --- /dev/null +++ b/modules/shared/utils/jest.config.ts @@ -0,0 +1,21 @@ +export default { + displayName: 'utils', + preset: '../../../jest.preset.js', + setupFilesAfterEnv: ['/src/test-setup.ts'], + coverageDirectory: '../../../coverage/modules/shared/utils', + transform: { + '^.+\\.(ts|mjs|js|html)$': [ + 'jest-preset-angular', + { + tsconfig: '/tsconfig.spec.json', + stringifyContentPathRegex: '\\.(html|svg)$', + }, + ], + }, + transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'], + snapshotSerializers: [ + 'jest-preset-angular/build/serializers/no-ng-attributes', + 'jest-preset-angular/build/serializers/ng-snapshot', + 'jest-preset-angular/build/serializers/html-comment', + ], +}; diff --git a/modules/shared/utils/ng-package.json b/modules/shared/utils/ng-package.json new file mode 100644 index 00000000000..5c99c95d7d5 --- /dev/null +++ b/modules/shared/utils/ng-package.json @@ -0,0 +1,7 @@ +{ + "$schema": "../../../node_modules/ng-packagr/ng-package.schema.json", + "dest": "../../../dist/modules/shared/utils", + "lib": { + "entryFile": "src/index.ts" + } +} diff --git a/modules/shared/utils/package.json b/modules/shared/utils/package.json new file mode 100644 index 00000000000..cfbca30e9b1 --- /dev/null +++ b/modules/shared/utils/package.json @@ -0,0 +1,14 @@ +{ + "name": "@dspace/shared/utils", + "version": "0.0.1", + "peerDependencies": { + "@angular/common": "^17.3.0", + "@angular/core": "^17.3.0", + "@swc/core": "~1.5.7", + "@swc/helpers": "~0.5.11", + "date-fns": "^2.29.3", + "date-fns-tz": "^1.3.7", + "lodash": "^4.17.21" + }, + "sideEffects": false +} diff --git a/modules/shared/utils/project.json b/modules/shared/utils/project.json new file mode 100644 index 00000000000..25d76801efa --- /dev/null +++ b/modules/shared/utils/project.json @@ -0,0 +1,36 @@ +{ + "name": "utils", + "$schema": "../../../node_modules/nx/schemas/project-schema.json", + "sourceRoot": "modules/shared/utils/src", + "prefix": "lib", + "projectType": "library", + "tags": [], + "targets": { + "build": { + "executor": "@nx/angular:ng-packagr-lite", + "outputs": ["{workspaceRoot}/dist/{projectRoot}"], + "options": { + "project": "modules/shared/utils/ng-package.json" + }, + "configurations": { + "production": { + "tsConfig": "modules/shared/utils/tsconfig.lib.prod.json" + }, + "development": { + "tsConfig": "modules/shared/utils/tsconfig.lib.json" + } + }, + "defaultConfiguration": "production" + }, + "test": { + "executor": "@nx/jest:jest", + "outputs": ["{workspaceRoot}/coverage/{projectRoot}"], + "options": { + "jestConfig": "modules/shared/utils/jest.config.ts" + } + }, + "lint": { + "executor": "@nx/eslint:lint" + } + } +} diff --git a/modules/shared/utils/src/index.ts b/modules/shared/utils/src/index.ts new file mode 100644 index 00000000000..c417e8a929a --- /dev/null +++ b/modules/shared/utils/src/index.ts @@ -0,0 +1,4 @@ +export * from './lib/utils/date.util'; +export * from './lib/utils/empty.util'; +export * from './lib/utils/numeric.util'; +export * from './lib/utils/object.util'; diff --git a/src/app/shared/date.util.spec.ts b/modules/shared/utils/src/lib/utils/date.util.spec.ts similarity index 100% rename from src/app/shared/date.util.spec.ts rename to modules/shared/utils/src/lib/utils/date.util.spec.ts diff --git a/src/app/shared/date.util.ts b/modules/shared/utils/src/lib/utils/date.util.ts similarity index 100% rename from src/app/shared/date.util.ts rename to modules/shared/utils/src/lib/utils/date.util.ts diff --git a/src/app/shared/empty.util.spec.ts b/modules/shared/utils/src/lib/utils/empty.util.spec.ts similarity index 100% rename from src/app/shared/empty.util.spec.ts rename to modules/shared/utils/src/lib/utils/empty.util.spec.ts diff --git a/src/app/shared/empty.util.ts b/modules/shared/utils/src/lib/utils/empty.util.ts similarity index 100% rename from src/app/shared/empty.util.ts rename to modules/shared/utils/src/lib/utils/empty.util.ts diff --git a/src/app/shared/numeric.util.spec.ts b/modules/shared/utils/src/lib/utils/numeric.util.spec.ts similarity index 100% rename from src/app/shared/numeric.util.spec.ts rename to modules/shared/utils/src/lib/utils/numeric.util.spec.ts diff --git a/src/app/shared/numeric.util.ts b/modules/shared/utils/src/lib/utils/numeric.util.ts similarity index 100% rename from src/app/shared/numeric.util.ts rename to modules/shared/utils/src/lib/utils/numeric.util.ts diff --git a/src/app/shared/object.util.spec.ts b/modules/shared/utils/src/lib/utils/object.util.spec.ts similarity index 100% rename from src/app/shared/object.util.spec.ts rename to modules/shared/utils/src/lib/utils/object.util.spec.ts diff --git a/src/app/shared/object.util.ts b/modules/shared/utils/src/lib/utils/object.util.ts similarity index 99% rename from src/app/shared/object.util.ts rename to modules/shared/utils/src/lib/utils/object.util.ts index 38827f9a143..12c3f1d2b96 100644 --- a/src/app/shared/object.util.ts +++ b/modules/shared/utils/src/lib/utils/object.util.ts @@ -37,6 +37,7 @@ export function hasOnlyEmptyProperties(obj: object): boolean { return result; } } + return false } /** diff --git a/modules/shared/utils/src/test-setup.ts b/modules/shared/utils/src/test-setup.ts new file mode 100644 index 00000000000..ea414013fc0 --- /dev/null +++ b/modules/shared/utils/src/test-setup.ts @@ -0,0 +1,6 @@ +import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone'; + +setupZoneTestEnv({ + errorOnUnknownElements: true, + errorOnUnknownProperties: true, +}); diff --git a/modules/shared/utils/tsconfig.json b/modules/shared/utils/tsconfig.json new file mode 100644 index 00000000000..d799b07b36d --- /dev/null +++ b/modules/shared/utils/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "es2022", + "useDefineForClassFields": false, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + }, + { + "path": "./tsconfig.spec.json" + } + ], + "extends": "../../../tsconfig.base.json", + "angularCompilerOptions": { + "enableI18nLegacyMessageIdFormat": false, + "strictInjectionParameters": true, + "strictInputAccessModifiers": true, + "strictTemplates": true, + "fullTemplateTypeCheck": true, + "extendedDiagnostics": { + "checks": { + "missingControlFlowDirective": "error" + } + } + } +} diff --git a/modules/shared/utils/tsconfig.lib.json b/modules/shared/utils/tsconfig.lib.json new file mode 100644 index 00000000000..9b49be758ca --- /dev/null +++ b/modules/shared/utils/tsconfig.lib.json @@ -0,0 +1,17 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "declaration": true, + "declarationMap": true, + "inlineSources": true, + "types": [] + }, + "exclude": [ + "src/**/*.spec.ts", + "src/test-setup.ts", + "jest.config.ts", + "src/**/*.test.ts" + ], + "include": ["src/**/*.ts"] +} diff --git a/modules/shared/utils/tsconfig.lib.prod.json b/modules/shared/utils/tsconfig.lib.prod.json new file mode 100644 index 00000000000..61b523783f2 --- /dev/null +++ b/modules/shared/utils/tsconfig.lib.prod.json @@ -0,0 +1,7 @@ +{ + "extends": "./tsconfig.lib.json", + "compilerOptions": { + "declarationMap": false + }, + "angularCompilerOptions": {} +} diff --git a/modules/shared/utils/tsconfig.spec.json b/modules/shared/utils/tsconfig.spec.json new file mode 100644 index 00000000000..f858ef78c1e --- /dev/null +++ b/modules/shared/utils/tsconfig.spec.json @@ -0,0 +1,16 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "module": "commonjs", + "target": "es2016", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": [ + "jest.config.ts", + "src/**/*.test.ts", + "src/**/*.spec.ts", + "src/**/*.d.ts" + ] +} diff --git a/nx.json b/nx.json new file mode 100644 index 00000000000..9c2c6428b04 --- /dev/null +++ b/nx.json @@ -0,0 +1,66 @@ +{ + "$schema": "./node_modules/nx/schemas/nx-schema.json", + "targetDefaults": { + "build": { + "cache": true, + "dependsOn": ["^build"], + "inputs": ["production", "^production"] + }, + "test": { + "cache": true, + "inputs": ["default", "^production", "{workspaceRoot}/karma.conf.js"] + }, + "server": { + "cache": true, + "inputs": ["production", "^production"] + }, + "lint": { + "cache": true, + "inputs": ["default", "{workspaceRoot}/.eslintrc.json"] + }, + "e2e": { + "inputs": ["default", "^production"] + }, + "@nx/angular:ng-packagr-lite": { + "cache": true, + "dependsOn": ["^build"], + "inputs": ["production", "^production"] + }, + "@nx/jest:jest": { + "cache": true, + "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"], + "options": { + "passWithNoTests": true + }, + "configurations": { + "ci": { + "ci": true, + "codeCoverage": true + } + } + } + }, + "namedInputs": { + "sharedGlobals": [], + "default": ["{projectRoot}/**/*", "sharedGlobals"], + "production": [ + "default", + "!{projectRoot}/.eslintrc.json", + "!{projectRoot}/eslint.config.cjs", + "!{projectRoot}/**/?(*.)+(spec|test).[jt]s?(x)?(.snap)", + "!{projectRoot}/tsconfig.spec.json", + "!{projectRoot}/jest.config.[jt]s", + "!{projectRoot}/src/test-setup.[jt]s", + "!{projectRoot}/test-setup.[jt]s" + ] + }, + "generators": { + "@nx/angular:library": { + "linter": "eslint", + "unitTestRunner": "jest" + }, + "@nx/angular:component": { + "style": "css" + } + } +} diff --git a/package-lock.json b/package-lock.json index b75ddc9ccf0..ce2e76505d7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -80,6 +80,8 @@ "devDependencies": { "@angular-builders/custom-webpack": "~17.0.2", "@angular-devkit/build-angular": "^17.3.11", + "@angular-devkit/core": "^17.3.11", + "@angular-devkit/schematics": "^17.3.11", "@angular-eslint/builder": "^17.5.3", "@angular-eslint/bundled-angular-compiler": "^17.5.3", "@angular-eslint/eslint-plugin": "^17.5.3", @@ -94,21 +96,33 @@ "@fortawesome/fontawesome-free": "^6.7.2", "@ngrx/store-devtools": "^17.1.1", "@ngtools/webpack": "^16.2.16", + "@nx/angular": "20.4.4", + "@nx/eslint-plugin": "^20.4.4", + "@nx/jest": "20.4.4", + "@nx/js": "20.4.4", + "@nx/workspace": "20.4.4", + "@schematics/angular": "^17.3.11", + "@swc-node/register": "~1.9.1", + "@swc/core": "~1.5.7", + "@swc/helpers": "~0.5.11", "@types/deep-freeze": "0.1.5", "@types/ejs": "^3.1.2", "@types/express": "^4.17.17", "@types/grecaptcha": "^3.0.9", "@types/jasmine": "~3.6.0", + "@types/jest": "^29.5.12", "@types/js-cookie": "2.2.6", "@types/lodash": "^4.17.14", - "@types/node": "^14.14.9", + "@types/node": "18.16.9", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", "@typescript-eslint/rule-tester": "^7.18.0", "@typescript-eslint/utils": "^7.18.0", + "autoprefixer": "^10.4.0", "axe-core": "^4.10.2", "compression-webpack-plugin": "^9.2.0", "copy-webpack-plugin": "^6.4.1", + "create-ts-index": "^1.14.0", "cross-env": "^7.0.3", "cypress": "^13.17.0", "cypress-axe": "^1.5.0", @@ -129,6 +143,10 @@ "jasmine": "^3.8.0", "jasmine-core": "^3.8.0", "jasmine-marbles": "0.9.2", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "jest-preset-angular": "~14.4.0", + "jsonc-eslint-parser": "^2.1.0", "karma": "^6.4.4", "karma-chrome-launcher": "~3.2.0", "karma-coverage-istanbul-reporter": "~3.0.3", @@ -136,17 +154,23 @@ "karma-jasmine-html-reporter": "^1.5.0", "karma-mocha-reporter": "2.2.5", "ng-mocks": "^14.13.2", + "ng-packagr": "~17.3.0", "ngx-mask": "14.2.4", "nodemon": "^2.0.22", + "nx": "20.4.4", "postcss": "^8.5", "postcss-import": "^14.0.0", "postcss-loader": "^4.0.3", "postcss-preset-env": "^7.4.2", + "postcss-url": "~10.1.3", + "prettier": "^2.6.2", "rimraf": "^3.0.2", "sass": "~1.83.4", "sass-loader": "^12.6.0", "sass-resources-loader": "^2.2.5", - "ts-node": "^8.10.2", + "ts-jest": "^29.1.0", + "ts-node": "10.9.1", + "tslib": "^2.3.0", "typescript": "~5.4.5", "webpack": "5.97.1", "webpack-cli": "^5.1.4", @@ -163,6 +187,12 @@ "version": "0.0.0", "dev": true }, + "node_modules/@adobe/css-tools": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz", + "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==", + "dev": true + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", @@ -792,17 +822,6 @@ "webpack": "^5.54.0" } }, - "node_modules/@angular-devkit/build-angular/node_modules/@types/node": { - "version": "22.7.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.7.tgz", - "integrity": "sha512-SRxCrrg9CL/y54aiMCG3edPKdprgMVGDXjA3gB8UmmBW5TcXzRUYAh8EWzTnSJFAd1rgImPELza+A3bJ+qxz8Q==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "undici-types": "~6.19.2" - } - }, "node_modules/@angular-devkit/build-angular/node_modules/@vitejs/plugin-basic-ssl": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@vitejs/plugin-basic-ssl/-/plugin-basic-ssl-1.1.0.tgz", @@ -2177,11 +2196,12 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", - "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", "dependencies": { - "@babel/highlight": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -2314,17 +2334,17 @@ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.7.tgz", - "integrity": "sha512-bD4WQhbkx80mAyj/WCm4ZHcF4rDxkoLFO6ph8/5/mQ3z4vAzltQXAmbc7GvVJx5H+lk5Mi5EmbTeox5nMGCsbw==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.26.9.tgz", + "integrity": "sha512-ubbUqCofvxPRurw5L8WTsCLSkQiVpov4Qx0WMA+jUN+nXBK8ADPlJO1grkFw5CWKC5+sZSOfuGMdX1aI1iT9Sg==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.25.7", - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/helper-replace-supers": "^7.25.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.25.7", - "@babel/traverse": "^7.25.7", + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/helper-replace-supers": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.26.9", "semver": "^6.3.1" }, "engines": { @@ -2335,12 +2355,12 @@ } }, "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.7.tgz", - "integrity": "sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2422,39 +2442,38 @@ } }, "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.7.tgz", - "integrity": "sha512-O31Ssjd5K6lPbTX9AAYpSKrZmLeagt9uwschJd+Ixo6QiRyfpvgtVQp8qrDR9UNFjZ8+DO34ZkdrN+BnPXemeA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz", + "integrity": "sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==", "dev": true, "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", - "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", - "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", + "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", "dependencies": { - "@babel/helper-module-imports": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2464,21 +2483,21 @@ } }, "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.7.tgz", - "integrity": "sha512-VAwcwuYhv/AT+Vfr28c9y6SHzTan1ryqrydSTFGjU0uDJHw3uZ+PduI8plCLkRsDnqK2DMEDmwrOQRsK/Ykjng==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz", + "integrity": "sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==", "dev": true, "dependencies": { - "@babel/types": "^7.25.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", - "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz", + "integrity": "sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==", "dev": true, "engines": { "node": ">=6.9.0" @@ -2514,14 +2533,14 @@ } }, "node_modules/@babel/helper-replace-supers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.7.tgz", - "integrity": "sha512-iy8JhqlUW9PtZkd4pHM96v6BdJ66Ba9yWSE4z0W4TvSZwLBPkyDsiIU3ENe4SmrzRBs76F7rQXTy1lYC49n6Lw==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz", + "integrity": "sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==", "dev": true, "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.25.7", - "@babel/helper-optimise-call-expression": "^7.25.7", - "@babel/traverse": "^7.25.7" + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.26.5" }, "engines": { "node": ">=6.9.0" @@ -2530,26 +2549,14 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", - "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", - "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.7.tgz", - "integrity": "sha512-pPbNbchZBkPMD50K0p3JGcFMNLVUCuU/ABybm/PGNj4JiHrpmNyqqCphBk4i19xXtNV0JhldQJJtbSW5aUvbyA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz", + "integrity": "sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==", "dev": true, "dependencies": { - "@babel/traverse": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2568,25 +2575,25 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", - "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", - "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", - "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "engines": { "node": ">=6.9.0" } @@ -2617,26 +2624,12 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", - "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.25.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/parser": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", - "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.9.tgz", + "integrity": "sha512-81NWa1njQblgZbQHxWHpxxCzNsa3ZwvFqpUg7P+NNUU6f3UU2jBEg4OlF/J6rl8+PQGh1q6/zWScd001YwcA5A==", "dependencies": { - "@babel/types": "^7.25.8" + "@babel/types": "^7.26.9" }, "bin": { "parser": "bin/babel-parser.js" @@ -2693,6 +2686,23 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.25.9.tgz", + "integrity": "sha512-smkNLL/O1ezy9Nhy4CNosc4Va+1wo5w4gzSZeLe6y6dM4mmHfYOCPolXQPHQxonZCF+ZyebxN9vqOolkYrSn5g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-decorators": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-proposal-private-property-in-object": { "version": "7.21.0-placeholder-for-preset-env.2", "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", @@ -2717,6 +2727,18 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", @@ -2744,6 +2766,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.25.9.tgz", + "integrity": "sha512-ryzI0McXUPJnRCvMo4lumIKZUzhYUO/ScI+Mz4YVaTLt04DHNSjEUjKVvbzQjZFLuod/cYEc07mJWhzl6v4DPg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", @@ -2822,6 +2859,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", @@ -2924,6 +2976,21 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz", + "integrity": "sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/plugin-syntax-unicode-sets-regex": { "version": "7.18.6", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", @@ -3302,14 +3369,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.25.7.tgz", - "integrity": "sha512-L9Gcahi0kKFYXvweO6n0wc3ZG1ChpSFdgG+eV1WYZ3/dGbJK7vvk91FgGgak8YwRgrCuihF8tE/Xg07EkL5COg==", + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz", + "integrity": "sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.25.7", - "@babel/helper-plugin-utils": "^7.25.7", - "@babel/helper-simple-access": "^7.25.7" + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3688,6 +3754,37 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.26.8.tgz", + "integrity": "sha512-bME5J9AC8ChwA7aEPJ6zym3w7aObZULHhbNLU0bKUhKsAkylkzUdq+0kdymh9rzi8nlNFl2bmldFBCKNJBUpuw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript/node_modules/@babel/helper-annotate-as-pure": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.7.tgz", @@ -3868,6 +3965,25 @@ "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, + "node_modules/@babel/preset-typescript": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz", + "integrity": "sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.25.9", + "@babel/plugin-transform-typescript": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/runtime": { "version": "7.26.0", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz", @@ -3880,28 +3996,28 @@ } }, "node_modules/@babel/template": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", - "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.26.9.tgz", + "integrity": "sha512-qyRplbeIpNZhmzOysF/wFMuP9sctmh2cFzRAZOn1YapxBsE1i9bJIY586R/WBLfLcmcBlM8ROBiQURnnNy+zfA==", "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/types": "^7.25.7" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", - "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", - "dependencies": { - "@babel/code-frame": "^7.25.7", - "@babel/generator": "^7.25.7", - "@babel/parser": "^7.25.7", - "@babel/template": "^7.25.7", - "@babel/types": "^7.25.7", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.9.tgz", + "integrity": "sha512-ZYW7L+pL8ahU5fXmNbPF+iZFHCv5scFak7MZ9bwaRPLUhHh7QQEMjZUg0HevihoqCM5iSYHN61EyCoZvqC+bxg==", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.9", + "@babel/parser": "^7.26.9", + "@babel/template": "^7.26.9", + "@babel/types": "^7.26.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -3910,11 +4026,12 @@ } }, "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.25.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", - "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.9.tgz", + "integrity": "sha512-kEWdzjOAUMW4hAyrzJ0ZaTOu9OmpyDIQicIh0zg0EEcEkYXZb2TjtBhnHi2ViX7PKwZqF4xwqfAm299/QMP3lg==", "dependencies": { - "@babel/types": "^7.25.7", + "@babel/parser": "^7.26.9", + "@babel/types": "^7.26.9", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", "jsesc": "^3.0.2" @@ -3924,9 +4041,9 @@ } }, "node_modules/@babel/traverse/node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "bin": { "jsesc": "bin/jsesc" }, @@ -3935,18 +4052,23 @@ } }, "node_modules/@babel/types": { - "version": "7.25.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", - "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.9.tgz", + "integrity": "sha512-Y3IR1cRnOxOCDvMmNiym7XpXQ93iGDDPHx+Zj+NM+rg0fBaShfQLkg+hKPaZCEvg5N/LeCo4+Rj/i3FuJsIQaw==", "dependencies": { - "@babel/helper-string-parser": "^7.25.7", - "@babel/helper-validator-identifier": "^7.25.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -4479,6 +4601,34 @@ "resolved": "https://registry.npmjs.org/@edsilv/http-status-codes/-/http-status-codes-1.0.3.tgz", "integrity": "sha512-HLK2FS5sZqxPqD53D6hhZxC6C8THTVwlyZDZ7J0iWsrB8JmMA69m/CQuNKZc1kki9WSVeck2fXna26NL0SE7cg==" }, + "node_modules/@emnapi/core": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.3.1.tgz", + "integrity": "sha512-pVGjBIt1Y6gg3EJN8jTcfpP/+uuRksIo055oE/OBkDNcjZqVbfkWCksG1Jp4yZnj3iKWyWX8fdG/j6UDYPbFog==", + "dev": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.1", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz", + "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.1.tgz", + "integrity": "sha512-iIBu7mwkq4UQGeMEM8bLwNK962nXdhodeScX4slfQnRhEMMzvYivHhutCIk8uojvmASXXPC2WNEjwxFWk72Oqw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@emotion/hash": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz", @@ -5219,2126 +5369,8239 @@ "node": ">=8" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">=6.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "node_modules/@jest/console/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=6.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "node_modules/@jest/console/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + "node_modules/@jest/console/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "node_modules/@jest/console/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/@kolkov/ngx-gallery": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@kolkov/ngx-gallery/-/ngx-gallery-2.0.1.tgz", - "integrity": "sha512-mTigRy9Ha7bqCF/+GNKeW2Oe8ZILuM5GGMw+ZbvTQWq3X5hngeFFgv8GFG49Py3biX67kb0NhqCP+msLe4wbXQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "peerDependencies": { - "@angular/animations": ">=13.0.0 <14", - "@angular/common": ">=13.0.0 <14", - "@angular/core": ">=13.0.0 <14" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "dev": true - }, - "node_modules/@ljharb/through": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", - "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", + "node_modules/@jest/console/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "call-bind": "^1.0.7" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/@material-ui/core": { - "version": "4.12.4", - "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", - "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/styles": "^4.11.5", - "@material-ui/system": "^4.12.2", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "@types/react-transition-group": "^4.2.0", - "clsx": "^1.0.4", - "hoist-non-react-statics": "^3.3.2", - "popper.js": "1.16.1-lts", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0", - "react-transition-group": "^4.4.0" + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "@types/react": { + "node-notifier": { "optional": true } } }, - "node_modules/@material-ui/core/node_modules/popper.js": { - "version": "1.16.1-lts", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", - "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==", - "license": "MIT" - }, - "node_modules/@material-ui/icons": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", - "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", + "node_modules/@jest/core/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.4.4" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "@material-ui/core": "^4.0.0", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@material-ui/lab": { - "version": "4.0.0-alpha.61", - "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz", - "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "@material-ui/core": "^4.12.1", - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "node": ">=10" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" } + ], + "engines": { + "node": ">=8" } }, - "node_modules/@material-ui/styles": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", - "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", - "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "node_modules/@jest/core/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.4.4", - "@emotion/hash": "^0.8.0", - "@material-ui/types": "5.1.0", - "@material-ui/utils": "^4.11.3", - "clsx": "^1.0.4", - "csstype": "^2.5.2", - "hoist-non-react-statics": "^3.3.2", - "jss": "^10.5.1", - "jss-plugin-camel-case": "^10.5.1", - "jss-plugin-default-unit": "^10.5.1", - "jss-plugin-global": "^10.5.1", - "jss-plugin-nested": "^10.5.1", - "jss-plugin-props-sort": "^10.5.1", - "jss-plugin-rule-value-function": "^10.5.1", - "jss-plugin-vendor-prefixer": "^10.5.1", - "prop-types": "^15.7.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/core/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@material-ui/system": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", - "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.4.4", - "@material-ui/utils": "^4.11.3", - "csstype": "^2.5.2", - "prop-types": "^15.7.2" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">=8.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/material-ui" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, - "peerDependencies": { - "@types/react": "^16.8.6 || ^17.0.0", - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@material-ui/types": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", - "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, "peerDependencies": { - "@types/react": "*" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "@types/react": { + "node-notifier": { "optional": true } } }, - "node_modules/@material-ui/utils": { - "version": "4.11.3", - "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", - "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", + "node_modules/@jest/reporters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.4.4", - "prop-types": "^15.7.2", - "react-is": "^16.8.0 || ^17.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">=8" }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0", - "react-dom": "^16.8.0 || ^17.0.0" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@ng-bootstrap/ng-bootstrap": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-11.0.1.tgz", - "integrity": "sha512-xpXpW2x2S9ZQhEu5kCmEAFf8WvkVD+rcKb1NLQiLuiZgAQR7GXVexXy5Y+RIvTjAQmPEVyxaSgYiJA6sWNJLNw==", + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "tslib": "^2.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "peerDependencies": { - "@angular/common": "^13.0.0", - "@angular/core": "^13.0.0", - "@angular/forms": "^13.0.0", - "@angular/localize": "^13.0.0", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@ng-dynamic-forms/core": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@ng-dynamic-forms/core/-/core-16.0.0.tgz", - "integrity": "sha512-fH0OIgFs/bWkVnnOtDoAAXHXb3K2UOQXm7qEgO9hg86keE2x3Tu/G/Ma6tRVi5+RfKRgvI2Q6JlMLHIQHYFAgA==", - "dependencies": { - "tslib": "^2.0.0" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "@angular/common": "^15.0.0", - "@angular/core": "^15.0.0", - "@angular/forms": "^15.0.0", - "core-js": "^3.8.1", - "rxjs": "^7.5.5" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@ng-dynamic-forms/ui-ng-bootstrap": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@ng-dynamic-forms/ui-ng-bootstrap/-/ui-ng-bootstrap-16.0.0.tgz", - "integrity": "sha512-qopjC+j1wfOaB6a/xSUKEpl5vohEospvhLqPl33BgNH557DQg3x3oI/oPo3caLRhIo2vpKGIeuEN5Itok0B3vg==", + "node_modules/@jest/reporters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" + "color-name": "~1.1.4" }, - "peerDependencies": { - "@ng-bootstrap/ng-bootstrap": "^11.0.0", - "@ng-dynamic-forms/core": "^16.0.0", - "bootstrap": "^4.0.0", - "ngx-mask": "^13.0.0" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@ngrx/effects": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-17.2.0.tgz", - "integrity": "sha512-tXDJNsuBtbvI/7+vYnkDKKpUvLbopw1U5G6LoPnKNrbTPsPcUGmCqF5Su/ZoRN3BhXjt2j+eoeVdpBkxdxMRgg==", - "dependencies": { - "@ngrx/operators": "17.0.0-beta.0", - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@angular/core": "^17.0.0", - "@ngrx/store": "17.2.0", - "rxjs": "^6.5.3 || ^7.5.0" + "node_modules/@jest/reporters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/reporters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/@ngrx/operators": { - "version": "17.0.0-beta.0", - "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-17.0.0-beta.0.tgz", - "integrity": "sha512-EbO8AONuQ6zo2v/mPyBOi4y0CTAp1x4Z+bx7ZF+Pd8BL5ma53BTCL1TmzaeK5zPUe0yApudLk9/ZbHXPnVox5A==", + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, "dependencies": { - "tslib": "^2.3.0" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, - "peerDependencies": { - "rxjs": "^6.5.3 || ^7.4.0" + "engines": { + "node": ">=10" } }, - "node_modules/@ngrx/router-store": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-17.2.0.tgz", - "integrity": "sha512-Vynfg2xsB57Oedf0Bb6mjC4MIeaF2OtAewsSnppGIM2b8pwL5W89r2+q2SGc2D6Mp3/pZF3HRI6NxhnHWJdYmg==", + "node_modules/@jest/reporters/node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, - "peerDependencies": { - "@angular/common": "^17.0.0", - "@angular/core": "^17.0.0", - "@angular/router": "^17.0.0", - "@ngrx/store": "17.2.0", - "rxjs": "^6.5.3 || ^7.5.0" + "engines": { + "node": ">=10" } }, - "node_modules/@ngrx/store": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-17.2.0.tgz", - "integrity": "sha512-7wKgZ59B/6yQSvvsU0DQXipDqpkAXv7LwcXLD5Ww7nvqN0fQoRPThMh4+Wv55DCJhE0bQc1NEMciLA47uRt7Wg==", + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, - "peerDependencies": { - "@angular/core": "^17.0.0", - "rxjs": "^6.5.3 || ^7.5.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@ngrx/store-devtools": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-17.2.0.tgz", - "integrity": "sha512-ig0qr6hMexZGnrlxfHvZmu5CanRjH7hhx60XUbB5BdBvWJIIRaWKPLcsniiDUhljAD87gvzrrilbCTiML38+CA==", + "node_modules/@jest/reporters/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "tslib": "^2.0.0" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "@ngrx/store": "17.2.0", - "rxjs": "^6.5.3 || ^7.5.0" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@ngtools/webpack": { - "version": "16.2.16", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.16.tgz", - "integrity": "sha512-4gm2allK0Pjy/Lxb9IGRnhEZNEOJSOTWwy09VOdHouV2ODRK7Tto2LgteaFJUUSLkuvWRsI7pfuA6yrz8KDfHw==", + "node_modules/@jest/reporters/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { - "node": "^16.14.0 || >=18.10.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "@angular/compiler-cli": "^16.0.0", - "typescript": ">=4.9.3 <5.2", - "webpack": "^5.54.0" + "node": ">=0.10.0" } }, - "node_modules/@ngx-translate/core": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-14.0.0.tgz", - "integrity": "sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==", + "node_modules/@jest/reporters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "tslib": "^2.3.0" + "has-flag": "^4.0.0" }, - "peerDependencies": { - "@angular/core": ">=13.0.0", - "rxjs": "^6.5.3 || ^7.4.0" + "engines": { + "node": ">=8" } }, - "node_modules/@nicky-lenaers/ngx-scroll-to": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@nicky-lenaers/ngx-scroll-to/-/ngx-scroll-to-14.0.0.tgz", - "integrity": "sha512-nORagPmAQYDjB5jyQ3awGhbnKTKVARZUCK8FJIe46XjPQX2CI9+WBYvsdqq0CsNWVzCjhnC0Om6krzjOTrTHYQ==", + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, "dependencies": { - "tslib": "^2.3.0" + "@sinclair/typebox": "^0.27.8" }, "engines": { - "node": ">=16.18.0", - "yarn": ">=1.22.18" - }, - "peerDependencies": { - "@angular/common": "^14.0.0", - "@angular/core": "^14.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { - "node": ">= 8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", - "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.0.tgz", - "integrity": "sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==", + "node_modules/@jest/transform/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=18" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@npmcli/git": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz", - "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==", + "node_modules/@jest/transform/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@npmcli/promise-spawn": "^7.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^9.0.0", - "proc-log": "^4.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^4.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/@jest/transform/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@jest/transform/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=16" + "node": ">=8" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.0.tgz", - "integrity": "sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==", + "node_modules/@jest/transform/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/@npmcli/git/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "color-convert": "^2.0.1" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", - "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "npm-bundled": "^3.0.0", - "npm-normalize-package-bin": "^3.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", + "node_modules/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/@npmcli/node-gyp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", - "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@npmcli/package-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", - "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "@npmcli/git": "^5.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^7.0.0", - "json-parse-even-better-errors": "^3.0.0", - "normalize-package-data": "^6.0.0", - "proc-log": "^4.0.0", - "semver": "^7.5.3" + "has-flag": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.3.tgz", - "integrity": "sha512-Q38SGlYRpVtDBPSWEylRyctn7uDeTp4NQERTLiCT1FqA9JXPYWqAVmQU6qh4r/zMM5ehxTcbaO8EjhWnvEhmyg==", - "dev": true, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=6.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", - "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", "dev": true, "dependencies": { - "which": "^4.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@jsonjoy.com/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==", "dev": true, "engines": { - "node": ">=16" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "node_modules/@jsonjoy.com/json-pack": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/json-pack/-/json-pack-1.1.1.tgz", + "integrity": "sha512-osjeBqMJ2lb/j/M8NCPjs1ylqWIcTRTycIhVB5pt6LgzgeRSb0YRZ7j9RfA8wIUrsr/medIuhVyonXRZWLyfdw==", "dev": true, "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@jsonjoy.com/base64": "^1.1.1", + "@jsonjoy.com/util": "^1.1.2", + "hyperdyperid": "^1.2.0", + "thingies": "^1.20.0" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/redact": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", - "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", + "node_modules/@jsonjoy.com/util": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jsonjoy.com/util/-/util-1.5.0.tgz", + "integrity": "sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==", "dev": true, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" } }, - "node_modules/@npmcli/run-script": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", - "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", - "dev": true, + "node_modules/@kolkov/ngx-gallery": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@kolkov/ngx-gallery/-/ngx-gallery-2.0.1.tgz", + "integrity": "sha512-mTigRy9Ha7bqCF/+GNKeW2Oe8ZILuM5GGMw+ZbvTQWq3X5hngeFFgv8GFG49Py3biX67kb0NhqCP+msLe4wbXQ==", "dependencies": { - "@npmcli/node-gyp": "^3.0.0", - "@npmcli/package-json": "^5.0.0", - "@npmcli/promise-spawn": "^7.0.0", - "node-gyp": "^10.0.0", - "which": "^4.0.0" + "tslib": "^2.3.0" }, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "peerDependencies": { + "@angular/animations": ">=13.0.0 <14", + "@angular/common": ">=13.0.0 <14", + "@angular/core": ">=13.0.0 <14" } }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "engines": { - "node": ">=16" - } + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "dev": true }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "node_modules/@ljharb/through": { + "version": "2.3.13", + "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", + "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", "dev": true, "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "call-bind": "^1.0.7" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/@parcel/watcher": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", - "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", - "dev": true, - "optional": true, + "node_modules/@material-ui/core": { + "version": "4.12.4", + "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz", + "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" + "@babel/runtime": "^7.4.4", + "@material-ui/styles": "^4.11.5", + "@material-ui/system": "^4.12.2", + "@material-ui/types": "5.1.0", + "@material-ui/utils": "^4.11.3", + "@types/react-transition-group": "^4.2.0", + "clsx": "^1.0.4", + "hoist-non-react-statics": "^3.3.2", + "popper.js": "1.16.1-lts", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0", + "react-transition-group": "^4.4.0" }, "engines": { - "node": ">= 10.0.0" + "node": ">=8.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/material-ui" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.4.1", - "@parcel/watcher-darwin-arm64": "2.4.1", - "@parcel/watcher-darwin-x64": "2.4.1", - "@parcel/watcher-freebsd-x64": "2.4.1", - "@parcel/watcher-linux-arm-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-glibc": "2.4.1", - "@parcel/watcher-linux-arm64-musl": "2.4.1", - "@parcel/watcher-linux-x64-glibc": "2.4.1", - "@parcel/watcher-linux-x64-musl": "2.4.1", - "@parcel/watcher-win32-arm64": "2.4.1", - "@parcel/watcher-win32-ia32": "2.4.1", - "@parcel/watcher-win32-x64": "2.4.1" + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", - "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], + "node_modules/@material-ui/core/node_modules/popper.js": { + "version": "1.16.1-lts", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz", + "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA==" + }, + "node_modules/@material-ui/icons": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz", + "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==", + "dependencies": { + "@babel/runtime": "^7.4.4" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@material-ui/core": "^4.0.0", + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", - "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@material-ui/lab": { + "version": "4.0.0-alpha.61", + "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz", + "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.11.3", + "clsx": "^1.0.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@material-ui/core": "^4.12.1", + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", - "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/@material-ui/styles": { + "version": "4.11.5", + "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz", + "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==", + "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@emotion/hash": "^0.8.0", + "@material-ui/types": "5.1.0", + "@material-ui/utils": "^4.11.3", + "clsx": "^1.0.4", + "csstype": "^2.5.2", + "hoist-non-react-statics": "^3.3.2", + "jss": "^10.5.1", + "jss-plugin-camel-case": "^10.5.1", + "jss-plugin-default-unit": "^10.5.1", + "jss-plugin-global": "^10.5.1", + "jss-plugin-nested": "^10.5.1", + "jss-plugin-props-sort": "^10.5.1", + "jss-plugin-rule-value-function": "^10.5.1", + "jss-plugin-vendor-prefixer": "^10.5.1", + "prop-types": "^15.7.2" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://opencollective.com/material-ui" + }, + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", - "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], + "node_modules/@material-ui/system": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz", + "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==", + "dependencies": { + "@babel/runtime": "^7.4.4", + "@material-ui/utils": "^4.11.3", + "csstype": "^2.5.2", + "prop-types": "^15.7.2" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", - "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "url": "https://opencollective.com/material-ui" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "@types/react": "^16.8.6 || ^17.0.0", + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", - "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "node_modules/@material-ui/types": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz", + "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==", + "peerDependencies": { + "@types/react": "*" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", - "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], + "node_modules/@material-ui/utils": { + "version": "4.11.3", + "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz", + "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==", + "dependencies": { + "@babel/runtime": "^7.4.4", + "prop-types": "^15.7.2", + "react-is": "^16.8.0 || ^17.0.0" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0", + "react-dom": "^16.8.0 || ^17.0.0" } }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", - "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", - "cpu": [ - "x64" - ], + "node_modules/@module-federation/bridge-react-webpack-plugin": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/bridge-react-webpack-plugin/-/bridge-react-webpack-plugin-0.8.11.tgz", + "integrity": "sha512-Ywm7W4z/lvSqGxmCxnP8p9wBJXm6SSsg9/sV5nslMlkAGUiKFCvWf/uU06Wig+MdARVnnx7rMR/yxFe73qF7VA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "dependencies": { + "@module-federation/sdk": "0.8.11", + "@types/semver": "7.5.8", + "semver": "7.6.3" } }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", - "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", - "cpu": [ - "x64" - ], + "node_modules/@module-federation/bridge-react-webpack-plugin/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "bin": { + "semver": "bin/semver.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=10" } }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", - "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", - "cpu": [ - "arm64" - ], + "node_modules/@module-federation/data-prefetch": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/data-prefetch/-/data-prefetch-0.8.11.tgz", + "integrity": "sha512-Jq6lz2qfWrqGZQXWSXuOnRqq38lYdnzghoRn0extaVxmqCQHipILW79QRccK03rT2DSjttG6DNT50DT0z8URWw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "@module-federation/runtime": "0.8.11", + "@module-federation/sdk": "0.8.11", + "fs-extra": "9.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "react": ">=16.9.0", + "react-dom": ">=16.9.0" } }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", - "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", - "cpu": [ - "ia32" - ], + "node_modules/@module-federation/dts-plugin": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/dts-plugin/-/dts-plugin-0.8.11.tgz", + "integrity": "sha512-mNcIGO9vz0PuIc2E8Q5oEBim2c4O7lAIZBdfDMaEGsI/Q6CTGH5ITCLb4clpc53oQIsjAVIo/ZrtmmRg4/sF/g==", "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" + "dependencies": { + "@module-federation/error-codes": "0.8.11", + "@module-federation/managers": "0.8.11", + "@module-federation/sdk": "0.8.11", + "@module-federation/third-party-dts-extractor": "0.8.11", + "adm-zip": "^0.5.10", + "ansi-colors": "^4.1.3", + "axios": "^1.7.4", + "chalk": "3.0.0", + "fs-extra": "9.1.0", + "isomorphic-ws": "5.0.0", + "koa": "2.15.3", + "lodash.clonedeepwith": "4.5.0", + "log4js": "6.9.1", + "node-schedule": "2.1.1", + "rambda": "^9.1.0", + "ws": "8.18.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "vue-tsc": { + "optional": true + } } }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", - "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", - "cpu": [ - "x64" - ], + "node_modules/@module-federation/dts-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@parcel/watcher/node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "node_modules/@module-federation/dts-plugin/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, - "optional": true + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@module-federation/dts-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=14" + "node": ">=7.0.0" } }, - "node_modules/@react-dnd/asap": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz", - "integrity": "sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg==" - }, - "node_modules/@react-dnd/invariant": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz", - "integrity": "sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw==" + "node_modules/@module-federation/dts-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/@react-dnd/shallowequal": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", - "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==" + "node_modules/@module-federation/dts-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/@redux-saga/core": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.3.0.tgz", - "integrity": "sha512-L+i+qIGuyWn7CIg7k1MteHGfttKPmxwZR5E7OsGikCL2LzYA0RERlaUY00Y3P3ZV2EYgrsYlBrGs6cJP5OKKqA==", + "node_modules/@module-federation/dts-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.6.3", - "@redux-saga/deferred": "^1.2.1", - "@redux-saga/delay-p": "^1.2.1", - "@redux-saga/is": "^1.1.3", - "@redux-saga/symbols": "^1.1.3", - "@redux-saga/types": "^1.2.1", - "typescript-tuple": "^2.2.1" + "has-flag": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/redux-saga" + "engines": { + "node": ">=8" } }, - "node_modules/@redux-saga/deferred": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.2.1.tgz", - "integrity": "sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g==" - }, - "node_modules/@redux-saga/delay-p": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.2.1.tgz", - "integrity": "sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w==", + "node_modules/@module-federation/dts-plugin/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@module-federation/enhanced": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/enhanced/-/enhanced-0.8.11.tgz", + "integrity": "sha512-fjnW0j2suGr2AvR6YxjL6CJKj0zghmHcgxbzCkQDG4DkxVnNr86JoPOyfoWwa/7juX5HudlXitalBfo7bupYgA==", + "dev": true, "dependencies": { - "@redux-saga/symbols": "^1.1.3" + "@module-federation/bridge-react-webpack-plugin": "0.8.11", + "@module-federation/data-prefetch": "0.8.11", + "@module-federation/dts-plugin": "0.8.11", + "@module-federation/error-codes": "0.8.11", + "@module-federation/inject-external-runtime-core-plugin": "0.8.11", + "@module-federation/managers": "0.8.11", + "@module-federation/manifest": "0.8.11", + "@module-federation/rspack": "0.8.11", + "@module-federation/runtime-tools": "0.8.11", + "@module-federation/sdk": "0.8.11", + "btoa": "^1.2.1", + "upath": "2.0.1" + }, + "peerDependencies": { + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + }, + "webpack": { + "optional": true + } } }, - "node_modules/@redux-saga/is": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@redux-saga/is/-/is-1.1.3.tgz", - "integrity": "sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q==", + "node_modules/@module-federation/error-codes": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.11.tgz", + "integrity": "sha512-mqt8/BQq11Cc/zbuHtojTwbZ78LJiy4f/cm9UsQPWf65Pqxi4Ticn40wccVFq8O9gee/QEi2Mf3XiwSf2SHl0A==", + "dev": true + }, + "node_modules/@module-federation/inject-external-runtime-core-plugin": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/inject-external-runtime-core-plugin/-/inject-external-runtime-core-plugin-0.8.11.tgz", + "integrity": "sha512-sezMsApV9Ccvwbe5wZlZ1iNTpbns68lLHHsATjDzUsnfbnY5wT/CrYcDi/vb61gELG02JnHiUiFR/8r/alKVxQ==", + "dev": true, + "peerDependencies": { + "@module-federation/runtime-tools": "0.8.11" + } + }, + "node_modules/@module-federation/managers": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/managers/-/managers-0.8.11.tgz", + "integrity": "sha512-5fncfxzrb450W3jTWxnOFNiIx2ReT+jhDPMUmJCKoGFa1etpbVw+TVp2l+HgR3tG1sxOt3tdJNjm9Spko8IxLQ==", + "dev": true, "dependencies": { - "@redux-saga/symbols": "^1.1.3", - "@redux-saga/types": "^1.2.1" + "@module-federation/sdk": "0.8.11", + "find-pkg": "2.0.0", + "fs-extra": "9.1.0" } }, - "node_modules/@redux-saga/symbols": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.1.3.tgz", - "integrity": "sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg==" + "node_modules/@module-federation/manifest": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/manifest/-/manifest-0.8.11.tgz", + "integrity": "sha512-3yR+ViwltDI9gfHjRl+IdDGMms2/e/4TyOdQUaC10haZqzcbxNEY52U5wB9PpegtgF5YqjnMgzdZpUeJfxjsHA==", + "dev": true, + "dependencies": { + "@module-federation/dts-plugin": "0.8.11", + "@module-federation/managers": "0.8.11", + "@module-federation/sdk": "0.8.11", + "chalk": "3.0.0", + "find-pkg": "2.0.0" + } }, - "node_modules/@redux-saga/types": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.2.1.tgz", - "integrity": "sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA==" + "node_modules/@module-federation/manifest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/@researchgate/react-intersection-observer": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@researchgate/react-intersection-observer/-/react-intersection-observer-1.3.5.tgz", - "integrity": "sha512-aYlsex5Dd6BAHMJvJrUoFp8gzgMSL27xFvrxkVYW0bV1RMAapVsO+QeYLtTaSF/QCflktODodvv+wJm49oMnnQ==", + "node_modules/@module-federation/manifest/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=10.18.1" + "node": ">=8" + } + }, + "node_modules/@module-federation/manifest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, - "peerDependencies": { - "react": "^16.3.2", - "react-dom": "^16.3.2" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", - "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", - "cpu": [ - "arm" - ], + "node_modules/@module-federation/manifest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@module-federation/manifest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "optional": true, - "os": [ - "android" - ] + "engines": { + "node": ">=8" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", - "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", - "cpu": [ - "arm64" - ], + "node_modules/@module-federation/manifest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "optional": true, - "os": [ - "android" - ] + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", - "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", - "cpu": [ - "arm64" - ], + "node_modules/@module-federation/node": { + "version": "2.6.24", + "resolved": "https://registry.npmjs.org/@module-federation/node/-/node-2.6.24.tgz", + "integrity": "sha512-8jN8COzeyLsdEQr9qwtCK15mosbMEX77CcJmybe46aMDdKrfmjJjeKWnJZkxfr6RwC6/CDscjQM9tXA18TAqDA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@module-federation/enhanced": "0.8.11", + "@module-federation/runtime": "0.8.11", + "@module-federation/sdk": "0.8.11", + "@module-federation/utilities": "3.1.42", + "btoa": "1.2.1", + "encoding": "^0.1.13", + "node-fetch": "2.7.0" + }, + "peerDependencies": { + "react": "^16||^17||^18", + "react-dom": "^16||^17||^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", - "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", - "cpu": [ - "x64" - ], + "node_modules/@module-federation/rspack": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/rspack/-/rspack-0.8.11.tgz", + "integrity": "sha512-z5xHETXGNqYEGbRT4HWAA7zb6qZ7zd6sVDTCbvSiDJ6pST78Yrkz3B6vbMhgh37LrhXbULudIo/fe0z/v/EWdA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ] + "dependencies": { + "@module-federation/bridge-react-webpack-plugin": "0.8.11", + "@module-federation/dts-plugin": "0.8.11", + "@module-federation/inject-external-runtime-core-plugin": "0.8.11", + "@module-federation/managers": "0.8.11", + "@module-federation/manifest": "0.8.11", + "@module-federation/runtime-tools": "0.8.11", + "@module-federation/sdk": "0.8.11" + }, + "peerDependencies": { + "@rspack/core": ">=0.7", + "typescript": "^4.9.0 || ^5.0.0", + "vue-tsc": ">=1.0.24" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vue-tsc": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", - "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", - "cpu": [ - "arm" - ], + "node_modules/@module-federation/runtime": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.11.tgz", + "integrity": "sha512-07aBwU5AJltbspOot0gVYDA0PAMNkjBBaIRIUMsLNj9MGx01/YKl13z239UdC0Fk4hFlexpkef8ZvnMPgp4YFA==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@module-federation/error-codes": "0.8.11", + "@module-federation/runtime-core": "0.6.19", + "@module-federation/sdk": "0.8.11" + } }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", - "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", - "cpu": [ - "arm" - ], + "node_modules/@module-federation/runtime-core": { + "version": "0.6.19", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-core/-/runtime-core-0.6.19.tgz", + "integrity": "sha512-PDMQIkxEWlF9c1ezDl1f+DwzoNoWan/jfhtBoOjp0JiMtPNPe3ZUH0v2++Cbaxc/BRtHT+ILCSDEezC4zF98uw==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@module-federation/error-codes": "0.8.11", + "@module-federation/sdk": "0.8.11" + } }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", - "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", - "cpu": [ - "arm64" - ], + "node_modules/@module-federation/runtime-tools": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.8.11.tgz", + "integrity": "sha512-whomac5Hd4+fuUhgT+f0eAino5OwhDSowkXmJocZkdEZfudYD1qWH1qc5DQeEZ69zsrsb7q8S8M0d8Q+7bsVzQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "@module-federation/runtime": "0.8.11", + "@module-federation/webpack-bundler-runtime": "0.8.11" + } }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", - "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", - "cpu": [ - "arm64" - ], + "node_modules/@module-federation/sdk": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.11.tgz", + "integrity": "sha512-h9oXuOABJ5O77TeWZoLO3KNq7HywdZkX2c2rmYEQRRrkuXHgHAQu0nEs7ZuL5YDWNQLUMxoOyTH+sK+JWgvnKQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "isomorphic-rslog": "0.0.7" + } }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", - "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", - "cpu": [ - "ppc64" - ], + "node_modules/@module-federation/third-party-dts-extractor": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/third-party-dts-extractor/-/third-party-dts-extractor-0.8.11.tgz", + "integrity": "sha512-X1esz2m836hp/eKH230AerMKITVlNfeNeaSyNX3+YPqOK8EkdMSCKkf/K5zYuqdY0ypNJNYkWPIx8uYFOfYe5Q==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "find-pkg": "2.0.0", + "fs-extra": "9.1.0", + "resolve": "1.22.8" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", - "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", - "cpu": [ - "riscv64" - ], + "node_modules/@module-federation/utilities": { + "version": "3.1.42", + "resolved": "https://registry.npmjs.org/@module-federation/utilities/-/utilities-3.1.42.tgz", + "integrity": "sha512-TdBJj2YUMXxS3exuYuB3syOCXNm8I4y5hstmm9XgjEYgUANX9kElBisLYXIPtdGwSvBWAEFvXPE24nvVNG9OtA==", + "dev": true, + "dependencies": { + "@module-federation/sdk": "0.8.11" + }, + "peerDependencies": { + "react": "^16 || ^17 || ^18", + "react-dom": "^16 || ^17 || ^18", + "webpack": "^5.40.0" + }, + "peerDependenciesMeta": { + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.11.tgz", + "integrity": "sha512-lbQyJjWZrg+90v9BJSMay5EIqnl/NrJGteR9eqeN1P0YLfXVq46gN1qqdaP6aHMnPbSU3PlFTNO/dgJzciLGTg==", + "dev": true, + "dependencies": { + "@module-federation/runtime": "0.8.11", + "@module-federation/sdk": "0.8.11" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.4.tgz", + "integrity": "sha512-9zESzOO5aDByvhIAsOy9TbpZ0Ur2AJbUI7UT73kcUTS2mxAMHOBaa1st/jAymNoCtvrit99kkzT1FZuXVcgfIQ==", + "dev": true, + "dependencies": { + "@emnapi/core": "^1.1.0", + "@emnapi/runtime": "^1.1.0", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@ng-bootstrap/ng-bootstrap": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/@ng-bootstrap/ng-bootstrap/-/ng-bootstrap-11.0.1.tgz", + "integrity": "sha512-xpXpW2x2S9ZQhEu5kCmEAFf8WvkVD+rcKb1NLQiLuiZgAQR7GXVexXy5Y+RIvTjAQmPEVyxaSgYiJA6sWNJLNw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^13.0.0", + "@angular/core": "^13.0.0", + "@angular/forms": "^13.0.0", + "@angular/localize": "^13.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@ng-dynamic-forms/core": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@ng-dynamic-forms/core/-/core-16.0.0.tgz", + "integrity": "sha512-fH0OIgFs/bWkVnnOtDoAAXHXb3K2UOQXm7qEgO9hg86keE2x3Tu/G/Ma6tRVi5+RfKRgvI2Q6JlMLHIQHYFAgA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^15.0.0", + "@angular/core": "^15.0.0", + "@angular/forms": "^15.0.0", + "core-js": "^3.8.1", + "rxjs": "^7.5.5" + } + }, + "node_modules/@ng-dynamic-forms/ui-ng-bootstrap": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@ng-dynamic-forms/ui-ng-bootstrap/-/ui-ng-bootstrap-16.0.0.tgz", + "integrity": "sha512-qopjC+j1wfOaB6a/xSUKEpl5vohEospvhLqPl33BgNH557DQg3x3oI/oPo3caLRhIo2vpKGIeuEN5Itok0B3vg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@ng-bootstrap/ng-bootstrap": "^11.0.0", + "@ng-dynamic-forms/core": "^16.0.0", + "bootstrap": "^4.0.0", + "ngx-mask": "^13.0.0" + } + }, + "node_modules/@ngrx/effects": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/effects/-/effects-17.2.0.tgz", + "integrity": "sha512-tXDJNsuBtbvI/7+vYnkDKKpUvLbopw1U5G6LoPnKNrbTPsPcUGmCqF5Su/ZoRN3BhXjt2j+eoeVdpBkxdxMRgg==", + "dependencies": { + "@ngrx/operators": "17.0.0-beta.0", + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^17.0.0", + "@ngrx/store": "17.2.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngrx/operators": { + "version": "17.0.0-beta.0", + "resolved": "https://registry.npmjs.org/@ngrx/operators/-/operators-17.0.0-beta.0.tgz", + "integrity": "sha512-EbO8AONuQ6zo2v/mPyBOi4y0CTAp1x4Z+bx7ZF+Pd8BL5ma53BTCL1TmzaeK5zPUe0yApudLk9/ZbHXPnVox5A==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@ngrx/router-store": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/router-store/-/router-store-17.2.0.tgz", + "integrity": "sha512-Vynfg2xsB57Oedf0Bb6mjC4MIeaF2OtAewsSnppGIM2b8pwL5W89r2+q2SGc2D6Mp3/pZF3HRI6NxhnHWJdYmg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": "^17.0.0", + "@angular/core": "^17.0.0", + "@angular/router": "^17.0.0", + "@ngrx/store": "17.2.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngrx/store": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/store/-/store-17.2.0.tgz", + "integrity": "sha512-7wKgZ59B/6yQSvvsU0DQXipDqpkAXv7LwcXLD5Ww7nvqN0fQoRPThMh4+Wv55DCJhE0bQc1NEMciLA47uRt7Wg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/core": "^17.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngrx/store-devtools": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/@ngrx/store-devtools/-/store-devtools-17.2.0.tgz", + "integrity": "sha512-ig0qr6hMexZGnrlxfHvZmu5CanRjH7hhx60XUbB5BdBvWJIIRaWKPLcsniiDUhljAD87gvzrrilbCTiML38+CA==", + "dev": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@ngrx/store": "17.2.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@ngtools/webpack": { + "version": "16.2.16", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-16.2.16.tgz", + "integrity": "sha512-4gm2allK0Pjy/Lxb9IGRnhEZNEOJSOTWwy09VOdHouV2ODRK7Tto2LgteaFJUUSLkuvWRsI7pfuA6yrz8KDfHw==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^16.0.0", + "typescript": ">=4.9.3 <5.2", + "webpack": "^5.54.0" + } + }, + "node_modules/@ngx-translate/core": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-14.0.0.tgz", + "integrity": "sha512-UevdwNCXMRCdJv//0kC8h2eSfmi02r29xeE8E9gJ1Al4D4jEJ7eiLPdjslTMc21oJNGguqqWeEVjf64SFtvw2w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=13.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@nicky-lenaers/ngx-scroll-to": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@nicky-lenaers/ngx-scroll-to/-/ngx-scroll-to-14.0.0.tgz", + "integrity": "sha512-nORagPmAQYDjB5jyQ3awGhbnKTKVARZUCK8FJIe46XjPQX2CI9+WBYvsdqq0CsNWVzCjhnC0Om6krzjOTrTHYQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": ">=16.18.0", + "yarn": ">=1.22.18" + }, + "peerDependencies": { + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.0.tgz", + "integrity": "sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/@npmcli/git": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.7.tgz", + "integrity": "sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "lru-cache": "^10.0.1", + "npm-pick-manifest": "^9.0.0", + "proc-log": "^4.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.0.tgz", + "integrity": "sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@npmcli/git/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-2.1.0.tgz", + "integrity": "sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==", + "dev": true, + "dependencies": { + "npm-bundled": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" + }, + "bin": { + "installed-package-contents": "bin/index.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-3.0.0.tgz", + "integrity": "sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.0.tgz", + "integrity": "sha512-qe/kiqqkW0AGtvBjL8TJKZk/eBBSpnJkUWvHdQ9jM2lKHXRYYJuyNpJPlJw3c8QjC2ow6NZYiLExhUaeJelbxQ==", + "dev": true, + "dependencies": { + "@npmcli/git": "^5.0.0", + "glob": "^10.2.2", + "hosted-git-info": "^7.0.0", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "proc-log": "^4.0.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/package-json/node_modules/glob": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.3.tgz", + "integrity": "sha512-Q38SGlYRpVtDBPSWEylRyctn7uDeTp4NQERTLiCT1FqA9JXPYWqAVmQU6qh4r/zMM5ehxTcbaO8EjhWnvEhmyg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@npmcli/package-json/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@npmcli/package-json/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-7.0.2.tgz", + "integrity": "sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==", + "dev": true, + "dependencies": { + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/promise-spawn/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/redact": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@npmcli/redact/-/redact-1.1.0.tgz", + "integrity": "sha512-PfnWuOkQgu7gCbnSsAisaX7hKOdZ4wSAhAzH3/ph5dSGau52kCRrMMGbiSQLwyTZpgldkZ49b0brkOr1AzGBHQ==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-7.0.4.tgz", + "integrity": "sha512-9ApYM/3+rBt9V80aYg6tZfzj3UWdiYyCt7gJUD1VJKvWF5nwKDSICXbYIQbspFTq6TOpbsEtIC0LArB8d9PFmg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^3.0.0", + "@npmcli/package-json": "^5.0.0", + "@npmcli/promise-spawn": "^7.0.0", + "node-gyp": "^10.0.0", + "which": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/run-script/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@npmcli/run-script/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@nx/angular": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/angular/-/angular-20.4.4.tgz", + "integrity": "sha512-2Aa20PTDtvopXDKl0LbYskADfHgaf1XV+/5woIlbc4UtXbUpAzu3hAgWhMF/knijIxRUOfyiG3G+X2Xmo1F1wQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "20.4.4", + "@nx/eslint": "20.4.4", + "@nx/js": "20.4.4", + "@nx/module-federation": "20.4.4", + "@nx/web": "20.4.4", + "@nx/webpack": "20.4.4", + "@nx/workspace": "20.4.4", + "@phenomnomnominal/tsquery": "~5.0.1", + "@typescript-eslint/type-utils": "^8.0.0", + "magic-string": "~0.30.2", + "minimatch": "9.0.3", + "picocolors": "^1.1.0", + "piscina": "^4.4.0", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "webpack-merge": "^5.8.0" + }, + "peerDependencies": { + "@angular-devkit/build-angular": ">= 17.0.0 < 20.0.0", + "@angular-devkit/core": ">= 17.0.0 < 20.0.0", + "@angular-devkit/schematics": ">= 17.0.0 < 20.0.0", + "@schematics/angular": ">= 17.0.0 < 20.0.0", + "rxjs": "^6.5.3 || ^7.5.0" + } + }, + "node_modules/@nx/angular/node_modules/@typescript-eslint/scope-manager": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", + "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/angular/node_modules/@typescript-eslint/type-utils": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", + "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.24.1", + "@typescript-eslint/utils": "8.24.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@nx/angular/node_modules/@typescript-eslint/types": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", + "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/angular/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", + "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@nx/angular/node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/angular/node_modules/@typescript-eslint/utils": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", + "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/typescript-estree": "8.24.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@nx/angular/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", + "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/angular/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@nx/angular/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/angular/node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/@nx/devkit": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/devkit/-/devkit-20.4.4.tgz", + "integrity": "sha512-gwTsgHIIVKjLDPAC32/cWMJRMabT7g64guyQdu9Rp+xbIJfSI+NSYVGftMHljxY1eWbYpN392y9UEVkYjQfzvg==", + "dev": true, + "dependencies": { + "ejs": "^3.1.7", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "minimatch": "9.0.3", + "semver": "^7.5.3", + "tmp": "~0.2.1", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + }, + "peerDependencies": { + "nx": ">= 19 <= 21" + } + }, + "node_modules/@nx/devkit/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/eslint": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/eslint/-/eslint-20.4.4.tgz", + "integrity": "sha512-qMSLHBLZ44XiiuMc4RPuPJX+y6IE2LQdsW171MVjCoDBi5D12pRSImmmb4QQef+gIuK8Woqc9OHKNz/vSUdTXQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "20.4.4", + "@nx/js": "20.4.4", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "typescript": "~5.7.2" + }, + "peerDependencies": { + "@zkochan/js-yaml": "0.0.7", + "eslint": "^8.0.0 || ^9.0.0" + }, + "peerDependenciesMeta": { + "@zkochan/js-yaml": { + "optional": true + } + } + }, + "node_modules/@nx/eslint-plugin": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/eslint-plugin/-/eslint-plugin-20.4.4.tgz", + "integrity": "sha512-GczXzIrh+kxbNTfWdgvMi1o3/eqwQuC60WPu5g8zGBijBm6xyFfv09GOSlx23BkHqOH8rv9hH6rfim19dadKgQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "20.4.4", + "@nx/js": "20.4.4", + "@typescript-eslint/type-utils": "^8.0.0", + "@typescript-eslint/utils": "^8.0.0", + "chalk": "^4.1.0", + "confusing-browser-globals": "^1.0.9", + "globals": "^15.9.0", + "jsonc-eslint-parser": "^2.1.0", + "semver": "^7.5.3", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.13.2 || ^7.0.0 || ^8.0.0", + "eslint-config-prettier": "^9.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.24.1.tgz", + "integrity": "sha512-OdQr6BNBzwRjNEXMQyaGyZzgg7wzjYKfX2ZBV3E04hUCBDv3GQCHiz9RpqdUIiVrMgJGkXm3tcEh4vFSHreS2Q==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.24.1.tgz", + "integrity": "sha512-/Do9fmNgCsQ+K4rCz0STI7lYB4phTtEXqqCAs3gZW0pnK7lWNkvWd5iW545GSmApm4AzmQXmSqXPO565B4WVrw==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "8.24.1", + "@typescript-eslint/utils": "8.24.1", + "debug": "^4.3.4", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/types": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.24.1.tgz", + "integrity": "sha512-9kqJ+2DkUXiuhoiYIUvIYjGcwle8pcPpdlfkemGvTObzgmYfJ5d0Qm6jwb4NBXP9W1I5tss0VIAnWFumz3mC5A==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.24.1.tgz", + "integrity": "sha512-UPyy4MJ/0RE648DSKQe9g0VDSehPINiejjA6ElqnFaFIhI6ZEiZAkUI0D5MCk0bQcTf/LVqZStvQ6K4lPn/BRg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/visitor-keys": "8.24.1", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.0.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/utils": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.24.1.tgz", + "integrity": "sha512-OOcg3PMMQx9EXspId5iktsI3eMaXVwlhC8BvNnX6B5w9a4dVgpkQZuU8Hy67TolKcl+iFWq0XX+jbDGN4xWxjQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "8.24.1", + "@typescript-eslint/types": "8.24.1", + "@typescript-eslint/typescript-estree": "8.24.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.8.0" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { + "version": "8.24.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.24.1.tgz", + "integrity": "sha512-EwVHlp5l+2vp8CoqJm9KikPZgi3gbdZAtabKT9KPShGeOcJhsv4Zdo3oc8T8I0uKEmYoU4ItyxbptjF08enaxg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "8.24.1", + "eslint-visitor-keys": "^4.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nx/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/globals": { + "version": "15.15.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", + "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/eslint-plugin/node_modules/ts-api-utils": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", + "dev": true, + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/@nx/eslint/node_modules/typescript": { + "version": "5.7.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", + "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/@nx/jest": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/jest/-/jest-20.4.4.tgz", + "integrity": "sha512-iL4JEXglMqikQM/RDxKx8HdvIf1KpXPt1Btji+MLIbGn8ZdPO/zf6RblctXScDrO8GzqQbKxEhYhwDSUfD8iXQ==", + "dev": true, + "dependencies": { + "@jest/reporters": "^29.4.1", + "@jest/test-result": "^29.4.1", + "@nx/devkit": "20.4.4", + "@nx/js": "20.4.4", + "@phenomnomnominal/tsquery": "~5.0.1", + "identity-obj-proxy": "3.0.0", + "jest-config": "^29.4.1", + "jest-resolve": "^29.4.1", + "jest-util": "^29.4.1", + "minimatch": "9.0.3", + "picocolors": "^1.1.0", + "resolve.exports": "2.0.3", + "semver": "^7.5.3", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } + }, + "node_modules/@nx/jest/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/js": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/js/-/js-20.4.4.tgz", + "integrity": "sha512-ZFiQBhL7ajmXVKe9u4iypwh1WKYXpxG2U6ta925h+OuvHSk2YcVNm815stmddAdAI/MzOMBGlCdJdjKf/wwAmA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@babel/plugin-proposal-decorators": "^7.22.7", + "@babel/plugin-transform-class-properties": "^7.22.5", + "@babel/plugin-transform-runtime": "^7.23.2", + "@babel/preset-env": "^7.23.2", + "@babel/preset-typescript": "^7.22.5", + "@babel/runtime": "^7.22.6", + "@nx/devkit": "20.4.4", + "@nx/workspace": "20.4.4", + "@zkochan/js-yaml": "0.0.7", + "babel-plugin-const-enum": "^1.0.1", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-typescript-metadata": "^0.3.1", + "chalk": "^4.1.0", + "columnify": "^1.6.0", + "detect-port": "^1.5.1", + "enquirer": "~2.3.6", + "ignore": "^5.0.4", + "js-tokens": "^4.0.0", + "jsonc-parser": "3.2.0", + "minimatch": "9.0.3", + "npm-package-arg": "11.0.1", + "npm-run-path": "^4.0.1", + "ora": "5.3.0", + "semver": "^7.5.3", + "source-map-support": "0.5.19", + "tinyglobby": "^0.2.10", + "ts-node": "10.9.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "verdaccio": "^5.0.4" + }, + "peerDependenciesMeta": { + "verdaccio": { + "optional": true + } + } + }, + "node_modules/@nx/js/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/js/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/js/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nx/js/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nx/js/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/js/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/@nx/js/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@nx/js/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/js/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/js/node_modules/source-map-support": { + "version": "0.5.19", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", + "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/@nx/js/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/module-federation": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/module-federation/-/module-federation-20.4.4.tgz", + "integrity": "sha512-yc0yOakFcCUqQKu7ddRf3k7GiplmwYAVh8jSjvnoTAxeQ2VzJZ5cm4mXMw0UMDJOreSE3fs68tnle3bh4VUxNQ==", + "dev": true, + "dependencies": { + "@module-federation/enhanced": "^0.8.8", + "@module-federation/node": "^2.6.21", + "@module-federation/sdk": "^0.8.8", + "@nx/devkit": "20.4.4", + "@nx/js": "20.4.4", + "@nx/web": "20.4.4", + "@rspack/core": "^1.1.5", + "express": "^4.21.2", + "http-proxy-middleware": "^3.0.3", + "picocolors": "^1.1.0", + "tslib": "^2.3.0", + "webpack": "^5.88.0" + } + }, + "node_modules/@nx/module-federation/node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@nx/module-federation/node_modules/http-proxy-middleware": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-3.0.3.tgz", + "integrity": "sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.15", + "debug": "^4.3.6", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.3", + "is-plain-object": "^5.0.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@nx/module-federation/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/@nx/nx-darwin-arm64": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-arm64/-/nx-darwin-arm64-20.4.4.tgz", + "integrity": "sha512-dlNrC7yYGVOeS6YZLJfRZLioZQF6aAPNYHHBexU1XnJq/1QS1pJEKdW582KsQGw+ZQqWiIr1XmexIjewMpx0Xg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-darwin-x64": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-darwin-x64/-/nx-darwin-x64-20.4.4.tgz", + "integrity": "sha512-CLQ5mjAmjCnKuTGybaVBYQo+Me9ZXRiWXZOm8Vu7hbUtPgKob0ldnk0pIy8wqlNnfBV+YHPQ0lpHUUQ80iG8IQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-freebsd-x64": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-freebsd-x64/-/nx-freebsd-x64-20.4.4.tgz", + "integrity": "sha512-coIZJq/fCkSxzVS/i9HQzPSPVPiONFlJ2Rw/OsGbNB/PD+3vGktYPnoFg7l8QxiH9b2hFuHUKK8TXBBd16z/Nw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm-gnueabihf": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm-gnueabihf/-/nx-linux-arm-gnueabihf-20.4.4.tgz", + "integrity": "sha512-YKY9WOn66AyQcNV4QrZIfHu67ip1+BTblRVRUF4ekMzOxHzmHbuyIqdF0GuDy5a8etFi2cKqZ+ZD5Rrr6xY78w==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-gnu": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-gnu/-/nx-linux-arm64-gnu-20.4.4.tgz", + "integrity": "sha512-HbZyjKQVm4T0FX2rjFedLqCcdLx3JjQmYDNLga/hG3f5CnhMWb2z35PWJbPVuCN/vC3r8FZeqqyB5csx8/hu5w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-arm64-musl": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-arm64-musl/-/nx-linux-arm64-musl-20.4.4.tgz", + "integrity": "sha512-7rrvV85kM4FCc9ui3hfG7dc3leUxVTZSjN4QaaAqHG3vMJFey52Ao/C82GaO73e6C+zQjN6rhxGMwx/m3BQwpA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-gnu": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-gnu/-/nx-linux-x64-gnu-20.4.4.tgz", + "integrity": "sha512-ZMtRbzdwjt3e9snnUa8sTyNY3vZlVtU4gQLb9CC9re23j1ZdUrJsqPVHlCQWCwpbZ8UN67ptCe40Wr590OHA1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-linux-x64-musl": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-linux-x64-musl/-/nx-linux-x64-musl-20.4.4.tgz", + "integrity": "sha512-Ff8lJLrsJgfywp7cmr+ERHJ1pesEortJx4s0P5GugSioqqQx0pNi40YCWKRUKy5aZ1+HCysSAjGLtxmx+fSv+g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-arm64-msvc": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-arm64-msvc/-/nx-win32-arm64-msvc-20.4.4.tgz", + "integrity": "sha512-ayJ4tOyr2YjlYNFpbYUeSVAksupQea82bTuB9q4Scvzh35PU3UvMF9TYNt3ficBv2jedW/yD6dzHBbZJDHS1/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/nx-win32-x64-msvc": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/nx-win32-x64-msvc/-/nx-win32-x64-msvc-20.4.4.tgz", + "integrity": "sha512-c4z4eRmkGGgH9WCFEI8wK1eyXyk2rREhhjuuEmxeJYBQB/SiWjRDBIUyIiJe2ItsWJdEHPKdPQJL52xgTICSVA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/web": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/web/-/web-20.4.4.tgz", + "integrity": "sha512-A7AIjphL2v9EzBNYURlyK5awL2nM46oLqfp6wIJt5Un6z4to0nBLfY6Fg9gaZa/X4xnoQy/qgZfEzsVurFYrpQ==", + "dev": true, + "dependencies": { + "@nx/devkit": "20.4.4", + "@nx/js": "20.4.4", + "detect-port": "^1.5.1", + "http-server": "^14.1.0", + "picocolors": "^1.1.0", + "tslib": "^2.3.0" + } + }, + "node_modules/@nx/webpack": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/webpack/-/webpack-20.4.4.tgz", + "integrity": "sha512-+5+658rb4XvZqQD9Z15y/9MsViEoCUnUzUOhpbEEB5xffmTESTWgJWjy9hqejwjXQU9uiIHfT6hwdEWhRBN5ig==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.2", + "@nx/devkit": "20.4.4", + "@nx/js": "20.4.4", + "@phenomnomnominal/tsquery": "~5.0.1", + "ajv": "^8.12.0", + "autoprefixer": "^10.4.9", + "babel-loader": "^9.1.2", + "browserslist": "^4.21.4", + "copy-webpack-plugin": "^10.2.4", + "css-loader": "^6.4.0", + "css-minimizer-webpack-plugin": "^5.0.0", + "fork-ts-checker-webpack-plugin": "7.2.13", + "less": "4.1.3", + "less-loader": "11.1.0", + "license-webpack-plugin": "^4.0.2", + "loader-utils": "^2.0.3", + "mini-css-extract-plugin": "~2.4.7", + "parse5": "4.0.0", + "picocolors": "^1.1.0", + "postcss": "^8.4.38", + "postcss-import": "~14.1.0", + "postcss-loader": "^6.1.1", + "rxjs": "^7.8.0", + "sass": "^1.42.1", + "sass-loader": "^12.2.0", + "source-map-loader": "^5.0.0", + "style-loader": "^3.3.0", + "stylus": "^0.64.0", + "stylus-loader": "^7.1.0", + "terser-webpack-plugin": "^5.3.3", + "ts-loader": "^9.3.1", + "tsconfig-paths-webpack-plugin": "4.0.0", + "tslib": "^2.3.0", + "webpack": "^5.80.0", + "webpack-dev-server": "^5.0.4", + "webpack-node-externals": "^3.0.0", + "webpack-subresource-integrity": "^5.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/@types/retry": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz", + "integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==", + "dev": true + }, + "node_modules/@nx/webpack/node_modules/array-union": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", + "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@nx/webpack/node_modules/copy-webpack-plugin": { + "version": "10.2.4", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-10.2.4.tgz", + "integrity": "sha512-xFVltahqlsRcyyJqQbDY6EYTtyQZF9rf+JPjwHObLdPFMEISqkFkr7mFoVOC6BfYS/dNThyoQKvziugm+OnwBg==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.7", + "glob-parent": "^6.0.1", + "globby": "^12.0.2", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 12.20.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/@nx/webpack/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@nx/webpack/node_modules/globby": { + "version": "12.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", + "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", + "dev": true, + "dependencies": { + "array-union": "^3.0.1", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.7", + "ignore": "^5.1.9", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nx/webpack/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/@nx/webpack/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/@nx/webpack/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nx/webpack/node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/@nx/webpack/node_modules/memfs": { + "version": "4.17.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.17.0.tgz", + "integrity": "sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==", + "dev": true, + "dependencies": { + "@jsonjoy.com/json-pack": "^1.0.3", + "@jsonjoy.com/util": "^1.3.0", + "tree-dump": "^1.0.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + } + }, + "node_modules/@nx/webpack/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@nx/webpack/node_modules/mini-css-extract-plugin": { + "version": "2.4.7", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.4.7.tgz", + "integrity": "sha512-euWmddf0sk9Nv1O0gfeeUAvAkoSlWncNLF77C0TP2+WoPvy8mAHKOzMajcCz2dzvyt3CNgxb1obIEVFIRxaipg==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/@nx/webpack/node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/p-retry": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.2.1.tgz", + "integrity": "sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.2", + "is-network-error": "^1.0.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + }, + "node_modules/@nx/webpack/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@nx/webpack/node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/@nx/webpack/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@nx/webpack/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@nx/webpack/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@nx/webpack/node_modules/webpack-dev-middleware": { + "version": "7.4.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-7.4.2.tgz", + "integrity": "sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^4.6.0", + "mime-types": "^2.1.31", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + } + } + }, + "node_modules/@nx/webpack/node_modules/webpack-dev-server": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-5.2.0.tgz", + "integrity": "sha512-90SqqYXA2SK36KcT6o1bvwvZfJFcmoamqeJY7+boioffX9g9C0wjjJRGUrQIuh43pb0ttX7+ssavmj/WN2RHtA==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.13", + "@types/connect-history-api-fallback": "^1.5.4", + "@types/express": "^4.17.21", + "@types/serve-index": "^1.9.4", + "@types/serve-static": "^1.15.5", + "@types/sockjs": "^0.3.36", + "@types/ws": "^8.5.10", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.2.1", + "chokidar": "^3.6.0", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "express": "^4.21.2", + "graceful-fs": "^4.2.6", + "http-proxy-middleware": "^2.0.7", + "ipaddr.js": "^2.1.0", + "launch-editor": "^2.6.1", + "open": "^10.0.3", + "p-retry": "^6.2.0", + "schema-utils": "^4.2.0", + "selfsigned": "^2.4.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^7.4.2", + "ws": "^8.18.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 18.12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/@nx/webpack/node_modules/ws": { + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/@nx/workspace": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/@nx/workspace/-/workspace-20.4.4.tgz", + "integrity": "sha512-4iIN9GWLHCycCUTAaVeR7TAk2t9wSgxQN/znvSmG5eWSS2ri9XjeN6/8kpoTDBpmQ1/4gAKSMGo9BNMlbvqD2g==", + "dev": true, + "dependencies": { + "@nx/devkit": "20.4.4", + "chalk": "^4.1.0", + "enquirer": "~2.3.6", + "nx": "20.4.4", + "tslib": "^2.3.0", + "yargs-parser": "21.1.1" + } + }, + "node_modules/@nx/workspace/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@nx/workspace/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@nx/workspace/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@nx/workspace/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/@nx/workspace/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@nx/workspace/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.4.1.tgz", + "integrity": "sha512-HNjmfLQEVRZmHRET336f20H/8kOozUGwk7yajvsonjNxbj2wBTK1WsQuHkD5yYh9RxFGL2EyDHryOihOwUoKDA==", + "dev": true, + "optional": true, + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.4.1", + "@parcel/watcher-darwin-arm64": "2.4.1", + "@parcel/watcher-darwin-x64": "2.4.1", + "@parcel/watcher-freebsd-x64": "2.4.1", + "@parcel/watcher-linux-arm-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-glibc": "2.4.1", + "@parcel/watcher-linux-arm64-musl": "2.4.1", + "@parcel/watcher-linux-x64-glibc": "2.4.1", + "@parcel/watcher-linux-x64-musl": "2.4.1", + "@parcel/watcher-win32-arm64": "2.4.1", + "@parcel/watcher-win32-ia32": "2.4.1", + "@parcel/watcher-win32-x64": "2.4.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", + "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", + "integrity": "sha512-ln41eihm5YXIY043vBrrHfn94SIBlqOWmoROhsMVTSXGh0QahKGy77tfEywQ7v3NywyxBBkGIfrWRHm0hsKtzA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", + "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", + "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", + "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", + "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", + "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", + "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", + "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", + "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", + "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", + "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "optional": true + }, + "node_modules/@phenomnomnominal/tsquery": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-5.0.1.tgz", + "integrity": "sha512-3nVv+e2FQwsW8Aw6qTU6f+1rfcJ3hrcnvH/mu9i8YhxO+9sqbOfpL8m6PbET5+xKOlz/VSbp0RoYWYCtIsnmuA==", + "dev": true, + "dependencies": { + "esquery": "^1.4.0" + }, + "peerDependencies": { + "typescript": "^3 || ^4 || ^5" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@react-dnd/asap": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-4.0.1.tgz", + "integrity": "sha512-kLy0PJDDwvwwTXxqTFNAAllPHD73AycE9ypWeln/IguoGBEbvFcPDbCV03G52bEcC5E+YgupBE0VzHGdC8SIXg==" + }, + "node_modules/@react-dnd/invariant": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-2.0.0.tgz", + "integrity": "sha512-xL4RCQBCBDJ+GRwKTFhGUW8GXa4yoDfJrPbLblc3U09ciS+9ZJXJ3Qrcs/x2IODOdIE5kQxvMmE2UKyqUictUw==" + }, + "node_modules/@react-dnd/shallowequal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz", + "integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg==" + }, + "node_modules/@redux-saga/core": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@redux-saga/core/-/core-1.3.0.tgz", + "integrity": "sha512-L+i+qIGuyWn7CIg7k1MteHGfttKPmxwZR5E7OsGikCL2LzYA0RERlaUY00Y3P3ZV2EYgrsYlBrGs6cJP5OKKqA==", + "dependencies": { + "@babel/runtime": "^7.6.3", + "@redux-saga/deferred": "^1.2.1", + "@redux-saga/delay-p": "^1.2.1", + "@redux-saga/is": "^1.1.3", + "@redux-saga/symbols": "^1.1.3", + "@redux-saga/types": "^1.2.1", + "typescript-tuple": "^2.2.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/redux-saga" + } + }, + "node_modules/@redux-saga/deferred": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@redux-saga/deferred/-/deferred-1.2.1.tgz", + "integrity": "sha512-cmin3IuuzMdfQjA0lG4B+jX+9HdTgHZZ+6u3jRAOwGUxy77GSlTi4Qp2d6PM1PUoTmQUR5aijlA39scWWPF31g==" + }, + "node_modules/@redux-saga/delay-p": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@redux-saga/delay-p/-/delay-p-1.2.1.tgz", + "integrity": "sha512-MdiDxZdvb1m+Y0s4/hgdcAXntpUytr9g0hpcOO1XFVyyzkrDu3SKPgBFOtHn7lhu7n24ZKIAT1qtKyQjHqRd+w==", + "dependencies": { + "@redux-saga/symbols": "^1.1.3" + } + }, + "node_modules/@redux-saga/is": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@redux-saga/is/-/is-1.1.3.tgz", + "integrity": "sha512-naXrkETG1jLRfVfhOx/ZdLj0EyAzHYbgJWkXbB3qFliPcHKiWbv/ULQryOAEKyjrhiclmr6AMdgsXFyx7/yE6Q==", + "dependencies": { + "@redux-saga/symbols": "^1.1.3", + "@redux-saga/types": "^1.2.1" + } + }, + "node_modules/@redux-saga/symbols": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@redux-saga/symbols/-/symbols-1.1.3.tgz", + "integrity": "sha512-hCx6ZvU4QAEUojETnX8EVg4ubNLBFl1Lps4j2tX7o45x/2qg37m3c6v+kSp8xjDJY+2tJw4QB3j8o8dsl1FDXg==" + }, + "node_modules/@redux-saga/types": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@redux-saga/types/-/types-1.2.1.tgz", + "integrity": "sha512-1dgmkh+3so0+LlBWRhGA33ua4MYr7tUOj+a9Si28vUi0IUFNbff1T3sgpeDJI/LaC75bBYnQ0A3wXjn0OrRNBA==" + }, + "node_modules/@researchgate/react-intersection-observer": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@researchgate/react-intersection-observer/-/react-intersection-observer-1.3.5.tgz", + "integrity": "sha512-aYlsex5Dd6BAHMJvJrUoFp8gzgMSL27xFvrxkVYW0bV1RMAapVsO+QeYLtTaSF/QCflktODodvv+wJm49oMnnQ==", + "engines": { + "node": ">=10.18.1" + }, + "peerDependencies": { + "react": "^16.3.2", + "react-dom": "^16.3.2" + } + }, + "node_modules/@rollup/plugin-json": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-json/-/plugin-json-6.1.0.tgz", + "integrity": "sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.1.0" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.1.tgz", + "integrity": "sha512-tgg6b91pAybXHJQMAAwW9VuWBO6Thi+q7BCNARLwSqlmsHz0XYURtGvh/AuwSADXSI4h/2uHbs7s4FzlZDGSGA==", + "dev": true, + "dependencies": { + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-module": "^1.0.0", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", + "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==", + "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/wasm-node": { + "version": "4.34.8", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.34.8.tgz", + "integrity": "sha512-+bu9Ce1VDob+hfEQYPwC03Lds+ACDlGVwuWeLZE2fN+O52O74RZ0F5engVpv7i2YDyTyj4oU/NKO4pjSXMdn6g==", + "dev": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/@rspack/binding": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding/-/binding-1.2.3.tgz", + "integrity": "sha512-enpOXZPQOJO800wdWcR7H5Dx5UZfwkaT0D0xsHD53WbpI09Z2KJbLX7I/i1FLLy3K1KQTB+2FIHLVdRikasXZA==", + "dev": true, + "optionalDependencies": { + "@rspack/binding-darwin-arm64": "1.2.3", + "@rspack/binding-darwin-x64": "1.2.3", + "@rspack/binding-linux-arm64-gnu": "1.2.3", + "@rspack/binding-linux-arm64-musl": "1.2.3", + "@rspack/binding-linux-x64-gnu": "1.2.3", + "@rspack/binding-linux-x64-musl": "1.2.3", + "@rspack/binding-win32-arm64-msvc": "1.2.3", + "@rspack/binding-win32-ia32-msvc": "1.2.3", + "@rspack/binding-win32-x64-msvc": "1.2.3" + } + }, + "node_modules/@rspack/binding-darwin-arm64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-arm64/-/binding-darwin-arm64-1.2.3.tgz", + "integrity": "sha512-xuwYzhPgNCr4BtKXCU3xe4249TFsXAZglIlbxv8Qs3PeIarrZMRddcqH2zUXi+nJavNw3yN12sCYEzk1f+O4FQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-darwin-x64": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-darwin-x64/-/binding-darwin-x64-1.2.3.tgz", + "integrity": "sha512-afiIN8elcrO2EtO27UN0qyZqu5FXGUdclud56DrhvEfnWS3GGxJEdjA8XUYVXkfCYakdXHucIJKlkkgaAjEvHg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rspack/binding-linux-arm64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.2.3.tgz", + "integrity": "sha512-K2u/fPUmKujlKSWL3q2zaUu8/6ZK/bOGKcqJSib8jdanQQ/GFKwKtPAFOOa/vvqbzhDocqKOobFR10FhgJqCHg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-arm64-musl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.2.3.tgz", + "integrity": "sha512-mgovdzGb6cH9hQsjTyzDbfZWCPhTcoHcLro1P7UbiqcLPMDJp/k3Io9xV2/EJhaDA1aynIdq7XfY0fuk4+6Irw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-gnu": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.2.3.tgz", + "integrity": "sha512-542lwJzB1RMGuVdBdA3cOWTlmL9okpOppHUBWcNCjmJM+9zTI+0jwjVe8HaqOqtuR8XzNsoCwT9QonU/GLcuhg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-linux-x64-musl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-linux-x64-musl/-/binding-linux-x64-musl-1.2.3.tgz", + "integrity": "sha512-dJromiREDcTWqzfCOI5y1IVoYmUnCv7vCp63AEq0+13fJJdk7+pcNN3VV2jOKpk9VECSvjg1c01wl+UzXAXFMw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rspack/binding-win32-arm64-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.2.3.tgz", + "integrity": "sha512-S8ZKddMMQDGy8jx/R0i2m1XrmfY2CpI+t6lIEpsuZuKUR4MbOGKN2DuL4MDnT3m8JaYvC8ihsvQjBXQCy3SNxQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-ia32-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-ia32-msvc/-/binding-win32-ia32-msvc-1.2.3.tgz", + "integrity": "sha512-74lqSMKQJcJcgfFaxm+G9YVJSl2KK9/v4fRoMsWApztNy2qNgee+UguNBCOU6JLa3rVSj8Z5OVVDtJkGFrSvVg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/binding-win32-x64-msvc": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.2.3.tgz", + "integrity": "sha512-fcU532PgFdd5Bil8jwQW0Dcb/80oM6V0qSstGIxZ4M77t4t8e/PcukXfORTL71FfNQ64Rd4Dp6XRl1NHNJVxeg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rspack/core": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@rspack/core/-/core-1.2.3.tgz", + "integrity": "sha512-BFgdUYf05/hjjY9Nlwq8DpWaRJN5w2kTl8ZJi20SRL60oAx+ZD2ABT+fsPhBiFSmfTZDdvGGIq5e3vfRzoIuqg==", + "dev": true, + "dependencies": { + "@module-federation/runtime-tools": "0.8.4", + "@rspack/binding": "1.2.3", + "@rspack/lite-tapable": "1.0.1", + "caniuse-lite": "^1.0.30001616" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@rspack/tracing": "^1.x", + "@swc/helpers": ">=0.5.1" + }, + "peerDependenciesMeta": { + "@rspack/tracing": { + "optional": true + }, + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/error-codes": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/error-codes/-/error-codes-0.8.4.tgz", + "integrity": "sha512-55LYmrDdKb4jt+qr8qE8U3al62ZANp3FhfVaNPOaAmdTh0jHdD8M3yf5HKFlr5xVkVO4eV/F/J2NCfpbh+pEXQ==", + "dev": true + }, + "node_modules/@rspack/core/node_modules/@module-federation/runtime": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/runtime/-/runtime-0.8.4.tgz", + "integrity": "sha512-yZeZ7z2Rx4gv/0E97oLTF3V6N25vglmwXGgoeju/W2YjsFvWzVtCDI7zRRb0mJhU6+jmSM8jP1DeQGbea/AiZQ==", + "dev": true, + "dependencies": { + "@module-federation/error-codes": "0.8.4", + "@module-federation/sdk": "0.8.4" + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/runtime-tools": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/runtime-tools/-/runtime-tools-0.8.4.tgz", + "integrity": "sha512-fjVOsItJ1u5YY6E9FnS56UDwZgqEQUrWFnouRiPtK123LUuqUI9FH4redZoKWlE1PB0ir1Z3tnqy8eFYzPO38Q==", + "dev": true, + "dependencies": { + "@module-federation/runtime": "0.8.4", + "@module-federation/webpack-bundler-runtime": "0.8.4" + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/sdk": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/sdk/-/sdk-0.8.4.tgz", + "integrity": "sha512-waABomIjg/5m1rPDBWYG4KUhS5r7OUUY7S+avpaVIY/tkPWB3ibRDKy2dNLLAMaLKq0u+B1qIdEp4NIWkqhqpg==", + "dev": true, + "dependencies": { + "isomorphic-rslog": "0.0.6" + } + }, + "node_modules/@rspack/core/node_modules/@module-federation/webpack-bundler-runtime": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/@module-federation/webpack-bundler-runtime/-/webpack-bundler-runtime-0.8.4.tgz", + "integrity": "sha512-HggROJhvHPUX7uqBD/XlajGygMNM1DG0+4OAkk8MBQe4a18QzrRNzZt6XQbRTSG4OaEoyRWhQHvYD3Yps405tQ==", + "dev": true, + "dependencies": { + "@module-federation/runtime": "0.8.4", + "@module-federation/sdk": "0.8.4" + } + }, + "node_modules/@rspack/core/node_modules/isomorphic-rslog": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.6.tgz", + "integrity": "sha512-HM0q6XqQ93psDlqvuViNs/Ea3hAyGDkIdVAHlrEocjjAwGrs1fZ+EdQjS9eUPacnYB7Y8SoDdSY3H8p3ce205A==", + "dev": true, + "engines": { + "node": ">=14.17.6" + } + }, + "node_modules/@rspack/lite-tapable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@rspack/lite-tapable/-/lite-tapable-1.0.1.tgz", + "integrity": "sha512-VynGOEsVw2s8TAlLf/uESfrgfrq2+rcXB1muPJYBWbsm1Oa6r5qVQhjA5ggM6z/coYPrsVMgovl3Ff7Q7OCp1w==", + "dev": true, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, + "node_modules/@schematics/angular": { + "version": "17.3.11", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.11.tgz", + "integrity": "sha512-tvJpTgYC+hCnTyLszYRUZVyNTpPd+C44gh5CPTcG3qkqStzXQwynQAf6X/DjtwXbUiPQF0XfF0+0R489GpdZPA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "17.3.11", + "@angular-devkit/schematics": "17.3.11", + "jsonc-parser": "3.2.1" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sigstore/bundle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", + "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", + "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/protobuf-specs": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", + "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", + "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "make-fetch-happen": "^13.0.1", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/sign/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/tuf": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", + "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "dev": true, + "dependencies": { + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sigstore/verify": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", + "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", + "dev": true, + "dependencies": { + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "dev": true + }, + "node_modules/@swc-node/core": { + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/@swc-node/core/-/core-1.13.3.tgz", + "integrity": "sha512-OGsvXIid2Go21kiNqeTIn79jcaX4l0G93X2rAnas4LFoDyA9wAwVK7xZdm+QsKoMn5Mus2yFLCc4OtX2dD/PWA==", + "dev": true, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@swc/core": ">= 1.4.13", + "@swc/types": ">= 0.1" + } + }, + "node_modules/@swc-node/register": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@swc-node/register/-/register-1.9.2.tgz", + "integrity": "sha512-BBjg0QNuEEmJSoU/++JOXhrjWdu3PTyYeJWsvchsI0Aqtj8ICkz/DqlwtXbmZVZ5vuDPpTfFlwDBZe81zgShMA==", + "dev": true, + "dependencies": { + "@swc-node/core": "^1.13.1", + "@swc-node/sourcemap-support": "^0.5.0", + "colorette": "^2.0.20", + "debug": "^4.3.4", + "pirates": "^4.0.6", + "tslib": "^2.6.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "peerDependencies": { + "@swc/core": ">= 1.4.13", + "typescript": ">= 4.3" + } + }, + "node_modules/@swc-node/sourcemap-support": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/@swc-node/sourcemap-support/-/sourcemap-support-0.5.1.tgz", + "integrity": "sha512-JxIvIo/Hrpv0JCHSyRpetAdQ6lB27oFYhv0PKCNf1g2gUXOjpeR1exrXccRxLMuAV5WAmGFBwRnNOJqN38+qtg==", + "dev": true, + "dependencies": { + "source-map-support": "^0.5.21", + "tslib": "^2.6.3" + } + }, + "node_modules/@swc-node/sourcemap-support/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "node_modules/@swc/core": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.5.29.tgz", + "integrity": "sha512-nvTtHJI43DUSOAf3h9XsqYg8YXKc0/N4il9y4j0xAkO0ekgDNo+3+jbw6MInawjKJF9uulyr+f5bAutTsOKVlw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.8" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.5.29", + "@swc/core-darwin-x64": "1.5.29", + "@swc/core-linux-arm-gnueabihf": "1.5.29", + "@swc/core-linux-arm64-gnu": "1.5.29", + "@swc/core-linux-arm64-musl": "1.5.29", + "@swc/core-linux-x64-gnu": "1.5.29", + "@swc/core-linux-x64-musl": "1.5.29", + "@swc/core-win32-arm64-msvc": "1.5.29", + "@swc/core-win32-ia32-msvc": "1.5.29", + "@swc/core-win32-x64-msvc": "1.5.29" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.5.29.tgz", + "integrity": "sha512-6F/sSxpHaq3nzg2ADv9FHLi4Fu2A8w8vP8Ich8gIl16D2htStlwnaPmCLjRswO+cFkzgVqy/l01gzNGWd4DFqA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.5.29.tgz", + "integrity": "sha512-rF/rXkvUOTdTIfoYbmszbSUGsCyvqACqy1VeP3nXONS+LxFl4bRmRcUTRrblL7IE5RTMCKUuPbqbQSE2hK7bqg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.5.29.tgz", + "integrity": "sha512-2OAPL8iWBsmmwkjGXqvuUhbmmoLxS1xNXiMq87EsnCNMAKohGc7wJkdAOUL6J/YFpean/vwMWg64rJD4pycBeg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.5.29.tgz", + "integrity": "sha512-eH/Q9+8O5qhSxMestZnhuS1xqQMr6M7SolZYxiXJqxArXYILLCF+nq2R9SxuMl0CfjHSpb6+hHPk/HXy54eIRA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.5.29.tgz", + "integrity": "sha512-TERh2OICAJz+SdDIK9+0GyTUwF6r4xDlFmpoiHKHrrD/Hh3u+6Zue0d7jQ/he/i80GDn4tJQkHlZys+RZL5UZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.5.29.tgz", + "integrity": "sha512-WMDPqU7Ji9dJpA+Llek2p9t7pcy7Bob8ggPUvgsIlv3R/eesF9DIzSbrgl6j3EAEPB9LFdSafsgf6kT/qnvqFg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.5.29.tgz", + "integrity": "sha512-DO14glwpdKY4POSN0201OnGg1+ziaSVr6/RFzuSLggshwXeeyVORiHv3baj7NENhJhWhUy3NZlDsXLnRFkmhHQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.5.29.tgz", + "integrity": "sha512-V3Y1+a1zG1zpYXUMqPIHEMEOd+rHoVnIpO/KTyFwAmKVu8v+/xPEVx/AGoYE67x4vDAAvPQrKI3Aokilqa5yVg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.5.29.tgz", + "integrity": "sha512-OrM6yfXw4wXhnVFosOJzarw0Fdz5Y0okgHfn9oFbTPJhoqxV5Rdmd6kXxWu2RiVKs6kGSJFZXHDeUq2w5rTIMg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.5.29.tgz", + "integrity": "sha512-eD/gnxqKyZQQR0hR7TMkIlJ+nCF9dzYmVVNbYZWuA1Xy94aBPUsEk3Uw3oG7q6R3ErrEUPP0FNf2ztEnv+I+dw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "dev": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@swc/helpers/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.17.tgz", + "integrity": "sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==", + "dev": true, + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "dev": true + }, + "node_modules/@tufjs/canonical-json": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", + "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "dev": true, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tufjs/models": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "dev": true, + "dependencies": { + "@tufjs/canonical-json": "2.0.0", + "minimatch": "^9.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", + "devOptional": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", + "devOptional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/deep-freeze": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/deep-freeze/-/deep-freeze-0.1.5.tgz", + "integrity": "sha512-KZtR+jtmgkCpgE0f+We/QEI2Fi0towBV/tTkvHVhMzx+qhUVGXMx7pWvAtDp6vEWIjdKLTKpqbI/sORRCo8TKg==", + "dev": true + }, + "node_modules/@types/ejs": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", + "dev": true + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", + "devOptional": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", + "devOptional": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/grecaptcha": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/@types/grecaptcha/-/grecaptcha-3.0.9.tgz", + "integrity": "sha512-fFxMtjAvXXMYTzDFK5NpcVB7WHnrHVLl00QzEGpuFxSAC789io6M+vjcn+g5FTEamIJtJr/IHkCDsqvJxeWDyw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hoist-non-react-statics": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", + "dependencies": { + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0" + } + }, + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "devOptional": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.11.tgz", + "integrity": "sha512-S6pvzQDvMZHrkBz2Mcn/8Du7cpr76PlRJBAoHnSDNbulULsH5dp0Gns+WRyNX5LHejz/ljxK4/vIHK/caHt6SQ==", + "dev": true + }, + "node_modules/@types/jest": { + "version": "29.5.14", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.14.tgz", + "integrity": "sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/js-cookie": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz", + "integrity": "sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==", + "dev": true + }, + "node_modules/@types/jsdom": { + "version": "20.0.1", + "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", + "integrity": "sha512-d0r18sZPmMQr1eG35u12FZfhIXNrnsPU/g5wvRKCUf/tOGilKKwYMYGqh33BNR6ba+2gkHw1EUiHoN3mn7E5IQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/tough-cookie": "*", + "parse5": "^7.0.0" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/lodash": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.14.tgz", + "integrity": "sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "devOptional": true + }, + "node_modules/@types/node": { + "version": "18.16.9", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.16.9.tgz", + "integrity": "sha512-IeB32oIV4oGArLrd7znD2rkHQ6EDCM+2Sr76dJnrHwv9OHBTTM6nuDLK9bmikXzPa0ZlWMWtRGo/Uw4mrzQedA==" + }, + "node_modules/@types/node-forge": { + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "dev": true + }, + "node_modules/@types/prop-types": { + "version": "15.7.12", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", + "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" + }, + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", + "devOptional": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "devOptional": true + }, + "node_modules/@types/react": { + "version": "17.0.80", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", + "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "^0.16", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-redux": { + "version": "7.1.33", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", + "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", + "dependencies": { + "@types/hoist-non-react-statics": "^3.3.0", + "@types/react": "*", + "hoist-non-react-statics": "^3.3.0", + "redux": "^4.0.0" + } + }, + "node_modules/@types/react-transition-group": { + "version": "4.4.12", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.12.tgz", + "integrity": "sha512-8TV6R3h2j7a91c+1DXdJi3Syo69zzIZbz7Lg5tORM5LEJG7X/E6a1V3drRyBRZq7/utz7A+c4OgYLiLcYGHG6w==", + "peerDependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/react/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/scheduler": { + "version": "0.16.8", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", + "devOptional": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/serve-index": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "devOptional": true, + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", + "dev": true + }, + "node_modules/@types/sockjs": { + "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz", + "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.32", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", "dev": true, "optional": true, - "os": [ - "linux" + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@typescript-eslint/experimental-utils/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/rule-tester": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-7.18.0.tgz", + "integrity": "sha512-ClrFQlwen9pJcYPIBLuarzBpONQAwjmJ0+YUjAo1TGzoZFJPyUK/A7bb4Mps0u+SMJJnFXbfMN8I9feQDf0O5A==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "ajv": "^6.12.6", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "4.6.2", + "semver": "^7.6.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@eslint/eslintrc": ">=2", + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/rule-tester/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@typescript-eslint/rule-tester/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.11.0.tgz", + "integrity": "sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.11.0", + "@typescript-eslint/utils": "7.11.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.11.0.tgz", + "integrity": "sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.11.0.tgz", + "integrity": "sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.11.0.tgz", + "integrity": "sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", + "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.11.0", + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/typescript-estree": "7.11.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.11.0.tgz", + "integrity": "sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.11.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", + "dev": true + }, + "node_modules/@yarnpkg/parsers": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@yarnpkg/parsers/-/parsers-3.0.2.tgz", + "integrity": "sha512-/HcYgtUSiJiot/XWGLOlGxPYUG65+/31V8oqk17vZLW1xlCoR4PampyePljOxY2n8/3jz9+tIFzICsyGujJZoA==", + "dev": true, + "dependencies": { + "js-yaml": "^3.10.0", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=18.12.0" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@yarnpkg/parsers/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/@zkochan/js-yaml": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/@zkochan/js-yaml/-/js-yaml-0.0.7.tgz", + "integrity": "sha512-nrUSn7hzt7J6JWgWGz78ZYI8wj+gdIJdk0Ynjpp8l+trkn58Uqsf6RYrYkEK+3X18EX+TNdtJI0WxAtc+L84SQ==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-7.0.1.tgz", + "integrity": "sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==", + "dev": true, + "dependencies": { + "acorn": "^8.1.0", + "acorn-walk": "^8.0.2" + } + }, + "node_modules/acorn-import-attributes": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", + "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "dev": true, + "dependencies": { + "acorn": "^8.11.0" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/address": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/address/-/address-1.2.2.tgz", + "integrity": "sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "dev": true, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/angulartics2": { + "version": "12.2.1", + "resolved": "https://registry.npmjs.org/angulartics2/-/angulartics2-12.2.1.tgz", + "integrity": "sha512-+uDXkGGJJzzIITE59z1s3rL5okNyGXZN5mP7m2Ro9gouJF88COeRkhYlXZwIXkdQjBzIyOvUv6UamzgL9NiXLg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": ">=13.0.0-0", + "@angular/core": ">=13.0.0-0", + "rxjs": "^7.0.0" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "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/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/aria-query": { + "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": { + "dequal": "^2.0.3" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/async": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.18", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", + "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001591", + "fraction.js": "^4.3.7", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "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==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "dev": true + }, + "node_modules/axe-core": { + "version": "4.10.2", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", + "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.9", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", + "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/babel-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "dev": true, + "dependencies": { + "find-cache-dir": "^4.0.0", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0", + "webpack": ">=5" + } + }, + "node_modules/babel-plugin-const-enum": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-const-enum/-/babel-plugin-const-enum-1.2.0.tgz", + "integrity": "sha512-o1m/6iyyFnp9MRsK1dHF3bneqyf3AlM2q3A/YbgQr2pCat6B6XJVDv2TXqzfY2RYUi4mak6WAksSBPlyYGx9dg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.3.3", + "@babel/traverse": "^7.16.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "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.6.2", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", + "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0", + "core-js-compat": "^3.34.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", + "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.5.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", + "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-typescript-metadata": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-typescript-metadata/-/babel-plugin-transform-typescript-metadata-0.3.2.tgz", + "integrity": "sha512-mWEvCQTgXQf48yDqgN7CH50waTyYBeP2Lpqx4nNWab9sxEpdXVeKgfj1qYI2/TgUPQtNFZ85i3PemRtnXVYYJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@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", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } ] }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", - "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true, + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/batch-processor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", + "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bent": { + "version": "7.3.12", + "resolved": "https://registry.npmjs.org/bent/-/bent-7.3.12.tgz", + "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==", + "dev": true, + "dependencies": { + "bytesish": "^0.4.1", + "caseless": "~0.12.0", + "is-stream": "^2.0.0" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", - "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", - "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", - "cpu": [ - "x64" - ], + "node_modules/bonjour-service": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", + "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", "dev": true, - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", - "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", - "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", - "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", - "cpu": [ - "x64" + "node_modules/bootstrap": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", + "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/twbs" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + } ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } }, - "node_modules/@schematics/angular": { - "version": "17.3.11", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.11.tgz", - "integrity": "sha512-tvJpTgYC+hCnTyLszYRUZVyNTpPd+C44gh5CPTcG3qkqStzXQwynQAf6X/DjtwXbUiPQF0XfF0+0R489GpdZPA==", - "dev": true, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "@angular-devkit/core": "17.3.11", - "@angular-devkit/schematics": "17.3.11", - "jsonc-parser": "3.2.1" + "fill-range": "^7.1.1" }, "engines": { - "node": "^18.13.0 || >=20.9.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=8" } }, - "node_modules/@sigstore/bundle": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-2.3.2.tgz", - "integrity": "sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==", - "dev": true, + "node_modules/browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2" + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/@sigstore/core": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@sigstore/core/-/core-1.1.0.tgz", - "integrity": "sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==", + "node_modules/bs-logger": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", + "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/protobuf-specs/-/protobuf-specs-0.3.2.tgz", - "integrity": "sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==", + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dev": true, - "engines": { - "node": "^16.14.0 || >=18.0.0" + "dependencies": { + "node-int64": "^0.4.0" } }, - "node_modules/@sigstore/sign": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@sigstore/sign/-/sign-2.3.2.tgz", - "integrity": "sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==", + "node_modules/btoa": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", "dev": true, - "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.0.0", - "@sigstore/protobuf-specs": "^0.3.2", - "make-fetch-happen": "^13.0.1", - "proc-log": "^4.2.0", - "promise-retry": "^2.0.1" + "bin": { + "btoa": "bin/btoa.js" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 0.4.0" } }, - "node_modules/@sigstore/sign/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/@sigstore/tuf": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/@sigstore/tuf/-/tuf-2.3.4.tgz", - "integrity": "sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, - "dependencies": { - "@sigstore/protobuf-specs": "^0.3.2", - "tuf-js": "^2.2.1" - }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "*" } }, - "node_modules/@sigstore/verify": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@sigstore/verify/-/verify-1.2.1.tgz", - "integrity": "sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==", + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", "dev": true, "dependencies": { - "@sigstore/bundle": "^2.3.2", - "@sigstore/core": "^1.1.0", - "@sigstore/protobuf-specs": "^0.3.2" + "run-applescript": "^7.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@socket.io/component-emitter": { + "node_modules/bytes": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", - "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", - "dev": true - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "engines": { + "node": ">= 0.8" + } }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "node_modules/bytesish": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz", + "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==", "dev": true }, - "node_modules/@tufjs/canonical-json": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tufjs/canonical-json/-/canonical-json-2.0.0.tgz", - "integrity": "sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==", + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@tufjs/models": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", - "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", + "node_modules/cacache/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.4" + "yallist": "^4.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@types/babel__core": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", - "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", + "dev": true, "dependencies": { - "@babel/parser": "^7.20.7", - "@babel/types": "^7.20.7", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "mime-types": "^2.1.18", + "ylru": "^1.2.0" + }, + "engines": { + "node": ">= 6.0.0" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", - "dependencies": { - "@babel/types": "^7.0.0" + "node_modules/cachedir": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "dev": true, + "engines": { + "node": ">=6" } }, - "node_modules/@types/babel__template": { - "version": "7.4.4", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", - "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "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" } }, - "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dependencies": { - "@babel/types": "^7.20.7" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "devOptional": true, + "node_modules/call-bound": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", + "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", + "dev": true, "dependencies": { - "@types/connect": "*", - "@types/node": "*" + "call-bind-apply-helpers": "^1.0.1", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@types/bonjour": { - "version": "3.5.13", - "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", - "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=6" } }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "devOptional": true, - "dependencies": { - "@types/node": "*" + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" } }, - "node_modules/@types/connect-history-api-fallback": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", - "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", "dev": true, "dependencies": { - "@types/express-serve-static-core": "*", - "@types/node": "*" + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" } }, - "node_modules/@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "node_modules/caniuse-lite": { + "version": "1.0.30001668", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz", + "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", "dev": true }, - "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dev": true, + "node_modules/cerialize": { + "version": "0.1.18", + "resolved": "https://registry.npmjs.org/cerialize/-/cerialize-0.1.18.tgz", + "integrity": "sha512-C/hp4UoPrMK060251Pt/21axF9aL4ceJlg3+pThB68VghhRjOzBzy4f8R9AirXdNB4gpqgaV2deU3UaexInL5w==", "dependencies": { - "@types/node": "*" + "typescript": "^2.5.0" } }, - "node_modules/@types/deep-freeze": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@types/deep-freeze/-/deep-freeze-0.1.5.tgz", - "integrity": "sha512-KZtR+jtmgkCpgE0f+We/QEI2Fi0towBV/tTkvHVhMzx+qhUVGXMx7pWvAtDp6vEWIjdKLTKpqbI/sORRCo8TKg==", - "dev": true - }, - "node_modules/@types/ejs": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", - "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", - "dev": true + "node_modules/cerialize/node_modules/typescript": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", + "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "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": { - "@types/estree": "*", - "@types/json-schema": "*" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "engines": { + "node": ">=10" } }, - "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "dev": true }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "devOptional": true, - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", - "devOptional": true, - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "engines": { + "node": "*" } }, - "node_modules/@types/grecaptcha": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/grecaptcha/-/grecaptcha-3.0.9.tgz", - "integrity": "sha512-fFxMtjAvXXMYTzDFK5NpcVB7WHnrHVLl00QzEGpuFxSAC789io6M+vjcn+g5FTEamIJtJr/IHkCDsqvJxeWDyw==", + "node_modules/check-more-types": { + "version": "2.24.0", + "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", + "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", "dev": true, - "license": "MIT" - }, - "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", - "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", - "dependencies": { - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "devOptional": true - }, - "node_modules/@types/http-proxy": { - "version": "1.17.14", - "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", - "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dependencies": { - "@types/node": "*" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/@types/jasmine": { - "version": "3.6.11", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.11.tgz", - "integrity": "sha512-S6pvzQDvMZHrkBz2Mcn/8Du7cpr76PlRJBAoHnSDNbulULsH5dp0Gns+WRyNX5LHejz/ljxK4/vIHK/caHt6SQ==", - "dev": true - }, - "node_modules/@types/js-cookie": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-2.2.6.tgz", - "integrity": "sha512-+oY0FDTO2GYKEV0YPvSshGq9t7YozVkgvXLty7zogQNuCxBhT9/3INX9Q7H1aRZ4SUDRXAKlJuA4EA5nTt7SNw==", - "dev": true + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "dev": true, + "engines": { + "node": ">=6.0" + } }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true + "node_modules/ci-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", + "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } }, - "node_modules/@types/lodash": { - "version": "4.17.14", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.14.tgz", - "integrity": "sha512-jsxagdikDiDBeIRaPYtArcT8my4tN1og7MtMRquFT3XNA6axxyHDRUemqDz/taRDdOUn0GnGHRCuff4q48sW9A==", + "node_modules/cjs-module-lexer": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz", + "integrity": "sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==", "dev": true }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "devOptional": true + "node_modules/classnames": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", + "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" }, - "node_modules/@types/node": { - "version": "14.18.63", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==" + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "node_modules/@types/node-forge": { - "version": "1.3.11", - "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", - "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "dependencies": { - "@types/node": "*" + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "dev": true - }, - "node_modules/@types/prop-types": { - "version": "15.7.12", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.12.tgz", - "integrity": "sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==" - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "devOptional": true - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "devOptional": true - }, - "node_modules/@types/react": { - "version": "17.0.80", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.80.tgz", - "integrity": "sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==", - "license": "MIT", + "node_modules/cli-progress": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", + "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "^0.16", - "csstype": "^3.0.2" + "string-width": "^4.2.3" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@types/react-redux": { - "version": "7.1.33", - "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.33.tgz", - "integrity": "sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==", - "dependencies": { - "@types/hoist-non-react-statics": "^3.3.0", - "@types/react": "*", - "hoist-non-react-statics": "^3.3.0", - "redux": "^4.0.0" + "node_modules/cli-spinners": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", + "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", + "dev": true, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/react-transition-group": { - "version": "4.4.10", - "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", - "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", + "node_modules/cli-table3": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", + "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "dev": true, "dependencies": { - "@types/react": "*" + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" } }, - "node_modules/@types/react/node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "dev": true - }, - "node_modules/@types/scheduler": { - "version": "0.16.8", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", - "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==", - "license": "MIT" + "node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "dependencies": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "engines": { + "node": ">= 12" + } }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "devOptional": true, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/@types/serve-index": { - "version": "1.9.4", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", - "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", - "dev": true, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "@types/express": "*" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "devOptional": true, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", - "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", - "dev": true + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/@types/sizzle": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", - "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", - "dev": true + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } }, - "node_modules/@types/sockjs": { - "version": "0.3.36", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", - "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=0.8" } }, - "node_modules/@types/ws": { - "version": "8.5.10", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", - "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dev": true, "dependencies": { - "@types/node": "*" + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/@types/yargs": { - "version": "17.0.32", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", - "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", + "node_modules/clone-deep/node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "@types/yargs-parser": "*" + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true + "node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", - "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "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": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/type-utils": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "graphemer": "^1.4.0", - "ignore": "^5.3.1", - "natural-compare": "^1.4.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^7.0.0", - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "color-name": "1.1.3" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", - "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "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/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/columnify": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", + "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" + "strip-ansi": "^6.0.1", + "wcwidth": "^1.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=8.0.0" } }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", - "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", - "dev": true, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { - "@typescript-eslint/utils": "5.62.0" + "delayed-stream": "~1.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">= 0.8" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/commander": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 6" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/comment-parser": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", + "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 12.0.0" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "node_modules/common-path-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", + "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", + "dev": true + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "mime-db": ">= 1.43.0 < 2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", + "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", + "dependencies": { + "bytes": "3.1.2", + "compressible": "~2.0.18", + "debug": "2.6.9", + "negotiator": "~0.6.4", + "on-headers": "~1.0.2", + "safe-buffer": "5.2.1", + "vary": "~1.1.2" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "node_modules/compression-webpack-plugin": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-9.2.0.tgz", + "integrity": "sha512-R/Oi+2+UHotGfu72fJiRoVpuRifZT0tTC6UqFD/DUo+mv8dbOow9rVOuTvDv5nPPm3GZhHL/fKkwxwIHnJ8Nyw==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "webpack": "^5.1.0" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "dev": true, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/compression/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dependencies": { + "safe-buffer": "5.2.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "engines": { + "node": ">= 0.6" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, + "node_modules/cookie-parser": { + "version": "1.4.7", + "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", + "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "cookie": "0.7.2", + "cookie-signature": "1.0.6" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.8.0" } }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" + }, + "node_modules/cookies": { + "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", + "keygrip": "~1.1.0" + }, "engines": { - "node": ">=4.0" + "node": ">= 0.8" } }, - "node_modules/@typescript-eslint/parser": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", - "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "is-what": "^3.14.1" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/@typescript-eslint/rule-tester": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/rule-tester/-/rule-tester-7.18.0.tgz", - "integrity": "sha512-ClrFQlwen9pJcYPIBLuarzBpONQAwjmJ0+YUjAo1TGzoZFJPyUK/A7bb4Mps0u+SMJJnFXbfMN8I9feQDf0O5A==", + "node_modules/copy-to-clipboard": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", + "dependencies": { + "toggle-selection": "^1.0.6" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", + "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", - "ajv": "^6.12.6", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "4.6.2", - "semver": "^7.6.0" + "cacache": "^15.0.5", + "fast-glob": "^3.2.4", + "find-cache-dir": "^3.3.1", + "glob-parent": "^5.1.1", + "globby": "^11.0.1", + "loader-utils": "^2.0.0", + "normalize-path": "^3.0.0", + "p-limit": "^3.0.2", + "schema-utils": "^3.0.0", + "serialize-javascript": "^5.0.1", + "webpack-sources": "^1.4.3" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@eslint/eslintrc": ">=2", - "eslint": "^8.56.0" + "webpack": "^4.37.0 || ^5.0.0" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/ajv": { + "node_modules/copy-webpack-plugin/node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", @@ -7354,3647 +13617,3860 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@typescript-eslint/rule-tester/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", - "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.11.0.tgz", - "integrity": "sha512-WmppUEgYy+y1NTseNMJ6mCFxt03/7jTOy08bcg7bxJJdsM4nuhnchyBbE8vryveaJUf62noH7LodPSo5Z0WUCg==", + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "7.11.0", - "@typescript-eslint/utils": "7.11.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, "peerDependencies": { - "eslint": "^8.56.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "ajv": "^6.9.1" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.11.0.tgz", - "integrity": "sha512-27tGdVEiutD4POirLZX4YzT180vevUURJl4wJGmm6TrQoiYwuxTIY98PBp6L2oN+JQxzE0URvYlzJaBHIekXAw==", + "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.11.0.tgz", - "integrity": "sha512-MPEsDRZTyCiXkD4vd3zywDCifi7tatc4K37KqTprCvaXptP7Xlpdw0NR2hRJTetG5TxbWDB79Ys4kLmHliEo/w==", - "dev": true, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.11.0.tgz", - "integrity": "sha512-cxkhZ2C/iyi3/6U9EPc5y+a6csqHItndvN/CzbNXTNrsC3/ASoYQZEt9uMaEp+xFNjasqQyszp5TumAVKKvJeQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/visitor-keys": "7.11.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/utils": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", - "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", + "node_modules/copy-webpack-plugin/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.11.0", - "@typescript-eslint/types": "7.11.0", - "@typescript-eslint/typescript-estree": "7.11.0" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "node": ">=8.9.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.11.0.tgz", - "integrity": "sha512-7syYk4MzjxTEk0g/w3iqtgxnFQspDJfn6QKD36xMuuhTzjcxY7F8EmBLnALjVyaOF1/bVocu3bS/2/F7rXrveQ==", + "node_modules/copy-webpack-plugin/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.11.0", - "eslint-visitor-keys": "^3.4.3" + "semver": "^6.0.0" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", - "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "dependencies": { + "find-up": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "engines": { + "node": ">=8" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", - "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/visitor-keys": "7.18.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^1.3.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": "^18.18.0 || >=20.0.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/webpack" } }, - "node_modules/@typescript-eslint/utils": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", - "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "node_modules/copy-webpack-plugin/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", + "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.18.0", - "@typescript-eslint/types": "7.18.0", - "@typescript-eslint/typescript-estree": "7.18.0" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, + "randombytes": "^2.1.0" + } + }, + "node_modules/core-js": { + "version": "3.40.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", + "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", + "hasInstallScript": true, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" + "url": "https://opencollective.com/core-js" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", - "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "node_modules/core-js-compat": { + "version": "3.38.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", + "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.18.0", - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^18.18.0 || >=20.0.0" + "browserslist": "^4.23.3" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/core-js" } }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, - "node_modules/@webassemblyjs/ast": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", - "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", - "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", - "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", - "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", - "dev": true + "node_modules/corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", - "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.13.2", - "@webassemblyjs/helper-api-error": "1.13.2", - "@xtuc/long": "4.2.2" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", - "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", - "dev": true + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", - "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "node_modules/create-jest/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/wasm-gen": "1.14.1" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", - "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "node_modules/create-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", - "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "node_modules/create-jest/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@xtuc/long": "4.2.2" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", - "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "node_modules/create-jest/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-jest/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-jest/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", - "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "node_modules/create-ts-index": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/create-ts-index/-/create-ts-index-1.14.0.tgz", + "integrity": "sha512-3VuFF5HeZvkbk9qa8IpSAETYLFxI1n0yiymY2ctr2txJgzYxJP68rw6p9nQ68KlGQLuUBUFfCcBGO/Dk5FdfUQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/helper-wasm-section": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-opt": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1", - "@webassemblyjs/wast-printer": "1.14.1" + "chalk": "^4.1.2", + "dayjs": "^1.10.7", + "debug": "^4.3.3", + "deepmerge": "^4.2.2", + "fast-glob": "^3.2.7", + "fp-ts": "^2.11.5", + "glob": "^7.2.0", + "json5": "^2.2.0", + "merge": "^2.1.1", + "minimatch": "^3.0.4", + "my-easy-fp": "^0.9.0", + "tslib": "^2.3.1", + "yargs": "^17.3.0" + }, + "bin": { + "cti": "dist/cti.js" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", - "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "node_modules/create-ts-index/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", - "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "node_modules/create-ts-index/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-buffer": "1.14.1", - "@webassemblyjs/wasm-gen": "1.14.1", - "@webassemblyjs/wasm-parser": "1.14.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", - "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "node_modules/create-ts-index/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@webassemblyjs/helper-api-error": "1.13.2", - "@webassemblyjs/helper-wasm-bytecode": "1.13.2", - "@webassemblyjs/ieee754": "1.13.2", - "@webassemblyjs/leb128": "1.13.2", - "@webassemblyjs/utf8": "1.13.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", - "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "node_modules/create-ts-index/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.14.1", - "@xtuc/long": "4.2.2" + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "node_modules/create-ts-index/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/create-ts-index/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "node": ">=8" } }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "node_modules/create-ts-index/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "engines": { - "node": ">=14.15.0" + "dependencies": { + "brace-expansion": "^1.1.7" }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "engines": { + "node": "*" } }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "node_modules/create-ts-index/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "dependencies": { + "has-flag": "^4.0.0" }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true + "node_modules/critters": { + "version": "0.0.22", + "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.22.tgz", + "integrity": "sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==", + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^5.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.2", + "htmlparser2": "^8.0.2", + "postcss": "^8.4.23", + "postcss-media-query-parser": "^0.2.3" + } }, - "node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/acorn": { - "version": "8.14.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", - "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" + "node_modules/critters/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.4.0" + "node": ">=7.0.0" } }, - "node_modules/acorn-import-attributes": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/acorn-import-attributes/-/acorn-import-attributes-1.9.5.tgz", - "integrity": "sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^8" + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "node_modules/cron-parser": { + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/cron-parser/-/cron-parser-4.9.0.tgz", + "integrity": "sha512-p0SaNjrHOnQeR8/VnfGbmg9te2kfyYSQ7Sc/j/6DtPL3JQvKxmjO9TSjNFpujqV3vEYYBvNNvXSxzyksBWAx1Q==", "dev": true, "dependencies": { - "acorn": "^8.11.0" + "luxon": "^3.2.1" }, "engines": { - "node": ">=0.4.0" + "node": ">=12.0.0" } }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", "dev": true, "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" }, "engines": { - "node": ">=8.9" + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" } }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, + "license": "MIT", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8.9.0" + "node": ">= 8" } }, - "node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "engines": { + "node": "*" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", "dev": true, "dependencies": { - "debug": "^4.3.4" + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" }, "engines": { - "node": ">= 14" + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, + "node_modules/css-box-model": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, + "tiny-invariant": "^1.0.6" + } + }, + "node_modules/css-declaration-sorter": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-7.2.0.tgz", + "integrity": "sha512-h70rUM+3PNFuaBDTLe8wF/cdWu+dOZmb7pJt8Z2sedYbAcQVQV/tEchueg3GWxwqS0cxtbxmaHEdkNACqcvsow==", + "dev": true, "engines": { - "node": ">=8" + "node": "^14 || ^16 || >=18" + }, + "peerDependencies": { + "postcss": "^8.0.9" } }, - "node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "postcss-selector-parser": "^6.0.9" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/css-loader": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", + "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", "dev": true, "dependencies": { - "ajv": "^8.0.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.33", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.4", + "postcss-modules-scope": "^3.1.1", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "ajv": "^8.0.0" + "@rspack/core": "0.x || 1.x", + "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "ajv": { + "@rspack/core": { + "optional": true + }, + "webpack": { "optional": true } } }, - "node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/css-minimizer-webpack-plugin": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-5.0.1.tgz", + "integrity": "sha512-3caImjKFQkS+ws1TGcFn0V1HyDJFq1Euy589JlD6/3rV2kj+w7r5G9WDMgSHvpvXHNZ2calVypZWuEDQd9wfLg==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" + "@jridgewell/trace-mapping": "^0.3.18", + "cssnano": "^6.0.1", + "jest-worker": "^29.4.3", + "postcss": "^8.4.24", + "schema-utils": "^4.0.1", + "serialize-javascript": "^6.0.1" }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/angulartics2": { - "version": "12.2.1", - "resolved": "https://registry.npmjs.org/angulartics2/-/angulartics2-12.2.1.tgz", - "integrity": "sha512-+uDXkGGJJzzIITE59z1s3rL5okNyGXZN5mP7m2Ro9gouJF88COeRkhYlXZwIXkdQjBzIyOvUv6UamzgL9NiXLg==", - "dependencies": { - "tslib": "^2.3.0" + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@angular/common": ">=13.0.0-0", - "@angular/core": ">=13.0.0-0", - "rxjs": "^7.0.0" + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "@parcel/css": { + "optional": true + }, + "@swc/css": { + "optional": true + }, + "clean-css": { + "optional": true + }, + "csso": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "lightningcss": { + "optional": true + } } }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "node_modules/css-minimizer-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/css-minimizer-webpack-plugin/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/ansi-escapes/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/css-minimizer-webpack-plugin/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/ansi-html-community": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", - "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", "dev": true, - "engines": [ - "node >= 0.8.0" - ], "bin": { - "ansi-html": "bin/ansi-html" + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "engines": { - "node": ">=8" + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" } }, - "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==", + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=4" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "node_modules/css-vendor": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", + "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" + "@babel/runtime": "^7.8.3", + "is-in-browser": "^1.0.2" } }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "engines": { - "node": ">=8.6" + "node": ">= 6" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "node_modules/cssdb": { + "version": "7.11.2", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", + "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", "dev": true, "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "opencollective", + "url": "https://opencollective.com/csstools" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "github", + "url": "https://github.com/sponsors/csstools" } ] }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, "engines": { - "node": ">=14" + "node": ">=4" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "node_modules/cssnano": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.1.2.tgz", + "integrity": "sha512-rYk5UeX7VAM/u0lNqewCdasdtPK81CgX8wJFLEIXHbV2oldWRgJAsZrdhRXkV1NJzA2g850KiFm9mMU2HxNxMA==", "dev": true, "dependencies": { - "dequal": "^2.0.3" + "cssnano-preset-default": "^6.1.2", + "lilconfig": "^3.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "node_modules/cssnano-preset-default": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.1.2.tgz", + "integrity": "sha512-1C0C+eNaeN8OcHQa193aRgYexyJtU8XwbdieEjClw+J9d94E41LwT6ivKH0WT+fYwYWB0Zp3I3IZ7tI/BbUbrg==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, + "browserslist": "^4.23.0", + "css-declaration-sorter": "^7.2.0", + "cssnano-utils": "^4.0.2", + "postcss-calc": "^9.0.1", + "postcss-colormin": "^6.1.0", + "postcss-convert-values": "^6.1.0", + "postcss-discard-comments": "^6.0.2", + "postcss-discard-duplicates": "^6.0.3", + "postcss-discard-empty": "^6.0.3", + "postcss-discard-overridden": "^6.0.2", + "postcss-merge-longhand": "^6.0.5", + "postcss-merge-rules": "^6.1.1", + "postcss-minify-font-values": "^6.1.0", + "postcss-minify-gradients": "^6.0.3", + "postcss-minify-params": "^6.1.0", + "postcss-minify-selectors": "^6.0.4", + "postcss-normalize-charset": "^6.0.2", + "postcss-normalize-display-values": "^6.0.2", + "postcss-normalize-positions": "^6.0.2", + "postcss-normalize-repeat-style": "^6.0.2", + "postcss-normalize-string": "^6.0.2", + "postcss-normalize-timing-functions": "^6.0.2", + "postcss-normalize-unicode": "^6.1.0", + "postcss-normalize-url": "^6.0.2", + "postcss-normalize-whitespace": "^6.0.2", + "postcss-ordered-values": "^6.0.2", + "postcss-reduce-initial": "^6.1.0", + "postcss-reduce-transforms": "^6.0.2", + "postcss-svgo": "^6.0.3", + "postcss-unique-selectors": "^6.0.4" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/cssnano-utils": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.2.tgz", + "integrity": "sha512-ZR1jHg+wZ8o4c3zqf1SIUSTIvm/9mU343FMR6Obe/unskbvpGhZOo1J6d/r8D1pzkRQYuwbcH3hToOuoA2G7oQ==", + "dev": true, "engines": { - "node": ">= 0.4" + "node": "^14 || ^16 || >=18.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "postcss": "^8.4.31" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "css-tree": "~2.2.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, + "dependencies": { + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, "engines": { - "node": ">=8" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "dev": true + }, + "node_modules/cssom": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz", + "integrity": "sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" + "cssom": "~0.3.6" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/csstype": { + "version": "2.6.21", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", + "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" + }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "dev": true + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "dev": true + }, + "node_modules/cypress": { + "version": "13.17.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.17.0.tgz", + "integrity": "sha512-5xWkaPurwkIljojFidhw8lFScyxhtiFHl/i/3zov+1Z5CmY4t9tjIdvSXfu82Y3w7wt0uR9KkucbhkVvJZLQSA==", "dev": true, + "hasInstallScript": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "@cypress/request": "^3.0.6", + "@cypress/xvfb": "^1.2.4", + "@types/sinonjs__fake-timers": "8.1.1", + "@types/sizzle": "^2.3.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", + "bluebird": "^3.7.2", + "buffer": "^5.7.1", + "cachedir": "^2.3.0", + "chalk": "^4.1.0", + "check-more-types": "^2.24.0", + "ci-info": "^4.0.0", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^6.2.1", + "common-tags": "^1.8.0", + "dayjs": "^1.10.4", + "debug": "^4.3.4", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", + "executable": "^4.1.1", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", + "getos": "^3.2.1", + "is-installed-globally": "~0.4.0", + "lazy-ass": "^1.6.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.8", + "ospath": "^1.2.2", + "pretty-bytes": "^5.6.0", + "process": "^0.11.10", + "proxy-from-env": "1.0.0", + "request-progress": "^3.0.0", + "semver": "^7.5.3", + "supports-color": "^8.1.1", + "tmp": "~0.2.3", + "tree-kill": "1.2.2", + "untildify": "^4.0.0", + "yauzl": "^2.10.0" + }, + "bin": { + "cypress": "bin/cypress" }, "engines": { - "node": ">= 0.4" + "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + } + }, + "node_modules/cypress-axe": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/cypress-axe/-/cypress-axe-1.5.0.tgz", + "integrity": "sha512-Hy/owCjfj+25KMsecvDgo4fC/781ccL+e8p+UUYoadGVM2ogZF9XIKbiM6KI8Y3cEaSreymdD6ZzccbI2bY0lQ==", + "dev": true, + "engines": { + "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "axe-core": "^3 || ^4", + "cypress": "^10 || ^11 || ^12 || ^13" } }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "node_modules/cypress/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "node_modules/cypress/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "safer-buffer": "~2.1.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "node_modules/cypress/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=0.8" + "node": ">=7.0.0" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/cypress/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/cypress/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/async": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", - "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" + "node_modules/cypress/node_modules/proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "dev": true }, - "node_modules/async-each-series": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", - "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "node_modules/cypress/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "optional": true, - "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=0.10" } }, - "node_modules/autoprefixer": { - "version": "10.4.18", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", - "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "node_modules/data-urls": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz", + "integrity": "sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001591", - "fraction.js": "^4.3.7", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">=12" } }, - "node_modules/available-typed-arrays": { - "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==", + "node_modules/data-urls/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/data-urls/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", "dev": true, "dependencies": { - "possible-typed-array-names": "^1.0.0" + "punycode": "^2.1.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "node_modules/data-urls/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/aws4": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", - "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", - "dev": true - }, - "node_modules/axe-core": { - "version": "4.10.2", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.2.tgz", - "integrity": "sha512-RE3mdQ7P3FRSe7eqCWoeQ/Z9QXrtniSjp1wUjt5nRC3WIpz5rSCve6o3fsZ2aCpJtrZjSZgjwXAoTO5k4tEI0w==", + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/axobject-query": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", - "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "dev": true, "dependencies": { - "dequal": "^2.0.3" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-loader": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", - "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "dev": true, "dependencies": { - "find-cache-dir": "^4.0.0", - "schema-utils": "^4.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 0.4" }, - "peerDependencies": { - "@babel/core": "^7.12.0", - "webpack": ">=5" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "@babel/runtime": "^7.21.0" }, "engines": { - "node": ">=8" + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "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.6.2", - "semver": "^6.3.1" - }, + "node_modules/date-fns-tz": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", + "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "date-fns": ">=2.0.0" } }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/date-format": { + "version": "4.0.14", + "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "engines": { + "node": ">=4.0" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz", - "integrity": "sha512-7nZPG1uzK2Ymhy/NbaOWTg3uibM2BmGASS4vHS4szRZAIR8R6GwA/xAujpdrXU5iyklrimWnLWU+BLF9suPTqg==", - "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0", - "core-js-compat": "^3.34.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } + "node_modules/dayjs": { + "version": "1.11.11", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "dev": true }, - "node_modules/babel-plugin-polyfill-corejs3/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", - "dev": true, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" + "ms": "2.1.2" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.5.tgz", - "integrity": "sha512-OJGYZlhLqBh2DDHeqAxWB1XIvr49CxiJ2gIt61/PU55CQK4Z58OzMqjDe1zwQdQk+rBYsRc+1rJmdajM3gimHg==", + "node_modules/decamelize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", + "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.5.0" + "engines": { + "node": ">=10" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/babel-plugin-polyfill-regenerator/node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.5.0.tgz", - "integrity": "sha512-NovQquuQLAQ5HuyjCz7WQP9MjRj7dx++yspwiyUiGl9ZyadHRSql1HZh5ogRd8W8w6YM6EQ/NTB8rgjLt5W65Q==", + "node_modules/decimal.js": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.5.0.tgz", + "integrity": "sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==", + "dev": true + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "dev": true }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/deep-freeze": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", + "integrity": "sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==", + "dev": true }, - "node_modules/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { - "node": "^4.5.0 || >= 5.9" + "node": ">=0.10.0" } }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, "dependencies": { - "safe-buffer": "5.1.2" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", - "dev": true - }, - "node_modules/batch-processor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", - "integrity": "sha512-xoLQD8gmmR32MeuBHgH0Tzd5PuSZx71ZsbhVxOCRbgktZEPe4SQy7s9Z50uPp0F/f7iw2XmkHN2xkgbMfckMDA==" - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bent": { - "version": "7.3.12", - "resolved": "https://registry.npmjs.org/bent/-/bent-7.3.12.tgz", - "integrity": "sha512-T3yrKnVGB63zRuoco/7Ybl7BwwGZR0lceoVG5XmQyMIH9s19SV5m+a8qam4if0zQuAmOQTyPTPmsQBdAorGK3w==", + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", "dev": true, "dependencies": { - "bytesish": "^0.4.1", - "caseless": "~0.12.0", - "is-stream": "^2.0.0" + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" } }, - "node_modules/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "node_modules/default-gateway/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/default-gateway/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dev": true, "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/blob-util": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", - "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", - "dev": true - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", + "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": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/body-parser/node_modules/ms": { + "node_modules/define-lazy-prop": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/bonjour-service": { + "node_modules/define-properties": { "version": "1.2.1", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.2.1.tgz", - "integrity": "sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3", - "multicast-dns": "^7.2.5" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==" - }, - "node_modules/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==" - }, - "node_modules/bootstrap": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.2.tgz", - "integrity": "sha512-51Bbp/Uxr9aTuy6ca/8FbFloBUJZLHwnhTcnjIeRn2suQWsWzcuJhGjKDB5eppVte/8oCdOL3VuwxvZDUggwGQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.16.1" + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dependencies": { - "balanced-match": "^1.0.0" + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "^7.1.1" - }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/browser-sync": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-3.0.3.tgz", - "integrity": "sha512-91hoBHKk1C4pGeD+oE9Ld222k2GNQEAsI5AElqR8iLLWNrmZR2LPP8B0h8dpld9u7kro5IEUB3pUb0DJ3n1cRQ==", + "node_modules/dependency-graph": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-1.0.0.tgz", + "integrity": "sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "browser-sync-client": "^3.0.3", - "browser-sync-ui": "^3.0.3", - "bs-recipes": "1.3.4", - "chalk": "4.1.2", - "chokidar": "^3.5.1", - "connect": "3.6.6", - "connect-history-api-fallback": "^1", - "dev-ip": "^1.0.1", - "easy-extender": "^2.3.4", - "eazy-logger": "^4.0.1", - "etag": "^1.8.1", - "fresh": "^0.5.2", - "fs-extra": "3.0.1", - "http-proxy": "^1.18.1", - "immutable": "^3", - "micromatch": "^4.0.8", - "opn": "5.3.0", - "portscanner": "2.2.0", - "raw-body": "^2.3.2", - "resp-modifier": "6.0.2", - "rx": "4.1.0", - "send": "^0.19.0", - "serve-index": "^1.9.1", - "serve-static": "^1.16.2", - "server-destroy": "1.0.1", - "socket.io": "^4.4.1", - "ua-parser-js": "^1.0.33", - "yargs": "^17.3.1" - }, - "bin": { - "browser-sync": "dist/bin.js" - }, "engines": { - "node": ">= 8.0.0" + "node": ">=4" } }, - "node_modules/browser-sync-client": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-3.0.3.tgz", - "integrity": "sha512-TOEXaMgYNjBYIcmX5zDlOdjEqCeCN/d7opf/fuyUD/hhGVCfP54iQIDhENCi012AqzYZm3BvuFl57vbwSTwkSQ==", + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "etag": "1.8.1", - "fresh": "0.5.2", - "mitt": "^1.1.3" - }, "engines": { - "node": ">=8.0.0" + "node": ">=6" } }, - "node_modules/browser-sync-ui": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-3.0.3.tgz", - "integrity": "sha512-FcGWo5lP5VodPY6O/f4pXQy5FFh4JK0f2/fTBsp0Lx1NtyBWs/IfPPJbW8m1ujTW/2r07oUXKTF2LYZlCZktjw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "async-each-series": "0.1.1", - "chalk": "4.1.2", - "connect-history-api-fallback": "^1", - "immutable": "^3", - "server-destroy": "1.0.1", - "socket.io-client": "^4.4.1", - "stream-throttle": "^0.1.3" + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/browser-sync-ui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", "dev": true, "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1" + "bin": { + "detect-libc": "bin/detect-libc.js" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=0.10" } }, - "node_modules/browser-sync-ui/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/browser-sync-ui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/detect-port": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/detect-port/-/detect-port-1.6.1.tgz", + "integrity": "sha512-CmnVc+Hek2egPx1PeTFVta2W78xy2K/9Rkf6cC4T59S50tVnzKj+tnx5mmx5lwvCkujZ4uRrpRSuV+IVs3f90Q==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" + "address": "^1.0.1", + "debug": "4" + }, + "bin": { + "detect": "bin/detect-port.js", + "detect-port": "bin/detect-port.js" }, "engines": { - "node": ">=7.0.0" + "node": ">= 4.0.0" } }, - "node_modules/browser-sync-ui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/di": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", + "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">=0.3.1" + } }, - "node_modules/browser-sync-ui/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", "dev": true, - "optional": true, - "peer": true, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/browser-sync-ui/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" + "path-type": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/browser-sync/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/dnd-core": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-10.0.2.tgz", + "integrity": "sha512-PrxEjxF0+6Y1n1n1Z9hSWZ1tvnDXv9syL+BccV1r1RC08uWNsyetf8AnWmUF3NgYPwy0HKQJwTqGkZK+1NlaFA==", "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "@react-dnd/asap": "^4.0.0", + "@react-dnd/invariant": "^2.0.0", + "redux": "^4.0.4" } }, - "node_modules/browser-sync/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/dnd-multi-backend": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/dnd-multi-backend/-/dnd-multi-backend-5.0.1.tgz", + "integrity": "sha512-BAOj6fIeGfZPA1LreehaV8mUD7Ww0EpaKqSDRrZ5mZXLWLIxFPPT3bIvpJhHUCt0+lTrOqkXu11Hudh+gHXNUA==" + }, + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=6" } }, - "node_modules/browser-sync/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "color-name": "~1.1.4" + "esutils": "^2.0.2" }, "engines": { - "node": ">=7.0.0" + "node": ">=6.0.0" } }, - "node_modules/browser-sync/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/browser-sync/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=8" + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" } }, - "node_modules/browser-sync/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/dom-helpers/node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", + "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" } }, - "node_modules/browserslist": { - "version": "4.24.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", - "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dependencies": { - "caniuse-lite": "^1.0.30001663", - "electron-to-chromium": "^1.5.28", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/bs-recipes": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", - "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", "funding": [ { "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "url": "https://github.com/sponsors/fb55" } - ], + ] + }, + "node_modules/domexception": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz", + "integrity": "sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", "dev": true, "engines": { - "node": "*" + "node": ">=12" } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dependencies": { + "domelementtype": "^2.3.0" + }, "engines": { - "node": ">= 0.8" + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/bytesish": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz", - "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==", - "dev": true + "node_modules/dompurify": { + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.6.tgz", + "integrity": "sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==" }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "engines": { - "node": ">= 10" + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/cachedir": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", - "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", + "node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", "dev": true, + "dependencies": { + "dotenv": "^16.4.5" + }, "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dependencies": { - "es-define-property": "^1.0.0", + "call-bind-apply-helpers": "^1.0.1", "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" + "gopd": "^1.2.0" }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001668", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz", - "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "node_modules/ecc-jsbn/node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", "dev": true }, - "node_modules/cerialize": { - "version": "0.1.18", - "resolved": "https://registry.npmjs.org/cerialize/-/cerialize-0.1.18.tgz", - "integrity": "sha512-C/hp4UoPrMK060251Pt/21axF9aL4ceJlg3+pThB68VghhRjOzBzy4f8R9AirXdNB4gpqgaV2deU3UaexInL5w==", - "dependencies": { - "typescript": "^2.5.0" - } + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, - "node_modules/cerialize/node_modules/typescript": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.9.2.tgz", - "integrity": "sha512-Gr4p6nFNaoufRIY4NMdpQRNmgxVIGMs4Fcu/ujdYk3nAZqk7supzBE9idmvfZIlH/Cuj//dvi+019qEue9lV0w==", + "node_modules/ejs": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", + "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", + "dependencies": { + "jake": "^10.8.5" + }, "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "ejs": "bin/cli.js" }, "engines": { - "node": ">=4.2.0" + "node": ">=0.10.0" } }, - "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==", + "node_modules/electron-to-chromium": { + "version": "1.5.38", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.38.tgz", + "integrity": "sha512-VbeVexmZ1IFh+5EfrYz1I0HTzHVIlJa112UEWhciPyeOcKJGeTv6N8WnG4wsQB81DGCaVEGhpSb6o6a8WYFXXg==" + }, + "node_modules/element-resize-detector": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", + "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "batch-processor": "1.0.0" + } + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, "engines": { - "node": "*" + "node": ">= 4" } }, - "node_modules/check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { - "node": ">= 0.8.0" + "node": ">= 0.8" } }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "devOptional": true, "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "iconv-lite": "^0.6.2" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "devOptional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", - "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "engines": { - "node": ">=6.0" + "dependencies": { + "once": "^1.4.0" } }, - "node_modules/ci-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.1.0.tgz", - "integrity": "sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==", + "node_modules/engine.io": { + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", + "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, "engines": { - "node": ">=8" + "node": ">=10.2.0" } }, - "node_modules/classnames": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", - "integrity": "sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==" - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/engine.io-parser": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", + "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=10.0.0" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", "dev": true, + "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" }, "engines": { - "node": ">=8" + "node": ">=10.13.0" } }, - "node_modules/cli-progress": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/cli-progress/-/cli-progress-3.12.0.tgz", - "integrity": "sha512-tRkV3HJ1ASwm19THiiLIXLO7Im7wlTuKnvkYaTkyoAPefqjNg7W7DHKUlGRxy9vxDvbyCYQkQozvptuMkGCg8A==", + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, "dependencies": { - "string-width": "^4.2.3" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.6" } }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", + "node_modules/ent": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", + "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", "dev": true, "dependencies": { - "string-width": "^4.2.0" + "punycode": "^1.4.1" }, "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "node": ">= 0.4" } }, - "node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "engines": { - "node": ">=8" + "node": ">=0.12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, "engines": { - "node": ">= 12" + "node": ">=6" } }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" + "node_modules/envinfo": { + "version": "7.13.0", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", + "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/cliui/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" + "prr": "~1.0.1" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "bin": { + "errno": "cli.js" } }, - "node_modules/cliui/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" + "is-arrayish": "^0.2.1" } }, - "node_modules/cliui/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "engines": { - "node": ">=0.8" + "node": ">= 0.4" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "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-module-lexer": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", + "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", + "dev": true + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dependencies": { + "es-errors": "^1.3.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/clsx": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", - "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", - "engines": { - "node": ">=6" + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" } }, - "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==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, "dependencies": { - "color-name": "1.1.3" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "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==" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "node_modules/es6-promisify": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", + "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", "engines": { - "node": ">=0.1.90" + "node": ">=6" } }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dependencies": { - "delayed-stream": "~1.0.0" + "node_modules/esbuild": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz", + "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" }, "engines": { - "node": ">= 0.8" + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.20.1", + "@esbuild/android-arm": "0.20.1", + "@esbuild/android-arm64": "0.20.1", + "@esbuild/android-x64": "0.20.1", + "@esbuild/darwin-arm64": "0.20.1", + "@esbuild/darwin-x64": "0.20.1", + "@esbuild/freebsd-arm64": "0.20.1", + "@esbuild/freebsd-x64": "0.20.1", + "@esbuild/linux-arm": "0.20.1", + "@esbuild/linux-arm64": "0.20.1", + "@esbuild/linux-ia32": "0.20.1", + "@esbuild/linux-loong64": "0.20.1", + "@esbuild/linux-mips64el": "0.20.1", + "@esbuild/linux-ppc64": "0.20.1", + "@esbuild/linux-riscv64": "0.20.1", + "@esbuild/linux-s390x": "0.20.1", + "@esbuild/linux-x64": "0.20.1", + "@esbuild/netbsd-x64": "0.20.1", + "@esbuild/openbsd-x64": "0.20.1", + "@esbuild/sunos-x64": "0.20.1", + "@esbuild/win32-arm64": "0.20.1", + "@esbuild/win32-ia32": "0.20.1", + "@esbuild/win32-x64": "0.20.1" } }, - "node_modules/commander": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", - "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", + "node_modules/esbuild-wasm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", + "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, "engines": { - "node": ">= 6" + "node": ">=12" } }, - "node_modules/comment-parser": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.3.1.tgz", - "integrity": "sha512-B52sN2VNghyq5ofvUsqZjmk6YkihBX5vMSChmSK9v4ShjKf3Vk5Xcmgpw4o+iIgtrnM/u5FiMpz9VKb8lpBveA==", - "dev": true, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", "engines": { - "node": ">= 12.0.0" + "node": ">=6" } }, - "node_modules/common-path-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/common-path-prefix/-/common-path-prefix-3.0.0.tgz", - "integrity": "sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==", - "dev": true + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "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": ">=4.0.0" + "node": ">=0.8.0" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, "dependencies": { - "mime-db": ">= 1.43.0 < 2" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": ">= 0.6" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/compression": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.5.tgz", - "integrity": "sha512-bQJ0YRck5ak3LgtnpKkiabX5pNF7tMUh1BSy2ZBOTh0Dim0BUu6aPPwByIns6/A5Prh8PufSPerMDUklpzes2Q==", + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, "dependencies": { - "bytes": "3.1.2", - "compressible": "~2.0.18", - "debug": "2.6.9", - "negotiator": "~0.6.4", - "on-headers": "~1.0.2", - "safe-buffer": "5.2.1", - "vary": "~1.1.2" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">= 0.8.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/compression-webpack-plugin": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-9.2.0.tgz", - "integrity": "sha512-R/Oi+2+UHotGfu72fJiRoVpuRifZT0tTC6UqFD/DUo+mv8dbOow9rVOuTvDv5nPPm3GZhHL/fKkwxwIHnJ8Nyw==", + "node_modules/eslint-compat-utils": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.4.tgz", + "integrity": "sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==", "dev": true, "dependencies": { - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "semver": "^7.5.4" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=12" }, "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/compression/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/compression/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/compression/node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "engines": { - "node": ">= 0.6" + "eslint": ">=6.0.0" } }, - "node_modules/compression/node_modules/safe-buffer": { + "node_modules/eslint-etc": { "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/connect": { - "version": "3.6.6", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", - "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "resolved": "https://registry.npmjs.org/eslint-etc/-/eslint-etc-5.2.1.tgz", + "integrity": "sha512-lFJBSiIURdqQKq9xJhvSJFyPA+VeTh5xvk24e8pxVL7bwLBtGF60C/KRkLTMrvCZ6DA3kbPuYhLWY0TZMlqTsg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.0", - "parseurl": "~1.3.2", - "utils-merge": "1.0.1" + "@typescript-eslint/experimental-utils": "^5.0.0", + "tsutils": "^3.17.1", + "tsutils-etc": "^1.4.1" }, - "engines": { - "node": ">= 0.10.0" + "peerDependencies": { + "eslint": "^8.0.0", + "typescript": ">=4.0.0" } }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=0.8" + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "ms": "2.0.0" + "ms": "^2.1.1" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "node_modules/eslint-json-compat-utils": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.1.tgz", + "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==", "dev": true, - "optional": true, - "peer": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "safe-buffer": "5.2.1" + "esquery": "^1.6.0" }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" + "node": ">=12" + }, + "peerDependencies": { + "eslint": "*", + "jsonc-eslint-parser": "^2.4.0" + }, + "peerDependenciesMeta": { + "@eslint/json": { + "optional": true } - ] + } }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "node_modules/eslint-module-utils": { + "version": "2.12.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", + "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, "engines": { - "node": ">= 0.6" + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" - }, - "node_modules/cookie": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", - "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", - "engines": { - "node": ">= 0.6" + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" } }, - "node_modules/cookie-parser": { - "version": "1.4.7", - "resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.4.7.tgz", - "integrity": "sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==", + "node_modules/eslint-plugin-deprecation": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-deprecation/-/eslint-plugin-deprecation-1.5.0.tgz", + "integrity": "sha512-mRcssI/tLROueBQ6yf4LnnGTijbMsTCPIpbRbPj5R5wGYVCpk1zDmAS0SEkgcUDXOPc22qMNFR24Qw7vSPrlTA==", + "dev": true, "dependencies": { - "cookie": "0.7.2", - "cookie-signature": "1.0.6" + "@typescript-eslint/utils": "^5.57.0", + "tslib": "^2.3.1", + "tsutils": "^3.21.0" }, - "engines": { - "node": ">= 0.8.0" + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0", + "typescript": "^3.7.5 || ^4.0.0 || ^5.0.0" } }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/scope-manager": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, "dependencies": { - "is-what": "^3.14.1" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/copy-to-clipboard": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", - "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", - "dependencies": { - "toggle-selection": "^1.0.6" + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/types": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/copy-webpack-plugin": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.4.1.tgz", - "integrity": "sha512-MXyPCjdPVx5iiWyl40Va3JGh27bKzOTNY3NjUTrosD2q7dR/cLD0013uqJ3BpFbUjyONINjb6qI7nDIJujrMbA==", + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" }, "engines": { - "node": ">= 10.13.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://opencollective.com/typescript-eslint" }, - "peerDependencies": { - "webpack": "^4.37.0 || ^5.0.0" + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "@eslint-community/eslint-utils": "^4.2.0", + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "eslint-scope": "^5.1.1", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, "peerDependencies": { - "ajv": "^6.9.1" + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "node_modules/eslint-plugin-deprecation/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=8.9.0" + "node": ">=8.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/eslint-plugin-deprecation/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4.0" } }, - "node_modules/copy-webpack-plugin/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/eslint-plugin-dspace-angular-html": { + "resolved": "lint/dist/src/rules/html", + "link": true + }, + "node_modules/eslint-plugin-dspace-angular-ts": { + "resolved": "lint/dist/src/rules/ts", + "link": true + }, + "node_modules/eslint-plugin-import": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", + "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.8", + "tsconfig-paths": "^3.15.0" }, "engines": { - "node": ">=8" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/eslint-plugin-import-newlines": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-1.4.0.tgz", + "integrity": "sha512-+Cz1x2xBLtI9gJbmuYEpvY7F8K75wskBmJ7rk4VRObIJo+jklUJaejFJgtnWeL0dCFWabGEkhausrikXaNbtoQ==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" + "bin": { + "import-linter": "lib/index.js" }, "engines": { - "node": ">= 10.13.0" + "node": ">=10.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "peerDependencies": { + "eslint": ">=6.0.0" } }, - "node_modules/copy-webpack-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/copy-webpack-plugin/node_modules/serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "randombytes": "^2.1.0" + "ms": "^2.1.1" } }, - "node_modules/core-js": { - "version": "3.40.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.40.0.tgz", - "integrity": "sha512-7vsMc/Lty6AGnn7uFpYT56QesI5D2Y/UkgKounk87OP9Z2H9Z8kj6jzcSGAxFmUtDOS0ntK6lbQz+Nsa0Jj6mQ==", - "hasInstallScript": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/core-js-compat": { - "version": "3.38.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.1.tgz", - "integrity": "sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==", + "node_modules/eslint-plugin-import/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "dependencies": { - "browserslist": "^4.23.3" + "minimist": "^1.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" + "bin": { + "json5": "lib/cli.js" } }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" } }, - "node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "node_modules/eslint-plugin-jsdoc": { + "version": "45.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-45.0.0.tgz", + "integrity": "sha512-l2+Jcs/Ps7oFA+SWY+0sweU/e5LgricnEl6EsDlyRTF5y0+NWL1y9Qwz9PHwHAxtdJq6lxPjEQWmYLMkvhzD4g==", "dev": true, "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "@es-joy/jsdoccomment": "~0.39.4", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.3.1", + "debug": "^4.3.4", + "escape-string-regexp": "^4.0.0", + "esquery": "^1.5.0", + "semver": "^7.5.1", + "spdx-expression-parse": "^3.0.1" }, "engines": { - "node": ">=10" + "node": ">=16" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/critters": { - "version": "0.0.22", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.22.tgz", - "integrity": "sha512-NU7DEcQZM2Dy8XTKFHxtdnIM/drE312j2T4PCVaSUcS0oBeyT/NImpRw/Ap0zOr/1SE7SgPK9tGPg1WK/sVakw==", - "dependencies": { - "chalk": "^4.1.0", - "css-select": "^5.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.2", - "htmlparser2": "^8.0.2", - "postcss": "^8.4.23", - "postcss-media-query-parser": "^0.2.3" + "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/critters/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/eslint-plugin-jsonc": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.18.2.tgz", + "integrity": "sha512-SDhJiSsWt3nItl/UuIv+ti4g3m4gpGkmnUJS9UWR3TrpyNsIcnJoBRD7Kof6cM4Rk3L0wrmY5Tm3z7ZPjR2uGg==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@eslint-community/eslint-utils": "^4.2.0", + "eslint-compat-utils": "^0.6.0", + "eslint-json-compat-utils": "^0.2.1", + "espree": "^9.6.1", + "graphemer": "^1.4.0", + "jsonc-eslint-parser": "^2.0.4", + "natural-compare": "^1.4.0", + "synckit": "^0.6.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ota-meshi" + }, + "peerDependencies": { + "eslint": ">=6.0.0" } }, - "node_modules/critters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/eslint-plugin-lodash": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-lodash/-/eslint-plugin-lodash-7.4.0.tgz", + "integrity": "sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==", + "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "lodash": "^4.17.21" }, "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "eslint": ">=2" } }, - "node_modules/critters/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/eslint-plugin-rxjs": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-rxjs/-/eslint-plugin-rxjs-5.0.3.tgz", + "integrity": "sha512-fcVkqLmYLRfRp+ShafjpUKuaZ+cw/sXAvM5dfSxiEr7M28QZ/NY7vaOr09FB4rSaZsQyLBnNPh5SL+4EgKjh8Q==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "@typescript-eslint/experimental-utils": "^5.0.0", + "common-tags": "^1.8.0", + "decamelize": "^5.0.0", + "eslint-etc": "^5.1.0", + "requireindex": "~1.2.0", + "rxjs-report-usage": "^1.0.4", + "tslib": "^2.0.0", + "tsutils": "^3.0.0", + "tsutils-etc": "^1.4.1" }, - "engines": { - "node": ">=7.0.0" + "peerDependencies": { + "eslint": "^8.0.0", + "typescript": ">=4.0.0" } }, - "node_modules/critters/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/critters/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "engines": { - "node": ">=8" + "node_modules/eslint-plugin-simple-import-sort": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", + "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", + "dev": true, + "peerDependencies": { + "eslint": ">=5.0.0" } }, - "node_modules/critters/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/eslint-plugin-unused-imports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz", + "integrity": "sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==", + "dev": true, + "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "eslint-rule-composer": "^0.3.0" }, "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "6 - 7", + "eslint": "8" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + } } }, - "node_modules/cross-env": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", - "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "node_modules/eslint-rule-composer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", + "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.1" - }, - "bin": { - "cross-env": "src/bin/cross-env.js", - "cross-env-shell": "src/bin/cross-env-shell.js" - }, "engines": { - "node": ">=10.14", - "npm": ">=6", - "yarn": ">=1" + "node": ">=4.0.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/eslint-scope": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", + "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", "dev": true, - "license": "MIT", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 8" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, "engines": { - "node": "*" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/css-blank-pseudo": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", - "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "bin": { - "css-blank-pseudo": "dist/cli.cjs" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.4" + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/css-box-model": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", - "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { - "tiny-invariant": "^1.0.6" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/css-has-pseudo": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", - "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.9" - }, - "bin": { - "css-has-pseudo": "dist/cli.cjs" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.4" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/css-loader": { - "version": "6.10.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.10.0.tgz", - "integrity": "sha512-LTSA/jWbwdMlk+rhmElbDR2vbtQoTBPr7fkJE+mxrHj+7ru0hUmHafDRzWIjIHTwpitWVaqY2/UWGRca3yUgRw==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.4", - "postcss-modules-scope": "^3.1.1", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.5.4" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 12.13.0" + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "@rspack/core": "0.x || 1.x", - "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-prefers-color-scheme": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", - "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "bin": { - "css-prefers-color-scheme": "dist/cli.cjs" + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "postcss": "^8.4" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/css-vendor": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/css-vendor/-/css-vendor-2.0.8.tgz", - "integrity": "sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.8.3", - "is-in-browser": "^1.0.2" + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "node_modules/eslint/node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, "engines": { - "node": ">= 6" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssdb": { - "version": "7.11.2", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.11.2.tgz", - "integrity": "sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - }, - { - "type": "github", - "url": "https://github.com/sponsors/csstools" - } - ] - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/csstype": { - "version": "2.6.21", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", - "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" - }, - "node_modules/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true }, - "node_modules/cypress": { - "version": "13.17.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.17.0.tgz", - "integrity": "sha512-5xWkaPurwkIljojFidhw8lFScyxhtiFHl/i/3zov+1Z5CmY4t9tjIdvSXfu82Y3w7wt0uR9KkucbhkVvJZLQSA==", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, - "hasInstallScript": true, "dependencies": { - "@cypress/request": "^3.0.6", - "@cypress/xvfb": "^1.2.4", - "@types/sinonjs__fake-timers": "8.1.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.2.0", - "blob-util": "^2.0.2", - "bluebird": "^3.7.2", - "buffer": "^5.7.1", - "cachedir": "^2.3.0", - "chalk": "^4.1.0", - "check-more-types": "^2.24.0", - "ci-info": "^4.0.0", - "cli-cursor": "^3.1.0", - "cli-table3": "~0.6.1", - "commander": "^6.2.1", - "common-tags": "^1.8.0", - "dayjs": "^1.10.4", - "debug": "^4.3.4", - "enquirer": "^2.3.6", - "eventemitter2": "6.4.7", - "execa": "4.1.0", - "executable": "^4.1.1", - "extract-zip": "2.0.1", - "figures": "^3.2.0", - "fs-extra": "^9.1.0", - "getos": "^3.2.1", - "is-installed-globally": "~0.4.0", - "lazy-ass": "^1.6.0", - "listr2": "^3.8.3", - "lodash": "^4.17.21", - "log-symbols": "^4.0.0", - "minimist": "^1.2.8", - "ospath": "^1.2.2", - "pretty-bytes": "^5.6.0", - "process": "^0.11.10", - "proxy-from-env": "1.0.0", - "request-progress": "^3.0.0", - "semver": "^7.5.3", - "supports-color": "^8.1.1", - "tmp": "~0.2.3", - "tree-kill": "1.2.2", - "untildify": "^4.0.0", - "yauzl": "^2.10.0" + "p-locate": "^5.0.0" }, - "bin": { - "cypress": "bin/cypress" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^16.0.0 || ^18.0.0 || >=20.0.0" + "node": "*" } }, - "node_modules/cypress-axe": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/cypress-axe/-/cypress-axe-1.5.0.tgz", - "integrity": "sha512-Hy/owCjfj+25KMsecvDgo4fC/781ccL+e8p+UUYoadGVM2ogZF9XIKbiM6KI8Y3cEaSreymdD6ZzccbI2bY0lQ==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { "node": ">=10" }, - "peerDependencies": { - "axe-core": "^3 || ^4", - "cypress": "^10 || ^11 || ^12 || ^13" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cypress/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cypress/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/cypress/node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": ">=8" + "node": ">=0.10" } }, - "node_modules/cypress/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=4.0" } }, - "node_modules/cypress/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, - "node_modules/cypress/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter2": { + "version": "6.4.7", + "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", + "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", + "dev": true + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/cypress/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, + "dependencies": { + "pify": "^2.2.0" + }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/cypress/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/exenv": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", + "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", "dev": true, "dependencies": { - "universalify": "^2.0.0" + "homedir-polyfill": "^1.0.1" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/cypress/node_modules/proxy-from-env": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", - "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", + "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", "dev": true }, - "node_modules/cypress/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, + "node_modules/express": { + "version": "4.21.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", + "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", "dependencies": { - "has-flag": "^4.0.0" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.12", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" }, "engines": { - "node": ">=10" + "node": ">= 0.10.0" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/cypress/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "node_modules/express-rate-limit": { + "version": "5.5.1", + "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.1.tgz", + "integrity": "sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==" + }, + "node_modules/express-static-gzip": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.2.0.tgz", + "integrity": "sha512-4ZQ0pHX0CAauxmzry2/8XFLM6aZA4NBvg9QezSlsEO1zLnl7vMFa48/WIcjzdfOiEUS4S1npPPKP2NHHYAp6qg==", "dev": true, + "dependencies": { + "parseurl": "^1.3.3", + "serve-static": "^1.16.2" + } + }, + "node_modules/express/node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "engines": { - "node": ">= 10.0.0" + "node": ">= 0.6" } }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { - "assert-plus": "^1.0.0" - }, + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "engines": { - "node": ">=0.10" + "node": ">= 0.8" } }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "dev": true, + "node_modules/express/node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8" } }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" + "os-tmpdir": "~1.0.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.6.0" } }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.21.0" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" }, "engines": { - "node": ">=0.11" + "node": ">= 10.17.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/date-fns-tz": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/date-fns-tz/-/date-fns-tz-1.3.8.tgz", - "integrity": "sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==", - "peerDependencies": { - "date-fns": ">=2.0.0" + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", "dev": true, - "engines": { - "node": ">=4.0" - } + "engines": [ + "node >=0.6.0" + ] }, - "node_modules/dayjs": { - "version": "1.11.11", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true }, - "node_modules/debug": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.5.tgz", - "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", - "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.6.0" } }, - "node_modules/deep-freeze": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/deep-freeze/-/deep-freeze-0.0.1.tgz", - "integrity": "sha512-Z+z8HiAvsGwmjqlphnHW5oz6yWlOwu6EQfFTjmeTWlDeda3FS2yv3jhq35TX/ewmsnqB+RX2IdsIOyjJCQN5tg==", - "dev": true - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "node_modules/fast-json-patch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", + "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==" }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "engines": { - "node": ">=0.10.0" - } + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true }, - "node_modules/default-gateway": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", - "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", - "dev": true, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-printf": { + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/fast-printf/-/fast-printf-1.6.9.tgz", + "integrity": "sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==", "dependencies": { - "execa": "^5.0.0" + "boolean": "^3.1.4" }, "engines": { - "node": ">= 10" + "node": ">=10.0" } }, - "node_modules/default-gateway/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">= 4.9.1" } }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, "engines": { - "node": ">=10.17.0" + "node": ">=0.8.0" } }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dev": true, "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bser": "2.1.1" } }, - "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==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "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" + "pend": "~1.2.0" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "node_modules/fdir": { + "version": "6.4.3", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", + "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", "dev": true, - "engines": { - "node": ">=8" + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" + "escape-string-regexp": "^1.0.5" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "optional": true, - "bin": { - "detect-libc": "bin/detect-libc.js" + "dependencies": { + "flat-cache": "^3.0.4" }, "engines": { - "node": ">=0.10" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dependencies": { + "minimatch": "^5.0.1" + } }, - "node_modules/dev-ip": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", - "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", - "dev": true, - "optional": true, - "peer": true, - "bin": { - "dev-ip": "lib/dev-ip.js" + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.8.0" + "node": ">=10" } }, - "node_modules/di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, + "node_modules/filesize": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", + "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==", "engines": { - "node": ">=0.3.1" + "node": ">= 0.4.0" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dependencies": { - "path-type": "^4.0.0" + "to-regex-range": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/dnd-core": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-10.0.2.tgz", - "integrity": "sha512-PrxEjxF0+6Y1n1n1Z9hSWZ1tvnDXv9syL+BccV1r1RC08uWNsyetf8AnWmUF3NgYPwy0HKQJwTqGkZK+1NlaFA==", + "node_modules/find-cache-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", + "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "dev": true, "dependencies": { - "@react-dnd/asap": "^4.0.0", - "@react-dnd/invariant": "^2.0.0", - "redux": "^4.0.4" + "common-path-prefix": "^3.0.0", + "pkg-dir": "^7.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/dnd-multi-backend": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/dnd-multi-backend/-/dnd-multi-backend-5.0.1.tgz", - "integrity": "sha512-BAOj6fIeGfZPA1LreehaV8mUD7Ww0EpaKqSDRrZ5mZXLWLIxFPPT3bIvpJhHUCt0+lTrOqkXu11Hudh+gHXNUA==" - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", + "node_modules/find-file-up": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/find-file-up/-/find-file-up-2.0.1.tgz", + "integrity": "sha512-qVdaUhYO39zmh28/JLQM5CoYN9byEOKEH4qfa8K1eNV17W0UUMJ9WgbR/hHFH+t5rcl+6RTb5UC7ck/I+uRkpQ==", "dev": true, "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" + "resolve-dir": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/find-pkg": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-pkg/-/find-pkg-2.0.0.tgz", + "integrity": "sha512-WgZ+nKbELDa6N3i/9nrHeNznm+lY3z4YfhDDWgW+5P0pdmMj26bxaxU11ookgY3NyP9GC7HvZ9etp0jRFqGEeQ==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "find-file-up": "^2.0.1" }, "engines": { - "node": ">=6.0.0" + "node": ">=8" } }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/dom-helpers/node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" - }, - "node_modules/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "dependencies": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" + "bin": { + "flat": "cli.js" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/fb55" + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" } - ] + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, "dependencies": { - "domelementtype": "^2.3.0" + "is-callable": "^1.1.3" + } + }, + "node_modules/foreground-child": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", + "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">= 4" + "node": ">=14" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/dompurify": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.6.tgz", - "integrity": "sha512-zUTaUBO8pY4+iJMPE1B9XlO2tXVYIcEA4SNGtvDELzTSCQO7RzH+j7S180BmhmJId78lqGU2z19vgVx2Sxs/PQ==" - }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } }, - "node_modules/easy-extender": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", - "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "node_modules/fork-ts-checker-webpack-plugin": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.13.tgz", + "integrity": "sha512-fR3WRkOb4bQdWB/y7ssDUlVdrclvwtyCUIHCfivAoYxq9dF7XfrDKbMdZIfwJ7hxIAqkYSGeU7lLJE6xrxIBdg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "lodash": "^4.17.10" + "@babel/code-frame": "^7.16.7", + "chalk": "^4.1.2", + "chokidar": "^3.5.3", + "cosmiconfig": "^7.0.1", + "deepmerge": "^4.2.2", + "fs-extra": "^10.0.0", + "memfs": "^3.4.1", + "minimatch": "^3.0.4", + "node-abort-controller": "^3.0.1", + "schema-utils": "^3.1.1", + "semver": "^7.3.5", + "tapable": "^2.2.1" }, "engines": { - "node": ">= 4.0.0" + "node": ">=12.13.0", + "yarn": ">=1.0.0" + }, + "peerDependencies": { + "typescript": ">3.6.0", + "vue-template-compiler": "*", + "webpack": "^5.11.0" + }, + "peerDependenciesMeta": { + "vue-template-compiler": { + "optional": true + } } }, - "node_modules/eazy-logger": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-4.0.1.tgz", - "integrity": "sha512-2GSFtnnC6U4IEKhEI7+PvdxrmjJ04mdsj3wHZTFiw0tUtG4HCWzTr13ZYTk8XOGnA1xQMaDljoBOYlk3D/MMSw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "chalk": "4.1.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">= 0.8.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" } }, - "node_modules/eazy-logger/node_modules/ansi-styles": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -11005,13 +17481,21 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eazy-logger/node_modules/chalk": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -11023,13 +17507,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eazy-logger/node_modules/color-convert": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "color-name": "~1.1.4" }, @@ -11037,32 +17519,76 @@ "node": ">=7.0.0" } }, - "node_modules/eazy-logger/node_modules/color-name": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "dev": true, - "optional": true, - "peer": true + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/fork-ts-checker-webpack-plugin/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/eazy-logger/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, - "optional": true, - "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/eazy-logger/node_modules/supports-color": { + "node_modules/fork-ts-checker-webpack-plugin/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -11070,378 +17596,465 @@ "node": ">=8" } }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "node_modules/fork-ts-checker-webpack-plugin/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "node_modules/ecc-jsbn/node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "node_modules/fp-ts": { + "version": "2.16.9", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-2.16.9.tgz", + "integrity": "sha512-+I2+FnVB+tVaxcYyQkHUq7ZdKScaBlX53A41mxQtpIccsfyv8PzdzP7fzp2AY832T4aoK6UZ5WRX/ebGd8uZuQ==", + "dev": true }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { - "node": ">=0.10.0" + "node": ">= 0.6" } }, - "node_modules/electron-to-chromium": { - "version": "1.5.38", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.38.tgz", - "integrity": "sha512-VbeVexmZ1IFh+5EfrYz1I0HTzHVIlJa112UEWhciPyeOcKJGeTv6N8WnG4wsQB81DGCaVEGhpSb6o6a8WYFXXg==" + "node_modules/front-matter": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/front-matter/-/front-matter-4.0.2.tgz", + "integrity": "sha512-I8ZuJ/qG92NWX8i5x1Y8qyj3vizhXS31OxjKDu3LKP+7/qBgfIKValiZIEwoVoJKUHlhWtYrktkxV1XsX+pPlg==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1" + } }, - "node_modules/element-resize-detector": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.2.4.tgz", - "integrity": "sha512-Fl5Ftk6WwXE0wqCgNoseKWndjzZlDCwuPTcoVZfCP9R3EHQF8qUtr3YUPNETegRBOKqQKPW3n4kiIWngGi8tKg==", + "node_modules/front-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, "dependencies": { - "batch-processor": "1.0.0" + "sprintf-js": "~1.0.2" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "node_modules/front-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "node_modules/front-matter/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" } }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "node_modules/fs-extra/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, "engines": { - "node": ">= 0.8" + "node": ">= 10.0.0" } }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "optional": true, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, "dependencies": { - "iconv-lite": "^0.6.2" + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/fs-monkey": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", + "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fscreen": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fscreen/-/fscreen-1.2.0.tgz", + "integrity": "sha512-hlq4+BU0hlPmwsFjwGGzZ+OZ9N/wq9Ljg/sq3pX+2CD7hrJsX9tJgWWK/wiNTFM212CLHWhicOoqwXyZGGetJg==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" + "node_modules/function-bind": { + "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/engine.io": { - "version": "6.6.2", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.2.tgz", - "integrity": "sha512-gmNvsYi9C8iErnZdVcJnvCpSKbWTt1E8+JZo8b+daLninywUWi5NQ5STSHZ9rFjFO7imNcvb8Pc5pe/wMR5xEw==", + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { - "@types/cookie": "^0.4.1", - "@types/cors": "^2.8.12", - "@types/node": ">=10.0.0", - "accepts": "~1.3.4", - "base64id": "2.0.0", - "cookie": "~0.7.2", - "cors": "~2.8.5", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { - "node": ">=10.2.0" + "node": ">=6.9.0" } }, - "node_modules/engine.io-client": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.6.1.tgz", - "integrity": "sha512-aYuoak7I+R83M/BBPIOs2to51BmFIpC1wZe6zZzMrT2llVsHy5cvcmdsJgP2Qz6smHu+sD9oexiSUAVd8OfBPw==", - "dev": true, - "optional": true, - "peer": true, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", + "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.1", - "engine.io-parser": "~5.2.1", - "ws": "~8.17.1", - "xmlhttprequest-ssl": "~2.1.1" + "call-bind-apply-helpers": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "function-bind": "^1.1.2", + "get-proto": "^1.0.0", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/engine.io-parser": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.2.tgz", - "integrity": "sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==", + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">=8.0.0" } }, - "node_modules/enhanced-resolve": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", - "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", - "dev": true, - "license": "MIT", + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">= 0.4" } }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "dependencies": { - "ansi-colors": "^4.1.1" + "pump": "^3.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ent": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", - "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "dev": true, "dependencies": { - "punycode": "^1.4.1" + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { "node": ">= 0.4" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/getos": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", + "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", "dev": true, - "engines": { - "node": ">=6" + "dependencies": { + "async": "^3.2.0" } }, - "node_modules/envinfo": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.13.0.tgz", - "integrity": "sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==", + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", "dev": true, - "bin": { - "envinfo": "dist/cli.js" + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=4" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { - "prr": "~1.0.1" + "is-glob": "^4.0.1" }, - "bin": { - "errno": "cli.js" + "engines": { + "node": ">= 6" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "*" } }, - "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==", + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", + "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4" + "ini": "2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "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==", + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/es-module-lexer": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.4.tgz", - "integrity": "sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==", - "dev": true - }, - "node_modules/es-object-atoms": { + "node_modules/global-modules": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", "dev": true, "dependencies": { - "es-errors": "^1.3.0" + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "node_modules/global-prefix": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", "dev": true, "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" }, "engines": { - "node": ">= 0.4" + "node": ">=0.10.0" } }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "node_modules/global-prefix/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { - "hasown": "^2.0.0" + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -11450,1846 +18063,1765 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es6-promisify": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-7.0.0.tgz", - "integrity": "sha512-ginqzK3J90Rd4/Yz7qRrqUeIpe3TwSXTPPZtPne7tGBPeAaQiU8qt4fpKApnxHcq1AwtUdHVg5P77x/yrggG8Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/esbuild": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.20.1.tgz", - "integrity": "sha512-OJwEgrpWm/PCMsLVWXKqvcjme3bHNpOgN7Tb6cQnR5n0TPbQx1/Xrn7rqM+wn17bYeT6MGB5sn1Bh5YiGi70nA==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "hasInstallScript": true, - "optional": true, - "bin": { - "esbuild": "bin/esbuild" + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.20.1", - "@esbuild/android-arm": "0.20.1", - "@esbuild/android-arm64": "0.20.1", - "@esbuild/android-x64": "0.20.1", - "@esbuild/darwin-arm64": "0.20.1", - "@esbuild/darwin-x64": "0.20.1", - "@esbuild/freebsd-arm64": "0.20.1", - "@esbuild/freebsd-x64": "0.20.1", - "@esbuild/linux-arm": "0.20.1", - "@esbuild/linux-arm64": "0.20.1", - "@esbuild/linux-ia32": "0.20.1", - "@esbuild/linux-loong64": "0.20.1", - "@esbuild/linux-mips64el": "0.20.1", - "@esbuild/linux-ppc64": "0.20.1", - "@esbuild/linux-riscv64": "0.20.1", - "@esbuild/linux-s390x": "0.20.1", - "@esbuild/linux-x64": "0.20.1", - "@esbuild/netbsd-x64": "0.20.1", - "@esbuild/openbsd-x64": "0.20.1", - "@esbuild/sunos-x64": "0.20.1", - "@esbuild/win32-arm64": "0.20.1", - "@esbuild/win32-ia32": "0.20.1", - "@esbuild/win32-x64": "0.20.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esbuild-wasm": { - "version": "0.20.1", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", - "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", - "dev": true, - "bin": { - "esbuild": "bin/esbuild" - }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "engines": { - "node": ">=6" - } + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, - "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==", - "engines": { - "node": ">=0.8.0" + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/harmony-reflect": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/harmony-reflect/-/harmony-reflect-1.6.2.tgz", + "integrity": "sha512-HIp/n38R9kQjDEziXyDTuW3vvoxxyxjxFzXLrBr18uB47GnSt+G9D29fqrpM5ZkspMcPICud3XsBJQ4Y2URg8g==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "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/has-property-descriptors": { + "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": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" + "es-define-property": "^1.0.0" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-compat-utils": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/eslint-compat-utils/-/eslint-compat-utils-0.6.4.tgz", - "integrity": "sha512-/u+GQt8NMfXO8w17QendT4gvO5acfxQsAKirAt0LVxDnr2N8YLCVbregaNc/Yhp7NM128DwCaRvr8PLDfeNkQw==", + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "dependencies": { - "semver": "^7.5.4" + "has-symbols": "^1.0.3" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, - "peerDependencies": { - "eslint": ">=6.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-etc": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-etc/-/eslint-etc-5.2.1.tgz", - "integrity": "sha512-lFJBSiIURdqQKq9xJhvSJFyPA+VeTh5xvk24e8pxVL7bwLBtGF60C/KRkLTMrvCZ6DA3kbPuYhLWY0TZMlqTsg==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { - "@typescript-eslint/experimental-utils": "^5.0.0", - "tsutils": "^3.17.1", - "tsutils-etc": "^1.4.1" + "function-bind": "^1.1.2" }, - "peerDependencies": { - "eslint": "^8.0.0", - "typescript": ">=4.0.0" + "engines": { + "node": ">= 0.4" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "bin": { + "he": "bin/he" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dependencies": { - "ms": "^2.1.1" + "react-is": "^16.7.0" } }, - "node_modules/eslint-json-compat-utils": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/eslint-json-compat-utils/-/eslint-json-compat-utils-0.2.1.tgz", - "integrity": "sha512-YzEodbDyW8DX8bImKhAcCeu/L31Dd/70Bidx2Qex9OFUtgzXLqtfWL4Hr5fM/aCCB8QUZLuJur0S9k6UfgFkfg==", + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, "dependencies": { - "esquery": "^1.6.0" + "parse-passwd": "^1.0.0" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "eslint": "*", - "jsonc-eslint-parser": "^2.4.0" - }, - "peerDependenciesMeta": { - "@eslint/json": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "dependencies": { - "debug": "^3.2.7" + "lru-cache": "^10.0.1" }, "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.0.tgz", + "integrity": "sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==", "dev": true, - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": ">=18" } }, - "node_modules/eslint-plugin-deprecation": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-deprecation/-/eslint-plugin-deprecation-1.5.0.tgz", - "integrity": "sha512-mRcssI/tLROueBQ6yf4LnnGTijbMsTCPIpbRbPj5R5wGYVCpk1zDmAS0SEkgcUDXOPc22qMNFR24Qw7vSPrlTA==", + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "^5.57.0", - "tslib": "^2.3.1", - "tsutils": "^3.21.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0", - "typescript": "^3.7.5 || ^4.0.0 || ^5.0.0" + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" } }, - "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "node_modules/hpack.js/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/hpack.js/node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" } }, - "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", + "node_modules/hpack.js/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "dependencies": { + "safe-buffer": "~5.1.0" } }, - "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">=12" } }, - "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", + "node_modules/html-entities": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", + "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ] + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/html-parse-stringify": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, + "void-elements": "3.1.0" + } + }, + "node_modules/html-parse-stringify/node_modules/void-elements": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=0.10.0" + } + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, - "node_modules/eslint-plugin-deprecation/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">= 0.8" } }, - "node_modules/eslint-plugin-deprecation/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.6" } }, - "node_modules/eslint-plugin-deprecation/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">= 0.6" } }, - "node_modules/eslint-plugin-dspace-angular-html": { - "resolved": "lint/dist/src/rules/html", - "link": true + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, - "node_modules/eslint-plugin-dspace-angular-ts": { - "resolved": "lint/dist/src/rules/ts", - "link": true + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true }, - "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", - "dev": true, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", - "hasown": "^2.0.2", - "is-core-module": "^2.15.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.0", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", - "tsconfig-paths": "^3.15.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + "node": ">= 0.8" } }, - "node_modules/eslint-plugin-import-newlines": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import-newlines/-/eslint-plugin-import-newlines-1.4.0.tgz", - "integrity": "sha512-+Cz1x2xBLtI9gJbmuYEpvY7F8K75wskBmJ7rk4VRObIJo+jklUJaejFJgtnWeL0dCFWabGEkhausrikXaNbtoQ==", - "dev": true, - "bin": { - "import-linter": "lib/index.js" - }, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "eslint": ">=6.0.0" - } + "node_modules/http-parser-js": { + "version": "0.5.8", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "dev": true }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "dependencies": { - "ms": "^2.1.1" + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, + "node_modules/http-proxy-middleware": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", + "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", + "license": "MIT", "dependencies": { - "esutils": "^2.0.2" + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, - "node_modules/eslint-plugin-import/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "node_modules/http-server": { + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-14.1.1.tgz", + "integrity": "sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==", "dev": true, "dependencies": { - "minimist": "^1.2.0" + "basic-auth": "^2.0.1", + "chalk": "^4.1.2", + "corser": "^2.0.1", + "he": "^1.2.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy": "^1.18.1", + "mime": "^1.6.0", + "minimist": "^1.2.6", + "opener": "^1.5.1", + "portfinder": "^1.0.28", + "secure-compare": "3.0.1", + "union": "~0.5.0", + "url-join": "^4.0.1" }, "bin": { - "json5": "lib/cli.js" + "http-server": "bin/http-server" + }, + "engines": { + "node": ">=12" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/http-server/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "color-convert": "^2.0.1" }, "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "node_modules/http-server/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint-plugin-jsdoc": { - "version": "45.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-45.0.0.tgz", - "integrity": "sha512-l2+Jcs/Ps7oFA+SWY+0sweU/e5LgricnEl6EsDlyRTF5y0+NWL1y9Qwz9PHwHAxtdJq6lxPjEQWmYLMkvhzD4g==", + "node_modules/http-server/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "@es-joy/jsdoccomment": "~0.39.4", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.3.1", - "debug": "^4.3.4", - "escape-string-regexp": "^4.0.0", - "esquery": "^1.5.0", - "semver": "^7.5.1", - "spdx-expression-parse": "^3.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=16" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "node": ">=7.0.0" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { + "node_modules/http-server/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/http-server/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/eslint-plugin-jsonc": { - "version": "2.18.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsonc/-/eslint-plugin-jsonc-2.18.2.tgz", - "integrity": "sha512-SDhJiSsWt3nItl/UuIv+ti4g3m4gpGkmnUJS9UWR3TrpyNsIcnJoBRD7Kof6cM4Rk3L0wrmY5Tm3z7ZPjR2uGg==", + "node_modules/http-server/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "eslint-compat-utils": "^0.6.0", - "eslint-json-compat-utils": "^0.2.1", - "espree": "^9.6.1", - "graphemer": "^1.4.0", - "jsonc-eslint-parser": "^2.0.4", - "natural-compare": "^1.4.0", - "synckit": "^0.6.0" + "bin": { + "mime": "cli.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ota-meshi" - }, - "peerDependencies": { - "eslint": ">=6.0.0" + "node": ">=4" } }, - "node_modules/eslint-plugin-lodash": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-lodash/-/eslint-plugin-lodash-7.4.0.tgz", - "integrity": "sha512-Tl83UwVXqe1OVeBRKUeWcfg6/pCW1GTRObbdnbEJgYwjxp5Q92MEWQaH9+dmzbRt6kvYU1Mp893E79nJiCSM8A==", + "node_modules/http-server/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "lodash": "^4.17.21" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": ">=2" + "node": ">=8" } }, - "node_modules/eslint-plugin-rxjs": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-rxjs/-/eslint-plugin-rxjs-5.0.3.tgz", - "integrity": "sha512-fcVkqLmYLRfRp+ShafjpUKuaZ+cw/sXAvM5dfSxiEr7M28QZ/NY7vaOr09FB4rSaZsQyLBnNPh5SL+4EgKjh8Q==", + "node_modules/http-signature": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", + "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", "dev": true, "dependencies": { - "@typescript-eslint/experimental-utils": "^5.0.0", - "common-tags": "^1.8.0", - "decamelize": "^5.0.0", - "eslint-etc": "^5.1.0", - "requireindex": "~1.2.0", - "rxjs-report-usage": "^1.0.4", - "tslib": "^2.0.0", - "tsutils": "^3.0.0", - "tsutils-etc": "^1.4.1" + "assert-plus": "^1.0.0", + "jsprim": "^2.0.2", + "sshpk": "^1.18.0" }, - "peerDependencies": { - "eslint": "^8.0.0", - "typescript": ">=4.0.0" + "engines": { + "node": ">=0.10" } }, - "node_modules/eslint-plugin-simple-import-sort": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-simple-import-sort/-/eslint-plugin-simple-import-sort-10.0.0.tgz", - "integrity": "sha512-AeTvO9UCMSNzIHRkg8S6c3RPy5YEwKWSQPx3DYghLedo2ZQxowPFLGDN1AZ2evfg6r6mjBSZSLxLFsWSu3acsw==", - "dev": true, - "peerDependencies": { - "eslint": ">=5.0.0" + "node_modules/http-terminator": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/http-terminator/-/http-terminator-3.2.0.tgz", + "integrity": "sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==", + "dependencies": { + "delay": "^5.0.0", + "p-wait-for": "^3.2.0", + "roarr": "^7.0.4", + "type-fest": "^2.3.3" + }, + "engines": { + "node": ">=14" } }, - "node_modules/eslint-plugin-unused-imports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-unused-imports/-/eslint-plugin-unused-imports-3.2.0.tgz", - "integrity": "sha512-6uXyn6xdINEpxE1MtDjxQsyXB37lfyO2yKGVVgtD7WEWQGORSOZjgrD6hBhvGv4/SO+TOlS+UnC6JppRqbuwGQ==", + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", "dev": true, - "license": "MIT", "dependencies": { - "eslint-rule-composer": "^0.3.0" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "6 - 7", - "eslint": "8" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - } + "node": ">= 14" } }, - "node_modules/eslint-rule-composer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/eslint-rule-composer/-/eslint-rule-composer-0.3.0.tgz", - "integrity": "sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==", + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", "dev": true, "engines": { - "node": ">=4.0.0" + "node": ">=8.12.0" } }, - "node_modules/eslint-scope": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.0.1.tgz", - "integrity": "sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==", + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": ">=10.18" + } + }, + "node_modules/hyphenate-style-name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", + "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" + }, + "node_modules/i18next": { + "version": "19.9.2", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.9.2.tgz", + "integrity": "sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg==", + "dependencies": { + "@babel/runtime": "^7.12.0" + } + }, + "node_modules/icomcom-react": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/icomcom-react/-/icomcom-react-1.0.1.tgz", + "integrity": "sha512-Xbz81qZ+er8RYZ6DFMmXxCl9YjxNWngNfPANTSOvzYNrQDieYvBZi+nv1MspI/ze+PAzfHUrmDcUii5RGCUifg==", + "dependencies": { + "prop-types": "^15.6.0" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "react": "^16.0.0" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" }, - "funding": { - "url": "https://opencollective.com/eslint" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "engines": { + "node": "^10 || ^12 || >= 14" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/identity-obj-proxy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/identity-obj-proxy/-/identity-obj-proxy-3.0.0.tgz", + "integrity": "sha512-00n6YnVHKrinT9t0d9+5yZC6UBNJANpYEQvL2LlX6Ab9lnmxzIRcEmTPuyGScvl1+jKuCICX1Z0Ab1pPKKdikA==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "harmony-reflect": "^1.4.6" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": ">=4" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "dev": true, + "engines": { + "node": ">= 4" } }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/ignore-walk": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", + "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "minimatch": "^9.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, - "dependencies": { - "color-name": "~1.1.4" + "optional": true, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/immutability-helper": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz", + "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==" }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=4" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/import-local/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "find-up": "^4.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=8" } }, - "node_modules/eslint/node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.19" } }, - "node_modules/eslint/node_modules/has-flag": { + "node_modules/indent-string": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", "dev": true }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", "dev": true, "dependencies": { - "p-locate": "^5.0.0" - }, + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/injection-js": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/injection-js/-/injection-js-2.4.0.tgz", + "integrity": "sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "tslib": "^2.0.0" } }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/inquirer": { + "version": "9.2.15", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", + "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "@ljharb/through": "^2.3.12", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", + "cli-cursor": "^3.1.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^3.2.0", + "lodash": "^4.17.21", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": ">=10" + "node": ">=18" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/eslint/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.13.0" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/intersection-observer": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz", + "integrity": "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==" + }, + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dependencies": { + "loose-envify": "^1.0.0" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "dev": true, "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">= 12" } }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "engines": { - "node": ">=4" + "node": ">= 0.10" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "dev": true, "dependencies": { - "estraverse": "^5.1.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" }, "engines": { - "node": ">=0.10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "dependencies": { - "estraverse": "^5.2.0" + "has-bigints": "^1.0.1" }, - "engines": { - "node": ">=4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "engines": { - "node": ">= 0.6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { - "node": ">=0.8.x" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", "dev": true, "dependencies": { - "pify": "^2.2.0" + "is-typed-array": "^1.1.13" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/exenv": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/exenv/-/exenv-1.2.2.tgz", - "integrity": "sha512-Z+ktTxTwv9ILfgKCk32OX3n/doe+OcLTRtqK9pcL+JsP3J1/VW8Uvl4ZjLlKqeW4rzK4oesDOGMEMRIZqtP4Iw==" - }, - "node_modules/exponential-backoff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.1.tgz", - "integrity": "sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==", - "dev": true - }, - "node_modules/express": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz", - "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.12", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">= 0.4" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/express-rate-limit": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-5.5.1.tgz", - "integrity": "sha512-MTjE2eIbHv5DyfuFz4zLYWxpqVhEhkTiwFGuB74Q9CSou2WHO52nlE5y3Zlg6SIsiYUIPj6ifFxnkPz6O3sIUg==" - }, - "node_modules/express-static-gzip": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/express-static-gzip/-/express-static-gzip-2.2.0.tgz", - "integrity": "sha512-4ZQ0pHX0CAauxmzry2/8XFLM6aZA4NBvg9QezSlsEO1zLnl7vMFa48/WIcjzdfOiEUS4S1npPPKP2NHHYAp6qg==", + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "dev": true, - "dependencies": { - "parseurl": "^1.3.3", - "serve-static": "^1.16.2" - } - }, - "node_modules/express/node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/express/node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { - "node": ">= 0.8" + "node": ">=0.10.0" } }, - "node_modules/express/node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", "dev": true, "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "dev": true, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { - "os-tmpdir": "~1.0.2" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=0.6.0" + "node": ">=0.10.0" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "node_modules/is-in-browser": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", + "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" + "is-docker": "^3.0.0" }, "bin": { - "extract-zip": "cli.js" + "is-inside-container": "cli.js" }, "engines": { - "node": ">= 10.17.0" + "node": ">=14.16" }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { - "node": ">=8.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fast-json-patch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/fast-json-patch/-/fast-json-patch-3.1.1.tgz", - "integrity": "sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==" + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "dev": true }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", "dev": true }, - "node_modules/fast-printf": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/fast-printf/-/fast-printf-1.6.9.tgz", - "integrity": "sha512-FChq8hbz65WMj4rstcQsFB0O7Cy++nmbNfLYnD9cYv2cRn8EG6k/MGn9kO/tjO66t09DLDugj3yL+V2o6Qftrg==", - "dependencies": { - "boolean": "^3.1.4" - }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, "engines": { - "node": ">=10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "node_modules/is-network-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.1.0.tgz", + "integrity": "sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==", "dev": true, "engines": { - "node": ">= 4.9.1" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dependencies": { - "reusify": "^1.0.4" + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" } }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "websocket-driver": ">=0.5.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "dependencies": { - "pend": "~1.2.0" + "engines": { + "node": ">=8" } }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=0.10.0" } }, - "node_modules/filelist": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", - "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", - "dependencies": { - "minimatch": "^5.0.1" - } + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/filesize": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/filesize/-/filesize-6.4.0.tgz", - "integrity": "sha512-mjFIpOHC4jbfcTfoh4rkWpI31mF7viw9ikj/JyLoKzqlwG/YsefKfvYlYhdYdg/9mtK2z1AzgN/0LvVQ3zdlSQ==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/finalhandler": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", - "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.1", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.2", - "statuses": "~1.3.1", - "unpipe": "~1.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "ms": "2.0.0" + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true, - "peer": true - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "ee-first": "1.1.1" + "which-typed-array": "^1.1.14" }, "engines": { - "node": ">= 0.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", - "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true }, - "node_modules/find-cache-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-4.0.0.tgz", - "integrity": "sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==", + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "common-path-prefix": "^3.0.0", - "pkg-dir": "^7.0.0" - }, "engines": { - "node": ">=14.16" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "bin": { - "flat": "cli.js" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" + "is-docker": "^2.0.0" }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8" } }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "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/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], + "node_modules/isbinaryfile": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", + "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "dev": true, "engines": { - "node": ">=4.0" + "node": ">= 8.0.0" }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.3" + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/foreground-child": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz", - "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, + "node_modules/isbot": { + "version": "5.1.21", + "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.21.tgz", + "integrity": "sha512-0q3naRVpENL0ReKHeNcwn/G7BDynp0DqZUckKyFtM9+hmpnPqgm8+8wbjiVZ0XNhq1wPQV28/Pb8Snh5adeUHA==", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=18" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10.0" } }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "node_modules/isomorphic-rslog": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/isomorphic-rslog/-/isomorphic-rslog-0.0.7.tgz", + "integrity": "sha512-n6/XnKnZ5eLEj6VllG4XmamXG7/F69nls8dcynHyhcTpsPUYgcgx4ifEaCo4lQJ2uzwfmIT+F0KBGwBcMKmt5g==", "dev": true, "engines": { - "node": "*" + "node": ">=14.17.6" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "node_modules/isomorphic-unfetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", + "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "node-fetch": "^2.6.1", + "unfetch": "^4.2.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" + "node_modules/isomorphic-ws": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isomorphic-ws/-/isomorphic-ws-5.0.0.tgz", + "integrity": "sha512-muId7Zzn9ywDsyXgTIafTry2sV3nySZeUDe6YedVd1Hvuuep5AsIlqK+XefWpYTyJG5e503F2xIuT2lcU6rCSw==", + "dev": true, + "peerDependencies": { + "ws": "*" } }, - "node_modules/fraction.js": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", - "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "node": ">=8" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, "engines": { - "node": ">= 0.6" + "node": ">=8" } }, - "node_modules/fs-extra": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", - "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^3.0.0", - "universalify": "^0.1.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/fs-monkey": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz", - "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==", - "dev": true - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fscreen": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fscreen/-/fscreen-1.2.0.tgz", - "integrity": "sha512-hlq4+BU0hlPmwsFjwGGzZ+OZ9N/wq9Ljg/sq3pX+2CD7hrJsX9tJgWWK/wiNTFM212CLHWhicOoqwXyZGGetJg==" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + "node": ">=8" } }, - "node_modules/function-bind": { - "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/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", + "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=6" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, "engines": { - "node": ">=6.9.0" + "node": ">=6" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "node_modules/istanbul-lib-source-maps/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, "engines": { - "node": "6.* || 8.* || >= 10.*" + "node": ">=6" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" + "glob": "^7.1.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "rimraf": "bin.js" } }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/istanbul-lib-source-maps/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/istanbul-lib-source-maps/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { - "node": ">=8.0.0" + "node": ">=0.10.0" } }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "dependencies": { - "pump": "^3.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "node_modules/jackspeak": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.1.tgz", + "integrity": "sha512-U23pQPDnmYybVkYjObcuYMk43VRlMLLqLI+RdZy8s8WV8WsxO9SnqSroKaluuvcNOdCAlauKszDwd+umbot5Mg==", "dev": true, "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, + "node_modules/jake": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", + "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", "dependencies": { - "async": "^3.2.0" + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, + "node_modules/jake/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "assert-plus": "^1.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, + "node_modules/jake/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/jake/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "*" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/jake/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "is-glob": "^4.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 6" + "node": ">=7.0.0" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "node_modules/jake/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/jake/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" } }, - "node_modules/glob/node_modules/minimatch": { + "node_modules/jake/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13297,1274 +19829,1468 @@ "node": "*" } }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, + "node_modules/jake/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dependencies": { - "ini": "2.0.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "node_modules/jasmine": { + "version": "3.99.0", + "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.99.0.tgz", + "integrity": "sha512-YIThBuHzaIIcjxeuLmPD40SjxkEcc8i//sGMDKCgkRMVgIwRJf5qyExtlJpQeh7pkeoBSOe6lQEdg+/9uKg9mw==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "glob": "^7.1.6", + "jasmine-core": "~3.99.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "engines": { - "node": ">=4" - } + "node_modules/jasmine-core": { + "version": "3.99.1", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", + "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", + "dev": true }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/jasmine-marbles": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/jasmine-marbles/-/jasmine-marbles-0.9.2.tgz", + "integrity": "sha512-T7RjG4fRsdiGGzbQZ6Kj39qYt6O1/KIcR4FkUNsD3DUGkd/AzpwzN+xtk0DXlLWEz5BaVdK1SzMgQDVw879c4Q==", "dev": true, "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" + "lodash": "^4.17.20" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "rxjs": "^7.0.0" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "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==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, "engines": { - "node": ">=4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "dependencies": { - "es-define-property": "^1.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10.17.0" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.3" + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "function-bind": "^1.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" - } - }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "dependencies": { - "react-is": "^16.7.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, - "node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "node_modules/jest-circus/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "lru-cache": "^10.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.0.tgz", - "integrity": "sha512-bfJaPTuEiTYBu+ulDaeQ0F+uLmlfFkMgXj4cbwfuMSjgObGMzb55FMMbDvbRU0fAHZ4sLGkz2mKwcMg8Dvm8Ww==", - "dev": true, - "engines": { - "node": ">=18" - } + "node_modules/jest-circus/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "node_modules/jest-circus/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" + "engines": { + "node": ">=8" } }, - "node_modules/hpack.js/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/hpack.js/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/jest-circus/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/hpack.js/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "dependencies": { - "safe-buffer": "~5.1.0" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/html-entities": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.5.2.tgz", - "integrity": "sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==", + "node_modules/jest-cli/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/mdevils" - }, - { - "type": "patreon", - "url": "https://patreon.com/mdevils" - } - ] - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/html-parse-stringify": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", - "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", "dependencies": { - "void-elements": "3.1.0" - } - }, - "node_modules/html-parse-stringify/node_modules/void-elements": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", - "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", - "dev": true + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "node_modules/jest-cli/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 0.8" + "node": ">=7.0.0" } }, - "node_modules/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", + "node_modules/jest-cli/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, + "node_modules/jest-cli/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">=8.0.0" + "node": ">=8" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/jest-cli/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 14" + "node": ">=8" } }, - "node_modules/http-proxy-middleware": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.7.tgz", - "integrity": "sha512-fgVY8AV7qU7z/MmXJ/rxwbrtQH4jBQ9m7kp3llF0liB7glmFeVZFBepQb32T3y8n8k2+AEYuMPCpinYW+/CuRA==", - "license": "MIT", + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, "dependencies": { - "@types/http-proxy": "^1.17.8", - "http-proxy": "^1.18.1", - "is-glob": "^4.0.1", - "is-plain-obj": "^3.0.0", - "micromatch": "^4.0.2" + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=12.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "@types/express": "^4.17.13" + "@types/node": "*", + "ts-node": ">=9.0.0" }, "peerDependenciesMeta": { - "@types/express": { + "@types/node": { + "optional": true + }, + "ts-node": { "optional": true } } }, - "node_modules/http-signature": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.4.0.tgz", - "integrity": "sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==", + "node_modules/jest-config/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.18.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/http-terminator": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/http-terminator/-/http-terminator-3.2.0.tgz", - "integrity": "sha512-JLjck1EzPaWjsmIf8bziM3p9fgR1Y3JoUKAkyYEbZmFrIvJM6I8vVJfBGWlEtV9IWOvzNnaTtjuwZeBY2kwB4g==", + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "delay": "^5.0.0", - "p-wait-for": "^3.2.0", - "roarr": "^7.0.4", - "type-fest": "^2.3.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=14" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/https-proxy-agent": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", - "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "node_modules/jest-config/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "color-name": "~1.1.4" }, "engines": { - "node": ">= 14" + "node": ">=7.0.0" } }, - "node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "node_modules/jest-config/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-config/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=8.12.0" + "node": ">=8" } }, - "node_modules/hyphenate-style-name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hyphenate-style-name/-/hyphenate-style-name-1.1.0.tgz", - "integrity": "sha512-WDC/ui2VVRrz3jOVi+XtjqkDjiVjTtFaAGiW37k6b+ohyQ5wYDOGkvCZa8+H0nx3gyvv0+BST9xuOgIyGQ00gw==" - }, - "node_modules/i18next": { - "version": "19.9.2", - "resolved": "https://registry.npmjs.org/i18next/-/i18next-19.9.2.tgz", - "integrity": "sha512-0i6cuo6ER6usEOtKajUUDj92zlG+KArFia0857xxiEHAQcUwh/RtOQocui1LPJwunSYT574Pk64aNva1kwtxZg==", + "node_modules/jest-config/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "@babel/runtime": "^7.12.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/icomcom-react": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/icomcom-react/-/icomcom-react-1.0.1.tgz", - "integrity": "sha512-Xbz81qZ+er8RYZ6DFMmXxCl9YjxNWngNfPANTSOvzYNrQDieYvBZi+nv1MspI/ze+PAzfHUrmDcUii5RGCUifg==", + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, "dependencies": { - "prop-types": "^15.6.0" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, - "peerDependencies": { - "react": "^16.0.0" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/jest-diff/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=10" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "node_modules/jest-diff/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/ignore": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", - "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", + "node_modules/jest-diff/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-diff/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=8" } }, - "node_modules/ignore-by-default": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", - "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", - "dev": true - }, - "node_modules/ignore-walk": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-6.0.5.tgz", - "integrity": "sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==", + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "dependencies": { - "minimatch": "^9.0.0" + "detect-newline": "^3.0.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/immutability-helper": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz", - "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==" - }, - "node_modules/immutable": { - "version": "3.8.2", - "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", - "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "node_modules/jest-each/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, - "peer": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/import-fresh/node_modules/resolve-from": { + "node_modules/jest-each/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-each/node_modules/has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/jest-each/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-local/node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/jest-environment-jsdom": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, "engines": { - "node": ">=0.8.19" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "dev": true, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", - "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", + "node_modules/jest-haste-map/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/inquirer": { - "version": "9.2.15", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", - "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { - "@ljharb/through": "^2.3.12", - "ansi-escapes": "^4.3.2", - "chalk": "^5.3.0", - "cli-cursor": "^3.1.0", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "figures": "^3.2.0", - "lodash": "^4.17.21", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/inquirer/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/jest-haste-map/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">= 0.4" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, "engines": { - "node": ">=10.13.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/intersection-observer": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/intersection-observer/-/intersection-observer-0.10.0.tgz", - "integrity": "sha512-fn4bQ0Xq8FTej09YC/jqKZwtijpvARlRp6wxL5WTA6yPe2YWSJ5RJh7Nm79rK2qB0wr6iDQzH60XGq5V/7u8YQ==" - }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/jest-matcher-utils/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "loose-envify": "^1.0.0" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" }, "engines": { - "node": ">= 12" + "node": ">=7.0.0" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/jest-matcher-utils/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-matcher-utils/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "node_modules/jest-matcher-utils/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==" + "node_modules/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-core-module": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", - "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "hasown": "^2.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, "dependencies": { - "is-typed-array": "^1.1.13" + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/jest-preset-angular": { + "version": "14.4.2", + "resolved": "https://registry.npmjs.org/jest-preset-angular/-/jest-preset-angular-14.4.2.tgz", + "integrity": "sha512-BYYv0FaTDfBNh8WyA9mpOV3krfw20kurBGK8INZUnv7KZDAWZuQtCET4TwTWxSNQ9jS1OX1+a5weCm/bTDDM1A==", "dev": true, - "bin": { - "is-docker": "cli.js" + "dependencies": { + "bs-logger": "^0.2.6", + "esbuild-wasm": ">=0.15.13", + "jest-environment-jsdom": "^29.0.0", + "jest-util": "^29.0.0", + "pretty-format": "^29.0.0", + "ts-jest": "^29.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || >=16.10.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "esbuild": ">=0.15.13" + }, + "peerDependencies": { + "@angular/compiler-cli": ">=15.0.0 <20.0.0", + "@angular/core": ">=15.0.0 <20.0.0", + "@angular/platform-browser-dynamic": ">=15.0.0 <20.0.0", + "jest": "^29.0.0", + "typescript": ">=4.8" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">=0.10.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-in-browser": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/is-in-browser/-/is-in-browser-1.1.3.tgz", - "integrity": "sha512-FeXIBgG/CPGd/WUxuEyvgGTEfwiG9Z4EKGxjNMRqviiIIfsmgrpnHLffEDdwUHqNva1VEW91o3xBT/m8Elgl9g==" + "node_modules/jest-resolve/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/jest-resolve/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "node_modules/jest-resolve/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/jest-resolve/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/jest-resolve/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, "engines": { - "node": ">=0.12.0" + "node": ">=8" } }, - "node_modules/is-number-like": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", - "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "lodash.isfinite": "^3.3.2" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/jest-runner/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/jest-runner/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-runner/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/jest-runner/node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "call-bind": "^1.0.7" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/jest-runner/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/jest-runner/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "dependencies": { - "which-typed-array": "^1.1.14" + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/jest-runtime/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/jest-runtime/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "node_modules/jest-runtime/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", + "node_modules/jest-runtime/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isbot": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/isbot/-/isbot-5.1.21.tgz", - "integrity": "sha512-0q3naRVpENL0ReKHeNcwn/G7BDynp0DqZUckKyFtM9+hmpnPqgm8+8wbjiVZ0XNhq1wPQV28/Pb8Snh5adeUHA==", - "engines": { - "node": ">=18" + "node": ">=8" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/jest-runtime/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/isomorphic-unfetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz", - "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==", + "node_modules/jest-runtime/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { - "node-fetch": "^2.6.1", - "unfetch": "^4.2.0" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/jest-snapshot/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "color-convert": "^2.0.1" }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "bin": { - "semver": "bin/semver.js" + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "node_modules/jest-snapshot/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=10" + "node": ">=7.0.0" } }, - "node_modules/istanbul-lib-report/node_modules/has-flag": { + "node_modules/jest-snapshot/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", @@ -14573,7 +21299,7 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { + "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", @@ -14585,136 +21311,243 @@ "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz", - "integrity": "sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw==", + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^2.0.5", - "make-dir": "^2.1.0", - "rimraf": "^2.6.3", - "source-map": "^0.6.1" + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", - "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { - "node": ">=6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/istanbul-lib-source-maps/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/istanbul-lib-source-maps/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/jest-util/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", + "node_modules/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "glob": "^7.1.3" + "color-name": "~1.1.4" }, - "bin": { - "rimraf": "bin.js" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=8" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/jest-util/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/jackspeak": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.1.tgz", - "integrity": "sha512-U23pQPDnmYybVkYjObcuYMk43VRlMLLqLI+RdZy8s8WV8WsxO9SnqSroKaluuvcNOdCAlauKszDwd+umbot5Mg==", + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dev": true, "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" }, "engines": { - "node": ">=18" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jake": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.1.tgz", - "integrity": "sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==", + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.4", - "minimatch": "^3.1.2" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "bin": { - "jake": "bin/cli.js" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/jest-validate/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" }, "engines": { - "node": ">=10" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jake/node_modules/ansi-styles": { + "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, "dependencies": { "color-convert": "^2.0.1" }, @@ -14725,19 +21558,11 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/jake/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/jake/node_modules/chalk": { + "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -14749,10 +21574,11 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jake/node_modules/color-convert": { + "node_modules/jest-watcher/node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, "dependencies": { "color-name": "~1.1.4" }, @@ -14760,34 +21586,26 @@ "node": ">=7.0.0" } }, - "node_modules/jake/node_modules/color-name": { + "node_modules/jest-watcher/node_modules/color-name": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true }, - "node_modules/jake/node_modules/has-flag": { + "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, "engines": { "node": ">=8" } }, - "node_modules/jake/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/jake/node_modules/supports-color": { + "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -14795,37 +21613,6 @@ "node": ">=8" } }, - "node_modules/jasmine": { - "version": "3.99.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-3.99.0.tgz", - "integrity": "sha512-YIThBuHzaIIcjxeuLmPD40SjxkEcc8i//sGMDKCgkRMVgIwRJf5qyExtlJpQeh7pkeoBSOe6lQEdg+/9uKg9mw==", - "dev": true, - "dependencies": { - "glob": "^7.1.6", - "jasmine-core": "~3.99.0" - }, - "bin": { - "jasmine": "bin/jasmine.js" - } - }, - "node_modules/jasmine-core": { - "version": "3.99.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.99.1.tgz", - "integrity": "sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==", - "dev": true - }, - "node_modules/jasmine-marbles": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/jasmine-marbles/-/jasmine-marbles-0.9.2.tgz", - "integrity": "sha512-T7RjG4fRsdiGGzbQZ6Kj39qYt6O1/KIcR4FkUNsD3DUGkd/AzpwzN+xtk0DXlLWEz5BaVdK1SzMgQDVw879c4Q==", - "dev": true, - "dependencies": { - "lodash": "^4.17.20" - }, - "peerDependencies": { - "rxjs": "^7.0.0" - } - }, "node_modules/jest-worker": { "version": "27.5.1", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", @@ -14877,7 +21664,6 @@ "version": "3.7.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==", - "license": "MIT", "peer": true }, "node_modules/js-cookie": { @@ -14916,6 +21702,157 @@ "node": ">=12.0.0" } }, + "node_modules/jsdom": { + "version": "20.0.3", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-20.0.3.tgz", + "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "acorn": "^8.8.1", + "acorn-globals": "^7.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.2", + "decimal.js": "^10.4.2", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.1", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.2", + "parse5": "^7.1.1", + "saxes": "^6.0.0", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.1.2", + "w3c-xmlserializer": "^4.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0", + "ws": "^8.11.0", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/jsdom/node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsdom/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsdom/node_modules/tough-cookie": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz", + "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsdom/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/jsdom/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/jsdom/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", @@ -15002,16 +21939,26 @@ "dev": true }, "node_modules/jsonfile": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", - "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "optional": true, - "peer": true, + "dependencies": { + "universalify": "^2.0.0" + }, "optionalDependencies": { "graceful-fs": "^4.1.6" } }, + "node_modules/jsonfile/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/jsonparse": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", @@ -15549,6 +22496,18 @@ "node": ">=10" } }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -15585,6 +22544,93 @@ "node": ">= 8" } }, + "node_modules/koa": { + "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.9.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" + }, + "engines": { + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", + "dev": true, + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/koa/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/http-errors/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/launch-editor": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.8.0.tgz", @@ -15707,6 +22753,15 @@ "node": ">=0.10.0" } }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -15746,13 +22801,26 @@ "node": ">=10.13.0" } }, - "node_modules/limiter": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", - "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.3.tgz", + "integrity": "sha512-cNOjgCnLB+FnvWWtyRTzmB3POJ+cXxTA81LoW7u8JdmhfXzriropYwpjShnz1QLLWsQwY7nIxoDmcPTwphDK9w==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } }, "node_modules/linkify-it": { "version": "4.0.1", @@ -15874,19 +22942,23 @@ "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, + "node_modules/lodash.clonedeepwith": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeepwith/-/lodash.clonedeepwith-4.5.0.tgz", + "integrity": "sha512-QRBRSxhbtsX1nc0baxSkkK5WlVTTm/s48DSukcGcWZwIyI8Zz+lB+kFiELJXtzfH4Aj6kMWQ1VWW4U5uUDgZMA==", + "dev": true + }, "node_modules/lodash.debounce": { "version": "4.0.8", "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", "dev": true }, - "node_modules/lodash.isfinite": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", - "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", - "dev": true, - "optional": true, - "peer": true + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -15900,6 +22972,12 @@ "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", "dev": true }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -16070,6 +23148,12 @@ "node": ">=8.0" } }, + "node_modules/long-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/long-timeout/-/long-timeout-0.1.1.tgz", + "integrity": "sha512-BFRuQUqc7x2NWxfJBCyUrN8iYUYznzL9JROmRz1gZ6KlOIgmoD+njPVbb+VNn2nGMKggMsK79iUNErillsrx7w==", + "dev": true + }, "node_modules/loose-envify": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", @@ -16089,6 +23173,15 @@ "node": ">=12" } }, + "node_modules/luxon": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.5.0.tgz", + "integrity": "sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/magic-string": { "version": "0.30.8", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", @@ -16290,6 +23383,15 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, "node_modules/manifesto.js": { "version": "4.2.17", "resolved": "https://registry.npmjs.org/manifesto.js/-/manifesto.js-4.2.17.tgz", @@ -16331,6 +23433,14 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/md5": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", @@ -16341,6 +23451,12 @@ "is-buffer": "~1.1.6" } }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, "node_modules/mdurl": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", @@ -16371,6 +23487,12 @@ "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "dev": true + }, "node_modules/merge-descriptors": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", @@ -16708,14 +23830,6 @@ "react-dom": "16.x" } }, - "node_modules/mitt": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", - "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", @@ -16781,108 +23895,373 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/my-easy-fp": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/my-easy-fp/-/my-easy-fp-0.9.0.tgz", + "integrity": "sha512-uqUYAMPNiRBIzmy6vust9I62HnKIdhHdalDS7kMfMoEv9BYVln0G7DCCZFdV/XiwZno6AFeHyQMSPFqgOntArQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "tslib": "1.11.1" + } + }, + "node_modules/my-easy-fp/node_modules/tslib": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/needle": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/ng-mocks": { + "version": "14.13.2", + "resolved": "https://registry.npmjs.org/ng-mocks/-/ng-mocks-14.13.2.tgz", + "integrity": "sha512-ItAB72Pc0uznL1j4TPsFp1wehhitVp7DARkc67aafeIk1FDgwnAZvzJwntMnIp/IWMSbzrEQ6kl3cc5euX1NRA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/help-me-mom" + }, + "peerDependencies": { + "@angular/common": "5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 || 18.0.0-alpha - 18 || 19.0.0-alpha - 19", + "@angular/core": "5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 || 18.0.0-alpha - 18 || 19.0.0-alpha - 19", + "@angular/forms": "5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 || 18.0.0-alpha - 18 || 19.0.0-alpha - 19", + "@angular/platform-browser": "5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 || 18.0.0-alpha - 18 || 19.0.0-alpha - 19" + } + }, + "node_modules/ng-packagr": { + "version": "17.3.0", + "resolved": "https://registry.npmjs.org/ng-packagr/-/ng-packagr-17.3.0.tgz", + "integrity": "sha512-kMSqxeDgv88SWCoapWNRRN1UdBgwu9/Pw/j7u2WFGmzrIWUFivNWBBSSL94kMxr2La+Z9wMwiL8EwKNvmCpg2A==", + "dev": true, + "dependencies": { + "@rollup/plugin-json": "^6.0.1", + "@rollup/plugin-node-resolve": "^15.2.3", + "@rollup/wasm-node": "^4.5.0", + "ajv": "^8.12.0", + "ansi-colors": "^4.1.3", + "browserslist": "^4.22.1", + "cacache": "^18.0.0", + "chokidar": "^3.5.3", + "commander": "^12.0.0", + "convert-source-map": "^2.0.0", + "dependency-graph": "^1.0.0", + "esbuild-wasm": "^0.20.0", + "fast-glob": "^3.3.1", + "find-cache-dir": "^3.3.2", + "injection-js": "^2.4.0", + "jsonc-parser": "^3.2.0", + "less": "^4.2.0", + "ora": "^5.1.0", + "piscina": "^4.4.0", + "postcss": "^8.4.31", + "rxjs": "^7.8.1", + "sass": "^1.69.5" + }, + "bin": { + "ng-packagr": "cli/main.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "optionalDependencies": { + "esbuild": "^0.20.0", + "rollup": "^4.5.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^17.0.0 || ^17.2.0-next.0 || ^17.3.0-next.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "tslib": "^2.3.0", + "typescript": ">=5.2 <5.5" + }, + "peerDependenciesMeta": { + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/ng-packagr/node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ng-packagr/node_modules/cacache": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/ng-packagr/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/ng-packagr/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/ng-packagr/node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/ng-packagr/node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/ng-packagr/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ng-packagr/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/ng-packagr/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ng-packagr/node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" - }, "bin": { - "multicast-dns": "cli.js" + "semver": "bin/semver.js" } }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "node_modules/ng-packagr/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/nanoid": { - "version": "3.3.8", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", - "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" + "node_modules/ng-packagr/node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "dependencies": { + "minipass": "^7.0.3" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/needle": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", - "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", + "node_modules/ng-packagr/node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "optional": true, "dependencies": { - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" + "find-up": "^4.0.0" }, "engines": { - "node": ">= 4.4.x" + "node": ">=8" } }, - "node_modules/needle/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/ng-packagr/node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=0.10.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/ng-packagr/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, "engines": { - "node": ">= 0.6" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/ng-mocks": { - "version": "14.13.2", - "resolved": "https://registry.npmjs.org/ng-mocks/-/ng-mocks-14.13.2.tgz", - "integrity": "sha512-ItAB72Pc0uznL1j4TPsFp1wehhitVp7DARkc67aafeIk1FDgwnAZvzJwntMnIp/IWMSbzrEQ6kl3cc5euX1NRA==", + "node_modules/ng-packagr/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/help-me-mom" + "dependencies": { + "imurmurhash": "^0.1.4" }, - "peerDependencies": { - "@angular/common": "5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 || 18.0.0-alpha - 18 || 19.0.0-alpha - 19", - "@angular/core": "5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 || 18.0.0-alpha - 18 || 19.0.0-alpha - 19", - "@angular/forms": "5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 || 18.0.0-alpha - 18 || 19.0.0-alpha - 19", - "@angular/platform-browser": "5.0.0-alpha - 5 || 6.0.0-alpha - 6 || 7.0.0-alpha - 7 || 8.0.0-alpha - 8 || 9.0.0-alpha - 9 || 10.0.0-alpha - 10 || 11.0.0-alpha - 11 || 12.0.0-alpha - 12 || 13.0.0-alpha - 13 || 14.0.0-alpha - 14 || 15.0.0-alpha - 15 || 16.0.0-alpha - 16 || 17.0.0-alpha - 17 || 18.0.0-alpha - 18 || 19.0.0-alpha - 19" + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/ng2-file-upload": { @@ -16990,6 +24369,12 @@ "node-gyp-build": "^4.2.2" } }, + "node_modules/node-abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==", + "dev": true + }, "node_modules/node-addon-api": { "version": "3.2.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", @@ -17117,11 +24502,37 @@ "node": "^16.13.0 || >=18.0.0" } }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-machine-id": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/node-machine-id/-/node-machine-id-1.1.12.tgz", + "integrity": "sha512-QNABxbrPa3qEIfrE6GOJ7BYIuignnJw7iQ2YPbc3Nla1HzRJjXzZOiikfF8m7eAMfichLt3M4VgLOetqgDmgGQ==", + "dev": true + }, "node_modules/node-releases": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==" }, + "node_modules/node-schedule": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/node-schedule/-/node-schedule-2.1.1.tgz", + "integrity": "sha512-OXdegQq03OmXEjt2hZP33W2YPs/E5BcFQks46+G2gAxs4gHOIVD1u7EqlYLYSKsaIpyKCK9Gbk0ta1/gjRSMRQ==", + "dev": true, + "dependencies": { + "cron-parser": "^4.2.0", + "long-timeout": "0.1.1", + "sorted-array-functions": "^1.3.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/nodemon": { "version": "2.0.22", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.22.tgz", @@ -17245,9 +24656,9 @@ } }, "node_modules/notistack": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/notistack/-/notistack-3.0.1.tgz", - "integrity": "sha512-ntVZXXgSQH5WYfyU+3HfcXuKaapzAJ8fBLQ/G618rn3yvSzEbnOB8ZSOwhX+dAORy/lw+GC2N061JA0+gYWTVA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/notistack/-/notistack-3.0.2.tgz", + "integrity": "sha512-0R+/arLYbK5Hh7mEfR2adt0tyXJcCC9KkA2hc56FeWik2QN6Bm/S4uW+BjzDARsJth5u06nTjelSw/VSnB1YEA==", "dependencies": { "clsx": "^1.1.0", "goober": "^2.0.33" @@ -17261,8 +24672,8 @@ "url": "https://opencollective.com/notistack" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/notistack/node_modules/csstype": { @@ -17317,106 +24728,308 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm-package-arg": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", - "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "node_modules/npm-package-arg": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", + "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", + "semver": "^7.3.5", + "validate-npm-package-name": "^5.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", + "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "dev": true, + "dependencies": { + "ignore-walk": "^6.0.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", + "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", + "dev": true, + "dependencies": { + "npm-install-checks": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0", + "npm-package-arg": "^11.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "16.2.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", + "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", + "dev": true, + "dependencies": { + "@npmcli/redact": "^1.1.0", + "make-fetch-happen": "^13.0.0", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^11.0.0", + "proc-log": "^4.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/npm-registry-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/npm-registry-fetch/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.16", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.16.tgz", + "integrity": "sha512-F1I/bimDpj3ncaNDhfyMWuFqmQDBwDB0Fogc2qpL3BWvkQteFD/8BzWuIRl83rq0DXfm8SGt/HFhLXZyljTXcQ==", + "dev": true + }, + "node_modules/nx": { + "version": "20.4.4", + "resolved": "https://registry.npmjs.org/nx/-/nx-20.4.4.tgz", + "integrity": "sha512-gOR9YFDbDTnOQYy6oqJ60ExgCiJJnz+o1TxrmP6cRmpRVv+5RmuZWQ9fXPtaj4SA69jbNqhSVyopT8oO6I+Gaw==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@napi-rs/wasm-runtime": "0.2.4", + "@yarnpkg/lockfile": "^1.1.0", + "@yarnpkg/parsers": "3.0.2", + "@zkochan/js-yaml": "0.0.7", + "axios": "^1.7.4", + "chalk": "^4.1.0", + "cli-cursor": "3.1.0", + "cli-spinners": "2.6.1", + "cliui": "^8.0.1", + "dotenv": "~16.4.5", + "dotenv-expand": "~11.0.6", + "enquirer": "~2.3.6", + "figures": "3.2.0", + "flat": "^5.0.2", + "front-matter": "^4.0.2", + "ignore": "^5.0.4", + "jest-diff": "^29.4.1", + "jsonc-parser": "3.2.0", + "lines-and-columns": "2.0.3", + "minimatch": "9.0.3", + "node-machine-id": "1.1.12", + "npm-run-path": "^4.0.1", + "open": "^8.4.0", + "ora": "5.3.0", + "resolve.exports": "2.0.3", + "semver": "^7.5.3", + "string-width": "^4.2.3", + "tar-stream": "~2.2.0", + "tmp": "~0.2.1", + "tsconfig-paths": "^4.1.2", + "tslib": "^2.3.0", + "yaml": "^2.6.0", + "yargs": "^17.6.2", + "yargs-parser": "21.1.1" + }, + "bin": { + "nx": "bin/nx.js", + "nx-cloud": "bin/nx-cloud.js" + }, + "optionalDependencies": { + "@nx/nx-darwin-arm64": "20.4.4", + "@nx/nx-darwin-x64": "20.4.4", + "@nx/nx-freebsd-x64": "20.4.4", + "@nx/nx-linux-arm-gnueabihf": "20.4.4", + "@nx/nx-linux-arm64-gnu": "20.4.4", + "@nx/nx-linux-arm64-musl": "20.4.4", + "@nx/nx-linux-x64-gnu": "20.4.4", + "@nx/nx-linux-x64-musl": "20.4.4", + "@nx/nx-win32-arm64-msvc": "20.4.4", + "@nx/nx-win32-x64-msvc": "20.4.4" + }, + "peerDependencies": { + "@swc-node/register": "^1.8.0", + "@swc/core": "^1.3.85" + }, + "peerDependenciesMeta": { + "@swc-node/register": { + "optional": true + }, + "@swc/core": { + "optional": true + } + } + }, + "node_modules/nx/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "hosted-git-info": "^7.0.0", - "proc-log": "^3.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^5.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/npm-packlist": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-8.0.2.tgz", - "integrity": "sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==", + "node_modules/nx/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "ignore-walk": "^6.0.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/npm-pick-manifest": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-9.0.0.tgz", - "integrity": "sha512-VfvRSs/b6n9ol4Qb+bDwNGUXutpy76x6MARw/XssevE0TnctIKcmklJZM5Z7nqs5z5aW+0S63pgCNbpkUNNXBg==", + "node_modules/nx/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "npm-install-checks": "^6.0.0", - "npm-normalize-package-bin": "^3.0.0", - "npm-package-arg": "^11.0.0", - "semver": "^7.3.5" + "color-name": "~1.1.4" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=7.0.0" } }, - "node_modules/npm-registry-fetch": { - "version": "16.2.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-16.2.1.tgz", - "integrity": "sha512-8l+7jxhim55S85fjiDGJ1rZXBWGtRLi1OSb4Z3BPLObPuIaeKRlPRiYMSHU4/81ck3t71Z+UwDDl47gcpmfQQA==", + "node_modules/nx/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/nx/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "@npmcli/redact": "^1.1.0", - "make-fetch-happen": "^13.0.0", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^11.0.0", - "proc-log": "^4.0.0" - }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/npm-registry-fetch/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "node_modules/nx/node_modules/jsonc-parser": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.0.tgz", + "integrity": "sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==", + "dev": true + }, + "node_modules/nx/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm-registry-fetch/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "node_modules/nx/node_modules/ora": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", + "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", "dev": true, + "dependencies": { + "bl": "^4.0.3", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "log-symbols": "^4.0.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/nx/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dependencies": { - "boolbase": "^1.0.0" + "node_modules/nx/node_modules/yaml": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", + "dev": true, + "bin": { + "yaml": "bin.mjs" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": ">= 14" } }, "node_modules/object-assign": { @@ -17563,6 +25176,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "dev": true + }, "node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -17580,36 +25199,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true, + "bin": { + "opener": "bin/opener-bin.js" + } + }, "node_modules/openseadragon": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/openseadragon/-/openseadragon-2.4.2.tgz", "integrity": "sha512-398KbZwRtOYA6OmeWRY4Q0737NTacQ9Q6whmr9Lp1MNQO3p0eBz5LIASRne+4gwequcSM1vcHcjfy3dIndQziw==" }, - "node_modules/opn": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", - "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "is-wsl": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/opn/node_modules/is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", - "dev": true, - "optional": true, - "peer": true, - "engines": { - "node": ">=4" - } - }, "node_modules/optionator": { "version": "0.9.4", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", @@ -18093,6 +25696,15 @@ "node": ">= 0.10" } }, + "node_modules/parse-passwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/parse5": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", @@ -18272,6 +25884,15 @@ "node": ">=0.10.0" } }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, "node_modules/piscina": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.4.0.tgz", @@ -18383,40 +26004,56 @@ "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "license": "MIT", "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, - "node_modules/portscanner": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", - "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "async": "^2.6.0", - "is-number-like": "^1.0.3" + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" }, "engines": { - "node": ">=0.4", - "npm": ">=1.0.0" + "node": ">= 0.12.0" } }, - "node_modules/portscanner/node_modules/async": { + "node_modules/portfinder/node_modules/async": { "version": "2.6.4", "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "lodash": "^4.17.14" } }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/portfinder/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, "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", @@ -18472,6 +26109,22 @@ "postcss": "^8.2" } }, + "node_modules/postcss-calc": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.1.tgz", + "integrity": "sha512-TipgjGyzP5QzEhsOZUaIkeO5mKeMFpebWzRogWG/ysonUlnHcq5aJe0jOjpfzUU8PeSaBQnrE8ehR0QA5vs8PQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, "node_modules/postcss-clamp": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", @@ -18544,6 +26197,40 @@ "postcss": "^8.2" } }, + "node_modules/postcss-colormin": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.1.0.tgz", + "integrity": "sha512-x9yX7DOxeMAR+BgGVnNSAxmAj98NX/YxEMNFP+SDCEeNLb2r3i6Hh1ksMsnW8Ub5SLCpbescQqn9YEbE9554Sw==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "colord": "^2.9.3", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-convert-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.1.0.tgz", + "integrity": "sha512-zx8IwP/ts9WvUM6NkVSkiU902QZL1bwPhaVaLynPtCsOTqp+ZKbNi+s6XJg3rfqpKGA/oc7Oxk5t8pOQJcwl/w==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, "node_modules/postcss-custom-media": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", @@ -18610,14 +26297,62 @@ "postcss-selector-parser": "^6.0.10" }, "engines": { - "node": "^12 || ^14 || >=16" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-discard-comments": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.2.tgz", + "integrity": "sha512-65w/uIqhSBBfQmYnG92FO1mWZjJ4GL5b8atm5Yw2UgrwD7HiNiSSNwJor1eCFGzUgYnN/iIknhNRVqjrrpuglw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.3.tgz", + "integrity": "sha512-+JA0DCvc5XvFAxwx6f/e68gQu/7Z9ud584VLmcgto28eB8FqSFZwtrLwB5Kcp70eIoWP/HXqz4wpo8rD8gpsTw==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-empty": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.3.tgz", + "integrity": "sha512-znyno9cHKQsK6PtxL5D19Fj9uwSzC2mB74cpT66fhgOadEUPyXFkbgwm5tvc3bt3NAy8ltE5MrghxovZRVnOjQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.2.tgz", + "integrity": "sha512-j87xzI4LUggC5zND7KdjsI25APtyMuynXZSujByMaav2roV6OZX+8AaCUcZSWqckZpjAjRyFDdpqybgjFO0HJQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "postcss": "^8.2" + "postcss": "^8.4.31" } }, "node_modules/postcss-double-position-gradients": { @@ -18891,6 +26626,104 @@ "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==" }, + "node_modules/postcss-merge-longhand": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.5.tgz", + "integrity": "sha512-5LOiordeTfi64QhICp07nzzuTDjNSO8g5Ksdibt44d+uvIIAE1oZdRn8y/W5ZtYgRH/lnLDlvi9F8btZcVzu3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.1.1" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-merge-rules": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.1.1.tgz", + "integrity": "sha512-KOdWF0gju31AQPZiD+2Ar9Qjowz1LTChSjFFbS+e2sFgc4uHOp3ZvVX4sNeTlk0w2O31ecFGgrFzhO0RSWbWwQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.2", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.1.0.tgz", + "integrity": "sha512-gklfI/n+9rTh8nYaSJXlCo3nOKqMNkxuGpTn/Qm0gstL3ywTr9/WRKznE+oy6fvfolH6dF+QM4nCo8yPLdvGJg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.3.tgz", + "integrity": "sha512-4KXAHrYlzF0Rr7uc4VrfwDJ2ajrtNEpNEuLxFgwkhFZ56/7gaE4Nr49nLsQDZyUe+ds+kEhf+YAUolJiYXF8+Q==", + "dev": true, + "dependencies": { + "colord": "^2.9.3", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-params": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.1.0.tgz", + "integrity": "sha512-bmSKnDtyyE8ujHQK0RQJDIKhQ20Jq1LYiez54WiaOoBtcSuflfK3Nm596LvbtlFcpipMjgClQGyGr7GAs+H1uA==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.4.tgz", + "integrity": "sha512-L8dZSwNLgK7pjTto9PzWRoMbnLq5vsZSTu8+j1P/2GB8qdtGQfn+K1uSvFgYvgh83cbyxT5m43ZZhUMTJDSClQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, "node_modules/postcss-modules-extract-imports": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz", @@ -18970,6 +26803,139 @@ "postcss": "^8.2" } }, + "node_modules/postcss-normalize-charset": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.2.tgz", + "integrity": "sha512-a8N9czmdnrjPHa3DeFlwqst5eaL5W8jYu3EBbTTkI5FHkfMhFZh1EGbku6jhHhIzTA6tquI2P42NtZ59M/H/kQ==", + "dev": true, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.2.tgz", + "integrity": "sha512-8H04Mxsb82ON/aAkPeq8kcBbAtI5Q2a64X/mnRRfPXBq7XeogoQvReqxEfc0B4WPq1KimjezNC8flUtC3Qz6jg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.2.tgz", + "integrity": "sha512-/JFzI441OAB9O7VnLA+RtSNZvQ0NCFZDOtp6QPFo1iIyawyXg0YI3CYM9HBy1WvwCRHnPep/BvI1+dGPKoXx/Q==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.2.tgz", + "integrity": "sha512-YdCgsfHkJ2jEXwR4RR3Tm/iOxSfdRt7jplS6XRh9Js9PyCR/aka/FCb6TuHT2U8gQubbm/mPmF6L7FY9d79VwQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-string": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.2.tgz", + "integrity": "sha512-vQZIivlxlfqqMp4L9PZsFE4YUkWniziKjQWUtsxUiVsSSPelQydwS8Wwcuw0+83ZjPWNTl02oxlIvXsmmG+CiQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.2.tgz", + "integrity": "sha512-a+YrtMox4TBtId/AEwbA03VcJgtyW4dGBizPl7e88cTFULYsprgHWTbfyjSLyHeBcK/Q9JhXkt2ZXiwaVHoMzA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.1.0.tgz", + "integrity": "sha512-QVC5TQHsVj33otj8/JD869Ndr5Xcc/+fwRh4HAsFsAeygQQXm+0PySrKbr/8tkDKzW+EVT3QkqZMfFrGiossDg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-url": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.2.tgz", + "integrity": "sha512-kVNcWhCeKAzZ8B4pv/DnrU1wNh458zBNp8dh4y5hhxih5RZQ12QWMuQrDgPRw3LRl8mN9vOVfHl7uhvHYMoXsQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.2.tgz", + "integrity": "sha512-sXZ2Nj1icbJOKmdjXVT9pnyHQKiSAyuNQHSgRCUgThn2388Y9cGVDR+E9J9iAYbSbLHI+UUwLVl1Wzco/zgv0Q==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, "node_modules/postcss-opacity-percentage": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz", @@ -18992,6 +26958,22 @@ "postcss": "^8.2" } }, + "node_modules/postcss-ordered-values": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.2.tgz", + "integrity": "sha512-VRZSOB+JU32RsEAQrO94QPkClGPKJEL/Z9PCBImXMhIeK5KAYo6slP/hBYlLgrCjFxyqvn5VC81tycFEDBLG1Q==", + "dev": true, + "dependencies": { + "cssnano-utils": "^4.0.2", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, "node_modules/postcss-overflow-shorthand": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", @@ -19125,45 +27107,183 @@ "postcss": "^8.2" } }, - "node_modules/postcss-replace-overflow-wrap": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", - "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "node_modules/postcss-reduce-initial": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.1.0.tgz", + "integrity": "sha512-RarLgBK/CrL1qZags04oKbVbrrVK2wcxhvta3GCxrZO4zveibqbRPmm2VI8sSgCXwoUHEliRSbOfpR0b/VIoiw==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.2.tgz", + "integrity": "sha512-sB+Ya++3Xj1WaT9+5LOOdirAxP7dJZms3GRcYheSPi1PiTMigsxHAdkrbItHxwYHr4kt1zL7mmcHstgMYT+aiA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", + "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.3.tgz", + "integrity": "sha512-dlrahRmxP22bX6iKEjOM+c8/1p+81asjKT+V5lrgOH944ryx/OHpclnIbGsKVd3uWOXFLYJwCVf0eEkJGvO96g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^3.2.0" + }, + "engines": { + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.4.tgz", + "integrity": "sha512-K38OCaIrO8+PzpArzkLKB42dSARtC2tmG6PvD4b1o1Q2E9Os8jzfWFfSy/rixsHwohtsDdFtAWGjFVFUdwYaMg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/postcss-url": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz", + "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==", + "dev": true, + "dependencies": { + "make-dir": "~3.1.0", + "mime": "~2.5.2", + "minimatch": "~3.0.4", + "xxhashjs": "~0.2.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-url/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, - "peerDependencies": { - "postcss": "^8.0.3" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/postcss-selector-not": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", - "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "node_modules/postcss-url/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.10" + "semver": "^6.0.0" }, "engines": { - "node": "^12 || ^14 || >=16" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/postcss-url/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" }, - "peerDependencies": { - "postcss": "^8.2" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/postcss-selector-parser": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", - "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", + "node_modules/postcss-url/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" + } + }, + "node_modules/postcss-url/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, "node_modules/postcss-value-parser": { @@ -19181,6 +27301,21 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, "node_modules/pretty-bytes": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", @@ -19193,6 +27328,38 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, "node_modules/proc-log": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", @@ -19288,6 +27455,27 @@ "dev": true, "optional": true }, + "node_modules/psl": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", + "integrity": "sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==", + "dev": true, + "dependencies": { + "punycode": "^2.3.1" + }, + "funding": { + "url": "https://github.com/sponsors/lupomontero" + } + }, + "node_modules/psl/node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/pstree.remy": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", @@ -19310,6 +27498,22 @@ "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", "dev": true }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, "node_modules/qjobs": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", @@ -19333,6 +27537,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -19357,6 +27567,12 @@ "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" }, + "node_modules/rambda": { + "version": "9.4.2", + "resolved": "https://registry.npmjs.org/rambda/-/rambda-9.4.2.tgz", + "integrity": "sha512-++euMfxnl7OgaEKwXh9QqThOjMeta2HH001N1v4mYQzBjJBnmXBh2BCK6dZAbICFVXOFUVD3xFG0R3ZPU0mxXw==", + "dev": true + }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", @@ -19397,12 +27613,12 @@ } }, "node_modules/re-resizable": { - "version": "6.9.17", - "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.17.tgz", - "integrity": "sha512-OBqd1BwVXpEJJn/yYROG+CbeqIDBWIp6wathlpB0kzZWWZIY1gPTsgK2yJEui5hOvkCdC2mcexF2V3DZVfLq2g==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.10.3.tgz", + "integrity": "sha512-zvWb7X3RJMA4cuSrqoxgs3KR+D+pEXnGrD2FAD6BMYAULnZsSF4b7AOVyG6pC3VVNVOtlagGDCDmZSwWLjjBBw==", "peerDependencies": { - "react": "^16.13.1 || ^17.0.0 || ^18.0.0", - "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0" + "react": "^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.13.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react": { @@ -19443,6 +27659,7 @@ "version": "13.1.1", "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", + "deprecated": "react-beautiful-dnd is now deprecated. Context and options: https://github.com/atlassian/react-beautiful-dnd/issues/2672", "dependencies": { "@babel/runtime": "^7.9.2", "css-box-model": "^1.2.0", @@ -19611,21 +27828,18 @@ "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-modal": { - "version": "3.16.1", - "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.1.tgz", - "integrity": "sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==", + "version": "3.16.3", + "resolved": "https://registry.npmjs.org/react-modal/-/react-modal-3.16.3.tgz", + "integrity": "sha512-yCYRJB5YkeQDQlTt17WGAgFJ7jr2QYcWa1SHqZ3PluDmnKJ/7+tVU+E6uKyZ0nODaeEj+xCpK4LcSnKXLMC0Nw==", "dependencies": { "exenv": "^1.2.0", "prop-types": "^15.7.2", "react-lifecycles-compat": "^3.0.0", "warning": "^4.0.3" }, - "engines": { - "node": ">=8" - }, "peerDependencies": { - "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18", - "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18" + "react": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19", + "react-dom": "^0.14.0 || ^15.0.0 || ^16 || ^17 || ^18 || ^19" } }, "node_modules/react-mosaic-component": { @@ -19689,11 +27903,11 @@ } }, "node_modules/react-rnd": { - "version": "10.4.11", - "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.11.tgz", - "integrity": "sha512-XTfNGNcS0ad2vo3to7qNTB0BkFML9k1csIUI0Nlj44M6Uuh7yP/2h8WXiXcV3v3bxxVJck1C9K6FS1LrLH0E0Q==", + "version": "10.4.14", + "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.14.tgz", + "integrity": "sha512-NLGc3IymymumPfHy3DXiHNIMOiTlj6xBNb2boHqrtwCgYDasNarpg8tdUY36JlJbrs0E4BvjYBkfEGqUPBsukg==", "dependencies": { - "re-resizable": "6.9.17", + "re-resizable": "6.10.3", "react-draggable": "4.4.6", "tslib": "2.6.2" }, @@ -19733,18 +27947,18 @@ } }, "node_modules/react-virtualized-auto-sizer": { - "version": "1.0.24", - "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.24.tgz", - "integrity": "sha512-3kCn7N9NEb3FlvJrSHWGQ4iVl+ydQObq2fHMn12i5wbtm74zHOPhz/i64OL3c1S1vi9i2GXtZqNqUJTQ+BnNfg==", + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/react-virtualized-auto-sizer/-/react-virtualized-auto-sizer-1.0.25.tgz", + "integrity": "sha512-YHsksEGDfsHbHuaBVDYwJmcktblcHGafz4ZVuYPQYuSHMUGjpwmUCrAOcvMSGMwwk1eFWj1M/1GwYpNPuyhaBg==", "peerDependencies": { - "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0", - "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0" + "react": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^15.3.0 || ^16.0.0-alpha || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/react-window": { - "version": "1.8.10", - "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.10.tgz", - "integrity": "sha512-Y0Cx+dnU6NLa5/EvoHukUD0BklJ8qITCtVEPY1C/nL8wwoZ0b5aEw8Ff1dOVHw7fCzMt55XfJDd8S8W8LCaUCg==", + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/react-window/-/react-window-1.8.11.tgz", + "integrity": "sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==", "dependencies": { "@babel/runtime": "^7.0.0", "memoize-one": ">=3.1.1 <6" @@ -19753,8 +27967,8 @@ "node": ">8.0.0" }, "peerDependencies": { - "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0", - "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" + "react": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, "node_modules/read-cache": { @@ -20090,6 +28304,19 @@ "node": ">=8" } }, + "node_modules/resolve-dir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "dev": true, + "dependencies": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -20138,66 +28365,15 @@ "node": ">=0.10.0" } }, - "node_modules/resp-modifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", - "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "debug": "^2.2.0", - "minimatch": "^3.0.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/resp-modifier/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/resp-modifier/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/resp-modifier/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/resolve.exports": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.3.tgz", + "integrity": "sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==", "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=10" } }, - "node_modules/resp-modifier/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/restore-cursor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", @@ -20307,6 +28483,18 @@ "@babel/runtime": "^7.1.2" } }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/run-async": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", @@ -20338,14 +28526,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rx": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", - "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -20466,14 +28646,14 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "dependencies": { - "call-bind": "^1.0.6", + "call-bound": "^1.0.2", "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "is-regex": "^1.2.1" }, "engines": { "node": ">= 0.4" @@ -20688,8 +28868,19 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "dev": true + }, + "node_modules/saxes": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz", + "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==", "dev": true, - "optional": true + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.7" + } }, "node_modules/scheduler": { "version": "0.19.1", @@ -20720,6 +28911,12 @@ "url": "https://opencollective.com/webpack" } }, + "node_modules/secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==", + "dev": true + }, "node_modules/select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", @@ -20930,14 +29127,6 @@ "node": ">= 0.8" } }, - "node_modules/server-destroy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", - "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -21182,23 +29371,6 @@ "ws": "~8.17.1" } }, - "node_modules/socket.io-client": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.8.0.tgz", - "integrity": "sha512-C0jdhD5yQahMws9alf/yvtsMGTaIDBnZ8Rb5HU56svyq0l5LIrGzIDZZD5pHQlmzxLuU91Gz+VpQMKgCTNYtkw==", - "dev": true, - "optional": true, - "peer": true, - "dependencies": { - "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.3.2", - "engine.io-client": "~6.6.1", - "socket.io-parser": "~4.2.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/socket.io-parser": { "version": "4.2.4", "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", @@ -21251,6 +29423,12 @@ "node": ">= 14" } }, + "node_modules/sorted-array-functions": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sorted-array-functions/-/sorted-array-functions-1.3.0.tgz", + "integrity": "sha512-2sqgzeFlid6N4Z2fUQ1cvFmTOLRi/sEDzSQ0OKYchqgoPmQBVyM3959qYx3fpS6Esef80KjmpgPeEr028dP3OA==", + "dev": true + }, "node_modules/source-list-map": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", @@ -21443,39 +29621,34 @@ "node": ">= 8" } }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/stream-throttle": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", - "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { - "commander": "^2.2.0", - "limiter": "^1.0.5" - }, - "bin": { - "throttleproxy": "bin/throttleproxy.js" + "escape-string-regexp": "^2.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=10" } }, - "node_modules/stream-throttle/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, - "optional": true, - "peer": true + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "engines": { + "node": ">= 0.8" + } }, "node_modules/streamroller": { "version": "3.1.5", @@ -21543,6 +29716,19 @@ } ] }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -21674,10 +29860,115 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/style-loader": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-3.3.4.tgz", + "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==", + "dev": true, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/stylehacks": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.1.1.tgz", + "integrity": "sha512-gSTTEQ670cJNoaeIp9KX6lZmm8LJ3jPB5yJmX8Zq/wQxOsAFXV3qjWzHas3YYk1qesuVIyYWWUpZ0vSE/dTSGg==", + "dev": true, + "dependencies": { + "browserslist": "^4.23.0", + "postcss-selector-parser": "^6.0.16" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.4.31" + } + }, + "node_modules/stylus": { + "version": "0.64.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.64.0.tgz", + "integrity": "sha512-ZIdT8eUv8tegmqy1tTIdJv9We2DumkNZFdCF5mz/Kpq3OcTaxSuCAYZge6HKK2CmNC02G1eJig2RV7XTw5hQrA==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "~4.3.3", + "debug": "^4.3.2", + "glob": "^10.4.5", + "sax": "~1.4.1", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.1.3.tgz", + "integrity": "sha512-TY0SKwiY7D2kMd3UxaWKSf3xHF0FFN/FAfsSqfrhxRT/koXTwffq2cgEWDkLQz7VojMu7qEEHt5TlMjkPx9UDw==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.12", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/stylus/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/stylus/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "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" }, @@ -21697,6 +29988,40 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/svgo": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.3.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, "node_modules/symbol-observable": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", @@ -21706,6 +30031,12 @@ "node": ">=0.10" } }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, "node_modules/synckit": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.6.2.tgz", @@ -21744,6 +30075,22 @@ "node": ">=10" } }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", @@ -21902,6 +30249,18 @@ "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, + "node_modules/thingies": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/thingies/-/thingies-1.21.0.tgz", + "integrity": "sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==", + "dev": true, + "engines": { + "node": ">=10.18" + }, + "peerDependencies": { + "tslib": "^2" + } + }, "node_modules/throttle-debounce": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-2.3.0.tgz", @@ -21941,6 +30300,31 @@ "resolved": "https://registry.npmjs.org/tiny-warning/-/tiny-warning-1.0.3.tgz", "integrity": "sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA==" }, + "node_modules/tinyglobby": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz", + "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==", + "dev": true, + "dependencies": { + "fdir": "^6.4.2", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tldts": { "version": "6.1.65", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.65.tgz", @@ -21968,13 +30352,11 @@ "node": ">=14.14" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -22026,6 +30408,22 @@ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, + "node_modules/tree-dump": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/tree-dump/-/tree-dump-1.0.2.tgz", + "integrity": "sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==", + "dev": true, + "engines": { + "node": ">=10.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" + }, + "peerDependencies": { + "tslib": "2" + } + }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -22035,41 +30433,209 @@ "tree-kill": "cli.js" } }, - "node_modules/ts-api-utils": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", - "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/ts-jest": { + "version": "29.2.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.2.5.tgz", + "integrity": "sha512-KD8zB2aAZrcKIdGk4OwpJggeLcH1FgrICqDSROWqlnJXGCXK4Mn6FcdK2B6670Xr73lHMG1kHw8R87A0ecZ+vA==", + "dev": true, + "dependencies": { + "bs-logger": "^0.2.6", + "ejs": "^3.1.10", + "fast-json-stable-stringify": "^2.1.0", + "jest-util": "^29.0.0", + "json5": "^2.2.3", + "lodash.memoize": "^4.1.2", + "make-error": "^1.3.6", + "semver": "^7.6.3", + "yargs-parser": "^21.1.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "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", + "typescript": ">=4.3 <6" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/transform": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/ts-jest/node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ts-loader": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.2.tgz", + "integrity": "sha512-Qo4piXvOTWcMGIgRiuFa6nHNm+54HbYaZCKqc9eeZCLRy3XqafQgwX2F7mofrbJG3g7EEb+lkiR+z2Lic2s3Zw==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4", + "source-map": "^0.7.4" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" + } + }, + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/ts-loader/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ts-loader/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "engines": { - "node": ">=16" + "dependencies": { + "has-flag": "^4.0.0" }, - "peerDependencies": { - "typescript": ">=4.2.0" + "engines": { + "node": ">=8" } }, "node_modules/ts-node": { - "version": "8.10.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz", - "integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==", + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", "dev": true, "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", "arg": "^4.1.0", + "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "source-map-support": "^0.5.17", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", "ts-node-script": "dist/bin-script.js", "ts-node-transpile-only": "dist/bin-transpile.js", "ts-script": "dist/bin-script-deprecated.js" }, - "engines": { - "node": ">=6.0.0" - }, "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, "node_modules/tsconfig-paths": { @@ -22086,11 +30652,104 @@ "node": ">=6" } }, + "node_modules/tsconfig-paths-webpack-plugin": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths-webpack-plugin/-/tsconfig-paths-webpack-plugin-4.0.0.tgz", + "integrity": "sha512-fw/7265mIWukrSHd0i+wSwx64kYUSAKPfxRDksjKIYTxSAp9W9/xcZVBF4Kl0eqQd5eBpAQ/oQrc5RyM/0c1GQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "enhanced-resolve": "^5.7.0", + "tsconfig-paths": "^4.0.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/tsconfig-paths-webpack-plugin/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "engines": { + "node": ">=0.6.x" + } + }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -22174,6 +30833,15 @@ "node": ">= 0.8.0" } }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/type-fest": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", @@ -22309,31 +30977,6 @@ "typescript-compare": "^0.0.2" } }, - "node_modules/ua-parser-js": { - "version": "1.0.38", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.38.tgz", - "integrity": "sha512-Aq5ppTOfvrCMgAPneW1HfWj66Xi7XL+/mIy996R1/CLS/rcyJQm6QZdsKrUeivDFQ+Oc9Wyuwor8Ze8peEoUoQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - }, - { - "type": "github", - "url": "https://github.com/sponsors/faisalman" - } - ], - "optional": true, - "peer": true, - "engines": { - "node": "*" - } - }, "node_modules/uc.micro": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", @@ -22369,14 +31012,6 @@ "node": ">=18.0" } }, - "node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", - "dev": true, - "optional": true, - "peer": true - }, "node_modules/unfetch": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", @@ -22422,6 +31057,18 @@ "node": ">=4" } }, + "node_modules/union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "dependencies": { + "qs": "^6.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -22466,6 +31113,16 @@ "node": ">=8" } }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "dev": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, "node_modules/update-browserslist-db": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", @@ -22513,6 +31170,22 @@ "node": ">=6" } }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, "node_modules/use-memo-one": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", @@ -22549,6 +31222,26 @@ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "dev": true }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -22599,6 +31292,27 @@ "node": ">=0.10.0" } }, + "node_modules/w3c-xmlserializer": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz", + "integrity": "sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==", + "dev": true, + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, "node_modules/warning": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", @@ -22885,6 +31599,15 @@ "node": ">=10.0.0" } }, + "node_modules/webpack-node-externals": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/webpack-node-externals/-/webpack-node-externals-3.0.0.tgz", + "integrity": "sha512-LnL6Z3GGDPht/AigwRh2dvL9PQPFQ8skEpVrWZXLWBYmqcaojHNN0onvHzie6rq7EWKrrBfPYqNEzTJgiwEQDQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/webpack-sources": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", @@ -23048,6 +31771,39 @@ "node": ">=0.8.0" } }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", + "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", + "dev": true, + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz", + "integrity": "sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==", + "dev": true, + "engines": { + "node": ">=12" + } + }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", @@ -23225,6 +31981,19 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, "node_modules/ws": { "version": "8.17.1", "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", @@ -23254,15 +32023,28 @@ "node": ">= 6" } }, - "node_modules/xmlhttprequest-ssl": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.1.1.tgz", - "integrity": "sha512-ptjR8YSJIXoA3Mbv5po7RtSYHO6mZr8s7i5VGmEk7QY2pQWyT1o0N+W1gKbOyJPUCGXGnuw0wqe8f0L6Y0ny7g==", + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", "dev": true, - "optional": true, - "peer": true, "engines": { - "node": ">=0.4.0" + "node": ">=12" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "dependencies": { + "cuint": "^0.2.2" } }, "node_modules/y18n": { @@ -23322,6 +32104,15 @@ "fd-slicer": "~1.1.0" } }, + "node_modules/ylru": { + "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" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 9e72a4cc9da..4b564bf0959 100644 --- a/package.json +++ b/package.json @@ -13,21 +13,21 @@ "serve": "ts-node --project ./tsconfig.ts-node.json scripts/serve.ts", "serve:ssr": "node dist/server/main", "analyze": "webpack-bundle-analyzer dist/browser/stats.json", - "build": "ng build --configuration development", - "build:stats": "ng build --stats-json", + "build": "nx build --configuration development", + "build:stats": "nx build --stats-json", "build:prod": "cross-env NODE_ENV=production npm run build:ssr", - "build:ssr": "ng build --configuration production && ng run dspace-angular:server:production", + "build:ssr": "nx build --configuration production && nx run dspace-angular:server:production", "build:lint": "rimraf 'lint/dist/**/*.js' 'lint/dist/**/*.js.map' && tsc -b lint/tsconfig.json", - "test": "ng test --source-map=true --watch=false --configuration test", - "test:watch": "nodemon --exec \"ng test --source-map=true --watch=true --configuration test\"", - "test:headless": "ng test --source-map=true --watch=false --configuration test --browsers=ChromeHeadless --code-coverage", + "test": "nx test --source-map=true --watch=false --configuration test", + "test:watch": "nodemon --exec \"nx test --source-map=true --watch=true --configuration test\"", + "test:headless": "nx test --source-map=true --watch=false --configuration test --browsers=ChromeHeadless --code-coverage", "test:lint": "npm run build:lint && npm run test:lint:nobuild", "test:lint:nobuild": "jasmine --config=lint/jasmine.json", "lint": "npm run build:lint && npm run lint:nobuild", - "lint:nobuild": "ng lint", - "lint-fix": "npm run build:lint && ng lint --fix=true", + "lint:nobuild": "nx lint --quiet", + "lint-fix": "npm run build:lint && nx lint --fix=true", "docs:lint": "ts-node --project ./lint/tsconfig.json ./lint/generate-docs.ts", - "e2e": "cross-env NODE_ENV=production ng e2e", + "e2e": "cross-env NODE_ENV=production nx e2e", "clean:dev:config": "rimraf src/assets/config.json", "clean:coverage": "rimraf coverage", "clean:dist": "rimraf dist", @@ -45,7 +45,7 @@ "cypress:run": "cypress run", "env:yaml": "ts-node --project ./tsconfig.ts-node.json scripts/env-to-yaml.ts", "base-href": "ts-node --project ./tsconfig.ts-node.json scripts/base-href.ts", - "check-circ-deps": "npx madge --exclude '(bitstream|bundle|collection|config-submission-form|eperson|item|version)\\.model\\.ts$' --circular --extensions ts ./", + "check-circ-deps": "npx madge --exclude '(bitstream|bundle|collection|config-submission-form|eperson|item|version)\\.model\\.ts|index.ts$' --circular --extensions ts ./", "postinstall": "npm run build:lint || echo 'Skipped DSpace ESLint plugins.'" }, "browser": { @@ -93,7 +93,9 @@ "ngx-infinite-scroll": { "@angular/common": "^17.3.11", "@angular/core": "^17.3.11" - } + }, + "react": "^16.8.3", + "react-dom": "^16.8.0" }, "dependencies": { "@angular/animations": "^17.3.12", @@ -167,6 +169,8 @@ "devDependencies": { "@angular-builders/custom-webpack": "~17.0.2", "@angular-devkit/build-angular": "^17.3.11", + "@angular-devkit/core": "^17.3.11", + "@angular-devkit/schematics": "^17.3.11", "@angular-eslint/builder": "^17.5.3", "@angular-eslint/bundled-angular-compiler": "^17.5.3", "@angular-eslint/eslint-plugin": "^17.5.3", @@ -181,21 +185,33 @@ "@fortawesome/fontawesome-free": "^6.7.2", "@ngrx/store-devtools": "^17.1.1", "@ngtools/webpack": "^16.2.16", + "@nx/angular": "20.4.4", + "@nx/eslint-plugin": "^20.4.4", + "@nx/jest": "20.4.4", + "@nx/js": "20.4.4", + "@nx/workspace": "20.4.4", + "@schematics/angular": "^17.3.11", + "@swc-node/register": "~1.9.1", + "@swc/core": "~1.5.7", + "@swc/helpers": "~0.5.11", "@types/deep-freeze": "0.1.5", "@types/ejs": "^3.1.2", "@types/express": "^4.17.17", "@types/grecaptcha": "^3.0.9", "@types/jasmine": "~3.6.0", + "@types/jest": "^29.5.12", "@types/js-cookie": "2.2.6", "@types/lodash": "^4.17.14", - "@types/node": "^14.14.9", + "@types/node": "18.16.9", "@typescript-eslint/eslint-plugin": "^7.18.0", "@typescript-eslint/parser": "^7.18.0", "@typescript-eslint/rule-tester": "^7.18.0", "@typescript-eslint/utils": "^7.18.0", + "autoprefixer": "^10.4.0", "axe-core": "^4.10.2", "compression-webpack-plugin": "^9.2.0", "copy-webpack-plugin": "^6.4.1", + "create-ts-index": "^1.14.0", "cross-env": "^7.0.3", "cypress": "^13.17.0", "cypress-axe": "^1.5.0", @@ -216,6 +232,10 @@ "jasmine": "^3.8.0", "jasmine-core": "^3.8.0", "jasmine-marbles": "0.9.2", + "jest": "^29.7.0", + "jest-environment-jsdom": "^29.7.0", + "jest-preset-angular": "~14.4.0", + "jsonc-eslint-parser": "^2.1.0", "karma": "^6.4.4", "karma-chrome-launcher": "~3.2.0", "karma-coverage-istanbul-reporter": "~3.0.3", @@ -223,17 +243,23 @@ "karma-jasmine-html-reporter": "^1.5.0", "karma-mocha-reporter": "2.2.5", "ng-mocks": "^14.13.2", + "ng-packagr": "~17.3.0", "ngx-mask": "14.2.4", "nodemon": "^2.0.22", + "nx": "20.4.4", "postcss": "^8.5", "postcss-import": "^14.0.0", "postcss-loader": "^4.0.3", "postcss-preset-env": "^7.4.2", + "postcss-url": "~10.1.3", + "prettier": "^2.6.2", "rimraf": "^3.0.2", "sass": "~1.83.4", "sass-loader": "^12.6.0", "sass-resources-loader": "^2.2.5", - "ts-node": "^8.10.2", + "ts-jest": "^29.1.0", + "ts-node": "10.9.1", + "tslib": "^2.3.0", "typescript": "~5.4.5", "webpack": "5.97.1", "webpack-cli": "^5.1.4", diff --git a/project.json b/project.json new file mode 100644 index 00000000000..278ff611f21 --- /dev/null +++ b/project.json @@ -0,0 +1,281 @@ +{ + "$schema": "node_modules/nx/schemas/project-schema.json", + "name": "dspace-angular", + "projectType": "application", + "generators": { + "@schematics/angular:component": { + "style": "scss" + } + }, + "sourceRoot": "src", + "prefix": "ds", + "targets": { + "build": { + "executor": "@angular-builders/custom-webpack:browser", + "options": { + "preserveSymlinks": true, + "customWebpackConfig": { + "path": "./webpack/webpack.browser.ts", + "mergeStrategies": { + "loaders": "prepend" + } + }, + "allowedCommonJsDependencies": [ + "cerialize", + "core-js", + "lodash", + "jwt-decode", + "uuid", + "zone.js" + ], + "outputPath": "dist/browser", + "index": "src/index.html", + "main": "src/main.browser.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.app.json", + "aot": true, + "assets": [ + "src/assets", + "src/robots.txt" + ], + "styles": [ + "src/styles/startup.scss", + { + "input": "src/styles/base-theme.scss", + "inject": false, + "bundleName": "base-theme" + }, + { + "input": "src/themes/custom/styles/theme.scss", + "inject": false, + "bundleName": "custom-theme" + }, + { + "input": "src/themes/dspace/styles/theme.scss", + "inject": false, + "bundleName": "dspace-theme" + } + ], + "scripts": [], + "baseHref": "/" + }, + "configurations": { + "development": { + "buildOptimizer": false, + "optimization": false, + "vendorChunk": true, + "extractLicenses": false, + "sourceMap": true, + "namedChunks": true + }, + "production": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.production.ts" + }, + { + "replace": "src/config/store/devtools.ts", + "with": "src/config/store/devtools.prod.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "3mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "200kb", + "maximumError": "300kb" + } + ] + } + }, + "outputs": [ + "{options.outputPath}" + ] + }, + "serve": { + "executor": "@angular-builders/custom-webpack:dev-server", + "options": { + "buildTarget": "dspace-angular:build", + "port": 4000 + }, + "configurations": { + "development": { + "buildTarget": "dspace-angular:build:development" + }, + "production": { + "buildTarget": "dspace-angular:build:production" + } + } + }, + "extract-i18n": { + "executor": "@angular-devkit/build-angular:extract-i18n", + "options": { + "buildTarget": "dspace-angular:build" + } + }, + "test": { + "executor": "@angular-builders/custom-webpack:karma", + "options": { + "customWebpackConfig": { + "path": "./webpack/webpack.test.ts", + "mergeStrategies": { + "loaders": "prepend" + } + }, + "main": "src/test.ts", + "polyfills": "src/polyfills.ts", + "tsConfig": "tsconfig.spec.json", + "karmaConfig": "karma.conf.js", + "sourceMap": { + "scripts": false, + "styles": false, + "hidden": false, + "vendor": false + }, + "assets": [ + "src/assets" + ], + "styles": [ + { + "input": "src/styles/base-theme.scss", + "inject": false, + "bundleName": "base-theme" + } + ], + "scripts": [] + }, + "configurations": { + "test": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.test.ts" + } + ] + } + } + }, + "e2e": { + "executor": "@cypress/schematic:cypress", + "options": { + "devServerTarget": "dspace-angular:serve", + "watch": true, + "headless": false + }, + "configurations": { + "production": { + "devServerTarget": "dspace-angular:serve:production" + } + } + }, + "server": { + "executor": "@angular-builders/custom-webpack:server", + "options": { + "customWebpackConfig": { + "path": "./webpack/webpack.prod.ts", + "mergeStrategies": { + "loaders": "prepend" + } + }, + "outputPath": "dist/server", + "main": "server.ts", + "tsConfig": "tsconfig.server.json" + }, + "configurations": { + "development": { + "sourceMap": true, + "optimization": false + }, + "production": { + "sourceMap": false, + "optimization": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.production.ts" + }, + { + "replace": "src/config/store/devtools.ts", + "with": "src/config/store/devtools.prod.ts" + } + ] + } + }, + "outputs": [ + "{options.outputPath}" + ] + }, + "serve-ssr": { + "executor": "@angular-devkit/build-angular:ssr-dev-server", + "options": { + "buildTarget": "dspace-angular:build", + "serverTarget": "dspace-angular:server", + "port": 4000 + }, + "configurations": { + "production": { + "buildTarget": "dspace-angular:build:production", + "serverTarget": "dspace-angular:server:production" + } + } + }, + "prerender": { + "executor": "@angular-devkit/build-angular:prerender", + "options": { + "buildTarget": "dspace-angular:build:production", + "serverTarget": "dspace-angular:server:production", + "routes": [ + "/" + ] + }, + "configurations": { + "production": {} + } + }, + "cypress-run": { + "executor": "@cypress/schematic:cypress", + "options": { + "devServerTarget": "dspace-angular:serve" + }, + "configurations": { + "production": { + "devServerTarget": "dspace-angular:serve:production" + } + } + }, + "cypress-open": { + "executor": "@cypress/schematic:cypress", + "options": { + "watch": true, + "headless": false + } + }, + "lint": { + "executor": "@angular-eslint/builder:lint", + "options": { + "lintFilePatterns": [ + "src/**/*.ts", + "cypress/**/*.ts", + "lint/**/*.ts", + "src/**/*.html", + "src/**/*.json5" + ] + }, + "outputs": [ + "{options.outputFile}" + ] + } + } +} diff --git a/scripts/base-href.ts b/scripts/base-href.ts index 7212e1c5168..3f434f50263 100644 --- a/scripts/base-href.ts +++ b/scripts/base-href.ts @@ -1,36 +1,36 @@ import { existsSync, writeFileSync } from 'fs'; import { join } from 'path'; -import { AppConfig } from '../src/config/app-config.interface'; +import { AppConfig } from '../modules/core/src/lib/core/config/app-config.interface'; import { buildAppConfig } from '../src/config/config.server'; /** * Script to set baseHref as `ui.nameSpace` for development mode. Adds `baseHref` to angular.json build options. - * + * * Usage (see package.json): - * + * * yarn base-href */ const appConfig: AppConfig = buildAppConfig(); -const angularJsonPath = join(process.cwd(), 'angular.json'); +const projectJsonPath = join(process.cwd(), 'project.json'); -if (!existsSync(angularJsonPath)) { - console.error(`Error:\n${angularJsonPath} does not exist\n`); +if (!existsSync(projectJsonPath)) { + console.error(`Error:\n${projectJsonPath} does not exist\n`); process.exit(1); } try { - const angularJson = require(angularJsonPath); + const projectJson = require(projectJsonPath); const baseHref = `${appConfig.ui.nameSpace}${appConfig.ui.nameSpace.endsWith('/') ? '' : '/'}`; - console.log(`Setting baseHref to ${baseHref} in angular.json`); + console.log(`Setting baseHref to ${baseHref} in projects.json`); - angularJson.projects['dspace-angular'].architect.build.options.baseHref = baseHref; + projectJson.targets.build.options.baseHref = baseHref; - writeFileSync(angularJsonPath, JSON.stringify(angularJson, null, 2) + '\n'); + writeFileSync(projectJsonPath, JSON.stringify(projectJson, null, 2) + '\n'); } catch (e) { console.error(e); } diff --git a/scripts/serve.ts b/scripts/serve.ts index ee8570a45c1..7542b1a5bec 100644 --- a/scripts/serve.ts +++ b/scripts/serve.ts @@ -1,6 +1,6 @@ import { spawn } from 'child_process'; -import { AppConfig } from '../src/config/app-config.interface'; +import { AppConfig } from '@dspace/core'; import { buildAppConfig } from '../src/config/config.server'; const appConfig: AppConfig = buildAppConfig(); @@ -10,6 +10,6 @@ const appConfig: AppConfig = buildAppConfig(); * Any CLI arguments given to this script are patched through to `ng serve` as well. */ spawn( - `ng serve --host ${appConfig.ui.host} --port ${appConfig.ui.port} --serve-path ${appConfig.ui.nameSpace} --ssl ${appConfig.ui.ssl} ${process.argv.slice(2).join(' ')} --configuration development`, + `nx serve --host ${appConfig.ui.host} --port ${appConfig.ui.port} --serve-path ${appConfig.ui.nameSpace} --ssl ${appConfig.ui.ssl} ${process.argv.slice(2).join(' ')} --configuration development`, { stdio: 'inherit', shell: true } ); diff --git a/scripts/test-rest.ts b/scripts/test-rest.ts index 9066777c42a..4e5030ca90b 100644 --- a/scripts/test-rest.ts +++ b/scripts/test-rest.ts @@ -1,7 +1,7 @@ import { request } from 'http'; import { request as https_request } from 'https'; -import { AppConfig } from '../src/config/app-config.interface'; +import { AppConfig } from '@dspace/core'; import { buildAppConfig } from '../src/config/config.server'; const appConfig: AppConfig = buildAppConfig(); diff --git a/server.ts b/server.ts index 1276621e9d2..727fb565539 100644 --- a/server.ts +++ b/server.ts @@ -41,23 +41,23 @@ import { enableProdMode } from '@angular/core'; import { environment } from './src/environments/environment'; import { createProxyMiddleware } from 'http-proxy-middleware'; -import { hasValue } from './src/app/shared/empty.util'; -import { UIServerConfig } from './src/config/ui-server-config.interface'; +import { hasValue } from '@dspace/shared/utils'; +import { UIServerConfig } from '@dspace/core'; import bootstrap from './src/main.server'; import { buildAppConfig } from './src/config/config.server'; import { APP_CONFIG, AppConfig, -} from './src/config/app-config.interface'; +} from '@dspace/core'; import { extendEnvironmentWithAppConfig } from './src/config/config.util'; import { logStartupMessage } from './startup-message'; -import { TOKENITEM } from './src/app/core/auth/models/auth-token-info.model'; +import { TOKENITEM } from '@dspace/core'; import { CommonEngine } from '@angular/ssr'; import { APP_BASE_HREF } from '@angular/common'; import { REQUEST, RESPONSE, -} from './src/express.tokens'; +} from '@dspace/core'; /* * Set path for the browser application's dist folder diff --git a/src/app/access-control/access-control-routes.ts b/src/app/access-control/access-control-routes.ts index 07b6f6c4ff4..c5d05231678 100644 --- a/src/app/access-control/access-control-routes.ts +++ b/src/app/access-control/access-control-routes.ts @@ -1,13 +1,16 @@ import { AbstractControl } from '@angular/forms'; import { Route } from '@angular/router'; +import { + EPersonResolver, + groupAdministratorGuard, + i18nBreadcrumbResolver, + siteAdministratorGuard, +} from '@dspace/core'; import { DYNAMIC_ERROR_MESSAGES_MATCHER, DynamicErrorMessagesMatcher, } from '@ng-dynamic-forms/core'; -import { i18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver'; -import { groupAdministratorGuard } from '../core/data/feature-authorization/feature-authorization-guard/group-administrator.guard'; -import { siteAdministratorGuard } from '../core/data/feature-authorization/feature-authorization-guard/site-administrator.guard'; import { EPERSON_PATH, GROUP_PATH, @@ -15,7 +18,6 @@ import { import { BulkAccessComponent } from './bulk-access/bulk-access.component'; import { EPeopleRegistryComponent } from './epeople-registry/epeople-registry.component'; import { EPersonFormComponent } from './epeople-registry/eperson-form/eperson-form.component'; -import { EPersonResolver } from './epeople-registry/eperson-resolver.service'; import { GroupFormComponent } from './group-registry/group-form/group-form.component'; import { groupPageGuard } from './group-registry/group-page.guard'; import { GroupsRegistryComponent } from './group-registry/groups-registry.component'; diff --git a/src/app/access-control/access-control-routing-paths.ts b/src/app/access-control/access-control-routing-paths.ts index 06ae0321945..d9d640305e3 100644 --- a/src/app/access-control/access-control-routing-paths.ts +++ b/src/app/access-control/access-control-routing-paths.ts @@ -1,5 +1,6 @@ +import { URLCombiner } from '@dspace/core'; + import { getAccessControlModuleRoute } from '../app-routing-paths'; -import { URLCombiner } from '../core/url-combiner/url-combiner'; export const EPERSON_PATH = 'epeople'; diff --git a/src/app/access-control/bulk-access/browse/bulk-access-browse.component.html b/src/app/access-control/bulk-access/browse/bulk-access-browse.component.html index f96ddf4a235..b4536052c87 100644 --- a/src/app/access-control/bulk-access/browse/bulk-access-browse.component.html +++ b/src/app/access-control/bulk-access/browse/bulk-access-browse.component.html @@ -2,16 +2,20 @@
+ data-test="browse">
- - + @if (acc.isExpanded('browse')) { + + } + @if (!acc.isExpanded('browse')) { + + }
@@ -24,9 +28,9 @@
+ [selectable]="true" + [selectionConfig]="{ repeatable: true, listId: listId }" + [showThumbnails]="false">
@@ -42,21 +46,25 @@ [showPaginator]="false" (prev)="pagePrev()" (next)="pageNext()"> -
    -
  • - - -
  • -
+ @if ((objectsSelected$|async)?.hasSucceeded) { +
    + @for (object of (objectsSelected$|async)?.payload?.page | paginate: { itemsPerPage: (paginationOptions$ | async).pageSize, + currentPage: (paginationOptions$ | async).currentPage, totalItems: (objectsSelected$|async)?.payload?.page.length }; track object; let i = $index; let last = $last) { +
  • + + +
  • + } +
+ }
diff --git a/src/app/access-control/bulk-access/browse/bulk-access-browse.component.spec.ts b/src/app/access-control/bulk-access/browse/bulk-access-browse.component.spec.ts index f9eb487d73a..07a8afd71f1 100644 --- a/src/app/access-control/bulk-access/browse/bulk-access-browse.component.spec.ts +++ b/src/app/access-control/bulk-access/browse/bulk-access-browse.component.spec.ts @@ -4,6 +4,12 @@ import { TestBed, waitForAsync, } from '@angular/core/testing'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject, + PageInfo, + SelectableListService, +} from '@dspace/core'; import { NgbAccordionModule, NgbNavModule, @@ -11,15 +17,11 @@ import { import { TranslateModule } from '@ngx-translate/core'; import { of } from 'rxjs'; -import { buildPaginatedList } from '../../../core/data/paginated-list.model'; -import { PageInfo } from '../../../core/shared/page-info.model'; +import { SelectableObject } from '../../../../../modules/core/src/lib/core/states/selectable-list/selectable-list.service.spec'; import { getMockThemeService } from '../../../shared/mocks/theme-service.mock'; import { ListableObjectComponentLoaderComponent } from '../../../shared/object-collection/shared/listable-object/listable-object-component-loader.component'; import { SelectableListItemControlComponent } from '../../../shared/object-collection/shared/selectable-list-item-control/selectable-list-item-control.component'; -import { SelectableListService } from '../../../shared/object-list/selectable-list/selectable-list.service'; -import { SelectableObject } from '../../../shared/object-list/selectable-list/selectable-list.service.spec'; import { PaginationComponent } from '../../../shared/pagination/pagination.component'; -import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { ThemedSearchComponent } from '../../../shared/search/themed-search.component'; import { ThemeService } from '../../../shared/theme-support/theme.service'; import { BulkAccessBrowseComponent } from './bulk-access-browse.component'; diff --git a/src/app/access-control/bulk-access/browse/bulk-access-browse.component.ts b/src/app/access-control/bulk-access/browse/bulk-access-browse.component.ts index a400742f017..6445e11cdf9 100644 --- a/src/app/access-control/bulk-access/browse/bulk-access-browse.component.ts +++ b/src/app/access-control/bulk-access/browse/bulk-access-browse.component.ts @@ -1,14 +1,23 @@ -import { - AsyncPipe, - NgForOf, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, Input, OnDestroy, OnInit, } from '@angular/core'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject, + ListableObject, + PageInfo, + PaginatedList, + PaginationComponentOptions, + RemoteData, + SearchConfigurationService, + SelectableListService, + SelectableListState, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { NgbAccordionModule, NgbNavModule, @@ -24,23 +33,10 @@ import { map, } from 'rxjs/operators'; -import { - buildPaginatedList, - PaginatedList, -} from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { PageInfo } from '../../../core/shared/page-info.model'; -import { SearchConfigurationService } from '../../../core/shared/search/search-configuration.service'; import { SEARCH_CONFIG_SERVICE } from '../../../my-dspace-page/my-dspace-configuration.service'; -import { hasValue } from '../../../shared/empty.util'; -import { ListableObject } from '../../../shared/object-collection/shared/listable-object.model'; import { ListableObjectComponentLoaderComponent } from '../../../shared/object-collection/shared/listable-object/listable-object-component-loader.component'; import { SelectableListItemControlComponent } from '../../../shared/object-collection/shared/selectable-list-item-control/selectable-list-item-control.component'; -import { SelectableListState } from '../../../shared/object-list/selectable-list/selectable-list.reducer'; -import { SelectableListService } from '../../../shared/object-list/selectable-list/selectable-list.service'; import { PaginationComponent } from '../../../shared/pagination/pagination.component'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { ThemedSearchComponent } from '../../../shared/search/themed-search.component'; import { BrowserOnlyPipe } from '../../../shared/utils/browser-only.pipe'; @@ -59,11 +55,9 @@ import { BrowserOnlyPipe } from '../../../shared/utils/browser-only.pipe'; AsyncPipe, NgbAccordionModule, TranslateModule, - NgIf, NgbNavModule, ThemedSearchComponent, BrowserOnlyPipe, - NgForOf, NgxPaginationModule, SelectableListItemControlComponent, ListableObjectComponentLoaderComponent, diff --git a/src/app/access-control/bulk-access/bulk-access.component.spec.ts b/src/app/access-control/bulk-access/bulk-access.component.spec.ts index 8bfbe1fe5d1..1815e1ebbb6 100644 --- a/src/app/access-control/bulk-access/bulk-access.component.spec.ts +++ b/src/app/access-control/bulk-access/bulk-access.component.spec.ts @@ -4,17 +4,19 @@ import { TestBed, } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; +import { + createSuccessfulRemoteDataObject$, + NotificationsService, + NotificationsServiceStub, + Process, + SelectableListService, + SelectableListState, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of } from 'rxjs'; -import { Process } from '../../process-page/processes/process.model'; import { BulkAccessControlService } from '../../shared/access-control-form-container/bulk-access-control.service'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { SelectableListState } from '../../shared/object-list/selectable-list/selectable-list.reducer'; -import { SelectableListService } from '../../shared/object-list/selectable-list/selectable-list.service'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { ThemeService } from '../../shared/theme-support/theme.service'; import { BulkAccessComponent } from './bulk-access.component'; import { BulkAccessSettingsComponent } from './settings/bulk-access-settings.component'; diff --git a/src/app/access-control/bulk-access/bulk-access.component.ts b/src/app/access-control/bulk-access/bulk-access.component.ts index a1608d27d07..916dbc51b43 100644 --- a/src/app/access-control/bulk-access/bulk-access.component.ts +++ b/src/app/access-control/bulk-access/bulk-access.component.ts @@ -3,6 +3,10 @@ import { OnInit, ViewChild, } from '@angular/core'; +import { + SelectableListService, + SelectableListState, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { BehaviorSubject, @@ -15,8 +19,6 @@ import { import { BulkAccessControlService } from '../../shared/access-control-form-container/bulk-access-control.service'; import { BtnDisabledDirective } from '../../shared/btn-disabled.directive'; -import { SelectableListState } from '../../shared/object-list/selectable-list/selectable-list.reducer'; -import { SelectableListService } from '../../shared/object-list/selectable-list/selectable-list.service'; import { BulkAccessBrowseComponent } from './browse/bulk-access-browse.component'; import { BulkAccessSettingsComponent } from './settings/bulk-access-settings.component'; diff --git a/src/app/access-control/bulk-access/settings/bulk-access-settings.component.html b/src/app/access-control/bulk-access/settings/bulk-access-settings.component.html index c41053874e7..cb9357a1172 100644 --- a/src/app/access-control/bulk-access/settings/bulk-access-settings.component.html +++ b/src/app/access-control/bulk-access/settings/bulk-access-settings.component.html @@ -3,13 +3,17 @@
- - + @if (acc.isExpanded('settings')) { + + } + @if (!acc.isExpanded('settings')) { + + }
diff --git a/src/app/access-control/bulk-access/settings/bulk-access-settings.component.ts b/src/app/access-control/bulk-access/settings/bulk-access-settings.component.ts index 264cefc7084..a8c527c7557 100644 --- a/src/app/access-control/bulk-access/settings/bulk-access-settings.component.ts +++ b/src/app/access-control/bulk-access/settings/bulk-access-settings.component.ts @@ -1,4 +1,4 @@ -import { NgIf } from '@angular/common'; + import { Component, ViewChild, @@ -16,7 +16,6 @@ import { AccessControlFormContainerComponent } from '../../../shared/access-cont imports: [ NgbAccordionModule, TranslateModule, - NgIf, AccessControlFormContainerComponent, ], standalone: true, diff --git a/src/app/access-control/epeople-registry/epeople-registry.component.html b/src/app/access-control/epeople-registry/epeople-registry.component.html index b5a26533cfa..62f3d8b1a74 100644 --- a/src/app/access-control/epeople-registry/epeople-registry.component.html +++ b/src/app/access-control/epeople-registry/epeople-registry.component.html @@ -6,7 +6,7 @@

{{labelPrefix + 'head' | translate}}

@@ -26,69 +26,76 @@
diff --git a/src/app/access-control/epeople-registry/epeople-registry.component.spec.ts b/src/app/access-control/epeople-registry/epeople-registry.component.spec.ts index cd7441022cb..6553dd740f4 100644 --- a/src/app/access-control/epeople-registry/epeople-registry.component.spec.ts +++ b/src/app/access-control/epeople-registry/epeople-registry.component.spec.ts @@ -20,6 +20,25 @@ import { } from '@angular/platform-browser'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + AuthorizationDataService, + buildPaginatedList, + createSuccessfulRemoteDataObject$, + EPerson, + EPersonDataService, + EPersonMock, + EPersonMock2, + FindListOptions, + NotificationsService, + NotificationsServiceStub, + PageInfo, + PaginatedList, + PaginationService, + PaginationServiceStub, + RemoteData, + RequestService, + RouterMock, +} from '@dspace/core'; import { NgbModal, NgbModule, @@ -30,32 +49,11 @@ import { of as observableOf, } from 'rxjs'; -import { AuthorizationDataService } from '../../core/data/feature-authorization/authorization-data.service'; -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { - buildPaginatedList, - PaginatedList, -} from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { RequestService } from '../../core/data/request.service'; -import { EPersonDataService } from '../../core/eperson/eperson-data.service'; -import { EPerson } from '../../core/eperson/models/eperson.model'; -import { PaginationService } from '../../core/pagination/pagination.service'; -import { PageInfo } from '../../core/shared/page-info.model'; import { BtnDisabledDirective } from '../../shared/btn-disabled.directive'; import { FormBuilderService } from '../../shared/form/builder/form-builder.service'; import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component'; import { getMockFormBuilderService } from '../../shared/mocks/form-builder-service.mock'; -import { RouterMock } from '../../shared/mocks/router.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { PaginationComponent } from '../../shared/pagination/pagination.component'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; -import { - EPersonMock, - EPersonMock2, -} from '../../shared/testing/eperson.mock'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { PaginationServiceStub } from '../../shared/testing/pagination-service.stub'; import { EPeopleRegistryComponent } from './epeople-registry.component'; import { EPersonFormComponent } from './eperson-form/eperson-form.component'; diff --git a/src/app/access-control/epeople-registry/epeople-registry.component.ts b/src/app/access-control/epeople-registry/epeople-registry.component.ts index 6b62a13ecf1..f761d9b8c02 100644 --- a/src/app/access-control/epeople-registry/epeople-registry.component.ts +++ b/src/app/access-control/epeople-registry/epeople-registry.component.ts @@ -1,8 +1,6 @@ import { AsyncPipe, NgClass, - NgForOf, - NgIf, } from '@angular/common'; import { Component, @@ -17,6 +15,26 @@ import { Router, RouterModule, } from '@angular/router'; +import { + AuthorizationDataService, + buildPaginatedList, + DSONameService, + EPerson, + EPersonDataService, + EpersonDtoModel, + FeatureID, + getAllSucceededRemoteData, + getFirstCompletedRemoteData, + NoContent, + NotificationsService, + PageInfo, + PaginatedList, + PaginationComponentOptions, + PaginationService, + RemoteData, + RequestService, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule, @@ -34,31 +52,9 @@ import { take, } from 'rxjs/operators'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { AuthorizationDataService } from '../../core/data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../../core/data/feature-authorization/feature-id'; -import { - buildPaginatedList, - PaginatedList, -} from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { RequestService } from '../../core/data/request.service'; -import { EPersonDataService } from '../../core/eperson/eperson-data.service'; -import { EPerson } from '../../core/eperson/models/eperson.model'; -import { EpersonDtoModel } from '../../core/eperson/models/eperson-dto.model'; -import { PaginationService } from '../../core/pagination/pagination.service'; -import { NoContent } from '../../core/shared/NoContent.model'; -import { - getAllSucceededRemoteData, - getFirstCompletedRemoteData, -} from '../../core/shared/operators'; -import { PageInfo } from '../../core/shared/page-info.model'; import { ConfirmationModalComponent } from '../../shared/confirmation-modal/confirmation-modal.component'; -import { hasValue } from '../../shared/empty.util'; import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { PaginationComponent } from '../../shared/pagination/pagination.component'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; import { getEPersonEditRoute, getEPersonsRoute, @@ -72,13 +68,11 @@ import { EPersonFormComponent } from './eperson-form/eperson-form.component'; TranslateModule, RouterModule, AsyncPipe, - NgIf, EPersonFormComponent, ReactiveFormsModule, ThemedLoadingComponent, PaginationComponent, NgClass, - NgForOf, ], standalone: true, }) diff --git a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.html b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.html index 3aa4d66b051..ae36b27c87c 100644 --- a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.html +++ b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.html @@ -2,97 +2,111 @@
-
- - + @if (activeEPerson$ | async) { +

{{messagePrefix + '.edit' | translate}}

+ } @else {

{{messagePrefix + '.create' | translate}}

-
+ } + - -

{{messagePrefix + '.edit' | translate}}

-
+ [formModel]="formModel" + [formGroup]="formGroup" + [formLayout]="formLayout" + [displayCancel]="false" + [submitLabel]="submitLabel" + (submitForm)="onSubmit()">
-
- -
-
- - +
+ } + @if (canImpersonate$ | async) { +
+ @if (!isImpersonated) { + + } + @if (isImpersonated) { + + } +
+ } + @if (canDelete$ | async) { + -
- + } - - -
-

{{messagePrefix + '.groupsEPersonIsMemberOf' | translate}}

- - - - + @if (!formGroup) { + + } -
- - - - - - - - - - - - - - - -
{{messagePrefix + '.table.id' | translate}}{{messagePrefix + '.table.name' | translate}}{{messagePrefix + '.table.collectionOrCommunity' | translate}}
{{group.id}} - - {{ dsoNameService.getName(group) }} - - - {{ dsoNameService.getName((group.object | async)?.payload) }} -
-
- -
- - + }
diff --git a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.spec.ts b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.spec.ts index c5c94073777..ad8fed80aee 100644 --- a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.spec.ts +++ b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.spec.ts @@ -21,6 +21,32 @@ import { Router, RouterModule, } from '@angular/router'; +import { + ActivatedRouteStub, + AuthorizationDataService, + AuthService, + AuthServiceStub, + buildPaginatedList, + createPaginatedList, + createSuccessfulRemoteDataObject$, + EPerson, + EPersonDataService, + EPersonMock, + EPersonMock2, + EpersonRegistrationService, + FindListOptions, + FollowLinkConfig, + GroupDataService, + NotificationsService, + NotificationsServiceStub, + PageInfo, + PaginatedList, + PaginationService, + PaginationServiceStub, + RemoteData, + RequestService, + RouterStub, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule } from '@ngx-translate/core'; import { @@ -28,40 +54,12 @@ import { of as observableOf, } from 'rxjs'; -import { AuthService } from '../../../core/auth/auth.service'; -import { EpersonRegistrationService } from '../../../core/data/eperson-registration.service'; -import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; -import { - buildPaginatedList, - PaginatedList, -} from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { EPersonDataService } from '../../../core/eperson/eperson-data.service'; -import { GroupDataService } from '../../../core/eperson/group-data.service'; -import { EPerson } from '../../../core/eperson/models/eperson.model'; -import { PaginationService } from '../../../core/pagination/pagination.service'; -import { PageInfo } from '../../../core/shared/page-info.model'; import { BtnDisabledDirective } from '../../../shared/btn-disabled.directive'; import { FormBuilderService } from '../../../shared/form/builder/form-builder.service'; import { FormComponent } from '../../../shared/form/form.component'; import { ThemedLoadingComponent } from '../../../shared/loading/themed-loading.component'; import { getMockFormBuilderService } from '../../../shared/mocks/form-builder-service.mock'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { PaginationComponent } from '../../../shared/pagination/pagination.component'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub'; -import { AuthServiceStub } from '../../../shared/testing/auth-service.stub'; -import { - EPersonMock, - EPersonMock2, -} from '../../../shared/testing/eperson.mock'; -import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; -import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub'; -import { RouterStub } from '../../../shared/testing/router.stub'; -import { createPaginatedList } from '../../../shared/testing/utils.test'; -import { FollowLinkConfig } from '../../../shared/utils/follow-link-config.model'; import { HasNoValuePipe } from '../../../shared/utils/has-no-value.pipe'; import { EPeopleRegistryComponent } from '../epeople-registry.component'; import { EPersonFormComponent } from './eperson-form.component'; diff --git a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.ts b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.ts index c7b57c986d3..57038e85dc6 100644 --- a/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.ts +++ b/src/app/access-control/epeople-registry/eperson-form/eperson-form.component.ts @@ -1,8 +1,6 @@ import { AsyncPipe, NgClass, - NgFor, - NgIf, } from '@angular/common'; import { ChangeDetectorRef, @@ -18,6 +16,31 @@ import { Router, RouterLink, } from '@angular/router'; +import { + AuthorizationDataService, + AuthService, + DSONameService, + EPerson, + EPersonDataService, + EpersonRegistrationService, + FeatureID, + followLink, + getFirstCompletedRemoteData, + getFirstSucceededRemoteData, + getRemoteDataPayload, + Group, + GroupDataService, + NoContent, + NotificationsService, + PageInfo, + PaginatedList, + PaginationComponentOptions, + PaginationService, + Registration, + RemoteData, + RequestService, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { DynamicCheckboxModel, @@ -43,38 +66,13 @@ import { take, } from 'rxjs/operators'; -import { AuthService } from '../../../core/auth/auth.service'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { EpersonRegistrationService } from '../../../core/data/eperson-registration.service'; -import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../../../core/data/feature-authorization/feature-id'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { EPersonDataService } from '../../../core/eperson/eperson-data.service'; -import { GroupDataService } from '../../../core/eperson/group-data.service'; -import { EPerson } from '../../../core/eperson/models/eperson.model'; -import { Group } from '../../../core/eperson/models/group.model'; -import { PaginationService } from '../../../core/pagination/pagination.service'; -import { NoContent } from '../../../core/shared/NoContent.model'; -import { - getFirstCompletedRemoteData, - getFirstSucceededRemoteData, - getRemoteDataPayload, -} from '../../../core/shared/operators'; -import { PageInfo } from '../../../core/shared/page-info.model'; -import { Registration } from '../../../core/shared/registration.model'; import { TYPE_REQUEST_FORGOT } from '../../../register-email-form/register-email-form.component'; import { BtnDisabledDirective } from '../../../shared/btn-disabled.directive'; import { ConfirmationModalComponent } from '../../../shared/confirmation-modal/confirmation-modal.component'; -import { hasValue } from '../../../shared/empty.util'; import { FormBuilderService } from '../../../shared/form/builder/form-builder.service'; import { FormComponent } from '../../../shared/form/form.component'; import { ThemedLoadingComponent } from '../../../shared/loading/themed-loading.component'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { PaginationComponent } from '../../../shared/pagination/pagination.component'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; import { HasNoValuePipe } from '../../../shared/utils/has-no-value.pipe'; import { getEPersonsRoute } from '../../access-control-routing-paths'; import { ValidateEmailNotTaken } from './validators/email-taken.validator'; @@ -84,8 +82,6 @@ import { ValidateEmailNotTaken } from './validators/email-taken.validator'; templateUrl: './eperson-form.component.html', imports: [ FormComponent, - NgIf, - NgFor, AsyncPipe, TranslateModule, NgClass, diff --git a/src/app/access-control/epeople-registry/eperson-form/validators/email-taken.validator.ts b/src/app/access-control/epeople-registry/eperson-form/validators/email-taken.validator.ts index 2a689c0d729..a8cf78adedd 100644 --- a/src/app/access-control/epeople-registry/eperson-form/validators/email-taken.validator.ts +++ b/src/app/access-control/epeople-registry/eperson-form/validators/email-taken.validator.ts @@ -2,12 +2,13 @@ import { AbstractControl, ValidationErrors, } from '@angular/forms'; +import { + EPersonDataService, + getFirstSucceededRemoteData, +} from '@dspace/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { EPersonDataService } from '../../../../core/eperson/eperson-data.service'; -import { getFirstSucceededRemoteData } from '../../../../core/shared/operators'; - export class ValidateEmailNotTaken { /** diff --git a/src/app/access-control/group-registry/group-form/group-form.component.html b/src/app/access-control/group-registry/group-form/group-form.component.html index 7e8c1ed1b4c..060cc5b86dc 100644 --- a/src/app/access-control/group-registry/group-form/group-form.component.html +++ b/src/app/access-control/group-registry/group-form/group-form.component.html @@ -2,13 +2,7 @@
-
- - -

{{messagePrefix + '.head.create' | translate}}

-
- - + @if (activeGroup$ | async) {

iconPlacement: 'right', tooltipPlacement: ['right', 'bottom'] }" - > + > {{messagePrefix + '.head.edit' | translate}}

-
+ } @else { +

{{messagePrefix + '.head.create' | translate}}

+ } + + - - - - - - - + @if ((activeGroup$ | async); as groupBeingEdited) { + @if (groupBeingEdited?.permanent) { + + } + @if ((activeGroupLinkedDSO$ | async); as activeGroupLinkedDSO) { + @if ((canEdit$ | async) !== true) { + + + } + } + } + [formModel]="formModel" + [formGroup]="formGroup" + [formLayout]="formLayout" + [displayCancel]="false" + (submitForm)="onSubmit()">
-
-
- -
-
+ class="btn btn-outline-secondary"> {{messagePrefix + '.return' | translate}} +
+ @if ((canEdit$ | async) && !(activeGroup$ | async)?.permanent) { +
+ +
+ } + - -
- -
- -
+ @if ((activeGroup$ | async); as groupBeingEdited) { +
+ @if (groupBeingEdited !== undefined) { + + } +
+ @if (groupBeingEdited !== undefined) { + + } + } +
- diff --git a/src/app/access-control/group-registry/group-form/group-form.component.spec.ts b/src/app/access-control/group-registry/group-form/group-form.component.spec.ts index b7e6a35d4e1..b0c48572ada 100644 --- a/src/app/access-control/group-registry/group-form/group-form.component.spec.ts +++ b/src/app/access-control/group-registry/group-form/group-form.component.spec.ts @@ -21,6 +21,33 @@ import { ActivatedRoute, Router, } from '@angular/router'; +import { + ActivatedRouteStub, + AuthorizationDataService, + buildPaginatedList, + createSuccessfulRemoteDataObject$, + DSOChangeAnalyzer, + DSONameService, + DSpaceObject, + DSpaceObjectDataService, + EPersonDataService, + Group, + GroupDataService, + GroupMock, + GroupMock2, + HALEndpointService, + NoContent, + NotificationsService, + NotificationsServiceStub, + ObjectCacheService, + PageInfo, + PaginatedList, + RemoteData, + RemoteDataBuildService, + RouterMock, + UUIDService, + XSRFService, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; import { TranslateModule } from '@ngx-translate/core'; @@ -30,41 +57,12 @@ import { of as observableOf, } from 'rxjs'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { RemoteDataBuildService } from '../../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { DSOChangeAnalyzer } from '../../../core/data/dso-change-analyzer.service'; -import { DSpaceObjectDataService } from '../../../core/data/dspace-object-data.service'; -import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service'; -import { - buildPaginatedList, - PaginatedList, -} from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { EPersonDataService } from '../../../core/eperson/eperson-data.service'; -import { GroupDataService } from '../../../core/eperson/group-data.service'; -import { Group } from '../../../core/eperson/models/group.model'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { HALEndpointService } from '../../../core/shared/hal-endpoint.service'; -import { NoContent } from '../../../core/shared/NoContent.model'; -import { PageInfo } from '../../../core/shared/page-info.model'; -import { UUIDService } from '../../../core/shared/uuid.service'; -import { XSRFService } from '../../../core/xsrf/xsrf.service'; import { AlertComponent } from '../../../shared/alert/alert.component'; import { ContextHelpDirective } from '../../../shared/context-help.directive'; import { FormBuilderService } from '../../../shared/form/builder/form-builder.service'; import { FormComponent } from '../../../shared/form/form.component'; import { DSONameServiceMock } from '../../../shared/mocks/dso-name.service.mock'; import { getMockFormBuilderService } from '../../../shared/mocks/form-builder-service.mock'; -import { RouterMock } from '../../../shared/mocks/router.mock'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub'; -import { - GroupMock, - GroupMock2, -} from '../../../shared/testing/group-mock'; -import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; import { GroupFormComponent } from './group-form.component'; import { MembersListComponent } from './members-list/members-list.component'; import { SubgroupsListComponent } from './subgroup-list/subgroups-list.component'; diff --git a/src/app/access-control/group-registry/group-form/group-form.component.ts b/src/app/access-control/group-registry/group-form/group-form.component.ts index d2ddb3266b1..964b6a35349 100644 --- a/src/app/access-control/group-registry/group-form/group-form.component.ts +++ b/src/app/access-control/group-registry/group-form/group-form.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { ChangeDetectorRef, Component, @@ -19,6 +16,32 @@ import { ActivatedRoute, Router, } from '@angular/router'; +import { + AuthorizationDataService, + Collection, + Community, + DSONameService, + DSpaceObject, + DSpaceObjectDataService, + FeatureID, + followLink, + getAllCompletedRemoteData, + getFirstCompletedRemoteData, + getFirstSucceededRemoteData, + getRemoteDataPayload, + Group, + GroupDataService, + NoContent, + NotificationsService, + PaginatedList, + RemoteData, + RequestService, +} from '@dspace/core'; +import { + hasValue, + hasValueOperator, + isNotEmpty, +} from '@dspace/shared/utils'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { DynamicFormControlModel, @@ -46,38 +69,12 @@ import { import { environment } from '../../../../environments/environment'; import { getCollectionEditRolesRoute } from '../../../collection-page/collection-page-routing-paths'; import { getCommunityEditRolesRoute } from '../../../community-page/community-page-routing-paths'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { DSpaceObjectDataService } from '../../../core/data/dspace-object-data.service'; -import { AuthorizationDataService } from '../../../core/data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../../../core/data/feature-authorization/feature-id'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { GroupDataService } from '../../../core/eperson/group-data.service'; -import { Group } from '../../../core/eperson/models/group.model'; -import { Collection } from '../../../core/shared/collection.model'; -import { Community } from '../../../core/shared/community.model'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { NoContent } from '../../../core/shared/NoContent.model'; -import { - getAllCompletedRemoteData, - getFirstCompletedRemoteData, - getFirstSucceededRemoteData, - getRemoteDataPayload, -} from '../../../core/shared/operators'; import { AlertComponent } from '../../../shared/alert/alert.component'; import { AlertType } from '../../../shared/alert/alert-type'; import { ConfirmationModalComponent } from '../../../shared/confirmation-modal/confirmation-modal.component'; import { ContextHelpDirective } from '../../../shared/context-help.directive'; -import { - hasValue, - hasValueOperator, - isNotEmpty, -} from '../../../shared/empty.util'; import { FormBuilderService } from '../../../shared/form/builder/form-builder.service'; import { FormComponent } from '../../../shared/form/form.component'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; import { getGroupEditRoute, getGroupsRoute, @@ -92,7 +89,6 @@ import { ValidateGroupExists } from './validators/group-exists.validator'; imports: [ FormComponent, AlertComponent, - NgIf, AsyncPipe, TranslateModule, ContextHelpDirective, diff --git a/src/app/access-control/group-registry/group-form/members-list/members-list.component.html b/src/app/access-control/group-registry/group-form/members-list/members-list.component.html index d289d036bb4..6a47df34928 100644 --- a/src/app/access-control/group-registry/group-form/members-list/members-list.component.html +++ b/src/app/access-control/group-registry/group-form/members-list/members-list.component.html @@ -3,63 +3,70 @@

{{messagePrefix + '.head' | translate}}

{{messagePrefix + '.headMembers' | translate}}

- + @if ((ePeopleMembersOfGroup | async)?.totalElements > 0) { + +
+ + + + + + + + + + + @for (epersonDTO of (ePeopleMembersOfGroup | async)?.page; track epersonDTO) { + + + + + + + } + +
{{messagePrefix + '.table.id' | translate}}{{messagePrefix + '.table.name' | translate}}{{messagePrefix + '.table.identity' | translate}}{{messagePrefix + '.table.edit' | translate}}
{{epersonDTO.eperson.id}} + + {{ dsoNameService.getName(epersonDTO.eperson) }} + + + {{messagePrefix + '.table.email' | translate}}: {{ epersonDTO.eperson.email ? epersonDTO.eperson.email : '-' }}
+ {{messagePrefix + '.table.netid' | translate}}: {{ epersonDTO.eperson.netid ? epersonDTO.eperson.netid : '-' }} +
+
+ @if (epersonDTO.ableToDelete) { + + } + @if (!epersonDTO.ableToDelete) { + + } +
+
+
+
+ } -
- - - - - - - - - - - - - - - - - -
{{messagePrefix + '.table.id' | translate}}{{messagePrefix + '.table.name' | translate}}{{messagePrefix + '.table.identity' | translate}}{{messagePrefix + '.table.edit' | translate}}
{{epersonDTO.eperson.id}} - - {{ dsoNameService.getName(epersonDTO.eperson) }} - - - {{messagePrefix + '.table.email' | translate}}: {{ epersonDTO.eperson.email ? epersonDTO.eperson.email : '-' }}
- {{messagePrefix + '.table.netid' | translate}}: {{ epersonDTO.eperson.netid ? epersonDTO.eperson.netid : '-' }} -
-
- - -
-
+ @if ((ePeopleMembersOfGroup | async) === undefined || (ePeopleMembersOfGroup | async)?.totalElements === 0) { + - - - - + } @@ -78,68 +85,72 @@
-
- -
- - - - -
- - - - - - - - - - - - - - - - - -
{{messagePrefix + '.table.id' | translate}}{{messagePrefix + '.table.name' | translate}}{{messagePrefix + '.table.identity' | translate}}{{messagePrefix + '.table.edit' | translate}}
{{eperson.id}} - - {{ dsoNameService.getName(eperson) }} - - - {{messagePrefix + '.table.email' | translate}}: {{ eperson.email ? eperson.email : '-' }}
- {{messagePrefix + '.table.netid' | translate}}: {{ eperson.netid ? eperson.netid : '-' }} -
-
- -
-
-
+
+ +
+ -
+ @if ((ePeopleSearch | async)?.totalElements > 0) { + +
+ + + + + + + + + + + @for (eperson of (ePeopleSearch | async)?.page; track eperson) { + + + + + + + } + +
{{messagePrefix + '.table.id' | translate}}{{messagePrefix + '.table.name' | translate}}{{messagePrefix + '.table.identity' | translate}}{{messagePrefix + '.table.edit' | translate}}
{{eperson.id}} + + {{ dsoNameService.getName(eperson) }} + + + {{messagePrefix + '.table.email' | translate}}: {{ eperson.email ? eperson.email : '-' }}
+ {{messagePrefix + '.table.netid' | translate}}: {{ eperson.netid ? eperson.netid : '-' }} +
+
+ +
+
+
+
+ } - + @if ((ePeopleSearch | async)?.totalElements === 0 && searchDone) { + + } - + diff --git a/src/app/access-control/group-registry/group-form/members-list/members-list.component.spec.ts b/src/app/access-control/group-registry/group-form/members-list/members-list.component.spec.ts index 9a6b2b4f053..da36bd61542 100644 --- a/src/app/access-control/group-registry/group-form/members-list/members-list.component.spec.ts +++ b/src/app/access-control/group-registry/group-form/members-list/members-list.component.spec.ts @@ -24,6 +24,29 @@ import { ActivatedRoute, Router, } from '@angular/router'; +import { + ActivatedRouteStub, + buildPaginatedList, + createSuccessfulRemoteDataObject$, + DSONameService, + EPerson, + EPersonDataService, + EPersonMock, + EPersonMock2, + getMockTranslateService, + Group, + GroupDataService, + GroupMock, + NotificationsService, + NotificationsServiceStub, + PageInfo, + PaginatedList, + PaginationService, + PaginationServiceStub, + RemoteData, + RestResponse, + RouterMock, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { TranslateLoader, @@ -35,37 +58,12 @@ import { of as observableOf, } from 'rxjs'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { RestResponse } from '../../../../core/cache/response.models'; -import { - buildPaginatedList, - PaginatedList, -} from '../../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../../core/data/remote-data'; -import { EPersonDataService } from '../../../../core/eperson/eperson-data.service'; -import { GroupDataService } from '../../../../core/eperson/group-data.service'; -import { EPerson } from '../../../../core/eperson/models/eperson.model'; -import { Group } from '../../../../core/eperson/models/group.model'; -import { PaginationService } from '../../../../core/pagination/pagination.service'; -import { PageInfo } from '../../../../core/shared/page-info.model'; +import { TranslateLoaderMock } from '../../../../../../modules/core/src/lib/core/utilities/testing/translate-loader.mock'; import { ContextHelpDirective } from '../../../../shared/context-help.directive'; import { FormBuilderService } from '../../../../shared/form/builder/form-builder.service'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { getMockFormBuilderService } from '../../../../shared/mocks/form-builder-service.mock'; -import { RouterMock } from '../../../../shared/mocks/router.mock'; -import { getMockTranslateService } from '../../../../shared/mocks/translate.service.mock'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; import { PaginationComponent } from '../../../../shared/pagination/pagination.component'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; -import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub'; -import { - EPersonMock, - EPersonMock2, -} from '../../../../shared/testing/eperson.mock'; -import { GroupMock } from '../../../../shared/testing/group-mock'; -import { NotificationsServiceStub } from '../../../../shared/testing/notifications-service.stub'; -import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub'; -import { TranslateLoaderMock } from '../../../../shared/testing/translate-loader.mock'; import { MembersListComponent } from './members-list.component'; // todo: optimize imports diff --git a/src/app/access-control/group-registry/group-form/members-list/members-list.component.ts b/src/app/access-control/group-registry/group-form/members-list/members-list.component.ts index 22934394c8a..0d4c6ae3265 100644 --- a/src/app/access-control/group-registry/group-form/members-list/members-list.component.ts +++ b/src/app/access-control/group-registry/group-form/members-list/members-list.component.ts @@ -1,8 +1,6 @@ import { AsyncPipe, NgClass, - NgForOf, - NgIf, } from '@angular/common'; import { Component, @@ -18,6 +16,23 @@ import { Router, RouterLink, } from '@angular/router'; +import { + buildPaginatedList, + DSONameService, + EPerson, + EPersonDataService, + EpersonDtoModel, + getAllCompletedRemoteData, + getFirstCompletedRemoteData, + getRemoteDataPayload, + Group, + GroupDataService, + NotificationsService, + PaginatedList, + PaginationComponentOptions, + PaginationService, + RemoteData, +} from '@dspace/core'; import { TranslateModule, TranslateService, @@ -37,28 +52,9 @@ import { take, } from 'rxjs/operators'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { - buildPaginatedList, - PaginatedList, -} from '../../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../../core/data/remote-data'; -import { EPersonDataService } from '../../../../core/eperson/eperson-data.service'; -import { GroupDataService } from '../../../../core/eperson/group-data.service'; -import { EPerson } from '../../../../core/eperson/models/eperson.model'; -import { EpersonDtoModel } from '../../../../core/eperson/models/eperson-dto.model'; -import { Group } from '../../../../core/eperson/models/group.model'; -import { PaginationService } from '../../../../core/pagination/pagination.service'; -import { - getAllCompletedRemoteData, - getFirstCompletedRemoteData, - getRemoteDataPayload, -} from '../../../../core/shared/operators'; import { BtnDisabledDirective } from '../../../../shared/btn-disabled.directive'; import { ContextHelpDirective } from '../../../../shared/context-help.directive'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; import { PaginationComponent } from '../../../../shared/pagination/pagination.component'; -import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model'; import { getEPersonEditRoute } from '../../../access-control-routing-paths'; // todo: optimize imports @@ -109,11 +105,9 @@ export interface EPersonListActionConfig { ContextHelpDirective, ReactiveFormsModule, PaginationComponent, - NgIf, AsyncPipe, RouterLink, NgClass, - NgForOf, BtnDisabledDirective, ], standalone: true, diff --git a/src/app/access-control/group-registry/group-form/subgroup-list/subgroups-list.component.html b/src/app/access-control/group-registry/group-form/subgroup-list/subgroups-list.component.html index 66404bde0d1..32e6aa8c26c 100644 --- a/src/app/access-control/group-registry/group-form/subgroup-list/subgroups-list.component.html +++ b/src/app/access-control/group-registry/group-form/subgroup-list/subgroups-list.component.html @@ -3,51 +3,56 @@

{{messagePrefix + '.head' | translate}}

{{messagePrefix + '.headSubgroups' | translate}}

- - -
- - - - - - - - - - - - - - - + + } + +
{{messagePrefix + '.table.id' | translate}}{{messagePrefix + '.table.name' | translate}}{{messagePrefix + '.table.collectionOrCommunity' | translate}}{{messagePrefix + '.table.edit' | translate}}
{{group.id}} - - {{ dsoNameService.getName(group) }} - - {{ dsoNameService.getName((group.object | async)?.payload)}} -
- +
+
+
+
+ } - + @if ((subGroups$ | async)?.payload?.totalElements === 0) { + + }

{{messagePrefix + 'head' | translate}}

@@ -17,8 +17,8 @@
diff --git a/src/app/admin/admin-import-batch-page/batch-import-page.component.spec.ts b/src/app/admin/admin-import-batch-page/batch-import-page.component.spec.ts index 20c53f58ed9..d11586ed8e1 100644 --- a/src/app/admin/admin-import-batch-page/batch-import-page.component.spec.ts +++ b/src/app/admin/admin-import-batch-page/batch-import-page.component.spec.ts @@ -10,19 +10,17 @@ import { FormsModule } from '@angular/forms'; import { By } from '@angular/platform-browser'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; -import { TranslateModule } from '@ngx-translate/core'; - import { BATCH_IMPORT_SCRIPT_NAME, - ScriptDataService, -} from '../../core/data/processes/script-data.service'; -import { ProcessParameter } from '../../process-page/processes/process-parameter.model'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; + NotificationsService, + NotificationsServiceStub, + ProcessParameter, + ScriptDataService, +} from '@dspace/core'; +import { TranslateModule } from '@ngx-translate/core'; + import { FileDropzoneNoUploaderComponent } from '../../shared/upload/file-dropzone-no-uploader/file-dropzone-no-uploader.component'; import { FileValueAccessorDirective } from '../../shared/utils/file-value-accessor.directive'; import { FileValidator } from '../../shared/utils/require-file.validator'; diff --git a/src/app/admin/admin-import-batch-page/batch-import-page.component.ts b/src/app/admin/admin-import-batch-page/batch-import-page.component.ts index 1f54b801c8c..57efdb212d4 100644 --- a/src/app/admin/admin-import-batch-page/batch-import-page.component.ts +++ b/src/app/admin/admin-import-batch-page/batch-import-page.component.ts @@ -1,10 +1,22 @@ -import { - Location, - NgIf, -} from '@angular/common'; +import { Location } from '@angular/common'; import { Component } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { Router } from '@angular/router'; +import { + BATCH_IMPORT_SCRIPT_NAME, + DSONameService, + DSpaceObject, + getFirstCompletedRemoteData, + NotificationsService, + Process, + ProcessParameter, + RemoteData, + ScriptDataService, +} from '@dspace/core'; +import { + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule, @@ -13,30 +25,14 @@ import { import { UiSwitchModule } from 'ngx-ui-switch'; import { take } from 'rxjs/operators'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { - BATCH_IMPORT_SCRIPT_NAME, - ScriptDataService, -} from '../../core/data/processes/script-data.service'; -import { RemoteData } from '../../core/data/remote-data'; -import { DSpaceObject } from '../../core/shared/dspace-object.model'; -import { getFirstCompletedRemoteData } from '../../core/shared/operators'; import { getProcessDetailRoute } from '../../process-page/process-page-routing.paths'; -import { Process } from '../../process-page/processes/process.model'; -import { ProcessParameter } from '../../process-page/processes/process-parameter.model'; import { ImportBatchSelectorComponent } from '../../shared/dso-selector/modal-wrappers/import-batch-selector/import-batch-selector.component'; -import { - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { FileDropzoneNoUploaderComponent } from '../../shared/upload/file-dropzone-no-uploader/file-dropzone-no-uploader.component'; @Component({ selector: 'ds-batch-import-page', templateUrl: './batch-import-page.component.html', imports: [ - NgIf, TranslateModule, FormsModule, UiSwitchModule, diff --git a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.spec.ts b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.spec.ts index b345da2c06f..73214b50dba 100644 --- a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.spec.ts +++ b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.spec.ts @@ -10,19 +10,17 @@ import { FormsModule } from '@angular/forms'; import { By } from '@angular/platform-browser'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; -import { TranslateModule } from '@ngx-translate/core'; - -import { - METADATA_IMPORT_SCRIPT_NAME, - ScriptDataService, -} from '../../core/data/processes/script-data.service'; -import { ProcessParameter } from '../../process-page/processes/process-parameter.model'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; + METADATA_IMPORT_SCRIPT_NAME, + NotificationsService, + NotificationsServiceStub, + ProcessParameter, + ScriptDataService, +} from '@dspace/core'; +import { TranslateModule } from '@ngx-translate/core'; + import { FileDropzoneNoUploaderComponent } from '../../shared/upload/file-dropzone-no-uploader/file-dropzone-no-uploader.component'; import { FileValueAccessorDirective } from '../../shared/utils/file-value-accessor.directive'; import { FileValidator } from '../../shared/utils/require-file.validator'; diff --git a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts index 56d504d57de..f0e7c93628e 100644 --- a/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts +++ b/src/app/admin/admin-import-metadata-page/metadata-import-page.component.ts @@ -2,22 +2,22 @@ import { Location } from '@angular/common'; import { Component } from '@angular/core'; import { FormsModule } from '@angular/forms'; import { Router } from '@angular/router'; +import { + getFirstCompletedRemoteData, + METADATA_IMPORT_SCRIPT_NAME, + NotificationsService, + Process, + ProcessParameter, + RemoteData, + ScriptDataService, +} from '@dspace/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { TranslateModule, TranslateService, } from '@ngx-translate/core'; -import { - METADATA_IMPORT_SCRIPT_NAME, - ScriptDataService, -} from '../../core/data/processes/script-data.service'; -import { RemoteData } from '../../core/data/remote-data'; -import { getFirstCompletedRemoteData } from '../../core/shared/operators'; import { getProcessDetailRoute } from '../../process-page/process-page-routing.paths'; -import { Process } from '../../process-page/processes/process.model'; -import { ProcessParameter } from '../../process-page/processes/process-parameter.model'; -import { isNotEmpty } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { FileDropzoneNoUploaderComponent } from '../../shared/upload/file-dropzone-no-uploader/file-dropzone-no-uploader.component'; @Component({ diff --git a/src/app/admin/admin-ldn-services/admin-ldn-services-routes.ts b/src/app/admin/admin-ldn-services/admin-ldn-services-routes.ts index 66420f7a7ba..f0c2b6a28b5 100644 --- a/src/app/admin/admin-ldn-services/admin-ldn-services-routes.ts +++ b/src/app/admin/admin-ldn-services/admin-ldn-services-routes.ts @@ -1,7 +1,9 @@ import { Routes } from '@angular/router'; +import { + i18nBreadcrumbResolver, + navigationBreadcrumbResolver, +} from '@dspace/core'; -import { i18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver'; -import { navigationBreadcrumbResolver } from '../../core/breadcrumbs/navigation-breadcrumb.resolver'; import { LdnServiceFormComponent } from './ldn-service-form/ldn-service-form.component'; import { LdnServicesOverviewComponent } from './ldn-services-directory/ldn-services-directory.component'; diff --git a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html index a9801828820..a2cda938ce9 100644 --- a/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html +++ b/src/app/admin/admin-ldn-services/ldn-service-form/ldn-service-form.component.html @@ -4,34 +4,38 @@

{{ isNewService ? ('ldn-create-service.title' | translate) : ('ldn-edit-registered-service.title' | translate) }}

-
- -
- -
-
+ @if (!isNewService) { +
+ +
+ +
+
+
-
+ }
-
- {{ 'ldn-new-service.form.error.name' | translate }} -
+ [placeholder]="'ldn-new-service.form.placeholder.name' | translate" class="form-control" + formControlName="name" + id="name" + name="name" + type="text"> + @if (formModel.get('name').invalid && formModel.get('name').touched) { +
+ {{ 'ldn-new-service.form.error.name' | translate }} +
+ }
+ class="form-control" formControlName="description" id="description" name="description">
@@ -40,30 +44,34 @@

{{ isNewService ? ('ldn-create-service.title' | translat
-
- {{ 'ldn-new-service.form.error.url' | translate }} -
+ [placeholder]="'ldn-new-service.form.placeholder.url' | translate" class="form-control" + formControlName="url" + id="url" + name="url" + type="text"> + @if (formModel.get('url').invalid && formModel.get('url').touched) { +
+ {{ 'ldn-new-service.form.error.url' | translate }} +
+ }
-
- {{ 'ldn-new-service.form.error.score' | translate }} -
+ [placeholder]="'ldn-new-service.form.placeholder.score' | translate" formControlName="score" + id="score" + name="score" + min="0" + max="1" + step=".01" + class="form-control" + type="number"> + @if (formModel.get('score').invalid && formModel.get('score').touched) { +
+ {{ 'ldn-new-service.form.error.score' | translate }} +
+ }

@@ -73,21 +81,23 @@

{{ isNewService ? ('ldn-create-service.title' | translat
+ [placeholder]="'ldn-new-service.form.placeholder.lowerIp' | translate" class="form-control mr-2" + formControlName="lowerIp" + id="lowerIp" + name="lowerIp" + type="text"> -
-
- {{ 'ldn-new-service.form.error.ipRange' | translate }} + [placeholder]="'ldn-new-service.form.placeholder.upperIp' | translate" class="form-control" + formControlName="upperIp" + id="upperIp" + name="upperIp" + type="text">
+ @if ((formModel.get('lowerIp').invalid && formModel.get('lowerIp').touched) || (formModel.get('upperIp').invalid && formModel.get('upperIp').touched)) { +
+ {{ 'ldn-new-service.form.error.ipRange' | translate }} +
+ }
{{ 'ldn-new-service.form.hint.ipRange' | translate }}
@@ -97,223 +107,242 @@

{{ isNewService ? ('ldn-create-service.title' | translat
-
-
- {{ 'ldn-new-service.form.error.ldnurl' | translate }} -
-
- {{ 'ldn-new-service.form.error.ldnurl.ldnUrlAlreadyAssociated' | translate }} + [placeholder]="'ldn-new-service.form.placeholder.ldnUrl' | translate" class="form-control" + formControlName="ldnUrl" + id="ldnUrl" + name="ldnUrl" + type="text"> + @if (formModel.get('ldnUrl').invalid && formModel.get('ldnUrl').touched) { +
+ @if (formModel.get('ldnUrl').errors['required']) { +
+ {{ 'ldn-new-service.form.error.ldnurl' | translate }} +
+ } + @if (formModel.get('ldnUrl').errors['ldnUrlAlreadyAssociated']) { +
+ {{ 'ldn-new-service.form.error.ldnurl.ldnUrlAlreadyAssociated' | translate }} +
+ }
-
+ }
-
-
- -
- + @if (areControlsInitialized) { +
- +
-
- + @if (formModel.get('notifyServiceInboundPatterns')['controls'][0]?.value?.pattern) { +
+ +
+
+ +
+ } +
- -
-
+ } -
-
- - - - -
-
-
-
-
-
- -
- -
-
+ } +
+
+ +
+
- -
- -
- -
-
-
-
- - -
-
- - - - + @if (markedForDeletionInboundPattern.includes(i)) { + + + + } +
+
-
+
- + }

- + } {{ 'ldn-new-service.form.label.addPattern' | translate }} + class="add-pattern-link mb-2">{{ 'ldn-new-service.form.label.addPattern' | translate }}
-
-
- - - +
+
+ + + +
-
- -
- + + + - @@ -72,8 +76,8 @@

{{ 'ldn-registered-services.title' | translate }}

{{'service.overview.delete.header' | translate }}

@@ -84,12 +88,12 @@

{{'service.overview.delete.header' | translate }}

+ [attr.aria-label]="'ldn-service-overview-close-modal' | translate" + class="btn btn-outline-secondary mr-2">{{ 'service.detail.delete.cancel' | translate }}
diff --git a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts index fff3331e9cd..1cc7d0a6aeb 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.spec.ts @@ -10,6 +10,19 @@ import { tick, } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + createPaginatedList, + createSuccessfulRemoteDataObject$, + LdnService, + LdnServicesService, + NotificationsService, + NotificationsServiceStub, + PaginatedList, + PaginationService, + PaginationServiceStub, + RemoteData, +} from '@dspace/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule, @@ -17,20 +30,9 @@ import { } from '@ngx-translate/core'; import { of } from 'rxjs'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { PaginationService } from '../../../core/pagination/pagination.service'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { PaginationComponent } from '../../../shared/pagination/pagination.component'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; -import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub'; -import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; -import { PaginationServiceStub } from '../../../shared/testing/pagination-service.stub'; -import { createPaginatedList } from '../../../shared/testing/utils.test'; import { TruncatableComponent } from '../../../shared/truncatable/truncatable.component'; import { TruncatablePartComponent } from '../../../shared/truncatable/truncatable-part/truncatable-part.component'; -import { LdnServicesService } from '../ldn-services-data/ldn-services-data.service'; -import { LdnService } from '../ldn-services-model/ldn-services.model'; import { LdnServicesOverviewComponent } from './ldn-services-directory.component'; describe('LdnServicesOverviewComponent', () => { diff --git a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts index cc2cba4704c..cbaedb0db18 100644 --- a/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts +++ b/src/app/admin/admin-ldn-services/ldn-services-directory/ldn-services-directory.component.ts @@ -1,8 +1,6 @@ import { AsyncPipe, NgClass, - NgFor, - NgIf, } from '@angular/common'; import { ChangeDetectionStrategy, @@ -14,6 +12,18 @@ import { ViewChild, } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { + FindListOptions, + getFirstCompletedRemoteData, + LdnService, + LdnServicesService, + NotificationsService, + PaginatedList, + PaginationComponentOptions, + PaginationService, + RemoteData, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule, @@ -28,20 +38,10 @@ import { map, switchMap, } from 'rxjs/operators'; -import { LdnServicesService } from 'src/app/admin/admin-ldn-services/ldn-services-data/ldn-services-data.service'; -import { PaginationService } from 'src/app/core/pagination/pagination.service'; -import { FindListOptions } from '../../../core/data/find-list-options.model'; -import { PaginatedList } from '../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../core/data/remote-data'; -import { getFirstCompletedRemoteData } from '../../../core/shared/operators'; -import { hasValue } from '../../../shared/empty.util'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { PaginationComponent } from '../../../shared/pagination/pagination.component'; -import { PaginationComponentOptions } from '../../../shared/pagination/pagination-component-options.model'; import { TruncatableComponent } from '../../../shared/truncatable/truncatable.component'; import { TruncatablePartComponent } from '../../../shared/truncatable/truncatable-part/truncatable-part.component'; -import { LdnService } from '../ldn-services-model/ldn-services.model'; /** * The `LdnServicesOverviewComponent` is a component that provides an overview of LDN (Linked Data Notifications) services. @@ -54,8 +54,6 @@ import { LdnService } from '../ldn-services-model/ldn-services.model'; styleUrls: ['./ldn-services-directory.component.scss'], changeDetection: ChangeDetectionStrategy.Default, imports: [ - NgIf, - NgFor, TranslateModule, AsyncPipe, PaginationComponent, diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-status.model.ts b/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-status.model.ts deleted file mode 100644 index e872bf9a0b7..00000000000 --- a/src/app/admin/admin-ldn-services/ldn-services-model/ldn-service-status.model.ts +++ /dev/null @@ -1,8 +0,0 @@ -/** - * List of services statuses - */ -export enum LdnServiceStatus { - UNKNOWN, - DISABLED, - ENABLED, -} diff --git a/src/app/admin/admin-ldn-services/ldn-services-model/service-constrain-type.model.ts b/src/app/admin/admin-ldn-services/ldn-services-model/service-constrain-type.model.ts deleted file mode 100644 index c734503d951..00000000000 --- a/src/app/admin/admin-ldn-services/ldn-services-model/service-constrain-type.model.ts +++ /dev/null @@ -1,10 +0,0 @@ -/** - * List of parameter types used for scripts - */ -export enum LdnServiceConstrainType { - STRING = 'String', - DATE = 'date', - BOOLEAN = 'boolean', - FILE = 'InputStream', - OUTPUT = 'OutputStream' -} diff --git a/src/app/admin/admin-notifications/admin-notifications-routes.ts b/src/app/admin/admin-notifications/admin-notifications-routes.ts index 43cfc2945a6..eaf8b2018c0 100644 --- a/src/app/admin/admin-notifications/admin-notifications-routes.ts +++ b/src/app/admin/admin-notifications/admin-notifications-routes.ts @@ -1,8 +1,10 @@ import { Route } from '@angular/router'; +import { + authenticatedGuard, + i18nBreadcrumbResolver, + qualityAssuranceBreadcrumbResolver, +} from '@dspace/core'; -import { authenticatedGuard } from '../../core/auth/authenticated.guard'; -import { i18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver'; -import { qualityAssuranceBreadcrumbResolver } from '../../core/breadcrumbs/quality-assurance-breadcrumb.resolver'; import { AdminNotificationsPublicationClaimPageResolver } from '../../quality-assurance-notifications-pages/notifications-suggestion-targets-page/notifications-suggestion-targets-page-resolver.service'; import { QualityAssuranceEventsPageComponent } from '../../quality-assurance-notifications-pages/quality-assurance-events-page/quality-assurance-events-page.component'; import { qualityAssuranceEventsPageResolver } from '../../quality-assurance-notifications-pages/quality-assurance-events-page/quality-assurance-events-page.resolver'; diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard-routes.ts b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard-routes.ts index 0316913cf62..60418101f7c 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard-routes.ts +++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard-routes.ts @@ -1,8 +1,10 @@ import { Route } from '@angular/router'; +import { + i18nBreadcrumbResolver, + notifyInfoGuard, + siteAdministratorGuard, +} from '@dspace/core'; -import { i18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver'; -import { notifyInfoGuard } from '../../core/coar-notify/notify-info/notify-info.guard'; -import { siteAdministratorGuard } from '../../core/data/feature-authorization/feature-authorization-guard/site-administrator.guard'; import { AdminNotifyDashboardComponent } from './admin-notify-dashboard.component'; import { AdminNotifyIncomingComponent } from './admin-notify-logs/admin-notify-incoming/admin-notify-incoming.component'; import { AdminNotifyOutgoingComponent } from './admin-notify-logs/admin-notify-outgoing/admin-notify-outgoing.component'; diff --git a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html index 3adb7e857b6..0e0183fe84c 100644 --- a/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html +++ b/src/app/admin/admin-notify-dashboard/admin-notify-dashboard.component.html @@ -13,11 +13,13 @@

{{'admin-notify-dashboard.title'| translate}}

@@ -29,30 +29,34 @@

{{'collection.edit.item-mapper.head' | translate}}

+ [query]="(searchOptions$ | async)?.query" + [scope]="(searchOptions$ | async)?.scope" + [currentUrl]="'./'" + [inPlaceSearch]="true" + [searchPlaceholder]="'collection.edit.item-mapper.search-form.placeholder' | translate" + (submitSearch)="performedSearch = true">
-
- + -
- + + } + @if (!performedSearch) { + + }
diff --git a/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.spec.ts b/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.spec.ts index 71ba467084b..7059b565f98 100644 --- a/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.spec.ts +++ b/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.spec.ts @@ -12,6 +12,34 @@ import { Router, } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + AuthorizationDataService, + Collection, + ConfigurationDataService, + ConfigurationProperty, + createFailedRemoteDataObject$, + createPaginatedList, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, + GroupDataService, + HostWindowServiceStub, + ItemDataService, + LinkHeadService, + NotificationsService, + NotificationsServiceStub, + ObjectSelectServiceStub, + PaginatedSearchOptions, + PaginationComponentOptions, + RemoteData, + RouterStub, + RouteService, + SearchConfigurationService, + SearchConfigurationServiceStub, + SearchService, + SearchServiceStub, + SortDirection, + SortOptions, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule, @@ -19,45 +47,15 @@ import { } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { - SortDirection, - SortOptions, -} from '../../core/cache/models/sort-options.model'; -import { ConfigurationDataService } from '../../core/data/configuration-data.service'; -import { AuthorizationDataService } from '../../core/data/feature-authorization/authorization-data.service'; -import { ItemDataService } from '../../core/data/item-data.service'; -import { RemoteData } from '../../core/data/remote-data'; -import { GroupDataService } from '../../core/eperson/group-data.service'; -import { LinkHeadService } from '../../core/services/link-head.service'; -import { RouteService } from '../../core/services/route.service'; -import { Collection } from '../../core/shared/collection.model'; -import { ConfigurationProperty } from '../../core/shared/configuration-property.model'; -import { SearchService } from '../../core/shared/search/search.service'; -import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service'; import { SEARCH_CONFIG_SERVICE } from '../../my-dspace-page/my-dspace-configuration.service'; import { ErrorComponent } from '../../shared/error/error.component'; import { HostWindowService } from '../../shared/host-window.service'; import { LoadingComponent } from '../../shared/loading/loading.component'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { ItemSelectComponent } from '../../shared/object-select/item-select/item-select.component'; import { ObjectSelectService } from '../../shared/object-select/object-select.service'; import { PaginationComponent } from '../../shared/pagination/pagination.component'; -import { PaginationComponentOptions } from '../../shared/pagination/pagination-component-options.model'; -import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; import { SearchFormComponent } from '../../shared/search-form/search-form.component'; -import { HostWindowServiceStub } from '../../shared/testing/host-window-service.stub'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { ObjectSelectServiceStub } from '../../shared/testing/object-select-service.stub'; -import { RouterStub } from '../../shared/testing/router.stub'; -import { SearchConfigurationServiceStub } from '../../shared/testing/search-configuration-service.stub'; -import { SearchServiceStub } from '../../shared/testing/search-service.stub'; -import { createPaginatedList } from '../../shared/testing/utils.test'; import { ThemeService } from '../../shared/theme-support/theme.service'; import { EnumKeysPipe } from '../../shared/utils/enum-keys-pipe'; import { VarDirective } from '../../shared/utils/var.directive'; diff --git a/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.ts b/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.ts index 351a5daf600..d7c21c1ca02 100644 --- a/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.ts +++ b/src/app/collection-page/collection-item-mapper/collection-item-mapper.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -13,6 +10,30 @@ import { ActivatedRoute, Router, } from '@angular/router'; +import { + Collection, + DSONameService, + DSpaceObject, + DSpaceObjectType, + FeatureID, + followLink, + getAllSucceededRemoteData, + getFirstCompletedRemoteData, + getFirstSucceededRemoteData, + getRemoteDataPayload, + ItemDataService, + NoContent, + NotificationsService, + PaginatedList, + PaginatedSearchOptions, + RemoteData, + SearchConfigurationService, + SearchService, + SortDirection, + SortOptions, + toDSpaceObjectListRD, +} from '@dspace/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { NgbNavModule } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule, @@ -30,40 +51,14 @@ import { take, } from 'rxjs/operators'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { - SortDirection, - SortOptions, -} from '../../core/cache/models/sort-options.model'; -import { FeatureID } from '../../core/data/feature-authorization/feature-id'; -import { ItemDataService } from '../../core/data/item-data.service'; -import { PaginatedList } from '../../core/data/paginated-list.model'; -import { RemoteData } from '../../core/data/remote-data'; -import { Collection } from '../../core/shared/collection.model'; -import { DSpaceObject } from '../../core/shared/dspace-object.model'; -import { DSpaceObjectType } from '../../core/shared/dspace-object-type.model'; -import { NoContent } from '../../core/shared/NoContent.model'; -import { - getAllSucceededRemoteData, - getFirstCompletedRemoteData, - getFirstSucceededRemoteData, - getRemoteDataPayload, - toDSpaceObjectListRD, -} from '../../core/shared/operators'; -import { SearchService } from '../../core/shared/search/search.service'; -import { SearchConfigurationService } from '../../core/shared/search/search-configuration.service'; import { SEARCH_CONFIG_SERVICE } from '../../my-dspace-page/my-dspace-configuration.service'; import { fadeIn, fadeInOut, } from '../../shared/animations/fade'; -import { isNotEmpty } from '../../shared/empty.util'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { ItemSelectComponent } from '../../shared/object-select/item-select/item-select.component'; -import { PaginatedSearchOptions } from '../../shared/search/models/paginated-search-options.model'; import { ThemedSearchFormComponent } from '../../shared/search-form/themed-search-form.component'; import { BrowserOnlyPipe } from '../../shared/utils/browser-only.pipe'; -import { followLink } from '../../shared/utils/follow-link-config.model'; @Component({ selector: 'ds-collection-item-mapper', @@ -86,7 +81,6 @@ import { followLink } from '../../shared/utils/follow-link-config.model'; TranslateModule, AsyncPipe, ItemSelectComponent, - NgIf, BrowserOnlyPipe, ], standalone: true, diff --git a/src/app/collection-page/collection-page-administrator.guard.ts b/src/app/collection-page/collection-page-administrator.guard.ts index 30edc72fc6a..6a407e87703 100644 --- a/src/app/collection-page/collection-page-administrator.guard.ts +++ b/src/app/collection-page/collection-page-administrator.guard.ts @@ -1,8 +1,10 @@ import { CanActivateFn } from '@angular/router'; +import { + dsoPageSingleFeatureGuard, + FeatureID, +} from '@dspace/core'; import { of as observableOf } from 'rxjs'; -import { dsoPageSingleFeatureGuard } from '../core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard'; -import { FeatureID } from '../core/data/feature-authorization/feature-id'; import { collectionPageResolver } from './collection-page.resolver'; /** diff --git a/src/app/collection-page/collection-page-routes.ts b/src/app/collection-page/collection-page-routes.ts index e20e3ba8af1..8951825f21f 100644 --- a/src/app/collection-page/collection-page-routes.ts +++ b/src/app/collection-page/collection-page-routes.ts @@ -1,16 +1,18 @@ import { Route } from '@angular/router'; +import { + authenticatedGuard, + collectionBreadcrumbResolver, + communityBreadcrumbResolver, + i18nBreadcrumbResolver, + MenuItemType, +} from '@dspace/core'; import { browseByGuard } from '../browse-by/browse-by-guard'; import { browseByI18nBreadcrumbResolver } from '../browse-by/browse-by-i18n-breadcrumb.resolver'; -import { authenticatedGuard } from '../core/auth/authenticated.guard'; -import { collectionBreadcrumbResolver } from '../core/breadcrumbs/collection-breadcrumb.resolver'; -import { communityBreadcrumbResolver } from '../core/breadcrumbs/community-breadcrumb.resolver'; -import { i18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver'; import { ComcolBrowseByComponent } from '../shared/comcol/sections/comcol-browse-by/comcol-browse-by.component'; import { ComcolSearchSectionComponent } from '../shared/comcol/sections/comcol-search-section/comcol-search-section.component'; import { dsoEditMenuResolver } from '../shared/dso-page/dso-edit-menu.resolver'; import { LinkMenuItemModel } from '../shared/menu/menu-item/models/link.model'; -import { MenuItemType } from '../shared/menu/menu-item-type.model'; import { collectionPageResolver } from './collection-page.resolver'; import { collectionPageAdministratorGuard } from './collection-page-administrator.guard'; import { diff --git a/src/app/collection-page/collection-page-routing-paths.ts b/src/app/collection-page/collection-page-routing-paths.ts index 2eebe31e1c5..27e84c3613b 100644 --- a/src/app/collection-page/collection-page-routing-paths.ts +++ b/src/app/collection-page/collection-page-routing-paths.ts @@ -1,4 +1,4 @@ -import { URLCombiner } from '../core/url-combiner/url-combiner'; +import { URLCombiner } from '@dspace/core'; export const COLLECTION_PARENT_PARAMETER = 'parent'; diff --git a/src/app/collection-page/collection-page.component.html b/src/app/collection-page/collection-page.component.html index 4a3e28c6aad..7b875780935 100644 --- a/src/app/collection-page/collection-page.component.html +++ b/src/app/collection-page/collection-page.component.html @@ -1,61 +1,71 @@
-
-
- -
-
- - - - - - - - - - - - - - - - -
- -
-
- - - - - -
-
- - - -
+ *ngVar="(collectionRD$ | async) as collectionRD"> + @if (collectionRD?.hasSucceeded) { +
+ @if (collectionRD?.payload; as collection) { +
+ +
+
+ + + + + @if (logoRD$) { + + + } + + + + + + + + + +
+ +
+
+ + + + +
+ @if (collection.copyrightText) { +
+ + + +
+ } +
+ }
-
- - + } + @if (collectionRD?.hasFailed) { + + } + @if (collectionRD?.isLoading) { + + }
diff --git a/src/app/collection-page/collection-page.component.ts b/src/app/collection-page/collection-page.component.ts index 0d240f5328d..9dc1cf3452d 100644 --- a/src/app/collection-page/collection-page.component.ts +++ b/src/app/collection-page/collection-page.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -12,6 +9,23 @@ import { Router, RouterOutlet, } from '@angular/router'; +import { + AuthorizationDataService, + AuthService, + Bitstream, + Collection, + DSONameService, + FeatureID, + getAllSucceededRemoteDataPayload, + PaginationComponentOptions, + redirectOn4xx, + RemoteData, + SortOptions, +} from '@dspace/core'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; import { Observable } from 'rxjs'; import { @@ -21,16 +35,6 @@ import { take, } from 'rxjs/operators'; -import { AuthService } from '../core/auth/auth.service'; -import { DSONameService } from '../core/breadcrumbs/dso-name.service'; -import { SortOptions } from '../core/cache/models/sort-options.model'; -import { AuthorizationDataService } from '../core/data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../core/data/feature-authorization/feature-id'; -import { RemoteData } from '../core/data/remote-data'; -import { redirectOn4xx } from '../core/shared/authorized.operators'; -import { Bitstream } from '../core/shared/bitstream.model'; -import { Collection } from '../core/shared/collection.model'; -import { getAllSucceededRemoteDataPayload } from '../core/shared/operators'; import { fadeIn, fadeInOut, @@ -41,14 +45,9 @@ import { ThemedComcolPageHandleComponent } from '../shared/comcol/comcol-page-ha import { ComcolPageHeaderComponent } from '../shared/comcol/comcol-page-header/comcol-page-header.component'; import { ComcolPageLogoComponent } from '../shared/comcol/comcol-page-logo/comcol-page-logo.component'; import { DsoEditMenuComponent } from '../shared/dso-page/dso-edit-menu/dso-edit-menu.component'; -import { - hasValue, - isNotEmpty, -} from '../shared/empty.util'; import { ErrorComponent } from '../shared/error/error.component'; import { ThemedLoadingComponent } from '../shared/loading/themed-loading.component'; import { ObjectCollectionComponent } from '../shared/object-collection/object-collection.component'; -import { PaginationComponentOptions } from '../shared/pagination/pagination-component-options.model'; import { VarDirective } from '../shared/utils/var.directive'; import { ViewTrackerComponent } from '../statistics/angulartics/dspace/view-tracker.component'; import { getCollectionPageRoute } from './collection-page-routing-paths'; @@ -65,7 +64,6 @@ import { getCollectionPageRoute } from './collection-page-routing-paths'; imports: [ ThemedComcolPageContentComponent, ErrorComponent, - NgIf, ThemedLoadingComponent, TranslateModule, ViewTrackerComponent, diff --git a/src/app/collection-page/collection-page.resolver.spec.ts b/src/app/collection-page/collection-page.resolver.spec.ts index 2c1e466729a..2ccc6d1019a 100644 --- a/src/app/collection-page/collection-page.resolver.spec.ts +++ b/src/app/collection-page/collection-page.resolver.spec.ts @@ -1,7 +1,7 @@ +import { createSuccessfulRemoteDataObject$ } from '@dspace/core'; import { Observable } from 'rxjs'; import { first } from 'rxjs/operators'; -import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils'; import { collectionPageResolver } from './collection-page.resolver'; describe('collectionPageResolver', () => { diff --git a/src/app/collection-page/collection-page.resolver.ts b/src/app/collection-page/collection-page.resolver.ts index 6befefc152d..8b41875bacf 100644 --- a/src/app/collection-page/collection-page.resolver.ts +++ b/src/app/collection-page/collection-page.resolver.ts @@ -4,19 +4,19 @@ import { ResolveFn, RouterStateSnapshot, } from '@angular/router'; +import { + Collection, + CollectionDataService, + followLink, + FollowLinkConfig, + getFirstCompletedRemoteData, + RemoteData, + ResolvedAction, +} from '@dspace/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; import { AppState } from '../app.reducer'; -import { CollectionDataService } from '../core/data/collection-data.service'; -import { RemoteData } from '../core/data/remote-data'; -import { ResolvedAction } from '../core/resolving/resolver.actions'; -import { Collection } from '../core/shared/collection.model'; -import { getFirstCompletedRemoteData } from '../core/shared/operators'; -import { - followLink, - FollowLinkConfig, -} from '../shared/utils/follow-link-config.model'; /** * The self links defined in this list are expected to be requested somewhere in the near future diff --git a/src/app/collection-page/create-collection-page/create-collection-page.component.html b/src/app/collection-page/create-collection-page/create-collection-page.component.html index 5c1b7b32a58..63e52925b94 100644 --- a/src/app/collection-page/create-collection-page/create-collection-page.component.html +++ b/src/app/collection-page/create-collection-page/create-collection-page.component.html @@ -1,15 +1,19 @@ -
-
-
-

{{ 'collection.create.sub-head' | translate:{ parent: dsoNameService.getName((parentRD$| async)?.payload) } }}

+@if ((isLoading$ | async) === false) { +
+
+
+

{{ 'collection.create.sub-head' | translate:{ parent: dsoNameService.getName((parentRD$| async)?.payload) } }}

+
+
- -
+}
- + @if (isLoading$ | async) { + + }
diff --git a/src/app/collection-page/create-collection-page/create-collection-page.component.spec.ts b/src/app/collection-page/create-collection-page/create-collection-page.component.spec.ts index 061e9dc1482..537b36cd1ec 100644 --- a/src/app/collection-page/create-collection-page/create-collection-page.component.spec.ts +++ b/src/app/collection-page/create-collection-page/create-collection-page.component.spec.ts @@ -7,19 +7,21 @@ import { } from '@angular/core/testing'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + AuthService, + CollectionDataService, + CommunityDataService, + DSONameService, + NotificationsService, + NotificationsServiceStub, + RequestService, + RouteService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { AuthService } from '../../core/auth/auth.service'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { CollectionDataService } from '../../core/data/collection-data.service'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { RequestService } from '../../core/data/request.service'; -import { RouteService } from '../../core/services/route.service'; import { AuthServiceMock } from '../../shared/mocks/auth.service.mock'; import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { CollectionFormComponent } from '../collection-form/collection-form.component'; import { CreateCollectionPageComponent } from './create-collection-page.component'; diff --git a/src/app/collection-page/create-collection-page/create-collection-page.component.ts b/src/app/collection-page/create-collection-page/create-collection-page.component.ts index a26bc9d6f8d..00b65d1a50b 100644 --- a/src/app/collection-page/create-collection-page/create-collection-page.component.ts +++ b/src/app/collection-page/create-collection-page/create-collection-page.component.ts @@ -1,23 +1,22 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { Router } from '@angular/router'; +import { + Collection, + CollectionDataService, + CommunityDataService, + DSONameService, + NotificationsService, + RequestService, + RouteService, +} from '@dspace/core'; import { TranslateModule, TranslateService, } from '@ngx-translate/core'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { CollectionDataService } from '../../core/data/collection-data.service'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { RequestService } from '../../core/data/request.service'; -import { RouteService } from '../../core/services/route.service'; -import { Collection } from '../../core/shared/collection.model'; import { CreateComColPageComponent } from '../../shared/comcol/comcol-forms/create-comcol-page/create-comcol-page.component'; import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { CollectionFormComponent } from '../collection-form/collection-form.component'; /** @@ -32,7 +31,6 @@ import { CollectionFormComponent } from '../collection-form/collection-form.comp TranslateModule, AsyncPipe, ThemedLoadingComponent, - NgIf, ], standalone: true, }) diff --git a/src/app/collection-page/create-collection-page/create-collection-page.guard.spec.ts b/src/app/collection-page/create-collection-page/create-collection-page.guard.spec.ts index b7c362118b8..6b51d36b442 100644 --- a/src/app/collection-page/create-collection-page/create-collection-page.guard.spec.ts +++ b/src/app/collection-page/create-collection-page/create-collection-page.guard.spec.ts @@ -1,11 +1,11 @@ -import { first } from 'rxjs/operators'; - -import { Community } from '../../core/shared/community.model'; -import { RouterMock } from '../../shared/mocks/router.mock'; import { + Community, createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; + RouterMock, +} from '@dspace/core'; +import { first } from 'rxjs/operators'; + import { createCollectionPageGuard } from './create-collection-page.guard'; describe('createCollectionPageGuard', () => { diff --git a/src/app/collection-page/create-collection-page/create-collection-page.guard.ts b/src/app/collection-page/create-collection-page/create-collection-page.guard.ts index 099578c550e..ca3d966e33c 100644 --- a/src/app/collection-page/create-collection-page/create-collection-page.guard.ts +++ b/src/app/collection-page/create-collection-page/create-collection-page.guard.ts @@ -5,6 +5,16 @@ import { Router, RouterStateSnapshot, } from '@angular/router'; +import { + Community, + CommunityDataService, + getFirstCompletedRemoteData, + RemoteData, +} from '@dspace/core'; +import { + hasNoValue, + hasValue, +} from '@dspace/shared/utils'; import { Observable, of as observableOf, @@ -14,15 +24,6 @@ import { tap, } from 'rxjs/operators'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { RemoteData } from '../../core/data/remote-data'; -import { Community } from '../../core/shared/community.model'; -import { getFirstCompletedRemoteData } from '../../core/shared/operators'; -import { - hasNoValue, - hasValue, -} from '../../shared/empty.util'; - /** * True when either a parent ID query parameter has been provided and the parent ID resolves to a valid parent community * Reroutes to a 404 page when the page cannot be activated diff --git a/src/app/collection-page/delete-collection-page/delete-collection-page.component.html b/src/app/collection-page/delete-collection-page/delete-collection-page.component.html index 0cdba00f039..d966065b003 100644 --- a/src/app/collection-page/delete-collection-page/delete-collection-page.component.html +++ b/src/app/collection-page/delete-collection-page/delete-collection-page.component.html @@ -1,23 +1,27 @@
-
- -
-

{{ 'collection.delete.head' | translate}}

-

{{ 'collection.delete.text' | translate:{ dso: dsoNameService.getName(dso) } }}

-
-
- - -
-
-
-
+
+ +
+

{{ 'collection.delete.head' | translate}}

+

{{ 'collection.delete.text' | translate:{ dso: dsoNameService.getName(dso) } }}

+
+
+ + +
+
+
+
-
+
diff --git a/src/app/collection-page/delete-collection-page/delete-collection-page.component.spec.ts b/src/app/collection-page/delete-collection-page/delete-collection-page.component.spec.ts index 8a99397b918..b958875660a 100644 --- a/src/app/collection-page/delete-collection-page/delete-collection-page.component.spec.ts +++ b/src/app/collection-page/delete-collection-page/delete-collection-page.component.spec.ts @@ -7,14 +7,16 @@ import { } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + CollectionDataService, + DSONameService, + NotificationsService, + RequestService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { CollectionDataService } from '../../core/data/collection-data.service'; -import { RequestService } from '../../core/data/request.service'; import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { DeleteCollectionPageComponent } from './delete-collection-page.component'; describe('DeleteCollectionPageComponent', () => { diff --git a/src/app/collection-page/delete-collection-page/delete-collection-page.component.ts b/src/app/collection-page/delete-collection-page/delete-collection-page.component.ts index acc716b52a7..782b92f5d09 100644 --- a/src/app/collection-page/delete-collection-page/delete-collection-page.component.ts +++ b/src/app/collection-page/delete-collection-page/delete-collection-page.component.ts @@ -1,23 +1,22 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { ActivatedRoute, Router, } from '@angular/router'; +import { + Collection, + CollectionDataService, + DSONameService, + NotificationsService, +} from '@dspace/core'; import { TranslateModule, TranslateService, } from '@ngx-translate/core'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { CollectionDataService } from '../../core/data/collection-data.service'; -import { Collection } from '../../core/shared/collection.model'; import { BtnDisabledDirective } from '../../shared/btn-disabled.directive'; import { DeleteComColPageComponent } from '../../shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { VarDirective } from '../../shared/utils/var.directive'; /** @@ -30,7 +29,6 @@ import { VarDirective } from '../../shared/utils/var.directive'; imports: [ TranslateModule, AsyncPipe, - NgIf, VarDirective, BtnDisabledDirective, ], diff --git a/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.html b/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.html index 4e957cf8671..5f7ed57dcdd 100644 --- a/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.html +++ b/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.html @@ -1,7 +1,8 @@ - - +@if (itemRD$ | async; as itemRD) { + + +} diff --git a/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.spec.ts b/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.spec.ts index a64a8a273d2..b74426f0621 100644 --- a/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.spec.ts @@ -3,14 +3,16 @@ import { TestBed, } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; +import { + Community, + createSuccessfulRemoteDataObject, +} from '@dspace/core'; import { of as observableOf, of, } from 'rxjs'; -import { Community } from '../../../core/shared/community.model'; import { AccessControlFormContainerComponent } from '../../../shared/access-control-form-container/access-control-form-container.component'; -import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { CollectionAccessControlComponent } from './collection-access-control.component'; describe('CollectionAccessControlComponent', () => { diff --git a/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.ts b/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.ts index 809fdcede87..dbcc364ac95 100644 --- a/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.ts +++ b/src/app/collection-page/edit-collection-page/collection-access-control/collection-access-control.component.ts @@ -1,18 +1,17 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + Community, + getFirstSucceededRemoteData, + RemoteData, +} from '@dspace/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { RemoteData } from '../../../core/data/remote-data'; -import { Community } from '../../../core/shared/community.model'; -import { getFirstSucceededRemoteData } from '../../../core/shared/operators'; import { AccessControlFormContainerComponent } from '../../../shared/access-control-form-container/access-control-form-container.component'; @Component({ @@ -21,7 +20,6 @@ import { AccessControlFormContainerComponent } from '../../../shared/access-cont styleUrls: ['./collection-access-control.component.scss'], imports: [ AccessControlFormContainerComponent, - NgIf, AsyncPipe, ], standalone: true, diff --git a/src/app/collection-page/edit-collection-page/collection-authorizations/collection-authorizations.component.spec.ts b/src/app/collection-page/edit-collection-page/collection-authorizations/collection-authorizations.component.spec.ts index 3ee3f1c6b04..400bdca99e5 100644 --- a/src/app/collection-page/edit-collection-page/collection-authorizations/collection-authorizations.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/collection-authorizations/collection-authorizations.component.spec.ts @@ -9,12 +9,14 @@ import { waitForAsync, } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; +import { + Collection, + createSuccessfulRemoteDataObject, + DSpaceObject, +} from '@dspace/core'; import { cold } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; -import { Collection } from '../../../core/shared/collection.model'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { ResourcePoliciesComponent } from '../../../shared/resource-policies/resource-policies.component'; import { CollectionAuthorizationsComponent } from './collection-authorizations.component'; diff --git a/src/app/collection-page/edit-collection-page/collection-authorizations/collection-authorizations.component.ts b/src/app/collection-page/edit-collection-page/collection-authorizations/collection-authorizations.component.ts index 31824b7be81..548615578e1 100644 --- a/src/app/collection-page/edit-collection-page/collection-authorizations/collection-authorizations.component.ts +++ b/src/app/collection-page/edit-collection-page/collection-authorizations/collection-authorizations.component.ts @@ -4,14 +4,16 @@ import { OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + DSpaceObject, + RemoteData, +} from '@dspace/core'; import { Observable } from 'rxjs'; import { first, map, } from 'rxjs/operators'; -import { RemoteData } from '../../../core/data/remote-data'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { ResourcePoliciesComponent } from '../../../shared/resource-policies/resource-policies.component'; @Component({ diff --git a/src/app/collection-page/edit-collection-page/collection-curate/collection-curate.component.spec.ts b/src/app/collection-page/edit-collection-page/collection-curate/collection-curate.component.spec.ts index b10131e4f40..bc54c1d832a 100644 --- a/src/app/collection-page/edit-collection-page/collection-curate/collection-curate.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/collection-curate/collection-curate.component.spec.ts @@ -8,13 +8,15 @@ import { waitForAsync, } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; +import { + Collection, + createSuccessfulRemoteDataObject, + DSONameService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { Collection } from '../../../core/shared/collection.model'; import { CurationFormComponent } from '../../../curation-form/curation-form.component'; -import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { CollectionCurateComponent } from './collection-curate.component'; describe('CollectionCurateComponent', () => { diff --git a/src/app/collection-page/edit-collection-page/collection-curate/collection-curate.component.ts b/src/app/collection-page/edit-collection-page/collection-curate/collection-curate.component.ts index 370506e4732..32c28163d29 100644 --- a/src/app/collection-page/edit-collection-page/collection-curate/collection-curate.component.ts +++ b/src/app/collection-page/edit-collection-page/collection-curate/collection-curate.component.ts @@ -4,6 +4,12 @@ import { OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + Collection, + DSONameService, + RemoteData, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; import { Observable } from 'rxjs'; import { @@ -12,11 +18,7 @@ import { take, } from 'rxjs/operators'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { RemoteData } from '../../../core/data/remote-data'; -import { Collection } from '../../../core/shared/collection.model'; import { CurationFormComponent } from '../../../curation-form/curation-form.component'; -import { hasValue } from '../../../shared/empty.util'; /** * Component for managing a collection's curation tasks diff --git a/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.html b/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.html index 845c82458a5..28c5f21869e 100644 --- a/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.html +++ b/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.html @@ -1,23 +1,29 @@
{{ 'collection.edit.template.label' | translate}}
- - - + @if (!itemTemplateRD?.payload) { + + } + @if (itemTemplateRD?.payload) { + + } + @if (itemTemplateRD?.payload) { + + }
+ [isCreation]="false" + (submitForm)="onSubmit($event)" + (back)="navigateToHomePage()" +(finish)="navigateToHomePage()"> diff --git a/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.spec.ts b/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.spec.ts index 8a02f0c1d44..2ba3be0f8c4 100644 --- a/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.spec.ts @@ -11,25 +11,25 @@ import { Router, } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; -import { TranslateModule } from '@ngx-translate/core'; -import { of as observableOf } from 'rxjs'; - -import { APP_DATA_SERVICES_MAP } from '../../../../config/app-config.interface'; -import { AuthService } from '../../../core/auth/auth.service'; -import { ObjectCacheService } from '../../../core/cache/object-cache.service'; -import { CollectionDataService } from '../../../core/data/collection-data.service'; -import { CommunityDataService } from '../../../core/data/community-data.service'; -import { ItemTemplateDataService } from '../../../core/data/item-template-data.service'; -import { RequestService } from '../../../core/data/request.service'; -import { Collection } from '../../../core/shared/collection.model'; -import { Item } from '../../../core/shared/item.model'; -import { AuthServiceMock } from '../../../shared/mocks/auth.service.mock'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { + APP_DATA_SERVICES_MAP, + AuthService, + Collection, + CollectionDataService, + CommunityDataService, createFailedRemoteDataObject$, createSuccessfulRemoteDataObject, createSuccessfulRemoteDataObject$, -} from '../../../shared/remote-data.utils'; + Item, + ItemTemplateDataService, + NotificationsService, + ObjectCacheService, + RequestService, +} from '@dspace/core'; +import { TranslateModule } from '@ngx-translate/core'; +import { of as observableOf } from 'rxjs'; + +import { AuthServiceMock } from '../../../shared/mocks/auth.service.mock'; import { getCollectionItemTemplateRoute } from '../../collection-page-routing-paths'; import { CollectionMetadataComponent } from './collection-metadata.component'; diff --git a/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.ts b/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.ts index df351997559..d4c5c4555c4 100644 --- a/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.ts +++ b/src/app/collection-page/edit-collection-page/collection-metadata/collection-metadata.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { ChangeDetectorRef, Component, @@ -14,6 +11,19 @@ import { RouterLink, Scroll, } from '@angular/router'; +import { + Collection, + CollectionDataService, + getFirstCompletedRemoteData, + getFirstSucceededRemoteDataPayload, + Item, + ItemTemplateDataService, + NoContent, + NotificationsService, + RemoteData, + RequestService, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { TranslateModule, TranslateService, @@ -27,20 +37,7 @@ import { switchMap, } from 'rxjs/operators'; -import { CollectionDataService } from '../../../core/data/collection-data.service'; -import { ItemTemplateDataService } from '../../../core/data/item-template-data.service'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { Collection } from '../../../core/shared/collection.model'; -import { Item } from '../../../core/shared/item.model'; -import { NoContent } from '../../../core/shared/NoContent.model'; -import { - getFirstCompletedRemoteData, - getFirstSucceededRemoteDataPayload, -} from '../../../core/shared/operators'; import { ComcolMetadataComponent } from '../../../shared/comcol/comcol-forms/edit-comcol-page/comcol-metadata/comcol-metadata.component'; -import { hasValue } from '../../../shared/empty.util'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { VarDirective } from '../../../shared/utils/var.directive'; import { CollectionFormComponent } from '../../collection-form/collection-form.component'; import { getCollectionItemTemplateRoute } from '../../collection-page-routing-paths'; @@ -56,7 +53,6 @@ import { getCollectionItemTemplateRoute } from '../../collection-page-routing-pa RouterLink, AsyncPipe, TranslateModule, - NgIf, VarDirective, ], standalone: true, diff --git a/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.html b/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.html index 9c5020fc7f0..d60952f5cb6 100644 --- a/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.html +++ b/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.html @@ -1,6 +1,7 @@ - - +@for (comcolRole of comcolRoles$ | async; track comcolRole) { + + +} diff --git a/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.spec.ts b/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.spec.ts index 76ab4079f2c..961e94357a6 100644 --- a/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.spec.ts @@ -10,20 +10,20 @@ import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + Collection, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, + DSONameService, + GroupDataService, + NotificationsService, + NotificationsServiceStub, + RequestService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { RequestService } from '../../../core/data/request.service'; -import { GroupDataService } from '../../../core/eperson/group-data.service'; -import { Collection } from '../../../core/shared/collection.model'; import { DSONameServiceMock } from '../../../shared/mocks/dso-name.service.mock'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; import { CollectionRolesComponent } from './collection-roles.component'; describe('CollectionRolesComponent', () => { diff --git a/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.ts b/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.ts index f402c99caf2..375286dcce2 100644 --- a/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.ts +++ b/src/app/collection-page/edit-collection-page/collection-roles/collection-roles.component.ts @@ -1,27 +1,24 @@ -import { - AsyncPipe, - NgForOf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + Collection, + getFirstSucceededRemoteData, + getRemoteDataPayload, + HALLink, + RemoteData, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { Observable } from 'rxjs'; import { first, map, } from 'rxjs/operators'; -import { RemoteData } from '../../../core/data/remote-data'; -import { Collection } from '../../../core/shared/collection.model'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { - getFirstSucceededRemoteData, - getRemoteDataPayload, -} from '../../../core/shared/operators'; import { ComcolRoleComponent } from '../../../shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component'; -import { hasValue } from '../../../shared/empty.util'; /** * Component for managing a collection's roles @@ -31,7 +28,6 @@ import { hasValue } from '../../../shared/empty.util'; templateUrl: './collection-roles.component.html', imports: [ ComcolRoleComponent, - NgForOf, AsyncPipe, ], standalone: true, diff --git a/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.html b/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.html index 1e09758bd10..58d64c7696e 100644 --- a/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.html +++ b/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.html @@ -1,54 +1,65 @@
-
-

{{ 'collection.source.controls.head' | translate }}

-
- {{'collection.source.controls.harvest.status' | translate}} - {{contentSource?.harvestStatus}} -
-
- {{'collection.source.controls.harvest.start' | translate}} - {{contentSource?.harvestStartTime ? contentSource?.harvestStartTime : 'collection.source.controls.harvest.no-information'|translate }} -
-
- {{'collection.source.controls.harvest.last' | translate}} - {{contentSource?.lastHarvested ? contentSource?.lastHarvested : 'collection.source.controls.harvest.no-information'|translate }} -
-
- {{'collection.source.controls.harvest.message' | translate}} - {{contentSource?.message ? contentSource?.message: 'collection.source.controls.harvest.no-information'|translate }} -
- - - - - - - - - + }
+ }
diff --git a/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.spec.ts b/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.spec.ts index cbe3de14834..691f25e7384 100644 --- a/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.spec.ts @@ -7,25 +7,27 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; +import { + Bitstream, + BitstreamDataService, + Collection, + CollectionDataService, + ContentSource, + ContentSourceSetSerializer, + createSuccessfulRemoteDataObject$, + NotificationsService, + NotificationsServiceStub, + Process, + ProcessDataService, + RequestService, + ScriptDataService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { getTestScheduler } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; import { TestScheduler } from 'rxjs/testing'; -import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; -import { CollectionDataService } from '../../../../core/data/collection-data.service'; -import { ProcessDataService } from '../../../../core/data/processes/process-data.service'; -import { ScriptDataService } from '../../../../core/data/processes/script-data.service'; -import { RequestService } from '../../../../core/data/request.service'; -import { Bitstream } from '../../../../core/shared/bitstream.model'; -import { Collection } from '../../../../core/shared/collection.model'; -import { ContentSource } from '../../../../core/shared/content-source.model'; -import { ContentSourceSetSerializer } from '../../../../core/shared/content-source-set-serializer'; -import { Process } from '../../../../process-page/processes/process.model'; import { BtnDisabledDirective } from '../../../../shared/btn-disabled.directive'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../../../../shared/testing/notifications-service.stub'; import { VarDirective } from '../../../../shared/utils/var.directive'; import { CollectionSourceControlsComponent } from './collection-source-controls.component'; @@ -66,7 +68,7 @@ describe('CollectionSourceControlsComponent', () => { }, { id: 'dim', - label: 'DSpace Intermediate Metadata', + label: 'DSpace Intermediate PolicyMetadata', nameSpace: 'http://www.dspace.org/xmlns/dspace/dim', }, ], diff --git a/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.ts b/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.ts index e35a64af16d..a5afe15fd72 100644 --- a/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.ts +++ b/src/app/collection-page/edit-collection-page/collection-source/collection-source-controls/collection-source-controls.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { HttpClient } from '@angular/common/http'; import { Component, @@ -9,6 +6,23 @@ import { OnDestroy, OnInit, } from '@angular/core'; +import { + BitstreamDataService, + Collection, + CollectionDataService, + ContentSource, + ContentSourceSetSerializer, + getAllSucceededRemoteDataPayload, + getFirstCompletedRemoteData, + getFirstSucceededRemoteDataPayload, + NotificationsService, + Process, + ProcessDataService, + ProcessStatus, + RequestService, + ScriptDataService, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { TranslateModule, TranslateService, @@ -25,24 +39,7 @@ import { tap, } from 'rxjs/operators'; -import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; -import { CollectionDataService } from '../../../../core/data/collection-data.service'; -import { ProcessDataService } from '../../../../core/data/processes/process-data.service'; -import { ScriptDataService } from '../../../../core/data/processes/script-data.service'; -import { RequestService } from '../../../../core/data/request.service'; -import { Collection } from '../../../../core/shared/collection.model'; -import { ContentSource } from '../../../../core/shared/content-source.model'; -import { ContentSourceSetSerializer } from '../../../../core/shared/content-source-set-serializer'; -import { - getAllSucceededRemoteDataPayload, - getFirstCompletedRemoteData, - getFirstSucceededRemoteDataPayload, -} from '../../../../core/shared/operators'; -import { Process } from '../../../../process-page/processes/process.model'; -import { ProcessStatus } from '../../../../process-page/processes/process-status.model'; import { BtnDisabledDirective } from '../../../../shared/btn-disabled.directive'; -import { hasValue } from '../../../../shared/empty.util'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; import { VarDirective } from '../../../../shared/utils/var.directive'; /** @@ -55,7 +52,6 @@ import { VarDirective } from '../../../../shared/utils/var.directive'; imports: [ TranslateModule, AsyncPipe, - NgIf, VarDirective, BtnDisabledDirective, ], diff --git a/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.html b/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.html index 7aa1f1a8b78..1f7a5a8b2e4 100644 --- a/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.html +++ b/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.html @@ -1,74 +1,92 @@
-
- - - -
-

{{ 'collection.edit.tabs.source.head' | translate }}

-
- - -
- -

{{ 'collection.edit.tabs.source.form.head' | translate }}

+
+ @if ((isReinstatable$ | async) !== true) { + + } + @if (isReinstatable$ | async) { + +} + +
+

{{ 'collection.edit.tabs.source.head' | translate }}

+@if (contentSource) { +
+ + +
+} +@if (!contentSource) { + +} +@if (contentSource && (contentSource?.harvestType !== harvestTypeNone)) { +

{{ 'collection.edit.tabs.source.form.head' | translate }}

+}
- + @if (formGroup && contentSource && (contentSource?.harvestType !== harvestTypeNone)) { + + }
-
+@if ((contentSource?.harvestType !== harvestTypeNone)) { +
-
-
- - - -
-
-
+
+
+ @if ((isReinstatable$ | async) !== true) { + + } + @if (isReinstatable$ | async) { + + } + +
+
+
+} + [isEnabled]="(hasChanges$ | async) !== true" + [shouldShow]="contentSource?.harvestType !== harvestTypeNone" + [collection]="(collectionRD$ |async)?.payload" + > diff --git a/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.spec.ts b/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.spec.ts index 3457d751756..0e22832df0c 100644 --- a/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.spec.ts @@ -14,6 +14,23 @@ import { Router, } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + Collection, + CollectionDataService, + ContentSource, + ContentSourceHarvestType, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, + FieldUpdate, + INotification, + Notification, + NotificationsService, + NotificationType, + ObjectUpdatesService, + RequestService, + RouterStub, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { DynamicFormControlModel, DynamicFormService, @@ -21,29 +38,8 @@ import { import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { CollectionDataService } from '../../../core/data/collection-data.service'; -import { FieldUpdate } from '../../../core/data/object-updates/field-update.model'; -import { ObjectUpdatesService } from '../../../core/data/object-updates/object-updates.service'; -import { RequestService } from '../../../core/data/request.service'; -import { Collection } from '../../../core/shared/collection.model'; -import { - ContentSource, - ContentSourceHarvestType, -} from '../../../core/shared/content-source.model'; -import { hasValue } from '../../../shared/empty.util'; import { FormComponent } from '../../../shared/form/form.component'; import { ThemedLoadingComponent } from '../../../shared/loading/themed-loading.component'; -import { - INotification, - Notification, -} from '../../../shared/notifications/models/notification.model'; -import { NotificationType } from '../../../shared/notifications/models/notification-type'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../../shared/remote-data.utils'; -import { RouterStub } from '../../../shared/testing/router.stub'; import { CollectionSourceComponent } from './collection-source.component'; import { CollectionSourceControlsComponent } from './collection-source-controls/collection-source-controls.component'; @@ -85,7 +81,7 @@ describe('CollectionSourceComponent', () => { }, { id: 'dim', - label: 'DSpace Intermediate Metadata', + label: 'DSpace Intermediate PolicyMetadata', nameSpace: 'http://www.dspace.org/xmlns/dspace/dim', }, ], diff --git a/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.ts b/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.ts index afeb2e2352c..13f093b87ed 100644 --- a/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.ts +++ b/src/app/collection-page/edit-collection-page/collection-source/collection-source.component.ts @@ -1,7 +1,6 @@ import { AsyncPipe, Location, - NgIf, } from '@angular/common'; import { Component, @@ -13,6 +12,27 @@ import { ActivatedRoute, Router, } from '@angular/router'; +import { + Collection, + CollectionDataService, + ContentSource, + ContentSourceHarvestType, + FieldUpdate, + FieldUpdates, + getFirstCompletedRemoteData, + getFirstSucceededRemoteData, + INotification, + MetadataConfig, + NotificationsService, + ObjectUpdatesService, + RemoteData, + RequestService, +} from '@dspace/core'; +import { + hasNoValue, + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { DynamicFormControlModel, DynamicFormGroupModel, @@ -40,32 +60,9 @@ import { } from 'rxjs/operators'; import { environment } from '../../../../environments/environment'; -import { CollectionDataService } from '../../../core/data/collection-data.service'; -import { FieldUpdate } from '../../../core/data/object-updates/field-update.model'; -import { FieldUpdates } from '../../../core/data/object-updates/field-updates.model'; -import { ObjectUpdatesService } from '../../../core/data/object-updates/object-updates.service'; -import { RemoteData } from '../../../core/data/remote-data'; -import { RequestService } from '../../../core/data/request.service'; -import { Collection } from '../../../core/shared/collection.model'; -import { - ContentSource, - ContentSourceHarvestType, -} from '../../../core/shared/content-source.model'; -import { MetadataConfig } from '../../../core/shared/metadata-config.model'; -import { - getFirstCompletedRemoteData, - getFirstSucceededRemoteData, -} from '../../../core/shared/operators'; import { BtnDisabledDirective } from '../../../shared/btn-disabled.directive'; -import { - hasNoValue, - hasValue, - isNotEmpty, -} from '../../../shared/empty.util'; import { FormComponent } from '../../../shared/form/form.component'; import { ThemedLoadingComponent } from '../../../shared/loading/themed-loading.component'; -import { INotification } from '../../../shared/notifications/models/notification.model'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { AbstractTrackableComponent } from '../../../shared/trackable/abstract-trackable.component'; import { CollectionSourceControlsComponent } from './collection-source-controls/collection-source-controls.component'; @@ -78,7 +75,6 @@ import { CollectionSourceControlsComponent } from './collection-source-controls/ imports: [ AsyncPipe, TranslateModule, - NgIf, ThemedLoadingComponent, FormComponent, CollectionSourceControlsComponent, @@ -147,7 +143,7 @@ export class CollectionSourceComponent extends AbstractTrackableComponent implem }); /** - * The Dynamic Input Model for the Metadata Format used + * The Dynamic Input Model for the PolicyMetadata Format used */ metadataConfigIdModel = new DynamicSelectModel({ id: 'metadataConfigId', @@ -259,7 +255,7 @@ export class CollectionSourceComponent extends AbstractTrackableComponent implem /** * The previously selected harvesting type * Used for switching between ContentSourceHarvestType.None and the previously selected value when enabling / disabling harvesting - * Defaults to ContentSourceHarvestType.Metadata + * Defaults to ContentSourceHarvestType.PolicyMetadata */ previouslySelectedHarvestType = ContentSourceHarvestType.Metadata; diff --git a/src/app/collection-page/edit-collection-page/edit-collection-page-routes.ts b/src/app/collection-page/edit-collection-page/edit-collection-page-routes.ts index 19dbaa616b2..4f2b794eb2f 100644 --- a/src/app/collection-page/edit-collection-page/edit-collection-page-routes.ts +++ b/src/app/collection-page/edit-collection-page/edit-collection-page-routes.ts @@ -1,7 +1,9 @@ import { Route } from '@angular/router'; +import { + collectionAdministratorGuard, + i18nBreadcrumbResolver, +} from '@dspace/core'; -import { i18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver'; -import { collectionAdministratorGuard } from '../../core/data/feature-authorization/feature-authorization-guard/collection-administrator.guard'; import { ResourcePolicyCreateComponent } from '../../shared/resource-policies/create/resource-policy-create.component'; import { ResourcePolicyEditComponent } from '../../shared/resource-policies/edit/resource-policy-edit.component'; import { resourcePolicyResolver } from '../../shared/resource-policies/resolvers/resource-policy.resolver'; diff --git a/src/app/collection-page/edit-collection-page/edit-collection-page.component.spec.ts b/src/app/collection-page/edit-collection-page/edit-collection-page.component.spec.ts index 3ef2b65df92..6d2fe4e4e44 100644 --- a/src/app/collection-page/edit-collection-page/edit-collection-page.component.spec.ts +++ b/src/app/collection-page/edit-collection-page/edit-collection-page.component.spec.ts @@ -7,10 +7,10 @@ import { } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { CollectionDataService } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { CollectionDataService } from '../../core/data/collection-data.service'; import { EditCollectionPageComponent } from './edit-collection-page.component'; describe('EditCollectionPageComponent', () => { diff --git a/src/app/collection-page/edit-collection-page/edit-collection-page.component.ts b/src/app/collection-page/edit-collection-page/edit-collection-page.component.ts index 4508ba73427..8a9bfe6a331 100644 --- a/src/app/collection-page/edit-collection-page/edit-collection-page.component.ts +++ b/src/app/collection-page/edit-collection-page/edit-collection-page.component.ts @@ -1,8 +1,6 @@ import { AsyncPipe, NgClass, - NgForOf, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; import { @@ -11,9 +9,9 @@ import { RouterLink, RouterOutlet, } from '@angular/router'; +import { Collection } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { Collection } from '../../core/shared/collection.model'; import { EditComColPageComponent } from '../../shared/comcol/comcol-forms/edit-comcol-page/edit-comcol-page.component'; import { getCollectionPageRoute } from '../collection-page-routing-paths'; @@ -27,9 +25,7 @@ import { getCollectionPageRoute } from '../collection-page-routing-paths'; RouterLink, TranslateModule, NgClass, - NgForOf, RouterOutlet, - NgIf, AsyncPipe, ], standalone: true, diff --git a/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.html b/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.html index 7f0b2efba22..765d49b7bf7 100644 --- a/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.html +++ b/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.html @@ -1,13 +1,17 @@
- + @if (itemRD?.hasSucceeded) {

{{ 'collection.edit.template.head' | translate:{ collection: dsoNameService.getName(collection) } }}

-
- - + } + @if (itemRD?.isLoading) { + + } + @if (itemRD?.hasFailed) { + + }
diff --git a/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.spec.ts b/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.spec.ts index 4d33e7d008a..85f90afd20f 100644 --- a/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.spec.ts +++ b/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.spec.ts @@ -7,19 +7,19 @@ import { } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + Collection, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, + ItemTemplateDataService, + NotificationsService, + NotificationsServiceStub, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { ItemTemplateDataService } from '../../core/data/item-template-data.service'; -import { Collection } from '../../core/shared/collection.model'; import { ThemedDsoEditMetadataComponent } from '../../dso-shared/dso-edit-metadata/themed-dso-edit-metadata.component'; import { getMockThemeService } from '../../shared/mocks/theme-service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { ThemeService } from '../../shared/theme-support/theme.service'; import { getCollectionEditRoute } from '../collection-page-routing-paths'; import { EditItemTemplatePageComponent } from './edit-item-template-page.component'; diff --git a/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.ts b/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.ts index f7c5dc4b14a..4dad32c9a71 100644 --- a/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.ts +++ b/src/app/collection-page/edit-item-template-page/edit-item-template-page.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, OnInit, @@ -10,6 +7,14 @@ import { ActivatedRoute, RouterLink, } from '@angular/router'; +import { + Collection, + DSONameService, + getFirstSucceededRemoteDataPayload, + Item, + ItemTemplateDataService, + RemoteData, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { Observable } from 'rxjs'; import { @@ -18,12 +23,6 @@ import { switchMap, } from 'rxjs/operators'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { ItemTemplateDataService } from '../../core/data/item-template-data.service'; -import { RemoteData } from '../../core/data/remote-data'; -import { Collection } from '../../core/shared/collection.model'; -import { Item } from '../../core/shared/item.model'; -import { getFirstSucceededRemoteDataPayload } from '../../core/shared/operators'; import { ThemedDsoEditMetadataComponent } from '../../dso-shared/dso-edit-metadata/themed-dso-edit-metadata.component'; import { AlertComponent } from '../../shared/alert/alert.component'; import { AlertType } from '../../shared/alert/alert-type'; @@ -39,7 +38,6 @@ import { getCollectionEditRoute } from '../collection-page-routing-paths'; RouterLink, AsyncPipe, VarDirective, - NgIf, TranslateModule, ThemedLoadingComponent, AlertComponent, diff --git a/src/app/collection-page/edit-item-template-page/item-template-page.resolver.spec.ts b/src/app/collection-page/edit-item-template-page/item-template-page.resolver.spec.ts index c622c622679..287d05f4872 100644 --- a/src/app/collection-page/edit-item-template-page/item-template-page.resolver.spec.ts +++ b/src/app/collection-page/edit-item-template-page/item-template-page.resolver.spec.ts @@ -1,7 +1,7 @@ +import { createSuccessfulRemoteDataObject$ } from '@dspace/core'; import { Observable } from 'rxjs'; import { first } from 'rxjs/operators'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { itemTemplatePageResolver } from './item-template-page.resolver'; describe('itemTemplatePageResolver', () => { diff --git a/src/app/collection-page/edit-item-template-page/item-template-page.resolver.ts b/src/app/collection-page/edit-item-template-page/item-template-page.resolver.ts index d35cd0a3b04..da8a279653c 100644 --- a/src/app/collection-page/edit-item-template-page/item-template-page.resolver.ts +++ b/src/app/collection-page/edit-item-template-page/item-template-page.resolver.ts @@ -4,14 +4,15 @@ import { ResolveFn, RouterStateSnapshot, } from '@angular/router'; +import { + followLink, + getFirstCompletedRemoteData, + Item, + ItemTemplateDataService, + RemoteData, +} from '@dspace/core'; import { Observable } from 'rxjs'; -import { ItemTemplateDataService } from '../../core/data/item-template-data.service'; -import { RemoteData } from '../../core/data/remote-data'; -import { Item } from '../../core/shared/item.model'; -import { getFirstCompletedRemoteData } from '../../core/shared/operators'; -import { followLink } from '../../shared/utils/follow-link-config.model'; - export const itemTemplatePageResolver: ResolveFn> = ( route: ActivatedRouteSnapshot, state: RouterStateSnapshot, diff --git a/src/app/community-list-page/community-list-datasource.ts b/src/app/community-list-page/community-list-datasource.ts index 95acc9dd862..a6ab5d466bb 100644 --- a/src/app/community-list-page/community-list-datasource.ts +++ b/src/app/community-list-page/community-list-datasource.ts @@ -2,6 +2,8 @@ import { CollectionViewer, DataSource, } from '@angular/cdk/collections'; +import { FindListOptions } from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { BehaviorSubject, Observable, @@ -9,8 +11,6 @@ import { } from 'rxjs'; import { finalize } from 'rxjs/operators'; -import { FindListOptions } from '../core/data/find-list-options.model'; -import { hasValue } from '../shared/empty.util'; import { CommunityListService } from './community-list-service'; import { FlatNode } from './flat-node.model'; diff --git a/src/app/community-list-page/community-list-page-routes.ts b/src/app/community-list-page/community-list-page-routes.ts index 9990efb4377..dec74a5ac89 100644 --- a/src/app/community-list-page/community-list-page-routes.ts +++ b/src/app/community-list-page/community-list-page-routes.ts @@ -1,6 +1,6 @@ import { Route } from '@angular/router'; +import { i18nBreadcrumbResolver } from '@dspace/core'; -import { i18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver'; import { ThemedCommunityListPageComponent } from './themed-community-list-page.component'; /** diff --git a/src/app/community-list-page/community-list-page.component.spec.ts b/src/app/community-list-page/community-list-page.component.spec.ts index 8afcf4466fc..3f99081d975 100644 --- a/src/app/community-list-page/community-list-page.component.spec.ts +++ b/src/app/community-list-page/community-list-page.component.spec.ts @@ -5,13 +5,13 @@ import { TestBed, waitForAsync, } from '@angular/core/testing'; +import { TranslateLoaderMock } from '@dspace/core'; import { TranslateLoader, TranslateModule, } from '@ngx-translate/core'; import { getMockThemeService } from '../shared/mocks/theme-service.mock'; -import { TranslateLoaderMock } from '../shared/mocks/translate-loader.mock'; import { ThemeService } from '../shared/theme-support/theme.service'; import { CommunityListPageComponent } from './community-list-page.component'; import { CommunityListService } from './community-list-service'; diff --git a/src/app/community-list-page/community-list-service.spec.ts b/src/app/community-list-page/community-list-service.spec.ts index 28d3cfe1a95..9b3a0374e6a 100644 --- a/src/app/community-list-page/community-list-service.spec.ts +++ b/src/app/community-list-page/community-list-service.spec.ts @@ -2,29 +2,27 @@ import { inject, TestBed, } from '@angular/core/testing'; +import { + APP_CONFIG, + buildPaginatedList, + Collection, + CollectionDataService, + Community, + CommunityDataService, + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject$, + FindListOptions, + PageInfo, + SortDirection, + SortOptions, + StoreMock, +} from '@dspace/core'; import { Store } from '@ngrx/store'; import { of as observableOf } from 'rxjs'; import { take } from 'rxjs/operators'; -import { APP_CONFIG } from 'src/config/app-config.interface'; import { environment } from 'src/environments/environment.test'; import { AppState } from '../app.reducer'; -import { - SortDirection, - SortOptions, -} from '../core/cache/models/sort-options.model'; -import { CollectionDataService } from '../core/data/collection-data.service'; -import { CommunityDataService } from '../core/data/community-data.service'; -import { FindListOptions } from '../core/data/find-list-options.model'; -import { buildPaginatedList } from '../core/data/paginated-list.model'; -import { Collection } from '../core/shared/collection.model'; -import { Community } from '../core/shared/community.model'; -import { PageInfo } from '../core/shared/page-info.model'; -import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject$, -} from '../shared/remote-data.utils'; -import { StoreMock } from '../shared/testing/store.mock'; import { CommunityListService, toFlatNode, diff --git a/src/app/community-list-page/community-list-service.ts b/src/app/community-list-page/community-list-service.ts index 2878d899ebc..68fd7770984 100644 --- a/src/app/community-list-page/community-list-service.ts +++ b/src/app/community-list-page/community-list-service.ts @@ -3,6 +3,26 @@ import { Inject, Injectable, } from '@angular/core'; +import { + APP_CONFIG, + AppConfig, + buildPaginatedList, + Collection, + CollectionDataService, + Community, + CommunityDataService, + FindListOptions, + followLink, + getFirstCompletedRemoteData, + getFirstSucceededRemoteData, + PageInfo, + PaginatedList, + RemoteData, +} from '@dspace/core'; +import { + hasValue, + isNotEmpty, +} from '@dspace/shared/utils'; import { createSelector, Store, @@ -17,35 +37,11 @@ import { map, switchMap, } from 'rxjs/operators'; -import { - APP_CONFIG, - AppConfig, -} from 'src/config/app-config.interface'; import { v4 as uuidv4 } from 'uuid'; import { AppState } from '../app.reducer'; import { getCollectionPageRoute } from '../collection-page/collection-page-routing-paths'; import { getCommunityPageRoute } from '../community-page/community-page-routing-paths'; -import { CollectionDataService } from '../core/data/collection-data.service'; -import { CommunityDataService } from '../core/data/community-data.service'; -import { FindListOptions } from '../core/data/find-list-options.model'; -import { - buildPaginatedList, - PaginatedList, -} from '../core/data/paginated-list.model'; -import { RemoteData } from '../core/data/remote-data'; -import { Collection } from '../core/shared/collection.model'; -import { Community } from '../core/shared/community.model'; -import { - getFirstCompletedRemoteData, - getFirstSucceededRemoteData, -} from '../core/shared/operators'; -import { PageInfo } from '../core/shared/page-info.model'; -import { - hasValue, - isNotEmpty, -} from '../shared/empty.util'; -import { followLink } from '../shared/utils/follow-link-config.model'; import { CommunityListSaveAction } from './community-list.actions'; import { CommunityListState } from './community-list.reducer'; import { FlatNode } from './flat-node.model'; diff --git a/src/app/community-list-page/community-list.actions.ts b/src/app/community-list-page/community-list.actions.ts index 47c72af9f78..79e706b482a 100644 --- a/src/app/community-list-page/community-list.actions.ts +++ b/src/app/community-list-page/community-list.actions.ts @@ -1,6 +1,6 @@ +import { type } from '@dspace/core'; import { Action } from '@ngrx/store'; -import { type } from '../shared/ngrx/type'; import { FlatNode } from './flat-node.model'; /** diff --git a/src/app/community-list-page/community-list.reducer.spec.ts b/src/app/community-list-page/community-list.reducer.spec.ts index abbd16d4cdc..ce21a6f6d13 100644 --- a/src/app/community-list-page/community-list.reducer.spec.ts +++ b/src/app/community-list-page/community-list.reducer.spec.ts @@ -1,9 +1,11 @@ +import { + buildPaginatedList, + Community, + createSuccessfulRemoteDataObject$, + PageInfo, +} from '@dspace/core'; import { of as observableOf } from 'rxjs'; -import { buildPaginatedList } from '../core/data/paginated-list.model'; -import { Community } from '../core/shared/community.model'; -import { PageInfo } from '../core/shared/page-info.model'; -import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils'; import { CommunityListSaveAction } from './community-list.actions'; import { CommunityListReducer } from './community-list.reducer'; import { toFlatNode } from './community-list-service'; diff --git a/src/app/community-list-page/community-list/community-list.component.html b/src/app/community-list-page/community-list/community-list.component.html index 82238ddd0d1..b1efeaca718 100644 --- a/src/app/community-list-page/community-list/community-list.component.html +++ b/src/app/community-list-page/community-list/community-list.component.html @@ -1,18 +1,24 @@ - +@if ((dataSource.loading$ | async) && !loadingNode) { + +} + class="example-tree-node show-more-node">
- - + @if ((dataSource.loading$ | async) !== true) { + + } + @if (node===loadingNode && dataSource.loading$ | async) { + + }
@@ -22,51 +28,61 @@ + class="example-tree-node expandable-node">
- + @if (hasChild(null, node) | async) { + + } - + @if ((hasChild(null, node) | async) !== true) { + + }
{{ dsoNameService.getName(node.payload) }}   - {{node.payload.archivedItemsCount}} + @if (node.payload.archivedItemsCount >= 0) { + {{node.payload.archivedItemsCount}} + }
-
- - - {{node.payload.shortDescription}} - -
+ @if (node.payload.shortDescription) { +
+ + + {{node.payload.shortDescription}} + +
+ }
-
- - -
+ @if (node===loadingNode && dataSource.loading$ | async) { +
+ + +
+ }
+ class="example-tree-node childless-node">
-
- - - {{node.payload.shortDescription}} - -
+ @if (node.payload.shortDescription) { +
+ + + {{node.payload.shortDescription}} + +
+ }
diff --git a/src/app/community-list-page/community-list/community-list.component.spec.ts b/src/app/community-list-page/community-list/community-list.component.spec.ts index f997f5db9c3..9ff397b42f4 100644 --- a/src/app/community-list-page/community-list/community-list.component.spec.ts +++ b/src/app/community-list-page/community-list/community-list.component.spec.ts @@ -14,6 +14,18 @@ import { import { By } from '@angular/platform-browser'; import { RouterLinkWithHref } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + buildPaginatedList, + Collection, + Community, + createSuccessfulRemoteDataObject$, + PageInfo, + TranslateLoaderMock, +} from '@dspace/core'; +import { + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { TranslateLoader, TranslateModule, @@ -21,17 +33,7 @@ import { import { of as observableOf } from 'rxjs'; import { v4 as uuidv4 } from 'uuid'; -import { buildPaginatedList } from '../../core/data/paginated-list.model'; -import { Collection } from '../../core/shared/collection.model'; -import { Community } from '../../core/shared/community.model'; -import { PageInfo } from '../../core/shared/page-info.model'; -import { - isEmpty, - isNotEmpty, -} from '../../shared/empty.util'; import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component'; -import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../shared/remote-data.utils'; import { TruncatableComponent } from '../../shared/truncatable/truncatable.component'; import { TruncatablePartComponent } from '../../shared/truncatable/truncatable-part/truncatable-part.component'; import { diff --git a/src/app/community-list-page/community-list/community-list.component.ts b/src/app/community-list-page/community-list/community-list.component.ts index 5819471d7e5..aacc4f31faf 100644 --- a/src/app/community-list-page/community-list/community-list.component.ts +++ b/src/app/community-list-page/community-list/community-list.component.ts @@ -5,7 +5,6 @@ import { import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component, @@ -13,16 +12,16 @@ import { OnInit, } from '@angular/core'; import { RouterLink } from '@angular/router'; -import { TranslateModule } from '@ngx-translate/core'; -import { take } from 'rxjs/operators'; - -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; import { + DSONameService, + FindListOptions, SortDirection, SortOptions, -} from '../../core/cache/models/sort-options.model'; -import { FindListOptions } from '../../core/data/find-list-options.model'; -import { isEmpty } from '../../shared/empty.util'; +} from '@dspace/core'; +import { isEmpty } from '@dspace/shared/utils'; +import { TranslateModule } from '@ngx-translate/core'; +import { take } from 'rxjs/operators'; + import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component'; import { TruncatableComponent } from '../../shared/truncatable/truncatable.component'; import { TruncatablePartComponent } from '../../shared/truncatable/truncatable-part/truncatable-part.component'; @@ -42,7 +41,7 @@ import { FlatNode } from '../flat-node.model'; templateUrl: './community-list.component.html', styleUrls: ['./community-list.component.scss'], standalone: true, - imports: [NgIf, ThemedLoadingComponent, CdkTreeModule, NgClass, RouterLink, TruncatableComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], + imports: [ThemedLoadingComponent, CdkTreeModule, NgClass, RouterLink, TruncatableComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], }) export class CommunityListComponent implements OnInit, OnDestroy { diff --git a/src/app/community-list-page/flat-node.model.ts b/src/app/community-list-page/flat-node.model.ts index 125ffc1e597..a54f8fd504b 100644 --- a/src/app/community-list-page/flat-node.model.ts +++ b/src/app/community-list-page/flat-node.model.ts @@ -1,7 +1,9 @@ +import { + Collection, + Community, +} from '@dspace/core'; import { Observable } from 'rxjs'; -import { Collection } from '../core/shared/collection.model'; -import { Community } from '../core/shared/community.model'; import { ShowMoreFlatNode } from './show-more-flat-node.model'; /** diff --git a/src/app/community-page/community-form/community-form.component.ts b/src/app/community-page/community-form/community-form.component.ts index d32d9e408f2..502c2a670e8 100644 --- a/src/app/community-page/community-form/community-form.component.ts +++ b/src/app/community-page/community-form/community-form.component.ts @@ -1,8 +1,4 @@ -import { - AsyncPipe, - NgClass, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, Input, @@ -10,6 +6,14 @@ import { SimpleChange, SimpleChanges, } from '@angular/core'; +import { + AuthService, + Community, + CommunityDataService, + NotificationsService, + ObjectCacheService, + RequestService, +} from '@dspace/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { DynamicFormControlModel, @@ -23,15 +27,9 @@ import { } from '@ngx-translate/core'; import { environment } from '../../../environments/environment'; -import { AuthService } from '../../core/auth/auth.service'; -import { ObjectCacheService } from '../../core/cache/object-cache.service'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { RequestService } from '../../core/data/request.service'; -import { Community } from '../../core/shared/community.model'; import { ComColFormComponent } from '../../shared/comcol/comcol-forms/comcol-form/comcol-form.component'; import { ComcolPageLogoComponent } from '../../shared/comcol/comcol-page-logo/comcol-page-logo.component'; import { FormComponent } from '../../shared/form/form.component'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { UploaderComponent } from '../../shared/upload/uploader/uploader.component'; import { VarDirective } from '../../shared/utils/var.directive'; @@ -49,8 +47,6 @@ import { VarDirective } from '../../shared/utils/var.directive'; UploaderComponent, AsyncPipe, ComcolPageLogoComponent, - NgIf, - NgClass, VarDirective, ], }) diff --git a/src/app/community-page/community-page-administrator.guard.ts b/src/app/community-page/community-page-administrator.guard.ts index ecbc9b86c0c..6e62c0d0241 100644 --- a/src/app/community-page/community-page-administrator.guard.ts +++ b/src/app/community-page/community-page-administrator.guard.ts @@ -1,8 +1,10 @@ import { CanActivateFn } from '@angular/router'; +import { + dsoPageSingleFeatureGuard, + FeatureID, +} from '@dspace/core'; import { of as observableOf } from 'rxjs'; -import { dsoPageSingleFeatureGuard } from '../core/data/feature-authorization/feature-authorization-guard/dso-page-single-feature.guard'; -import { FeatureID } from '../core/data/feature-authorization/feature-id'; import { communityPageResolver } from './community-page.resolver'; /** diff --git a/src/app/community-page/community-page-routes.ts b/src/app/community-page/community-page-routes.ts index 2c8a7942a4a..3ca6b254701 100644 --- a/src/app/community-page/community-page-routes.ts +++ b/src/app/community-page/community-page-routes.ts @@ -1,15 +1,17 @@ import { Route } from '@angular/router'; +import { + authenticatedGuard, + communityBreadcrumbResolver, + i18nBreadcrumbResolver, + MenuItemType, +} from '@dspace/core'; import { browseByGuard } from '../browse-by/browse-by-guard'; import { browseByI18nBreadcrumbResolver } from '../browse-by/browse-by-i18n-breadcrumb.resolver'; -import { authenticatedGuard } from '../core/auth/authenticated.guard'; -import { communityBreadcrumbResolver } from '../core/breadcrumbs/community-breadcrumb.resolver'; -import { i18nBreadcrumbResolver } from '../core/breadcrumbs/i18n-breadcrumb.resolver'; import { ComcolBrowseByComponent } from '../shared/comcol/sections/comcol-browse-by/comcol-browse-by.component'; import { ComcolSearchSectionComponent } from '../shared/comcol/sections/comcol-search-section/comcol-search-section.component'; import { dsoEditMenuResolver } from '../shared/dso-page/dso-edit-menu.resolver'; import { LinkMenuItemModel } from '../shared/menu/menu-item/models/link.model'; -import { MenuItemType } from '../shared/menu/menu-item-type.model'; import { communityPageResolver } from './community-page.resolver'; import { communityPageAdministratorGuard } from './community-page-administrator.guard'; import { diff --git a/src/app/community-page/community-page-routing-paths.ts b/src/app/community-page/community-page-routing-paths.ts index 759d72cf3eb..6d79e3a032e 100644 --- a/src/app/community-page/community-page-routing-paths.ts +++ b/src/app/community-page/community-page-routing-paths.ts @@ -1,5 +1,6 @@ +import { URLCombiner } from '@dspace/core'; + import { getCollectionPageRoute } from '../collection-page/collection-page-routing-paths'; -import { URLCombiner } from '../core/url-combiner/url-combiner'; export const COMMUNITY_PARENT_PARAMETER = 'parent'; diff --git a/src/app/community-page/community-page.component.html b/src/app/community-page/community-page.component.html index a695e2019a3..985ea30191f 100644 --- a/src/app/community-page/community-page.component.html +++ b/src/app/community-page/community-page.component.html @@ -1,43 +1,53 @@
-
-
- -
-
- - - - - - - - - - - - - - -
- -
-
- - - - - - -
-
- - - -
+ @if (communityRD?.hasSucceeded) { +
+ @if (communityRD?.payload; as communityPayload) { +
+ +
+
+ + + + @if (logoRD$) { + + + } + + + + + + + + + +
+ +
+
+ + + + +
+ @if (communityPayload.copyrightText) { +
+ + + +
+ } +
+ }
-
+ } - - + @if (communityRD?.hasFailed) { + + } + @if (communityRD?.isLoading) { + + }
diff --git a/src/app/community-page/community-page.component.ts b/src/app/community-page/community-page.component.ts index d04ecbee190..a2789e83335 100644 --- a/src/app/community-page/community-page.component.ts +++ b/src/app/community-page/community-page.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -13,6 +10,18 @@ import { RouterModule, RouterOutlet, } from '@angular/router'; +import { + AuthorizationDataService, + AuthService, + Bitstream, + Community, + DSONameService, + FeatureID, + getAllSucceededRemoteDataPayload, + redirectOn4xx, + RemoteData, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; import { Observable } from 'rxjs'; import { @@ -21,15 +30,6 @@ import { mergeMap, } from 'rxjs/operators'; -import { AuthService } from '../core/auth/auth.service'; -import { DSONameService } from '../core/breadcrumbs/dso-name.service'; -import { AuthorizationDataService } from '../core/data/feature-authorization/authorization-data.service'; -import { FeatureID } from '../core/data/feature-authorization/feature-id'; -import { RemoteData } from '../core/data/remote-data'; -import { redirectOn4xx } from '../core/shared/authorized.operators'; -import { Bitstream } from '../core/shared/bitstream.model'; -import { Community } from '../core/shared/community.model'; -import { getAllSucceededRemoteDataPayload } from '../core/shared/operators'; import { fadeInOut } from '../shared/animations/fade'; import { ThemedComcolPageBrowseByComponent } from '../shared/comcol/comcol-page-browse-by/themed-comcol-page-browse-by.component'; import { ThemedComcolPageContentComponent } from '../shared/comcol/comcol-page-content/themed-comcol-page-content.component'; @@ -37,7 +37,6 @@ import { ThemedComcolPageHandleComponent } from '../shared/comcol/comcol-page-ha import { ComcolPageHeaderComponent } from '../shared/comcol/comcol-page-header/comcol-page-header.component'; import { ComcolPageLogoComponent } from '../shared/comcol/comcol-page-logo/comcol-page-logo.component'; import { DsoEditMenuComponent } from '../shared/dso-page/dso-edit-menu/dso-edit-menu.component'; -import { hasValue } from '../shared/empty.util'; import { ErrorComponent } from '../shared/error/error.component'; import { ThemedLoadingComponent } from '../shared/loading/themed-loading.component'; import { VarDirective } from '../shared/utils/var.directive'; @@ -56,7 +55,6 @@ import { ThemedCommunityPageSubCommunityListComponent } from './sections/sub-com ThemedComcolPageContentComponent, ErrorComponent, ThemedLoadingComponent, - NgIf, TranslateModule, ThemedCommunityPageSubCommunityListComponent, ThemedCollectionPageSubCollectionListComponent, diff --git a/src/app/community-page/community-page.resolver.spec.ts b/src/app/community-page/community-page.resolver.spec.ts index e429ecf17c6..f637e8c544f 100644 --- a/src/app/community-page/community-page.resolver.spec.ts +++ b/src/app/community-page/community-page.resolver.spec.ts @@ -1,7 +1,7 @@ +import { createSuccessfulRemoteDataObject$ } from '@dspace/core'; import { Observable } from 'rxjs'; import { first } from 'rxjs/operators'; -import { createSuccessfulRemoteDataObject$ } from '../shared/remote-data.utils'; import { communityPageResolver } from './community-page.resolver'; describe('communityPageResolver', () => { diff --git a/src/app/community-page/community-page.resolver.ts b/src/app/community-page/community-page.resolver.ts index b8820629e78..9655f206c4c 100644 --- a/src/app/community-page/community-page.resolver.ts +++ b/src/app/community-page/community-page.resolver.ts @@ -4,19 +4,19 @@ import { ResolveFn, RouterStateSnapshot, } from '@angular/router'; +import { + Community, + CommunityDataService, + followLink, + FollowLinkConfig, + getFirstCompletedRemoteData, + RemoteData, + ResolvedAction, +} from '@dspace/core'; import { Store } from '@ngrx/store'; import { Observable } from 'rxjs'; import { AppState } from '../app.reducer'; -import { CommunityDataService } from '../core/data/community-data.service'; -import { RemoteData } from '../core/data/remote-data'; -import { ResolvedAction } from '../core/resolving/resolver.actions'; -import { Community } from '../core/shared/community.model'; -import { getFirstCompletedRemoteData } from '../core/shared/operators'; -import { - followLink, - FollowLinkConfig, -} from '../shared/utils/follow-link-config.model'; /** * The self links defined in this list are expected to be requested somewhere in the near future diff --git a/src/app/community-page/create-community-page/create-community-page.component.html b/src/app/community-page/create-community-page/create-community-page.component.html index 1d3d6eb871b..c07ca9c2e88 100644 --- a/src/app/community-page/create-community-page/create-community-page.component.html +++ b/src/app/community-page/create-community-page/create-community-page.component.html @@ -1,18 +1,25 @@ -
-
-
- -

{{ 'community.create.head' | translate }}

-

+
+
+ + @if (!parent) { +

{{ 'community.create.head' | translate }}

+ } @else { +

{{ 'community.create.sub-head' | translate:{ parent: dsoNameService.getName(parent) } }}

-
+ } + +
+

- -
+}
- + @if (isLoading$ | async) { + + }
diff --git a/src/app/community-page/create-community-page/create-community-page.component.spec.ts b/src/app/community-page/create-community-page/create-community-page.component.spec.ts index 062c0ea0620..fc342f10ef5 100644 --- a/src/app/community-page/create-community-page/create-community-page.component.spec.ts +++ b/src/app/community-page/create-community-page/create-community-page.component.spec.ts @@ -7,16 +7,18 @@ import { } from '@angular/core/testing'; import { Router } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + AuthService, + CommunityDataService, + NotificationsService, + NotificationsServiceStub, + RequestService, + RouteService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { AuthService } from '../../core/auth/auth.service'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { RequestService } from '../../core/data/request.service'; -import { RouteService } from '../../core/services/route.service'; import { AuthServiceMock } from '../../shared/mocks/auth.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; import { CommunityFormComponent } from '../community-form/community-form.component'; import { CreateCommunityPageComponent } from './create-community-page.component'; diff --git a/src/app/community-page/create-community-page/create-community-page.component.ts b/src/app/community-page/create-community-page/create-community-page.component.ts index 082f6c4f0b4..762aa16544e 100644 --- a/src/app/community-page/create-community-page/create-community-page.component.ts +++ b/src/app/community-page/create-community-page/create-community-page.component.ts @@ -1,22 +1,21 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { Router } from '@angular/router'; +import { + Community, + CommunityDataService, + DSONameService, + NotificationsService, + RequestService, + RouteService, +} from '@dspace/core'; import { TranslateModule, TranslateService, } from '@ngx-translate/core'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { RequestService } from '../../core/data/request.service'; -import { RouteService } from '../../core/services/route.service'; -import { Community } from '../../core/shared/community.model'; import { CreateComColPageComponent } from '../../shared/comcol/comcol-forms/create-comcol-page/create-comcol-page.component'; import { ThemedLoadingComponent } from '../../shared/loading/themed-loading.component'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { VarDirective } from '../../shared/utils/var.directive'; import { CommunityFormComponent } from '../community-form/community-form.component'; @@ -31,7 +30,6 @@ import { CommunityFormComponent } from '../community-form/community-form.compone CommunityFormComponent, TranslateModule, VarDirective, - NgIf, AsyncPipe, ThemedLoadingComponent, ], diff --git a/src/app/community-page/create-community-page/create-community-page.guard.spec.ts b/src/app/community-page/create-community-page/create-community-page.guard.spec.ts index 363db42fa28..4b641c65777 100644 --- a/src/app/community-page/create-community-page/create-community-page.guard.spec.ts +++ b/src/app/community-page/create-community-page/create-community-page.guard.spec.ts @@ -1,11 +1,11 @@ -import { first } from 'rxjs/operators'; - -import { Community } from '../../core/shared/community.model'; -import { RouterMock } from '../../shared/mocks/router.mock'; import { + Community, createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$, -} from '../../shared/remote-data.utils'; + RouterMock, +} from '@dspace/core'; +import { first } from 'rxjs/operators'; + import { createCommunityPageGuard } from './create-community-page.guard'; describe('createCommunityPageGuard', () => { diff --git a/src/app/community-page/create-community-page/create-community-page.guard.ts b/src/app/community-page/create-community-page/create-community-page.guard.ts index c3ee8c70914..52659bcf3ee 100644 --- a/src/app/community-page/create-community-page/create-community-page.guard.ts +++ b/src/app/community-page/create-community-page/create-community-page.guard.ts @@ -5,6 +5,16 @@ import { Router, RouterStateSnapshot, } from '@angular/router'; +import { + Community, + CommunityDataService, + getFirstCompletedRemoteData, + RemoteData, +} from '@dspace/core'; +import { + hasNoValue, + hasValue, +} from '@dspace/shared/utils'; import { Observable, of as observableOf, @@ -14,15 +24,6 @@ import { tap, } from 'rxjs/operators'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { RemoteData } from '../../core/data/remote-data'; -import { Community } from '../../core/shared/community.model'; -import { getFirstCompletedRemoteData } from '../../core/shared/operators'; -import { - hasNoValue, - hasValue, -} from '../../shared/empty.util'; - /** * True when either NO parent ID query parameter has been provided, or the parent ID resolves to a valid parent community * Reroutes to a 404 page when the page cannot be activated diff --git a/src/app/community-page/delete-community-page/delete-community-page.component.html b/src/app/community-page/delete-community-page/delete-community-page.component.html index b5d215e3b6c..053988da5b4 100644 --- a/src/app/community-page/delete-community-page/delete-community-page.component.html +++ b/src/app/community-page/delete-community-page/delete-community-page.component.html @@ -1,22 +1,26 @@
-
- -
-

{{ 'community.delete.head' | translate}}

-

{{ 'community.delete.text' | translate:{ dso: dsoNameService.getName(dso) } }}

-
-
- - -
-
-
-
-
+
+ +
+

{{ 'community.delete.head' | translate}}

+

{{ 'community.delete.text' | translate:{ dso: dsoNameService.getName(dso) } }}

+
+
+ + +
+
+
+
+
diff --git a/src/app/community-page/delete-community-page/delete-community-page.component.spec.ts b/src/app/community-page/delete-community-page/delete-community-page.component.spec.ts index 524f3e31243..28013961dcd 100644 --- a/src/app/community-page/delete-community-page/delete-community-page.component.spec.ts +++ b/src/app/community-page/delete-community-page/delete-community-page.component.spec.ts @@ -7,14 +7,16 @@ import { } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + CommunityDataService, + DSONameService, + NotificationsService, + RequestService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { RequestService } from '../../core/data/request.service'; import { DSONameServiceMock } from '../../shared/mocks/dso-name.service.mock'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { DeleteCommunityPageComponent } from './delete-community-page.component'; describe('DeleteCommunityPageComponent', () => { diff --git a/src/app/community-page/delete-community-page/delete-community-page.component.ts b/src/app/community-page/delete-community-page/delete-community-page.component.ts index 9c19a5eb472..8c2b997d1a2 100644 --- a/src/app/community-page/delete-community-page/delete-community-page.component.ts +++ b/src/app/community-page/delete-community-page/delete-community-page.component.ts @@ -1,23 +1,22 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { ActivatedRoute, Router, } from '@angular/router'; +import { + Community, + CommunityDataService, + DSONameService, + NotificationsService, +} from '@dspace/core'; import { TranslateModule, TranslateService, } from '@ngx-translate/core'; -import { DSONameService } from '../../core/breadcrumbs/dso-name.service'; -import { CommunityDataService } from '../../core/data/community-data.service'; -import { Community } from '../../core/shared/community.model'; import { BtnDisabledDirective } from '../../shared/btn-disabled.directive'; import { DeleteComColPageComponent } from '../../shared/comcol/comcol-forms/delete-comcol-page/delete-comcol-page.component'; -import { NotificationsService } from '../../shared/notifications/notifications.service'; import { VarDirective } from '../../shared/utils/var.directive'; /** @@ -31,7 +30,6 @@ import { VarDirective } from '../../shared/utils/var.directive'; TranslateModule, AsyncPipe, VarDirective, - NgIf, BtnDisabledDirective, ], standalone: true, diff --git a/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.html b/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.html index b4f2123b86f..5f7d1d8fc46 100644 --- a/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.html +++ b/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.html @@ -1,6 +1,7 @@ - - +@if (itemRD$ | async; as itemRD) { + + +} diff --git a/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.spec.ts b/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.spec.ts index 28879ed7abf..2ccbe6d5e75 100644 --- a/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.spec.ts +++ b/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.spec.ts @@ -3,14 +3,16 @@ import { TestBed, } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; +import { + Community, + createSuccessfulRemoteDataObject, +} from '@dspace/core'; import { of as observableOf, of, } from 'rxjs'; -import { Community } from '../../../core/shared/community.model'; import { AccessControlFormContainerComponent } from '../../../shared/access-control-form-container/access-control-form-container.component'; -import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { CommunityAccessControlComponent } from './community-access-control.component'; describe('CommunityAccessControlComponent', () => { diff --git a/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.ts b/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.ts index a0e094e21d4..38d01649d08 100644 --- a/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.ts +++ b/src/app/community-page/edit-community-page/community-access-control/community-access-control.component.ts @@ -1,18 +1,17 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + Community, + getFirstSucceededRemoteData, + RemoteData, +} from '@dspace/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { RemoteData } from '../../../core/data/remote-data'; -import { Community } from '../../../core/shared/community.model'; -import { getFirstSucceededRemoteData } from '../../../core/shared/operators'; import { AccessControlFormContainerComponent } from '../../../shared/access-control-form-container/access-control-form-container.component'; @Component({ @@ -21,7 +20,6 @@ import { AccessControlFormContainerComponent } from '../../../shared/access-cont styleUrls: ['./community-access-control.component.scss'], imports: [ AccessControlFormContainerComponent, - NgIf, AsyncPipe, ], standalone: true, diff --git a/src/app/community-page/edit-community-page/community-authorizations/community-authorizations.component.spec.ts b/src/app/community-page/edit-community-page/community-authorizations/community-authorizations.component.spec.ts index 921bbf0cfda..3504b346c95 100644 --- a/src/app/community-page/edit-community-page/community-authorizations/community-authorizations.component.spec.ts +++ b/src/app/community-page/edit-community-page/community-authorizations/community-authorizations.component.spec.ts @@ -9,12 +9,14 @@ import { waitForAsync, } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; +import { + Collection, + createSuccessfulRemoteDataObject, + DSpaceObject, +} from '@dspace/core'; import { cold } from 'jasmine-marbles'; import { of as observableOf } from 'rxjs'; -import { Collection } from '../../../core/shared/collection.model'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { ResourcePoliciesComponent } from '../../../shared/resource-policies/resource-policies.component'; import { CommunityAuthorizationsComponent } from './community-authorizations.component'; diff --git a/src/app/community-page/edit-community-page/community-authorizations/community-authorizations.component.ts b/src/app/community-page/edit-community-page/community-authorizations/community-authorizations.component.ts index 3e42a830bef..72a37c1c1cc 100644 --- a/src/app/community-page/edit-community-page/community-authorizations/community-authorizations.component.ts +++ b/src/app/community-page/edit-community-page/community-authorizations/community-authorizations.component.ts @@ -4,14 +4,16 @@ import { OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + DSpaceObject, + RemoteData, +} from '@dspace/core'; import { Observable } from 'rxjs'; import { first, map, } from 'rxjs/operators'; -import { RemoteData } from '../../../core/data/remote-data'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { ResourcePoliciesComponent } from '../../../shared/resource-policies/resource-policies.component'; @Component({ diff --git a/src/app/community-page/edit-community-page/community-curate/community-curate.component.spec.ts b/src/app/community-page/edit-community-page/community-curate/community-curate.component.spec.ts index 541308c9424..a04817d748a 100644 --- a/src/app/community-page/edit-community-page/community-curate/community-curate.component.spec.ts +++ b/src/app/community-page/edit-community-page/community-curate/community-curate.component.spec.ts @@ -8,13 +8,15 @@ import { waitForAsync, } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; +import { + Community, + createSuccessfulRemoteDataObject, + DSONameService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { Community } from '../../../core/shared/community.model'; import { CurationFormComponent } from '../../../curation-form/curation-form.component'; -import { createSuccessfulRemoteDataObject } from '../../../shared/remote-data.utils'; import { CommunityCurateComponent } from './community-curate.component'; describe('CommunityCurateComponent', () => { diff --git a/src/app/community-page/edit-community-page/community-curate/community-curate.component.ts b/src/app/community-page/edit-community-page/community-curate/community-curate.component.ts index fd4d2408278..36aae7ceb22 100644 --- a/src/app/community-page/edit-community-page/community-curate/community-curate.component.ts +++ b/src/app/community-page/edit-community-page/community-curate/community-curate.component.ts @@ -4,6 +4,12 @@ import { OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + Community, + DSONameService, + RemoteData, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; import { Observable } from 'rxjs'; import { @@ -12,11 +18,7 @@ import { take, } from 'rxjs/operators'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { RemoteData } from '../../../core/data/remote-data'; -import { Community } from '../../../core/shared/community.model'; import { CurationFormComponent } from '../../../curation-form/curation-form.component'; -import { hasValue } from '../../../shared/empty.util'; /** * Component for managing a community's curation tasks diff --git a/src/app/community-page/edit-community-page/community-metadata/community-metadata.component.spec.ts b/src/app/community-page/edit-community-page/community-metadata/community-metadata.component.spec.ts index b82beaa3f73..ca8f293cf8f 100644 --- a/src/app/community-page/edit-community-page/community-metadata/community-metadata.component.spec.ts +++ b/src/app/community-page/edit-community-page/community-metadata/community-metadata.component.spec.ts @@ -7,12 +7,14 @@ import { } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + CommunityDataService, + NotificationsService, + NotificationsServiceStub, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { CommunityDataService } from '../../../core/data/community-data.service'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; import { CommunityFormComponent } from '../../community-form/community-form.component'; import { CommunityMetadataComponent } from './community-metadata.component'; diff --git a/src/app/community-page/edit-community-page/community-metadata/community-metadata.component.ts b/src/app/community-page/edit-community-page/community-metadata/community-metadata.component.ts index 8001bd29697..5f6e84f8df7 100644 --- a/src/app/community-page/edit-community-page/community-metadata/community-metadata.component.ts +++ b/src/app/community-page/edit-community-page/community-metadata/community-metadata.component.ts @@ -4,12 +4,14 @@ import { ActivatedRoute, Router, } from '@angular/router'; +import { + Community, + CommunityDataService, + NotificationsService, +} from '@dspace/core'; import { TranslateService } from '@ngx-translate/core'; -import { CommunityDataService } from '../../../core/data/community-data.service'; -import { Community } from '../../../core/shared/community.model'; import { ComcolMetadataComponent } from '../../../shared/comcol/comcol-forms/edit-comcol-page/comcol-metadata/comcol-metadata.component'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; import { CommunityFormComponent } from '../../community-form/community-form.component'; /** diff --git a/src/app/community-page/edit-community-page/community-roles/community-roles.component.html b/src/app/community-page/edit-community-page/community-roles/community-roles.component.html index 37a70ff403d..f16131cb625 100644 --- a/src/app/community-page/edit-community-page/community-roles/community-roles.component.html +++ b/src/app/community-page/edit-community-page/community-roles/community-roles.component.html @@ -1,6 +1,7 @@ - - +@for (comcolRole of comcolRoles$ | async; track comcolRole) { + + +} diff --git a/src/app/community-page/edit-community-page/community-roles/community-roles.component.spec.ts b/src/app/community-page/edit-community-page/community-roles/community-roles.component.spec.ts index f1e75b7e23d..fc5c3966f34 100644 --- a/src/app/community-page/edit-community-page/community-roles/community-roles.component.spec.ts +++ b/src/app/community-page/edit-community-page/community-roles/community-roles.component.spec.ts @@ -10,20 +10,20 @@ import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { + Community, + createSuccessfulRemoteDataObject, + createSuccessfulRemoteDataObject$, + DSONameService, + GroupDataService, + NotificationsService, + NotificationsServiceStub, + RequestService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { RequestService } from '../../../core/data/request.service'; -import { GroupDataService } from '../../../core/eperson/group-data.service'; -import { Community } from '../../../core/shared/community.model'; import { DSONameServiceMock } from '../../../shared/mocks/dso-name.service.mock'; -import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { - createSuccessfulRemoteDataObject, - createSuccessfulRemoteDataObject$, -} from '../../../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; import { CommunityRolesComponent } from './community-roles.component'; describe('CommunityRolesComponent', () => { diff --git a/src/app/community-page/edit-community-page/community-roles/community-roles.component.ts b/src/app/community-page/edit-community-page/community-roles/community-roles.component.ts index 2e85cbe4c36..cc437da279b 100644 --- a/src/app/community-page/edit-community-page/community-roles/community-roles.component.ts +++ b/src/app/community-page/edit-community-page/community-roles/community-roles.component.ts @@ -1,25 +1,22 @@ -import { - AsyncPipe, - NgForOf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + Community, + getFirstSucceededRemoteData, + getRemoteDataPayload, + HALLink, + RemoteData, +} from '@dspace/core'; import { Observable } from 'rxjs'; import { first, map, } from 'rxjs/operators'; -import { RemoteData } from '../../../core/data/remote-data'; -import { Community } from '../../../core/shared/community.model'; -import { HALLink } from '../../../core/shared/hal-link.model'; -import { - getFirstSucceededRemoteData, - getRemoteDataPayload, -} from '../../../core/shared/operators'; import { ComcolRoleComponent } from '../../../shared/comcol/comcol-forms/edit-comcol-page/comcol-role/comcol-role.component'; /** @@ -31,7 +28,6 @@ import { ComcolRoleComponent } from '../../../shared/comcol/comcol-forms/edit-co imports: [ ComcolRoleComponent, AsyncPipe, - NgForOf, ], standalone: true, }) diff --git a/src/app/community-page/edit-community-page/edit-community-page-routes.ts b/src/app/community-page/edit-community-page/edit-community-page-routes.ts index 2402c2037d5..cb1d0fc4771 100644 --- a/src/app/community-page/edit-community-page/edit-community-page-routes.ts +++ b/src/app/community-page/edit-community-page/edit-community-page-routes.ts @@ -1,7 +1,9 @@ import { Route } from '@angular/router'; +import { + communityAdministratorGuard, + i18nBreadcrumbResolver, +} from '@dspace/core'; -import { i18nBreadcrumbResolver } from '../../core/breadcrumbs/i18n-breadcrumb.resolver'; -import { communityAdministratorGuard } from '../../core/data/feature-authorization/feature-authorization-guard/community-administrator.guard'; import { ResourcePolicyCreateComponent } from '../../shared/resource-policies/create/resource-policy-create.component'; import { ResourcePolicyEditComponent } from '../../shared/resource-policies/edit/resource-policy-edit.component'; import { resourcePolicyResolver } from '../../shared/resource-policies/resolvers/resource-policy.resolver'; diff --git a/src/app/community-page/edit-community-page/edit-community-page.component.spec.ts b/src/app/community-page/edit-community-page/edit-community-page.component.spec.ts index f099f6fc2af..87ee2220d03 100644 --- a/src/app/community-page/edit-community-page/edit-community-page.component.spec.ts +++ b/src/app/community-page/edit-community-page/edit-community-page.component.spec.ts @@ -7,10 +7,10 @@ import { } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { RouterTestingModule } from '@angular/router/testing'; +import { CommunityDataService } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { CommunityDataService } from '../../core/data/community-data.service'; import { EditCommunityPageComponent } from './edit-community-page.component'; describe('EditCommunityPageComponent', () => { diff --git a/src/app/community-page/edit-community-page/edit-community-page.component.ts b/src/app/community-page/edit-community-page/edit-community-page.component.ts index 194976c3a8d..75c7c768db6 100644 --- a/src/app/community-page/edit-community-page/edit-community-page.component.ts +++ b/src/app/community-page/edit-community-page/edit-community-page.component.ts @@ -1,8 +1,6 @@ import { AsyncPipe, NgClass, - NgForOf, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; import { @@ -11,9 +9,9 @@ import { RouterLink, RouterOutlet, } from '@angular/router'; +import { Community } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { Community } from '../../core/shared/community.model'; import { EditComColPageComponent } from '../../shared/comcol/comcol-forms/edit-comcol-page/edit-comcol-page.component'; import { getCommunityPageRoute } from '../community-page-routing-paths'; @@ -28,9 +26,7 @@ import { getCommunityPageRoute } from '../community-page-routing-paths'; RouterLink, TranslateModule, NgClass, - NgForOf, RouterOutlet, - NgIf, AsyncPipe, ], }) diff --git a/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.html b/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.html index 59d7b3bb5e2..825399c23b2 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.html +++ b/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.html @@ -1,13 +1,19 @@ -
-

{{'community.sub-collection-list.head' | translate}}

- - -
- - + @if (subCollectionsRD?.hasSucceeded && subCollectionsRD?.payload.totalElements > 0) { +
+

{{'community.sub-collection-list.head' | translate}}

+ + +
+ } + @if (subCollectionsRD?.hasFailed) { + + } + @if (subCollectionsRD?.isLoading) { + + }
diff --git a/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.spec.ts b/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.spec.ts index dc4ab520812..d01e93ee16b 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.spec.ts +++ b/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.spec.ts @@ -10,28 +10,30 @@ import { import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { RouterTestingModule } from '@angular/router/testing'; +import { + buildPaginatedList, + CollectionDataService, + Community, + ConfigurationDataService, + ConfigurationProperty, + createPaginatedList, + createSuccessfulRemoteDataObject$, + FindListOptions, + GroupDataService, + HostWindowServiceStub, + LinkHeadService, + PageInfo, + PaginationService, + PaginationServiceStub, + SearchConfigurationService, + SearchConfigurationServiceStub, + SelectableListService, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule } from '@ngx-translate/core'; -import { CollectionDataService } from '../../../../core/data/collection-data.service'; -import { ConfigurationDataService } from '../../../../core/data/configuration-data.service'; -import { FindListOptions } from '../../../../core/data/find-list-options.model'; -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { GroupDataService } from '../../../../core/eperson/group-data.service'; -import { PaginationService } from '../../../../core/pagination/pagination.service'; -import { LinkHeadService } from '../../../../core/services/link-head.service'; -import { Community } from '../../../../core/shared/community.model'; -import { ConfigurationProperty } from '../../../../core/shared/configuration-property.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; -import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { HostWindowService } from '../../../../shared/host-window.service'; import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; -import { SelectableListService } from '../../../../shared/object-list/selectable-list/selectable-list.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; -import { HostWindowServiceStub } from '../../../../shared/testing/host-window-service.stub'; -import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub'; -import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service.stub'; -import { createPaginatedList } from '../../../../shared/testing/utils.test'; import { ThemeService } from '../../../../shared/theme-support/theme.service'; import { CommunityPageSubCollectionListComponent } from './community-page-sub-collection-list.component'; diff --git a/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.ts b/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.ts index 1e8ff1d46c3..b649524d10d 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.ts +++ b/src/app/community-page/sections/sub-com-col-section/sub-collection-list/community-page-sub-collection-list.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, Input, @@ -9,6 +6,18 @@ import { OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + Collection, + CollectionDataService, + Community, + PaginatedList, + PaginationComponentOptions, + PaginationService, + RemoteData, + SortDirection, + SortOptions, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; import { BehaviorSubject, @@ -17,22 +26,10 @@ import { } from 'rxjs'; import { switchMap } from 'rxjs/operators'; -import { - SortDirection, - SortOptions, -} from '../../../../core/cache/models/sort-options.model'; -import { CollectionDataService } from '../../../../core/data/collection-data.service'; -import { PaginatedList } from '../../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../../core/data/remote-data'; -import { PaginationService } from '../../../../core/pagination/pagination.service'; -import { Collection } from '../../../../core/shared/collection.model'; -import { Community } from '../../../../core/shared/community.model'; import { fadeIn } from '../../../../shared/animations/fade'; -import { hasValue } from '../../../../shared/empty.util'; import { ErrorComponent } from '../../../../shared/error/error.component'; import { ThemedLoadingComponent } from '../../../../shared/loading/themed-loading.component'; import { ObjectCollectionComponent } from '../../../../shared/object-collection/object-collection.component'; -import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model'; import { VarDirective } from '../../../../shared/utils/var.directive'; @Component({ @@ -44,7 +41,6 @@ import { VarDirective } from '../../../../shared/utils/var.directive'; ObjectCollectionComponent, ErrorComponent, ThemedLoadingComponent, - NgIf, TranslateModule, AsyncPipe, VarDirective, diff --git a/src/app/community-page/sections/sub-com-col-section/sub-collection-list/themed-community-page-sub-collection-list.component.ts b/src/app/community-page/sections/sub-com-col-section/sub-collection-list/themed-community-page-sub-collection-list.component.ts index 4a965bc9264..3f2875948b9 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-collection-list/themed-community-page-sub-collection-list.component.ts +++ b/src/app/community-page/sections/sub-com-col-section/sub-collection-list/themed-community-page-sub-collection-list.component.ts @@ -2,8 +2,8 @@ import { Component, Input, } from '@angular/core'; +import { Community } from '@dspace/core'; -import { Community } from '../../../../core/shared/community.model'; import { ThemedComponent } from '../../../../shared/theme-support/themed.component'; import { CommunityPageSubCollectionListComponent } from './community-page-sub-collection-list.component'; diff --git a/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.html b/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.html index a811014bcc9..151737573ef 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.html +++ b/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.html @@ -1,8 +1,8 @@ - +@if ((community$ | async); as community) { + [community]="community"> + [community]="community"> - +} diff --git a/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.spec.ts b/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.spec.ts index 85d8eb4fb70..a5a935fc029 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.spec.ts +++ b/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.spec.ts @@ -3,8 +3,8 @@ import { TestBed, } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; +import { ActivatedRouteStub } from '@dspace/core'; -import { ActivatedRouteStub } from '../../../shared/testing/active-router.stub'; import { SubComColSectionComponent } from './sub-com-col-section.component'; describe('SubComColSectionComponent', () => { diff --git a/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.ts b/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.ts index 7aed3be076b..59e0cc94617 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.ts +++ b/src/app/community-page/sections/sub-com-col-section/sub-com-col-section.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, OnInit, @@ -10,11 +7,13 @@ import { ActivatedRoute, Data, } from '@angular/router'; +import { + Community, + RemoteData, +} from '@dspace/core'; import { Observable } from 'rxjs'; import { map } from 'rxjs/operators'; -import { RemoteData } from '../../../core/data/remote-data'; -import { Community } from '../../../core/shared/community.model'; import { ThemedCollectionPageSubCollectionListComponent } from './sub-collection-list/themed-community-page-sub-collection-list.component'; import { ThemedCommunityPageSubCommunityListComponent } from './sub-community-list/themed-community-page-sub-community-list.component'; @@ -26,7 +25,6 @@ import { ThemedCommunityPageSubCommunityListComponent } from './sub-community-li ThemedCommunityPageSubCommunityListComponent, ThemedCollectionPageSubCollectionListComponent, AsyncPipe, - NgIf, ], standalone: true, }) diff --git a/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.html b/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.html index 7f9840f6b7f..7c3d23b8094 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.html +++ b/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.html @@ -1,13 +1,19 @@ -
-

{{'community.sub-community-list.head' | translate}}

- - -
- - + @if (subCommunitiesRD?.hasSucceeded && subCommunitiesRD?.payload.totalElements > 0) { +
+

{{'community.sub-community-list.head' | translate}}

+ + +
+ } + @if (subCommunitiesRD?.hasFailed) { + + } + @if (subCommunitiesRD?.isLoading) { + + }
diff --git a/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.spec.ts b/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.spec.ts index 2654585eda9..be3bfebe0a7 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.spec.ts +++ b/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.spec.ts @@ -10,28 +10,30 @@ import { import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { RouterTestingModule } from '@angular/router/testing'; +import { + buildPaginatedList, + Community, + CommunityDataService, + ConfigurationDataService, + ConfigurationProperty, + createPaginatedList, + createSuccessfulRemoteDataObject$, + FindListOptions, + GroupDataService, + HostWindowServiceStub, + LinkHeadService, + PageInfo, + PaginationService, + PaginationServiceStub, + SearchConfigurationService, + SearchConfigurationServiceStub, + SelectableListService, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule } from '@ngx-translate/core'; -import { CommunityDataService } from '../../../../core/data/community-data.service'; -import { ConfigurationDataService } from '../../../../core/data/configuration-data.service'; -import { FindListOptions } from '../../../../core/data/find-list-options.model'; -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { GroupDataService } from '../../../../core/eperson/group-data.service'; -import { PaginationService } from '../../../../core/pagination/pagination.service'; -import { LinkHeadService } from '../../../../core/services/link-head.service'; -import { Community } from '../../../../core/shared/community.model'; -import { ConfigurationProperty } from '../../../../core/shared/configuration-property.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; -import { SearchConfigurationService } from '../../../../core/shared/search/search-configuration.service'; import { HostWindowService } from '../../../../shared/host-window.service'; import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; -import { SelectableListService } from '../../../../shared/object-list/selectable-list/selectable-list.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; -import { HostWindowServiceStub } from '../../../../shared/testing/host-window-service.stub'; -import { PaginationServiceStub } from '../../../../shared/testing/pagination-service.stub'; -import { SearchConfigurationServiceStub } from '../../../../shared/testing/search-configuration-service.stub'; -import { createPaginatedList } from '../../../../shared/testing/utils.test'; import { ThemeService } from '../../../../shared/theme-support/theme.service'; import { CommunityPageSubCommunityListComponent } from './community-page-sub-community-list.component'; diff --git a/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.ts b/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.ts index 36bd9919bb8..5ddb241c974 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.ts +++ b/src/app/community-page/sections/sub-com-col-section/sub-community-list/community-page-sub-community-list.component.ts @@ -1,7 +1,4 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, Input, @@ -9,6 +6,17 @@ import { OnInit, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { + Community, + CommunityDataService, + PaginatedList, + PaginationComponentOptions, + PaginationService, + RemoteData, + SortDirection, + SortOptions, +} from '@dspace/core'; +import { hasValue } from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; import { BehaviorSubject, @@ -17,21 +25,10 @@ import { } from 'rxjs'; import { switchMap } from 'rxjs/operators'; -import { - SortDirection, - SortOptions, -} from '../../../../core/cache/models/sort-options.model'; -import { CommunityDataService } from '../../../../core/data/community-data.service'; -import { PaginatedList } from '../../../../core/data/paginated-list.model'; -import { RemoteData } from '../../../../core/data/remote-data'; -import { PaginationService } from '../../../../core/pagination/pagination.service'; -import { Community } from '../../../../core/shared/community.model'; import { fadeIn } from '../../../../shared/animations/fade'; -import { hasValue } from '../../../../shared/empty.util'; import { ErrorComponent } from '../../../../shared/error/error.component'; import { ThemedLoadingComponent } from '../../../../shared/loading/themed-loading.component'; import { ObjectCollectionComponent } from '../../../../shared/object-collection/object-collection.component'; -import { PaginationComponentOptions } from '../../../../shared/pagination/pagination-component-options.model'; import { VarDirective } from '../../../../shared/utils/var.directive'; @Component({ @@ -43,7 +40,6 @@ import { VarDirective } from '../../../../shared/utils/var.directive'; ErrorComponent, ThemedLoadingComponent, VarDirective, - NgIf, ObjectCollectionComponent, AsyncPipe, TranslateModule, diff --git a/src/app/community-page/sections/sub-com-col-section/sub-community-list/themed-community-page-sub-community-list.component.ts b/src/app/community-page/sections/sub-com-col-section/sub-community-list/themed-community-page-sub-community-list.component.ts index 5988ad0f5ea..f1e375a4a72 100644 --- a/src/app/community-page/sections/sub-com-col-section/sub-community-list/themed-community-page-sub-community-list.component.ts +++ b/src/app/community-page/sections/sub-com-col-section/sub-community-list/themed-community-page-sub-community-list.component.ts @@ -2,8 +2,8 @@ import { Component, Input, } from '@angular/core'; +import { Community } from '@dspace/core'; -import { Community } from '../../../../core/shared/community.model'; import { ThemedComponent } from '../../../../shared/theme-support/themed.component'; import { CommunityPageSubCommunityListComponent } from './community-page-sub-community-list.component'; diff --git a/src/app/core/auth/auth-response-parsing.service.spec.ts b/src/app/core/auth/auth-response-parsing.service.spec.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/app/core/auth/models/normalized-auth-status.model.ts b/src/app/core/auth/models/normalized-auth-status.model.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/src/app/core/core-state.model.ts b/src/app/core/core-state.model.ts deleted file mode 100644 index 2128901754b..00000000000 --- a/src/app/core/core-state.model.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { BitstreamFormatRegistryState } from '../admin/admin-registries/bitstream-formats/bitstream-format.reducers'; -import { AuthState } from './auth/auth.reducer'; -import { ObjectCacheState } from './cache/object-cache.reducer'; -import { ServerSyncBufferState } from './cache/server-sync-buffer.reducer'; -import { ObjectUpdatesState } from './data/object-updates/object-updates.reducer'; -import { RequestState } from './data/request-state.model'; -import { HistoryState } from './history/history.reducer'; -import { MetaIndexState } from './index/index.reducer'; -import { JsonPatchOperationsState } from './json-patch/json-patch-operations.reducer'; -import { MetaTagState } from './metadata/meta-tag.reducer'; -import { RouteState } from './services/route.reducer'; - -/** - * The core sub-state in the NgRx store - */ -export interface CoreState { - 'bitstreamFormats': BitstreamFormatRegistryState; - 'cache/object': ObjectCacheState; - 'cache/syncbuffer': ServerSyncBufferState; - 'cache/object-updates': ObjectUpdatesState; - 'data/request': RequestState; - 'history': HistoryState; - 'index': MetaIndexState; - 'auth': AuthState; - 'json/patch': JsonPatchOperationsState; - 'metaTag': MetaTagState; - 'route': RouteState; -} diff --git a/src/app/core/core.effects.ts b/src/app/core/core.effects.ts deleted file mode 100644 index 5af2fe580a1..00000000000 --- a/src/app/core/core.effects.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { MenuEffects } from '../shared/menu/menu.effects'; -import { AuthEffects } from './auth/auth.effects'; -import { ObjectCacheEffects } from './cache/object-cache.effects'; -import { ServerSyncBufferEffects } from './cache/server-sync-buffer.effects'; -import { ObjectUpdatesEffects } from './data/object-updates/object-updates.effects'; -import { RequestEffects } from './data/request.effects'; -import { UUIDIndexEffects } from './index/index.effects'; -import { JsonPatchOperationsEffects } from './json-patch/json-patch-operations.effects'; -import { RouterEffects } from './router/router.effects'; -import { RouteEffects } from './services/route.effects'; - -export const coreEffects = [ - RequestEffects, - ObjectCacheEffects, - UUIDIndexEffects, - AuthEffects, - JsonPatchOperationsEffects, - ServerSyncBufferEffects, - ObjectUpdatesEffects, - RouteEffects, - RouterEffects, - MenuEffects, -]; diff --git a/src/app/core/core.reducers.ts b/src/app/core/core.reducers.ts deleted file mode 100644 index fda1e05df05..00000000000 --- a/src/app/core/core.reducers.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { ActionReducerMap } from '@ngrx/store'; - -import { bitstreamFormatReducer } from '../admin/admin-registries/bitstream-formats/bitstream-format.reducers'; -import { authReducer } from './auth/auth.reducer'; -import { objectCacheReducer } from './cache/object-cache.reducer'; -import { serverSyncBufferReducer } from './cache/server-sync-buffer.reducer'; -import { CoreState } from './core-state.model'; -import { objectUpdatesReducer } from './data/object-updates/object-updates.reducer'; -import { requestReducer } from './data/request.reducer'; -import { historyReducer } from './history/history.reducer'; -import { indexReducer } from './index/index.reducer'; -import { jsonPatchOperationsReducer } from './json-patch/json-patch-operations.reducer'; -import { metaTagReducer } from './metadata/meta-tag.reducer'; -import { routeReducer } from './services/route.reducer'; - -export const coreReducers: ActionReducerMap = { - 'bitstreamFormats': bitstreamFormatReducer, - 'cache/object': objectCacheReducer, - 'cache/syncbuffer': serverSyncBufferReducer, - 'cache/object-updates': objectUpdatesReducer, - 'data/request': requestReducer, - 'history': historyReducer, - 'index': indexReducer, - 'auth': authReducer, - 'json/patch': jsonPatchOperationsReducer, - 'metaTag': metaTagReducer, - 'route': routeReducer, -}; diff --git a/src/app/core/notifications/qa/models/quality-assurance-source.model.ts b/src/app/core/notifications/qa/models/quality-assurance-source.model.ts deleted file mode 100644 index 56c674b031c..00000000000 --- a/src/app/core/notifications/qa/models/quality-assurance-source.model.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { - autoserialize, - deserialize, -} from 'cerialize'; - -import { typedObject } from '../../../cache/builders/build-decorators'; -import { CacheableObject } from '../../../cache/cacheable-object.model'; -import { HALLink } from '../../../shared/hal-link.model'; -import { ResourceType } from '../../../shared/resource-type'; -import { excludeFromEquals } from '../../../utilities/equals.decorators'; -import { QUALITY_ASSURANCE_SOURCE_OBJECT } from './quality-assurance-source-object.resource-type'; - -/** - * The interface representing the Quality Assurance source model - */ -@typedObject -export class QualityAssuranceSourceObject implements CacheableObject { - /** - * A string representing the kind of object, e.g. community, item, … - */ - static type = QUALITY_ASSURANCE_SOURCE_OBJECT; - - /** - * The Quality Assurance source id - */ - @autoserialize - id: string; - - /** - * The date of the last udate from Notifications - */ - @autoserialize - lastEvent: string; - - /** - * The total number of suggestions provided by Notifications for this source - */ - @autoserialize - totalEvents: number; - - /** - * The type of this ConfigObject - */ - @excludeFromEquals - @autoserialize - type: ResourceType; - - /** - * The links to all related resources returned by the rest api. - */ - @deserialize - _links: { - self: HALLink, - }; -} diff --git a/src/app/core/provide-core.ts b/src/app/core/provide-core.ts deleted file mode 100644 index 78629f9d95a..00000000000 --- a/src/app/core/provide-core.ts +++ /dev/null @@ -1,191 +0,0 @@ -import { HttpClient } from '@angular/common/http'; -import { makeEnvironmentProviders } from '@angular/core'; - -import { environment } from '../../environments/environment'; -import { Itemfilter } from '../admin/admin-ldn-services/ldn-services-model/ldn-service-itemfilters'; -import { LdnService } from '../admin/admin-ldn-services/ldn-services-model/ldn-services.model'; -import { NotifyRequestsStatus } from '../item-page/simple/notify-requests-status/notify-requests-status.model'; -import { Process } from '../process-page/processes/process.model'; -import { Script } from '../process-page/scripts/script.model'; -import { EndpointMockingRestService } from '../shared/mocks/dspace-rest/endpoint-mocking-rest.service'; -import { - MOCK_RESPONSE_MAP, - ResponseMapMock, -} from '../shared/mocks/dspace-rest/mocks/response-map.mock'; -import { AccessStatusObject } from '../shared/object-collection/shared/badges/access-status-badge/access-status.model'; -import { IdentifierData } from '../shared/object-list/identifier-data/identifier-data.model'; -import { Subscription } from '../shared/subscriptions/models/subscription.model'; -import { SubmissionCoarNotifyConfig } from '../submission/sections/section-coar-notify/submission-coar-notify.config'; -import { SystemWideAlert } from '../system-wide-alert/system-wide-alert.model'; -import { AuthStatus } from './auth/models/auth-status.model'; -import { ShortLivedToken } from './auth/models/short-lived-token.model'; -import { BulkAccessConditionOptions } from './config/models/bulk-access-condition-options.model'; -import { SubmissionAccessesModel } from './config/models/config-submission-accesses.model'; -import { SubmissionDefinitionsModel } from './config/models/config-submission-definitions.model'; -import { SubmissionFormsModel } from './config/models/config-submission-forms.model'; -import { SubmissionSectionModel } from './config/models/config-submission-section.model'; -import { SubmissionUploadsModel } from './config/models/config-submission-uploads.model'; -import { Root } from './data/root.model'; -import { DspaceRestService } from './dspace-rest/dspace-rest.service'; -import { EPerson } from './eperson/models/eperson.model'; -import { Group } from './eperson/models/group.model'; -import { MetadataField } from './metadata/metadata-field.model'; -import { MetadataSchema } from './metadata/metadata-schema.model'; -import { QualityAssuranceEventObject } from './notifications/qa/models/quality-assurance-event.model'; -import { QualityAssuranceSourceObject } from './notifications/qa/models/quality-assurance-source.model'; -import { QualityAssuranceTopicObject } from './notifications/qa/models/quality-assurance-topic.model'; -import { SuggestionSource } from './notifications/suggestions/models/suggestion-source.model'; -import { SuggestionTarget } from './notifications/suggestions/models/suggestion-target.model'; -import { OrcidHistory } from './orcid/model/orcid-history.model'; -import { OrcidQueue } from './orcid/model/orcid-queue.model'; -import { ResearcherProfile } from './profile/model/researcher-profile.model'; -import { ResourcePolicy } from './resource-policy/models/resource-policy.model'; -import { Authorization } from './shared/authorization.model'; -import { Bitstream } from './shared/bitstream.model'; -import { BitstreamFormat } from './shared/bitstream-format.model'; -import { BrowseDefinition } from './shared/browse-definition.model'; -import { BrowseEntry } from './shared/browse-entry.model'; -import { Bundle } from './shared/bundle.model'; -import { Collection } from './shared/collection.model'; -import { Community } from './shared/community.model'; -import { ConfigurationProperty } from './shared/configuration-property.model'; -import { DSpaceObject } from './shared/dspace-object.model'; -import { ExternalSource } from './shared/external-source.model'; -import { ExternalSourceEntry } from './shared/external-source-entry.model'; -import { Feature } from './shared/feature.model'; -import { FlatBrowseDefinition } from './shared/flat-browse-definition.model'; -import { HierarchicalBrowseDefinition } from './shared/hierarchical-browse-definition.model'; -import { Item } from './shared/item.model'; -import { ItemType } from './shared/item-relationships/item-type.model'; -import { Relationship } from './shared/item-relationships/relationship.model'; -import { RelationshipType } from './shared/item-relationships/relationship-type.model'; -import { ItemRequest } from './shared/item-request.model'; -import { License } from './shared/license.model'; -import { NonHierarchicalBrowseDefinition } from './shared/non-hierarchical-browse-definition'; -import { Registration } from './shared/registration.model'; -import { SearchConfig } from './shared/search/search-filters/search-config.model'; -import { Site } from './shared/site.model'; -import { TemplateItem } from './shared/template-item.model'; -import { ValueListBrowseDefinition } from './shared/value-list-browse-definition.model'; -import { Version } from './shared/version.model'; -import { VersionHistory } from './shared/version-history.model'; -import { UsageReport } from './statistics/models/usage-report.model'; -import { SubmissionCcLicence } from './submission/models/submission-cc-license.model'; -import { SubmissionCcLicenceUrl } from './submission/models/submission-cc-license-url.model'; -import { WorkflowItem } from './submission/models/workflowitem.model'; -import { WorkspaceItem } from './submission/models/workspaceitem.model'; -import { Vocabulary } from './submission/vocabularies/models/vocabulary.model'; -import { VocabularyEntry } from './submission/vocabularies/models/vocabulary-entry.model'; -import { VocabularyEntryDetail } from './submission/vocabularies/models/vocabulary-entry-detail.model'; -import { AdvancedWorkflowInfo } from './tasks/models/advanced-workflow-info.model'; -import { ClaimedTask } from './tasks/models/claimed-task-object.model'; -import { PoolTask } from './tasks/models/pool-task-object.model'; -import { RatingAdvancedWorkflowInfo } from './tasks/models/rating-advanced-workflow-info.model'; -import { SelectReviewerAdvancedWorkflowInfo } from './tasks/models/select-reviewer-advanced-workflow-info.model'; -import { TaskObject } from './tasks/models/task-object.model'; -import { WorkflowAction } from './tasks/models/workflow-action-object.model'; - - -export const provideCore = () => { - return makeEnvironmentProviders([ - { provide: DspaceRestService, useFactory: restServiceFactory, deps: [MOCK_RESPONSE_MAP, HttpClient] }, - ]); -}; - -/** - * When not in production, endpoint responses can be mocked for testing purposes - * If there is no mock version available for the endpoint, the actual REST response will be used just like in production mode - */ -export const restServiceFactory = (mocks: ResponseMapMock, http: HttpClient) => { - if (environment.production) { - return new DspaceRestService(http); - } else { - return new EndpointMockingRestService(mocks, http); - } -}; - -/** - * Declaration needed to make sure all decorator functions are called in time - */ -export const models = - [ - Root, - DSpaceObject, - Bundle, - Bitstream, - BitstreamFormat, - Item, - Site, - Collection, - Community, - EPerson, - Group, - ResourcePolicy, - MetadataSchema, - MetadataField, - License, - WorkflowItem, - WorkspaceItem, - SubmissionCcLicence, - SubmissionCcLicenceUrl, - SubmissionDefinitionsModel, - SubmissionFormsModel, - SubmissionSectionModel, - SubmissionUploadsModel, - AuthStatus, - BrowseEntry, - BrowseDefinition, - NonHierarchicalBrowseDefinition, - FlatBrowseDefinition, - ValueListBrowseDefinition, - HierarchicalBrowseDefinition, - ClaimedTask, - TaskObject, - PoolTask, - Relationship, - RelationshipType, - ItemType, - ExternalSource, - ExternalSourceEntry, - Script, - Process, - Version, - VersionHistory, - WorkflowAction, - AdvancedWorkflowInfo, - RatingAdvancedWorkflowInfo, - SelectReviewerAdvancedWorkflowInfo, - TemplateItem, - Feature, - Authorization, - Registration, - Vocabulary, - VocabularyEntry, - VocabularyEntryDetail, - ConfigurationProperty, - ShortLivedToken, - Registration, - UsageReport, - QualityAssuranceTopicObject, - QualityAssuranceEventObject, - Root, - SearchConfig, - SubmissionAccessesModel, - QualityAssuranceSourceObject, - AccessStatusObject, - ResearcherProfile, - OrcidQueue, - OrcidHistory, - AccessStatusObject, - IdentifierData, - Subscription, - ItemRequest, - BulkAccessConditionOptions, - SuggestionTarget, - SuggestionSource, - LdnService, - Itemfilter, - SubmissionCoarNotifyConfig, - NotifyRequestsStatus, - SystemWideAlert, - ]; diff --git a/src/app/core/url-combiner/ui-url-combiner.ts b/src/app/core/url-combiner/ui-url-combiner.ts deleted file mode 100644 index 2dae5217d79..00000000000 --- a/src/app/core/url-combiner/ui-url-combiner.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { environment } from '../../../environments/environment'; -import { URLCombiner } from './url-combiner'; - -/** - * Combines a variable number of strings representing parts - * of a relative UI URL in to a single, absolute UI URL - * - * TODO write tests once GlobalConfig becomes injectable - */ -export class UIURLCombiner extends URLCombiner { - constructor(...parts: string[]) { - super(environment.ui.baseUrl, ...parts); - } -} diff --git a/src/app/correlation-id/correlation-id.selector.ts b/src/app/correlation-id/correlation-id.selector.ts deleted file mode 100644 index 5dc7fcd4608..00000000000 --- a/src/app/correlation-id/correlation-id.selector.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { AppState } from '../app.reducer'; - -export const correlationIdSelector = (state: AppState) => state.correlationId; diff --git a/src/app/curation-form/curation-form.component.html b/src/app/curation-form/curation-form.component.html index c940494016b..4028ae05084 100644 --- a/src/app/curation-form/curation-form.component.html +++ b/src/app/curation-form/curation-form.component.html @@ -1,20 +1,24 @@
-
-
-
- - -
-
- - - {{'curation.form.handle.hint' |translate }} -
+
+
+
+ + +
+ @if (!hasHandleValue()) { +
+ + + {{'curation.form.handle.hint' |translate }}
- + }
+ +
diff --git a/src/app/curation-form/curation-form.component.spec.ts b/src/app/curation-form/curation-form.component.spec.ts index 20611d7a329..660f856ab7e 100644 --- a/src/app/curation-form/curation-form.component.spec.ts +++ b/src/app/curation-form/curation-form.component.spec.ts @@ -12,23 +12,23 @@ import { } from '@angular/forms'; import { By } from '@angular/platform-browser'; import { Router } from '@angular/router'; +import { + ConfigurationDataService, + ConfigurationProperty, + createFailedRemoteDataObject$, + createSuccessfulRemoteDataObject$, + NotificationsService, + NotificationsServiceStub, + Process, + ProcessDataService, + RouterStub, + ScriptDataService, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { ConfigurationDataService } from '../core/data/configuration-data.service'; -import { ProcessDataService } from '../core/data/processes/process-data.service'; -import { ScriptDataService } from '../core/data/processes/script-data.service'; -import { ConfigurationProperty } from '../core/shared/configuration-property.model'; import { getProcessDetailRoute } from '../process-page/process-page-routing.paths'; -import { Process } from '../process-page/processes/process.model'; import { HandleService } from '../shared/handle.service'; -import { NotificationsService } from '../shared/notifications/notifications.service'; -import { - createFailedRemoteDataObject$, - createSuccessfulRemoteDataObject$, -} from '../shared/remote-data.utils'; -import { NotificationsServiceStub } from '../shared/testing/notifications-service.stub'; -import { RouterStub } from '../shared/testing/router.stub'; import { CurationFormComponent } from './curation-form.component'; describe('CurationFormComponent', () => { diff --git a/src/app/curation-form/curation-form.component.ts b/src/app/curation-form/curation-form.component.ts index 8e1c1b26c8f..e0cfda5b152 100644 --- a/src/app/curation-form/curation-form.component.ts +++ b/src/app/curation-form/curation-form.component.ts @@ -1,7 +1,4 @@ -import { - NgFor, - NgIf, -} from '@angular/common'; + import { ChangeDetectorRef, Component, @@ -16,6 +13,21 @@ import { UntypedFormGroup, } from '@angular/forms'; import { Router } from '@angular/router'; +import { + ConfigurationDataService, + ConfigurationProperty, + getFirstCompletedRemoteData, + getFirstSucceededRemoteDataPayload, + NotificationsService, + Process, + RemoteData, + ScriptDataService, +} from '@dspace/core'; +import { + hasValue, + isEmpty, + isNotEmpty, +} from '@dspace/shared/utils'; import { TranslateModule, TranslateService, @@ -26,23 +38,8 @@ import { } from 'rxjs'; import { map } from 'rxjs/operators'; -import { ConfigurationDataService } from '../core/data/configuration-data.service'; -import { ScriptDataService } from '../core/data/processes/script-data.service'; -import { RemoteData } from '../core/data/remote-data'; -import { ConfigurationProperty } from '../core/shared/configuration-property.model'; -import { - getFirstCompletedRemoteData, - getFirstSucceededRemoteDataPayload, -} from '../core/shared/operators'; import { getProcessDetailRoute } from '../process-page/process-page-routing.paths'; -import { Process } from '../process-page/processes/process.model'; -import { - hasValue, - isEmpty, - isNotEmpty, -} from '../shared/empty.util'; import { HandleService } from '../shared/handle.service'; -import { NotificationsService } from '../shared/notifications/notifications.service'; export const CURATION_CFG = 'plugin.named.org.dspace.curate.CurationTask'; @@ -53,7 +50,7 @@ export const CURATION_CFG = 'plugin.named.org.dspace.curate.CurationTask'; selector: 'ds-curation-form', templateUrl: './curation-form.component.html', standalone: true, - imports: [FormsModule, ReactiveFormsModule, NgFor, NgIf, TranslateModule], + imports: [FormsModule, ReactiveFormsModule, TranslateModule], }) export class CurationFormComponent implements OnDestroy, OnInit { diff --git a/src/config/default-app-config.ts b/src/app/default-app-config.ts similarity index 87% rename from src/config/default-app-config.ts rename to src/app/default-app-config.ts index 3c5e0ef0dac..af40674f79d 100644 --- a/src/config/default-app-config.ts +++ b/src/app/default-app-config.ts @@ -1,33 +1,33 @@ -import { AdminNotifyMetricsRow } from '../app/admin/admin-notify-dashboard/admin-notify-metrics/admin-notify-metrics.model'; -import { RestRequestMethod } from '../app/core/data/rest-request-method'; -import { LiveRegionConfig } from '../app/shared/live-region/live-region.config'; -import { NotificationAnimationsType } from '../app/shared/notifications/models/notification-animations-type'; -import { ActuatorsConfig } from './actuators.config'; -import { AppConfig } from './app-config.interface'; -import { AuthConfig } from './auth-config.interfaces'; -import { BrowseByConfig } from './browse-by-config.interface'; -import { BundleConfig } from './bundle-config.interface'; -import { CacheConfig } from './cache-config.interface'; -import { CollectionPageConfig } from './collection-page-config.interface'; -import { CommunityListConfig } from './community-list-config.interface'; -import { CommunityPageConfig } from './community-page-config.interface'; -import { DiscoverySortConfig } from './discovery-sort.config'; -import { FilterVocabularyConfig } from './filter-vocabulary-config'; -import { FormConfig } from './form-config.interfaces'; -import { HomeConfig } from './homepage-config.interface'; -import { InfoConfig } from './info-config.interface'; -import { ItemConfig } from './item-config.interface'; -import { LangConfig } from './lang-config.interface'; -import { MarkdownConfig } from './markdown-config.interface'; -import { MediaViewerConfig } from './media-viewer-config.interface'; -import { INotificationBoardOptions } from './notifications-config.interfaces'; -import { QualityAssuranceConfig } from './quality-assurance.config'; -import { SearchConfig } from './search-page-config.interface'; -import { ServerConfig } from './server-config.interface'; -import { SubmissionConfig } from './submission-config.interface'; -import { SuggestionConfig } from './suggestion-config.interfaces'; -import { ThemeConfig } from './theme.config'; -import { UIServerConfig } from './ui-server-config.interface'; +import { ActuatorsConfig } from '../../modules/core/src/lib/core/config/actuators.config'; +import { AppConfig } from '../../modules/core/src/lib/core/config/app-config.interface'; +import { AuthConfig } from '../../modules/core/src/lib/core/config/auth-config.interfaces'; +import { BrowseByConfig } from '../../modules/core/src/lib/core/config/browse-by-config.interface'; +import { BundleConfig } from '../../modules/core/src/lib/core/config/bundle-config.interface'; +import { CacheConfig } from '../../modules/core/src/lib/core/config/cache-config.interface'; +import { CollectionPageConfig } from '../../modules/core/src/lib/core/config/collection-page-config.interface'; +import { CommunityListConfig } from '../../modules/core/src/lib/core/config/community-list-config.interface'; +import { CommunityPageConfig } from '../../modules/core/src/lib/core/config/community-page-config.interface'; +import { DiscoverySortConfig } from '../../modules/core/src/lib/core/config/discovery-sort.config'; +import { FilterVocabularyConfig } from '../../modules/core/src/lib/core/config/filter-vocabulary-config'; +import { FormConfig } from '../../modules/core/src/lib/core/config/form-config.interfaces'; +import { HomeConfig } from '../../modules/core/src/lib/core/config/homepage-config.interface'; +import { InfoConfig } from '../../modules/core/src/lib/core/config/info-config.interface'; +import { ItemConfig } from '../../modules/core/src/lib/core/config/item-config.interface'; +import { LangConfig } from '../../modules/core/src/lib/core/config/lang-config.interface'; +import { LiveRegionConfig } from '../../modules/core/src/lib/core/config/live-region.config'; +import { MarkdownConfig } from '../../modules/core/src/lib/core/config/markdown-config.interface'; +import { MediaViewerConfig } from '../../modules/core/src/lib/core/config/media-viewer-config.interface'; +import { AdminNotifyMetricsRow } from '../../modules/core/src/lib/core/config/models/admin-notify-metrics.model'; +import { INotificationBoardOptions } from '../../modules/core/src/lib/core/config/notifications-config.interfaces'; +import { QualityAssuranceConfig } from '../../modules/core/src/lib/core/config/quality-assurance.config'; +import { SearchPageConfig } from '../../modules/core/src/lib/core/config/search-page-config.interface'; +import { ServerConfig } from '../../modules/core/src/lib/core/config/server-config.interface'; +import { SubmissionConfig } from '../../modules/core/src/lib/core/config/submission-config.interface'; +import { SuggestionConfig } from '../../modules/core/src/lib/core/config/suggestion-config.interfaces'; +import { ThemeConfig } from '../../modules/core/src/lib/core/config/theme.config'; +import { UIServerConfig } from '../../modules/core/src/lib/core/config/ui-server-config.interface'; +import { RestRequestMethod } from '../../modules/core/src/lib/core/data/rest-request-method'; +import { NotificationAnimationsType } from '../../modules/core/src/lib/core/notifications/models/notification-animations-type'; export class DefaultAppConfig implements AppConfig { production = false; @@ -511,7 +511,7 @@ export class DefaultAppConfig implements AppConfig { }; - search: SearchConfig = { + search: SearchPageConfig = { advancedFilters: { enabled: false, filter: ['title', 'author', 'subject', 'entityType'], diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.html b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.html index aee9fb980cf..d1ec80376e1 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.html +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.html @@ -1,16 +1,18 @@
- - + @for (mdValue of form.fields[mdField]; track mdValue; let idx = $index) { + + + }
diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.spec.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.spec.ts index 23859828c32..e83c5a239d6 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.spec.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.spec.ts @@ -6,14 +6,16 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; +import { + DSpaceObject, + MetadataValue, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { BehaviorSubject, of, } from 'rxjs'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { MetadataValue } from '../../../core/shared/metadata.models'; import { VarDirective } from '../../../shared/utils/var.directive'; import { DsoEditMetadataForm } from '../dso-edit-metadata-form'; import { DsoEditMetadataValueComponent } from '../dso-edit-metadata-value/dso-edit-metadata-value.component'; diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.ts index a96b77be62c..c60960ec09e 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-field-values/dso-edit-metadata-field-values.component.ts @@ -3,22 +3,19 @@ import { CdkDropList, moveItemInArray, } from '@angular/cdk/drag-drop'; -import { - AsyncPipe, - NgFor, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component, EventEmitter, Input, Output, } from '@angular/core'; +import { DSpaceObject } from '@dspace/core'; import { BehaviorSubject, Observable, } from 'rxjs'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; import { DsoEditMetadataChangeType, DsoEditMetadataForm, @@ -32,7 +29,7 @@ import { DsoEditMetadataValueHeadersComponent } from '../dso-edit-metadata-value styleUrls: ['./dso-edit-metadata-field-values.component.scss'], templateUrl: './dso-edit-metadata-field-values.component.html', standalone: true, - imports: [CdkDropList, DsoEditMetadataValueHeadersComponent, NgFor, DsoEditMetadataValueComponent, AsyncPipe], + imports: [CdkDropList, DsoEditMetadataValueHeadersComponent, DsoEditMetadataValueComponent, AsyncPipe], }) /** * Component displaying table rows for each value for a certain metadata field within a form @@ -49,7 +46,7 @@ export class DsoEditMetadataFieldValuesComponent { @Input() form: DsoEditMetadataForm; /** - * Metadata field to display values for + * PolicyMetadata field to display values for */ @Input() mdField: string; diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-form.spec.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-form.spec.ts index 01a6ba48caa..ab92a77aa66 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-form.spec.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-form.spec.ts @@ -1,5 +1,8 @@ -import { DSpaceObject } from '../../core/shared/dspace-object.model'; -import { MetadataValue } from '../../core/shared/metadata.models'; +import { + DSpaceObject, + MetadataValue, +} from '@dspace/core'; + import { DsoEditMetadataChangeType, DsoEditMetadataForm, diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-form.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-form.ts index f45f43181b6..b8d9e859144 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-form.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-form.ts @@ -1,24 +1,23 @@ /* eslint-disable max-classes-per-file */ import { - MoveOperation, - Operation, -} from 'fast-json-patch'; - -import { ArrayMoveChangeAnalyzer } from '../../core/data/array-move-change-analyzer.service'; -import { MetadataPatchAddOperation } from '../../core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-add-operation.model'; -import { MetadataPatchMoveOperation } from '../../core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-move-operation.model'; -import { MetadataPatchRemoveOperation } from '../../core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-remove-operation.model'; -import { MetadataPatchReplaceOperation } from '../../core/data/object-updates/patch-operation-service/operations/metadata/metadata-patch-replace-operation.model'; -import { + ArrayMoveChangeAnalyzer, MetadataMap, + MetadataPatchAddOperation, + MetadataPatchMoveOperation, + MetadataPatchRemoveOperation, + MetadataPatchReplaceOperation, MetadataValue, -} from '../../core/shared/metadata.models'; +} from '@dspace/core'; import { hasNoValue, hasValue, isEmpty, isNotEmpty, -} from '../../shared/empty.util'; +} from '@dspace/shared/utils'; +import { + MoveOperation, + Operation, +} from 'fast-json-patch'; /** * Enumeration for the type of change occurring on a metadata value @@ -182,7 +181,7 @@ export class DsoEditMetadataForm { /** * Current state of the form - * Key: Metadata field + * Key: PolicyMetadata field * Value: List of {@link DsoEditMetadataValue}s for the metadata field */ fields: { diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.html b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.html index 22627826874..b8efff04e4b 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.html +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.html @@ -1,107 +1,135 @@
+ cdkDrag (cdkDragStarted)="dragging.emit(true)" (cdkDragEnded)="dragging.emit(false)" + [ngClass]="{ 'ds-warning': mdValue.reordered || mdValue.change === DsoEditMetadataChangeTypeEnum.UPDATE, 'ds-danger': mdValue.change === DsoEditMetadataChangeTypeEnum.REMOVE, 'ds-success': mdValue.change === DsoEditMetadataChangeTypeEnum.ADD, 'h-100': isOnlyValue }">
-
{{ mdValue.newValue.value }}
- - - - - -
+ } + @if (mdValue.editing && !mdRepresentation && ((isAuthorityControlled() | async) !== true || (enabledFreeTextEditing && (isSuggesterVocabulary() | async) !== true))) { + + } + @if (mdValue.editing && (isScrollableVocabulary() | async) && !enabledFreeTextEditing) { + + + } + @if (mdValue.editing && (((isHierarchicalVocabulary() | async) && !enabledFreeTextEditing) || (isSuggesterVocabulary() | async))) { + + + } + @if (mdValue.editing && ((isScrollableVocabulary() | async) || (isHierarchicalVocabulary() | async))) { + -
- - - {{ dsoType + '.edit.metadata.authority.label' | translate }} {{ mdValue.newValue.authority }} - -
-
-
- - - - + + {{ (enabledFreeTextEditing ? dsoType + '.edit.metadata.edit.buttons.disable-free-text-editing' : dsoType + '.edit.metadata.edit.buttons.enable-free-text-editing') | translate }} + + } + @if (!isVirtual && !mdValue.editing && mdValue.newValue.authority && mdValue.newValue.confidence !== ConfidenceTypeEnum.CF_UNSET && mdValue.newValue.confidence !== ConfidenceTypeEnum.CF_NOVALUE) { +
+ + + {{ dsoType + '.edit.metadata.authority.label' | translate }} {{ mdValue.newValue.authority }} +
-
- + } + @if ( mdValue.editing && (isAuthorityControlled() | async) && (isSuggesterVocabulary() | async)) { +
+
+ + + @if (!editingAuthority) { + + } + @if (editingAuthority) { + + } +
+
+ } + @if (mdRepresentation) { + + }
-
{{ mdValue.newValue.language }}
- + @if (!mdValue.editing) { +
{{ mdValue.newValue.language }}
+ } + @if (mdValue.editing) { + + }
- - + @if (!mdValue.editing) { + + } + @if (mdValue.editing) { + + }
diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.spec.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.spec.ts index 196a13ec4ae..cf687f4f09e 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.spec.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.spec.ts @@ -9,36 +9,36 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; +import { + Collection, + ConfidenceType, + createPaginatedList, + createSuccessfulRemoteDataObject$, + DSONameService, + DSpaceObject, + Item, + ItemDataService, + ItemMetadataRepresentation, + MetadataField, + MetadataSchema, + MetadataValue, + NotificationsService, + RegistryService, + RelationshipDataService, + VIRTUAL_METADATA_PREFIX, + Vocabulary, + VocabularyService, + VocabularyServiceStub, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of } from 'rxjs'; -import { MetadataField } from 'src/app/core/metadata/metadata-field.model'; -import { MetadataSchema } from 'src/app/core/metadata/metadata-schema.model'; -import { RegistryService } from 'src/app/core/registry/registry.service'; -import { ConfidenceType } from 'src/app/core/shared/confidence-type'; -import { Vocabulary } from 'src/app/core/submission/vocabularies/models/vocabulary.model'; -import { VocabularyService } from 'src/app/core/submission/vocabularies/vocabulary.service'; import { DynamicOneboxModel } from 'src/app/shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.model'; import { DynamicScrollableDropdownModel } from 'src/app/shared/form/builder/ds-dynamic-form-ui/models/scrollable-dropdown/dynamic-scrollable-dropdown.model'; -import { NotificationsService } from 'src/app/shared/notifications/notifications.service'; -import { createPaginatedList } from 'src/app/shared/testing/utils.test'; -import { VocabularyServiceStub } from 'src/app/shared/testing/vocabulary-service.stub'; - -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { ItemDataService } from '../../../core/data/item-data.service'; -import { RelationshipDataService } from '../../../core/data/relationship-data.service'; -import { Collection } from '../../../core/shared/collection.model'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { Item } from '../../../core/shared/item.model'; -import { - MetadataValue, - VIRTUAL_METADATA_PREFIX, -} from '../../../core/shared/metadata.models'; -import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model'; + import { BtnDisabledDirective } from '../../../shared/btn-disabled.directive'; import { DsDynamicOneboxComponent } from '../../../shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component'; import { DsDynamicScrollableDropdownComponent } from '../../../shared/form/builder/ds-dynamic-form-ui/models/scrollable-dropdown/dynamic-scrollable-dropdown.component'; import { ThemedTypeBadgeComponent } from '../../../shared/object-collection/shared/badges/type-badge/themed-type-badge.component'; -import { createSuccessfulRemoteDataObject$ } from '../../../shared/remote-data.utils'; import { VarDirective } from '../../../shared/utils/var.directive'; import { DsoEditMetadataChangeType, diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.ts b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.ts index 4b79ae303cb..e4a6be33003 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.ts +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata-value/dso-edit-metadata-value.component.ts @@ -5,7 +5,6 @@ import { import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { ChangeDetectorRef, @@ -23,6 +22,32 @@ import { UntypedFormGroup, } from '@angular/forms'; import { RouterLink } from '@angular/router'; +import { + Collection, + ConfidenceType, + DSONameService, + DSpaceObject, + followLink, + FormFieldMetadataValueObject, + getFirstCompletedRemoteData, + getFirstSucceededRemoteData, + getFirstSucceededRemoteDataPayload, + getRemoteDataPayload, + Item, + ItemDataService, + ItemMetadataRepresentation, + metadataFieldsToString, + MetadataRepresentation, + MetadataRepresentationType, + MetadataService, + NotificationsService, + RegistryService, + RelationshipDataService, + Vocabulary, + VocabularyOptions, + VocabularyService, +} from '@dspace/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; import { TranslateModule, @@ -40,35 +65,9 @@ import { take, tap, } from 'rxjs/operators'; -import { RegistryService } from 'src/app/core/registry/registry.service'; -import { VocabularyService } from 'src/app/core/submission/vocabularies/vocabulary.service'; -import { NotificationsService } from 'src/app/shared/notifications/notifications.service'; - -import { DSONameService } from '../../../core/breadcrumbs/dso-name.service'; -import { ItemDataService } from '../../../core/data/item-data.service'; -import { RelationshipDataService } from '../../../core/data/relationship-data.service'; -import { MetadataService } from '../../../core/metadata/metadata.service'; -import { Collection } from '../../../core/shared/collection.model'; -import { ConfidenceType } from '../../../core/shared/confidence-type'; -import { DSpaceObject } from '../../../core/shared/dspace-object.model'; -import { Item } from '../../../core/shared/item.model'; -import { ItemMetadataRepresentation } from '../../../core/shared/metadata-representation/item/item-metadata-representation.model'; -import { - MetadataRepresentation, - MetadataRepresentationType, -} from '../../../core/shared/metadata-representation/metadata-representation.model'; -import { - getFirstCompletedRemoteData, - getFirstSucceededRemoteData, - getFirstSucceededRemoteDataPayload, - getRemoteDataPayload, - metadataFieldsToString, -} from '../../../core/shared/operators'; -import { Vocabulary } from '../../../core/submission/vocabularies/models/vocabulary.model'; -import { VocabularyOptions } from '../../../core/submission/vocabularies/models/vocabulary-options.model'; + import { getItemPageRoute } from '../../../item-page/item-page-routing-paths'; import { BtnDisabledDirective } from '../../../shared/btn-disabled.directive'; -import { isNotEmpty } from '../../../shared/empty.util'; import { DsDynamicOneboxComponent } from '../../../shared/form/builder/ds-dynamic-form-ui/models/onebox/dynamic-onebox.component'; import { DsDynamicOneboxModelConfig, @@ -79,11 +78,9 @@ import { DynamicScrollableDropdownModel, DynamicScrollableDropdownModelConfig, } from '../../../shared/form/builder/ds-dynamic-form-ui/models/scrollable-dropdown/dynamic-scrollable-dropdown.model'; -import { FormFieldMetadataValueObject } from '../../../shared/form/builder/models/form-field-metadata-value.model'; import { AuthorityConfidenceStateDirective } from '../../../shared/form/directives/authority-confidence-state.directive'; import { ThemedTypeBadgeComponent } from '../../../shared/object-collection/shared/badges/type-badge/themed-type-badge.component'; import { DebounceDirective } from '../../../shared/utils/debounce.directive'; -import { followLink } from '../../../shared/utils/follow-link-config.model'; import { VarDirective } from '../../../shared/utils/var.directive'; import { DsoEditMetadataChangeType, @@ -95,7 +92,7 @@ import { styleUrls: ['./dso-edit-metadata-value.component.scss', '../dso-edit-metadata-shared/dso-edit-metadata-cells.scss'], templateUrl: './dso-edit-metadata-value.component.html', standalone: true, - imports: [VarDirective, CdkDrag, NgClass, NgIf, FormsModule, DebounceDirective, RouterLink, ThemedTypeBadgeComponent, NgbTooltipModule, CdkDragHandle, AsyncPipe, TranslateModule, DsDynamicScrollableDropdownComponent, DsDynamicOneboxComponent, AuthorityConfidenceStateDirective, BtnDisabledDirective], + imports: [VarDirective, CdkDrag, NgClass, FormsModule, DebounceDirective, RouterLink, ThemedTypeBadgeComponent, NgbTooltipModule, CdkDragHandle, AsyncPipe, TranslateModule, DsDynamicScrollableDropdownComponent, DsDynamicOneboxComponent, AuthorityConfidenceStateDirective, BtnDisabledDirective], }) /** * Component displaying a single editable row for a metadata value diff --git a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html index 54392a00b05..402a7c97410 100644 --- a/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html +++ b/src/app/dso-shared/dso-edit-metadata/dso-edit-metadata.component.html @@ -1,102 +1,120 @@ - diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts index 18ba6232b35..9b378e088b0 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.spec.ts @@ -10,18 +10,20 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + APP_CONFIG, + DSONameService, + Item, + ItemSearchResult, +} from '@dspace/core'; import { of as observableOf } from 'rxjs'; -import { getMockThemeService } from 'src/app/shared/mocks/theme-service.mock'; -import { ActivatedRouteStub } from 'src/app/shared/testing/active-router.stub'; import { ThemeService } from 'src/app/shared/theme-support/theme.service'; -import { APP_CONFIG } from '../../../../../../config/app-config.interface'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { Item } from '../../../../../core/shared/item.model'; import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service'; +import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { TruncatableComponent } from '../../../../../shared/truncatable/truncatable.component'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { TruncatablePartComponent } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts index 4aee64c4f5a..0c302bd438e 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal-volume/journal-volume-search-result-list-element.component.ts @@ -1,13 +1,11 @@ import { AsyncPipe, NgClass, - NgFor, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component'; @@ -21,7 +19,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn styleUrls: ['./journal-volume-search-result-list-element.component.scss'], templateUrl: './journal-volume-search-result-list-element.component.html', standalone: true, - imports: [NgIf, RouterLink, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, NgFor, AsyncPipe], + imports: [RouterLink, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, AsyncPipe], }) /** * The component for displaying a list element for an item search result of the type Journal Volume diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html index 8acdfed9b59..c74b01934ad 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.html @@ -1,34 +1,52 @@
-
- - - - - - - - -
+ @if (showThumbnails) { +
+ @if (linkType !== linkTypes.None) { + + + + + } + @if (linkType === linkTypes.None) { + + + + + } +
+ }
- + @if (showLabel) { + + } - - + @if (linkType !== linkTypes.None) { + + } + @if (linkType === linkTypes.None) { + + } - - - - ; - - - - - -
+ + @if (dso.allMetadata(['creativeworkseries.issn']).length > 0) { + + @for (value of allMetadataValues(['creativeworkseries.issn']); track value; let last = $last) { + + @if (!last) { + ; + } + + } + + } + + + +
diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts index b7373e2fc2e..d834ac5965b 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.spec.ts @@ -9,19 +9,21 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + APP_CONFIG, + DSONameService, + Item, + ItemSearchResult, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { ActivatedRouteStub } from 'src/app/shared/testing/active-router.stub'; import { ThemeService } from 'src/app/shared/theme-support/theme.service'; -import { APP_CONFIG } from '../../../../../../config/app-config.interface'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { Item } from '../../../../../core/shared/item.model'; import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { TruncatableComponent } from '../../../../../shared/truncatable/truncatable.component'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { TruncatablePartComponent } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; diff --git a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts index 8ef14120e0f..174f463c1f9 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/search-result-list-elements/journal/journal-search-result-list-element.component.ts @@ -1,13 +1,11 @@ import { AsyncPipe, NgClass, - NgFor, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component'; @@ -21,7 +19,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn styleUrls: ['./journal-search-result-list-element.component.scss'], templateUrl: './journal-search-result-list-element.component.html', standalone: true, - imports: [NgIf, RouterLink, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, NgFor, AsyncPipe], + imports: [RouterLink, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, AsyncPipe], }) /** * The component for displaying a list element for an item search result of the type Journal diff --git a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.spec.ts index 5cf06fdeade..60a9692773b 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.spec.ts @@ -1,6 +1,9 @@ -import { Collection } from '../../../../../core/shared/collection.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + Collection, + Item, + ItemSearchResult, +} from '@dspace/core'; + import { createSidebarSearchListElementTests } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec'; import { JournalIssueSidebarSearchListElementComponent } from './journal-issue-sidebar-search-list-element.component'; diff --git a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.ts index de698eed1af..ff57c9ea783 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-issue/journal-issue-sidebar-search-list-element.component.ts @@ -1,16 +1,17 @@ import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; +import { + Context, + Item, + ItemSearchResult, + ViewMode, +} from '@dspace/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; -import { Context } from '../../../../../core/shared/context.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { isNotEmpty } from '../../../../../shared/empty.util'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { SidebarSearchListElementComponent } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component'; import { TruncatablePartComponent } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; @@ -21,7 +22,7 @@ import { TruncatablePartComponent } from '../../../../../shared/truncatable/trun selector: 'ds-journal-issue-sidebar-search-list-element', templateUrl: '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html', standalone: true, - imports: [TruncatablePartComponent, NgClass, NgIf, AsyncPipe, TranslateModule], + imports: [TruncatablePartComponent, NgClass, AsyncPipe, TranslateModule], }) /** * Component displaying a list element for a {@link ItemSearchResult} of type "JournalIssue" within the context of diff --git a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.spec.ts index 16f13945337..e77053a9a04 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.spec.ts @@ -1,6 +1,9 @@ -import { Collection } from '../../../../../core/shared/collection.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + Collection, + Item, + ItemSearchResult, +} from '@dspace/core'; + import { createSidebarSearchListElementTests } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec'; import { JournalVolumeSidebarSearchListElementComponent } from './journal-volume-sidebar-search-list-element.component'; diff --git a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.ts index 8e6b2f0a9b1..86e1a1abd9d 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal-volume/journal-volume-sidebar-search-list-element.component.ts @@ -1,16 +1,17 @@ import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; +import { + Context, + Item, + ItemSearchResult, + ViewMode, +} from '@dspace/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; -import { Context } from '../../../../../core/shared/context.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { isNotEmpty } from '../../../../../shared/empty.util'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { SidebarSearchListElementComponent } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component'; import { TruncatablePartComponent } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; @@ -21,7 +22,7 @@ import { TruncatablePartComponent } from '../../../../../shared/truncatable/trun selector: 'ds-journal-volume-sidebar-search-list-element', templateUrl: '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html', standalone: true, - imports: [TruncatablePartComponent, NgClass, NgIf, AsyncPipe, TranslateModule], + imports: [TruncatablePartComponent, NgClass, AsyncPipe, TranslateModule], }) /** * Component displaying a list element for a {@link ItemSearchResult} of type "JournalVolume" within the context of diff --git a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.spec.ts b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.spec.ts index a7c2af3806f..a81b9e264f6 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.spec.ts @@ -1,6 +1,9 @@ -import { Collection } from '../../../../../core/shared/collection.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + Collection, + Item, + ItemSearchResult, +} from '@dspace/core'; + import { createSidebarSearchListElementTests } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec'; import { JournalSidebarSearchListElementComponent } from './journal-sidebar-search-list-element.component'; diff --git a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.ts b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.ts index c1cfd1755de..0077276b0f3 100644 --- a/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.ts +++ b/src/app/entity-groups/journal-entities/item-list-elements/sidebar-search-list-elements/journal/journal-sidebar-search-list-element.component.ts @@ -1,16 +1,17 @@ import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; +import { + Context, + Item, + ItemSearchResult, + ViewMode, +} from '@dspace/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { TranslateModule } from '@ngx-translate/core'; -import { Context } from '../../../../../core/shared/context.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { isNotEmpty } from '../../../../../shared/empty.util'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { SidebarSearchListElementComponent } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component'; import { TruncatablePartComponent } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; @@ -21,7 +22,7 @@ import { TruncatablePartComponent } from '../../../../../shared/truncatable/trun selector: 'ds-journal-sidebar-search-list-element', templateUrl: '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html', standalone: true, - imports: [TruncatablePartComponent, NgClass, NgIf, AsyncPipe, TranslateModule], + imports: [TruncatablePartComponent, NgClass, AsyncPipe, TranslateModule], }) /** * Component displaying a list element for a {@link ItemSearchResult} of type "Journal" within the context of diff --git a/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.html b/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.html index e3dec92c52e..1250f92bf96 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.html +++ b/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.html @@ -1,4 +1,6 @@ - +@if (showBackButton$ | async) { + +}
diff --git a/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.spec.ts b/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.spec.ts index 74a83c1c836..1ba4ed514c1 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.spec.ts @@ -1,11 +1,14 @@ -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { Item } from '../../../../core/shared/item.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject$, + Item, + PageInfo, +} from '@dspace/core'; + import { createRelationshipsObservable, getItemPageFieldsTest, } from '../../../../item-page/simple/item-types/shared/item.component.spec'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { JournalIssueComponent } from './journal-issue.component'; const mockItem: Item = Object.assign(new Item(), { diff --git a/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.ts b/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.ts index ca6bb56e79a..218efd6ceaa 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal-issue/journal-issue.component.ts @@ -1,12 +1,9 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { GenericItemPageFieldComponent } from '../../../../item-page/simple/field-components/specific-field/generic/generic-item-page-field.component'; import { ThemedItemPageTitleFieldComponent } from '../../../../item-page/simple/field-components/specific-field/title/themed-item-page-field.component'; import { ItemComponent } from '../../../../item-page/simple/item-types/shared/item.component'; @@ -23,7 +20,7 @@ import { ThemedThumbnailComponent } from '../../../../thumbnail/themed-thumbnail styleUrls: ['./journal-issue.component.scss'], templateUrl: './journal-issue.component.html', standalone: true, - imports: [NgIf, ThemedResultsBackButtonComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, MetadataFieldWrapperComponent, ThemedThumbnailComponent, GenericItemPageFieldComponent, RelatedItemsComponent, RouterLink, AsyncPipe, TranslateModule], + imports: [ThemedResultsBackButtonComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, MetadataFieldWrapperComponent, ThemedThumbnailComponent, GenericItemPageFieldComponent, RelatedItemsComponent, RouterLink, AsyncPipe, TranslateModule], }) /** * The component for displaying metadata and relations of an item of the type Journal Issue diff --git a/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.html b/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.html index de1ee4a27d3..c3f6c3b9b5d 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.html +++ b/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.html @@ -1,4 +1,6 @@ - +@if (showBackButton$ | async) { + +}
diff --git a/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.spec.ts b/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.spec.ts index 6c2549a4974..1ea80a4d6ea 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.spec.ts @@ -1,11 +1,14 @@ -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { Item } from '../../../../core/shared/item.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject$, + Item, + PageInfo, +} from '@dspace/core'; + import { createRelationshipsObservable, getItemPageFieldsTest, } from '../../../../item-page/simple/item-types/shared/item.component.spec'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { JournalVolumeComponent } from './journal-volume.component'; const mockItem: Item = Object.assign(new Item(), { diff --git a/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.ts b/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.ts index fab0e105be3..9aa005d2d87 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal-volume/journal-volume.component.ts @@ -1,12 +1,9 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { GenericItemPageFieldComponent } from '../../../../item-page/simple/field-components/specific-field/generic/generic-item-page-field.component'; import { ThemedItemPageTitleFieldComponent } from '../../../../item-page/simple/field-components/specific-field/title/themed-item-page-field.component'; import { ItemComponent } from '../../../../item-page/simple/item-types/shared/item.component'; @@ -23,7 +20,7 @@ import { ThemedThumbnailComponent } from '../../../../thumbnail/themed-thumbnail styleUrls: ['./journal-volume.component.scss'], templateUrl: './journal-volume.component.html', standalone: true, - imports: [NgIf, ThemedResultsBackButtonComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, MetadataFieldWrapperComponent, ThemedThumbnailComponent, GenericItemPageFieldComponent, RelatedItemsComponent, RouterLink, AsyncPipe, TranslateModule], + imports: [ThemedResultsBackButtonComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, MetadataFieldWrapperComponent, ThemedThumbnailComponent, GenericItemPageFieldComponent, RelatedItemsComponent, RouterLink, AsyncPipe, TranslateModule], }) /** * The component for displaying metadata and relations of an item of the type Journal Volume diff --git a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.html b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.html index 70411589234..03ad6acbb72 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.html +++ b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.html @@ -1,4 +1,6 @@ - +@if (showBackButton$ | async) { + +}
diff --git a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.spec.ts b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.spec.ts index 1ae584455a2..241e3009051 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.spec.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.spec.ts @@ -11,6 +11,36 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { RouterTestingModule } from '@angular/router/testing'; +import { + APP_CONFIG, + APP_DATA_SERVICES_MAP, + Bitstream, + BitstreamDataService, + BrowseDefinitionDataService, + BrowseDefinitionDataServiceStub, + buildPaginatedList, + CommunityDataService, + createSuccessfulRemoteDataObject$, + DefaultChangeAnalyzer, + DSOChangeAnalyzer, + HALEndpointService, + Item, + ItemDataService, + NotificationsService, + ObjectCacheService, + PageInfo, + RelationshipDataService, + RemoteData, + RemoteDataBuildService, + RouteService, + SearchService, + TranslateLoaderMock, + UUIDService, + VersionDataService, + VersionHistoryDataService, + WorkspaceitemDataService, +} from '@dspace/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { Store } from '@ngrx/store'; import { TranslateLoader, @@ -18,31 +48,6 @@ import { } from '@ngx-translate/core'; import { Observable } from 'rxjs'; -import { - APP_CONFIG, - APP_DATA_SERVICES_MAP, -} from '../../../../../config/app-config.interface'; -import { BrowseDefinitionDataService } from '../../../../core/browse/browse-definition-data.service'; -import { RemoteDataBuildService } from '../../../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../../core/cache/object-cache.service'; -import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; -import { CommunityDataService } from '../../../../core/data/community-data.service'; -import { DefaultChangeAnalyzer } from '../../../../core/data/default-change-analyzer.service'; -import { DSOChangeAnalyzer } from '../../../../core/data/dso-change-analyzer.service'; -import { ItemDataService } from '../../../../core/data/item-data.service'; -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { RelationshipDataService } from '../../../../core/data/relationship-data.service'; -import { RemoteData } from '../../../../core/data/remote-data'; -import { VersionDataService } from '../../../../core/data/version-data.service'; -import { VersionHistoryDataService } from '../../../../core/data/version-history-data.service'; -import { RouteService } from '../../../../core/services/route.service'; -import { Bitstream } from '../../../../core/shared/bitstream.model'; -import { HALEndpointService } from '../../../../core/shared/hal-endpoint.service'; -import { Item } from '../../../../core/shared/item.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; -import { SearchService } from '../../../../core/shared/search/search.service'; -import { UUIDService } from '../../../../core/shared/uuid.service'; -import { WorkspaceitemDataService } from '../../../../core/submission/workspaceitem-data.service'; import { MetadataValuesComponent } from '../../../../item-page/field-components/metadata-values/metadata-values.component'; import { GenericItemPageFieldComponent } from '../../../../item-page/simple/field-components/specific-field/generic/generic-item-page-field.component'; import { ThemedItemPageTitleFieldComponent } from '../../../../item-page/simple/field-components/specific-field/title/themed-item-page-field.component'; @@ -51,14 +56,9 @@ import { ThemedMetadataRepresentationListComponent } from '../../../../item-page import { TabbedRelatedEntitiesSearchComponent } from '../../../../item-page/simple/related-entities/tabbed-related-entities-search/tabbed-related-entities-search.component'; import { RelatedItemsComponent } from '../../../../item-page/simple/related-items/related-items-component'; import { DsoEditMenuComponent } from '../../../../shared/dso-page/dso-edit-menu/dso-edit-menu.component'; -import { isNotEmpty } from '../../../../shared/empty.util'; import { MetadataFieldWrapperComponent } from '../../../../shared/metadata-field-wrapper/metadata-field-wrapper.component'; import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service'; -import { TranslateLoaderMock } from '../../../../shared/mocks/translate-loader.mock'; -import { NotificationsService } from '../../../../shared/notifications/notifications.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { ThemedResultsBackButtonComponent } from '../../../../shared/results-back-button/themed-results-back-button.component'; -import { BrowseDefinitionDataServiceStub } from '../../../../shared/testing/browse-definition-data-service.stub'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; import { ThemedThumbnailComponent } from '../../../../thumbnail/themed-thumbnail.component'; diff --git a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.ts b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.ts index 179355d869c..b94bc8cf608 100644 --- a/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.ts +++ b/src/app/entity-groups/journal-entities/item-pages/journal/journal.component.ts @@ -1,12 +1,9 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { GenericItemPageFieldComponent } from '../../../../item-page/simple/field-components/specific-field/generic/generic-item-page-field.component'; import { ThemedItemPageTitleFieldComponent } from '../../../../item-page/simple/field-components/specific-field/title/themed-item-page-field.component'; import { ItemComponent } from '../../../../item-page/simple/item-types/shared/item.component'; @@ -24,7 +21,7 @@ import { ThemedThumbnailComponent } from '../../../../thumbnail/themed-thumbnail styleUrls: ['./journal.component.scss'], templateUrl: './journal.component.html', standalone: true, - imports: [NgIf, ThemedResultsBackButtonComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, MetadataFieldWrapperComponent, ThemedThumbnailComponent, GenericItemPageFieldComponent, RelatedItemsComponent, RouterLink, TabbedRelatedEntitiesSearchComponent, AsyncPipe, TranslateModule], + imports: [ThemedResultsBackButtonComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, MetadataFieldWrapperComponent, ThemedThumbnailComponent, GenericItemPageFieldComponent, RelatedItemsComponent, RouterLink, TabbedRelatedEntitiesSearchComponent, AsyncPipe, TranslateModule], }) /** * The component for displaying metadata and relations of an item of the type Journal diff --git a/src/app/entity-groups/research-entities/item-grid-elements/org-unit/org-unit-grid-element.component.spec.ts b/src/app/entity-groups/research-entities/item-grid-elements/org-unit/org-unit-grid-element.component.spec.ts index 082ad20f2d7..32764f1e7da 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/org-unit/org-unit-grid-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/org-unit/org-unit-grid-element.component.spec.ts @@ -9,21 +9,23 @@ import { import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + AuthorizationDataService, + AuthService, + BitstreamDataService, + buildPaginatedList, + createSuccessfulRemoteDataObject$, + DSONameService, + Item, + PageInfo, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { AuthService } from '../../../../core/auth/auth.service'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; -import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service'; -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { Item } from '../../../../core/shared/item.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; -import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub'; import { ThemeService } from '../../../../shared/theme-support/theme.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; diff --git a/src/app/entity-groups/research-entities/item-grid-elements/org-unit/org-unit-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/org-unit/org-unit-grid-element.component.ts index 5be610a35fb..be9415bf4e6 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/org-unit/org-unit-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/org-unit/org-unit-grid-element.component.ts @@ -1,7 +1,9 @@ import { Component } from '@angular/core'; +import { + Item, + ViewMode, +} from '@dspace/core'; -import { Item } from '../../../../core/shared/item.model'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; import { OrgUnitSearchResultGridElementComponent } from '../search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component'; diff --git a/src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.spec.ts b/src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.spec.ts index 6a1946c441d..205ed3327e2 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.spec.ts @@ -8,14 +8,16 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject$, + DSONameService, + Item, + PageInfo, +} from '@dspace/core'; import { of as observableOf } from 'rxjs'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { Item } from '../../../../core/shared/item.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; import { PersonSearchResultGridElementComponent } from '../search-result-grid-elements/person/person-search-result-grid-element.component'; diff --git a/src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.ts index bb1ee53ae8d..d6c62e03b5b 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/person/person-grid-element.component.ts @@ -1,7 +1,9 @@ import { Component } from '@angular/core'; +import { + Item, + ViewMode, +} from '@dspace/core'; -import { Item } from '../../../../core/shared/item.model'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; import { PersonSearchResultGridElementComponent } from '../search-result-grid-elements/person/person-search-result-grid-element.component'; diff --git a/src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.spec.ts b/src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.spec.ts index 7dbc3251f32..d7d8a1ed6d5 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.spec.ts @@ -9,21 +9,23 @@ import { import { By } from '@angular/platform-browser'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + AuthorizationDataService, + AuthService, + BitstreamDataService, + buildPaginatedList, + createSuccessfulRemoteDataObject$, + DSONameService, + Item, + PageInfo, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { AuthService } from '../../../../core/auth/auth.service'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { BitstreamDataService } from '../../../../core/data/bitstream-data.service'; -import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service'; -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { Item } from '../../../../core/shared/item.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; -import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub'; import { ThemeService } from '../../../../shared/theme-support/theme.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; diff --git a/src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.ts index 561ebb288bb..fd7b57bee26 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/project/project-grid-element.component.ts @@ -1,7 +1,9 @@ import { Component } from '@angular/core'; +import { + Item, + ViewMode, +} from '@dspace/core'; -import { Item } from '../../../../core/shared/item.model'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; import { ProjectSearchResultGridElementComponent } from '../search-result-grid-elements/project/project-search-result-grid-element.component'; diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.html index 56c518a09c2..d17ca04512f 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.html +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.html @@ -3,48 +3,62 @@
- -
- - -
-
- -
- - -
-
+ @if (linkType !== linkTypes.None) { + +
+ + +
+
+ } + @if (linkType === linkTypes.None) { + +
+ + +
+
+ }
- + @if (showLabel) { + + }

-

- - - -

-

- - + + + +

+ } + @if (dso.hasMetadata('organization.address.addressCountry')) { +

+ + {{firstMetadataValue('organization.address.addressCountry')}} - - , - {{firstMetadataValue('organization.address.addressLocality')}} - - -

- + @if (dso.hasMetadata('organization.address.addressLocality')) { + + , + {{firstMetadataValue('organization.address.addressLocality')}} + + } + +

+ } + @if (linkType !== linkTypes.None) { + + }
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.spec.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.spec.ts index a73ba72cc6c..f4f96210a7f 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.spec.ts @@ -1,9 +1,12 @@ -import { buildPaginatedList } from '../../../../../core/data/paginated-list.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { PageInfo } from '../../../../../core/shared/page-info.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject$, + Item, + ItemSearchResult, + PageInfo, +} from '@dspace/core'; + import { getEntityGridElementTestComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.spec'; -import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils'; import { OrgUnitSearchResultGridElementComponent } from './org-unit-search-result-grid-element.component'; const mockItemWithMetadata: ItemSearchResult = new ItemSearchResult(); diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.ts index 6b4dd0e21d2..25a2eefed5b 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/org-unit/org-unit-search-result-grid-element.component.ts @@ -1,12 +1,9 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { focusShadow } from '../../../../../shared/animations/focus'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; @@ -22,7 +19,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn templateUrl: './org-unit-search-result-grid-element.component.html', animations: [focusShadow], standalone: true, - imports: [TruncatableComponent, NgIf, RouterLink, ThemedThumbnailComponent, ThemedBadgesComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], + imports: [TruncatableComponent, RouterLink, ThemedThumbnailComponent, ThemedBadgesComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], }) /** * The component for displaying a grid element for an item search result of the type Organisation Unit diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html index 7b444d261c7..61a7e530289 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.html @@ -3,41 +3,53 @@
- -
- - -
-
- -
- - -
-
+ @if (linkType !== linkTypes.None) { + +
+ + +
+
+ } + @if (linkType === linkTypes.None) { + +
+ + +
+
+ }
- + @if (showLabel) { + + }

- -

- - - -

- + @if (dso.hasMetadata('person.email')) { + + } + @if (dso.hasMetadata('person.jobTitle')) { +

+ + + +

+ } + @if (linkType !== linkTypes.None) { + + }
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.spec.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.spec.ts index 46f08feda10..9c64aa51301 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.spec.ts @@ -1,9 +1,12 @@ -import { buildPaginatedList } from '../../../../../core/data/paginated-list.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { PageInfo } from '../../../../../core/shared/page-info.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject$, + Item, + ItemSearchResult, + PageInfo, +} from '@dspace/core'; + import { getEntityGridElementTestComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.spec'; -import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils'; import { PersonSearchResultGridElementComponent } from './person-search-result-grid-element.component'; const mockItemWithMetadata: ItemSearchResult = new ItemSearchResult(); diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts index dc9b1f8f478..f9fc8b66738 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/person/person-search-result-grid-element.component.ts @@ -1,12 +1,9 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { focusShadow } from '../../../../../shared/animations/focus'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; @@ -22,7 +19,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn templateUrl: './person-search-result-grid-element.component.html', animations: [focusShadow], standalone: true, - imports: [TruncatableComponent, NgIf, RouterLink, ThemedThumbnailComponent, ThemedBadgesComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], + imports: [TruncatableComponent, RouterLink, ThemedThumbnailComponent, ThemedBadgesComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], }) /** * The component for displaying a grid element for an item search result of the type Person diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html index 2181a4eb07d..58ce165a122 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.html @@ -3,36 +3,46 @@
- -
- - -
-
- -
- - -
-
+ @if (linkType !== linkTypes.None) { + +
+ + +
+
+ } + @if (linkType === linkTypes.None) { + +
+ + +
+
+ }
- + @if (showLabel) { + + }

-

- - - -

- + @if (dso.hasMetadata('dc.description')) { +

+ + + +

+ } + @if (linkType !== linkTypes.None) { + + }
diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.spec.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.spec.ts index 9745ff55546..7110c3fb3aa 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.spec.ts @@ -1,9 +1,12 @@ -import { buildPaginatedList } from '../../../../../core/data/paginated-list.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { PageInfo } from '../../../../../core/shared/page-info.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject$, + Item, + ItemSearchResult, + PageInfo, +} from '@dspace/core'; + import { getEntityGridElementTestComponent } from '../../../../../shared/object-grid/search-result-grid-element/item-search-result/item/item-search-result-grid-element.component.spec'; -import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils'; import { ProjectSearchResultGridElementComponent } from './project-search-result-grid-element.component'; const mockItemWithMetadata: ItemSearchResult = new ItemSearchResult(); diff --git a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts index 0ba8ce6f755..081e30f27c1 100644 --- a/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts +++ b/src/app/entity-groups/research-entities/item-grid-elements/search-result-grid-elements/project/project-search-result-grid-element.component.ts @@ -1,12 +1,9 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { focusShadow } from '../../../../../shared/animations/focus'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; @@ -22,7 +19,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn templateUrl: './project-search-result-grid-element.component.html', animations: [focusShadow], standalone: true, - imports: [TruncatableComponent, NgIf, RouterLink, ThemedThumbnailComponent, ThemedBadgesComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], + imports: [TruncatableComponent, RouterLink, ThemedThumbnailComponent, ThemedBadgesComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], }) /** * The component for displaying a grid element for an item search result of the type Project diff --git a/src/app/entity-groups/research-entities/item-list-elements/org-unit/org-unit-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/org-unit/org-unit-list-element.component.spec.ts index a2ca0c77da0..4c8d5bf07e0 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/org-unit/org-unit-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/org-unit/org-unit-list-element.component.spec.ts @@ -8,20 +8,22 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + APP_CONFIG, + AuthorizationDataService, + AuthService, + DSONameService, + Item, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { APP_CONFIG } from '../../../../../config/app-config.interface'; import { environment } from '../../../../../environments/environment.test'; -import { AuthService } from '../../../../core/auth/auth.service'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service'; -import { Item } from '../../../../core/shared/item.model'; import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; -import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub'; import { ThemeService } from '../../../../shared/theme-support/theme.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/org-unit/org-unit-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/org-unit/org-unit-list-element.component.ts index 32aac7e48f6..fcde8b5b2d7 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/org-unit/org-unit-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/org-unit/org-unit-list-element.component.ts @@ -1,7 +1,9 @@ import { Component } from '@angular/core'; +import { + Item, + ViewMode, +} from '@dspace/core'; -import { Item } from '../../../../core/shared/item.model'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; import { OrgUnitSearchResultListElementComponent } from '../search-result-list-elements/org-unit/org-unit-search-result-list-element.component'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.spec.ts index 631d3e90b2a..d3fdf88711b 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.spec.ts @@ -8,20 +8,22 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + APP_CONFIG, + AuthorizationDataService, + AuthService, + DSONameService, + Item, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { APP_CONFIG } from 'src/config/app-config.interface'; import { environment } from 'src/environments/environment.test'; -import { AuthService } from '../../../../core/auth/auth.service'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service'; -import { Item } from '../../../../core/shared/item.model'; import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; -import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub'; import { ThemeService } from '../../../../shared/theme-support/theme.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.ts index 1f18ac8a9ec..0e048a76e94 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/person/person-list-element.component.ts @@ -1,7 +1,9 @@ import { Component } from '@angular/core'; +import { + Item, + ViewMode, +} from '@dspace/core'; -import { Item } from '../../../../core/shared/item.model'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; import { PersonSearchResultListElementComponent } from '../search-result-list-elements/person/person-search-result-list-element.component'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.spec.ts index 0828b373abe..ad6ec10ab05 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.spec.ts @@ -8,20 +8,22 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + APP_CONFIG, + AuthorizationDataService, + AuthService, + DSONameService, + Item, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { APP_CONFIG } from '../../../../../config/app-config.interface'; import { environment } from '../../../../../environments/environment.test'; -import { AuthService } from '../../../../core/auth/auth.service'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { AuthorizationDataService } from '../../../../core/data/feature-authorization/authorization-data.service'; -import { Item } from '../../../../core/shared/item.model'; import { AuthServiceMock } from '../../../../shared/mocks/auth.service.mock'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../shared/mocks/theme-service.mock'; -import { ActivatedRouteStub } from '../../../../shared/testing/active-router.stub'; import { ThemeService } from '../../../../shared/theme-support/theme.service'; import { TruncatableService } from '../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../shared/utils/truncate.pipe'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts index 098637200b2..a62bd35ad42 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/project/project-list-element.component.ts @@ -1,7 +1,9 @@ import { Component } from '@angular/core'; +import { + Item, + ViewMode, +} from '@dspace/core'; -import { Item } from '../../../../core/shared/item.model'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; import { ProjectSearchResultListElementComponent } from '../search-result-list-elements/project/project-search-result-list-element.component'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html index 91b694c072d..6c6218dc43a 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.html @@ -1,40 +1,54 @@
-
- - - + @if (showThumbnails) { +
+ @if (linkType !== linkTypes.None) { + + + - - - + } + @if (linkType === linkTypes.None) { + + + + }
-
- - - - - - + @if (showLabel) { + + } + + @if (linkType !== linkTypes.None) { + + } + @if (linkType === linkTypes.None) { + + } + + @if (dso.allMetadata(['dc.description']).length > 0) { + - - - - -
+ [innerHTML]="firstMetadataValue('dc.description')"> + + + } + + +
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts index 28ed1c0febc..a55c8a27c73 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.spec.ts @@ -9,24 +9,26 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + APP_CONFIG, + AuthorizationDataService, + AuthService, + DSONameService, + Item, + ItemSearchResult, + TranslateLoaderMock, +} from '@dspace/core'; import { TranslateLoader, TranslateModule, } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { APP_CONFIG } from '../../../../../../config/app-config.interface'; -import { AuthService } from '../../../../../core/auth/auth.service'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service'; -import { Item } from '../../../../../core/shared/item.model'; import { AuthServiceMock } from '../../../../../shared/mocks/auth.service.mock'; import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock'; -import { TranslateLoaderMock } from '../../../../../shared/mocks/translate-loader.mock'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub'; import { ThemeService } from '../../../../../shared/theme-support/theme.service'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.ts index 9fb88d0eac4..b091f5cfa0b 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/org-unit/org-unit-search-result-list-element.component.ts @@ -1,13 +1,12 @@ import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component'; @@ -21,7 +20,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn styleUrls: ['./org-unit-search-result-list-element.component.scss'], templateUrl: './org-unit-search-result-list-element.component.html', standalone: true, - imports: [NgIf, RouterLink, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], + imports: [RouterLink, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], }) /** * The component for displaying a list element for an item search result of the type Organisation Unit diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html index cc7905e7197..b6252122404 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.html @@ -1,42 +1,58 @@
-
- - - - - - - - -
+ @if (showThumbnails) { +
+ @if (linkType !== linkTypes.None) { + + + + + } + @if (linkType === linkTypes.None) { + + + + + } +
+ }
- + @if (showLabel) { + + } - - + @if (linkType !== linkTypes.None) { + + } + @if (linkType === linkTypes.None) { + + } - - - - - + + @if (dso.allMetadata(['person.jobTitle']).length > 0) { + + @for (value of allMetadataValues(['person.jobTitle']); track value; let last = $last) { + + + + } + } - +
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts index 9632f663d25..ec77fc3c287 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.spec.ts @@ -9,24 +9,26 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + APP_CONFIG, + AuthorizationDataService, + AuthService, + DSONameService, + Item, + ItemSearchResult, + TranslateLoaderMock, +} from '@dspace/core'; import { TranslateLoader, TranslateModule, } from '@ngx-translate/core'; import { of as observableOf } from 'rxjs'; -import { APP_CONFIG } from '../../../../../../config/app-config.interface'; -import { AuthService } from '../../../../../core/auth/auth.service'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { AuthorizationDataService } from '../../../../../core/data/feature-authorization/authorization-data.service'; -import { Item } from '../../../../../core/shared/item.model'; import { AuthServiceMock } from '../../../../../shared/mocks/auth.service.mock'; import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock'; -import { TranslateLoaderMock } from '../../../../../shared/mocks/translate-loader.mock'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub'; import { ThemeService } from '../../../../../shared/theme-support/theme.service'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts index 86ead8b8255..3fc8a6ed1a9 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/person/person-search-result-list-element.component.ts @@ -1,8 +1,6 @@ import { AsyncPipe, NgClass, - NgFor, - NgIf, } from '@angular/common'; import { Component, @@ -10,14 +8,14 @@ import { OnInit, } from '@angular/core'; import { RouterLink } from '@angular/router'; -import { TranslateModule } from '@ngx-translate/core'; - import { APP_CONFIG, AppConfig, -} from '../../../../../../config/app-config.interface'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; + DSONameService, + ViewMode, +} from '@dspace/core'; +import { TranslateModule } from '@ngx-translate/core'; + import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component'; @@ -32,7 +30,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn styleUrls: ['./person-search-result-list-element.component.scss'], templateUrl: './person-search-result-list-element.component.html', standalone: true, - imports: [NgIf, RouterLink, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, NgFor, AsyncPipe, TranslateModule], + imports: [RouterLink, ThemedThumbnailComponent, NgClass, ThemedBadgesComponent, TruncatableComponent, TruncatablePartComponent, AsyncPipe, TranslateModule], }) /** * The component for displaying a list element for an item search result of the type Person diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html index 65cf6fa1f85..294f3d909ca 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.html @@ -1,42 +1,54 @@
-
- - - - - - - - -
+ @if (showThumbnails) { +
+ @if (linkType !== linkTypes.None) { + + + + + } + @if (linkType === linkTypes.None) { + + + + + } +
+ }
- - - + @if (showLabel) { + + } + @if (linkType !== linkTypes.None) { + + } + @if (linkType === linkTypes.None) { + + } - - - - - -
+ + + + + +
diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts index 5c11727176c..6ecb154ff55 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.spec.ts @@ -9,17 +9,19 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { ActivatedRoute } from '@angular/router'; +import { + ActivatedRouteStub, + APP_CONFIG, + DSONameService, + Item, + ItemSearchResult, +} from '@dspace/core'; import { of as observableOf } from 'rxjs'; -import { APP_CONFIG } from '../../../../../../config/app-config.interface'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { Item } from '../../../../../core/shared/item.model'; import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../../../shared/mocks/theme-service.mock'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { ActivatedRouteStub } from '../../../../../shared/testing/active-router.stub'; import { ThemeService } from '../../../../../shared/theme-support/theme.service'; import { TruncatableComponent } from '../../../../../shared/truncatable/truncatable.component'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts index 825f7be3875..2e1d2657b14 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/search-result-list-elements/project/project-search-result-list-element.component.ts @@ -1,12 +1,11 @@ import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { ThemedBadgesComponent } from '../../../../../shared/object-collection/shared/badges/themed-badges.component'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { ItemSearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/item-search-result/item-types/item/item-search-result-list-element.component'; @@ -19,7 +18,7 @@ import { ThemedThumbnailComponent } from '../../../../../thumbnail/themed-thumbn styleUrls: ['./project-search-result-list-element.component.scss'], templateUrl: './project-search-result-list-element.component.html', standalone: true, - imports: [NgIf, RouterLink, ThemedThumbnailComponent, NgClass, TruncatableComponent, ThemedBadgesComponent, AsyncPipe], + imports: [RouterLink, ThemedThumbnailComponent, NgClass, TruncatableComponent, ThemedBadgesComponent, AsyncPipe], }) /** * The component for displaying a list element for an item search result of the type Project diff --git a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.spec.ts index 4d3f27f6ef4..a9b9ced391b 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.spec.ts @@ -1,6 +1,9 @@ -import { Collection } from '../../../../../core/shared/collection.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + Collection, + Item, + ItemSearchResult, +} from '@dspace/core'; + import { createSidebarSearchListElementTests } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec'; import { OrgUnitSidebarSearchListElementComponent } from './org-unit-sidebar-search-list-element.component'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.ts index 2789c1eb260..13a8c0cc878 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/org-unit/org-unit-sidebar-search-list-element.component.ts @@ -1,15 +1,16 @@ import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; +import { + Context, + Item, + ItemSearchResult, + ViewMode, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { Context } from '../../../../../core/shared/context.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { SidebarSearchListElementComponent } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component'; import { TruncatablePartComponent } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; @@ -20,7 +21,7 @@ import { TruncatablePartComponent } from '../../../../../shared/truncatable/trun selector: 'ds-org-unit-sidebar-search-list-element', templateUrl: '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html', standalone: true, - imports: [TruncatablePartComponent, NgClass, NgIf, AsyncPipe, TranslateModule], + imports: [TruncatablePartComponent, NgClass, AsyncPipe, TranslateModule], }) /** * Component displaying a list element for a {@link ItemSearchResult} of type "OrgUnit" within the context of diff --git a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.spec.ts index 6e614c58114..27d8038fae5 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.spec.ts @@ -1,6 +1,9 @@ -import { Collection } from '../../../../../core/shared/collection.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + Collection, + Item, + ItemSearchResult, +} from '@dspace/core'; + import { createSidebarSearchListElementTests } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec'; import { PersonSidebarSearchListElementComponent } from './person-sidebar-search-list-element.component'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.ts index 618211b94a7..ff1f431321f 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/person/person-sidebar-search-list-element.component.ts @@ -1,21 +1,22 @@ import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; +import { + Context, + DSONameService, + Item, + ItemSearchResult, + LinkService, + ViewMode, +} from '@dspace/core'; +import { isNotEmpty } from '@dspace/shared/utils'; import { TranslateModule, TranslateService, } from '@ngx-translate/core'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { LinkService } from '../../../../../core/cache/builders/link.service'; -import { Context } from '../../../../../core/shared/context.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { isNotEmpty } from '../../../../../shared/empty.util'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { SidebarSearchListElementComponent } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; @@ -27,7 +28,7 @@ import { TruncatablePartComponent } from '../../../../../shared/truncatable/trun selector: 'ds-person-sidebar-search-list-element', templateUrl: '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html', standalone: true, - imports: [TruncatablePartComponent, NgClass, NgIf, AsyncPipe, TranslateModule], + imports: [TruncatablePartComponent, NgClass, AsyncPipe, TranslateModule], }) /** * Component displaying a list element for a {@link ItemSearchResult} of type "Person" within the context of diff --git a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.spec.ts b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.spec.ts index a7be69965fc..a543d74c9fc 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.spec.ts @@ -1,6 +1,9 @@ -import { Collection } from '../../../../../core/shared/collection.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; +import { + Collection, + Item, + ItemSearchResult, +} from '@dspace/core'; + import { createSidebarSearchListElementTests } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.spec'; import { ProjectSidebarSearchListElementComponent } from './project-sidebar-search-list-element.component'; diff --git a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.ts b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.ts index 25dc73a7317..f2d95cc7607 100644 --- a/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.ts +++ b/src/app/entity-groups/research-entities/item-list-elements/sidebar-search-list-elements/project/project-sidebar-search-list-element.component.ts @@ -1,15 +1,16 @@ import { AsyncPipe, NgClass, - NgIf, } from '@angular/common'; import { Component } from '@angular/core'; +import { + Context, + Item, + ItemSearchResult, + ViewMode, +} from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { Context } from '../../../../../core/shared/context.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { SidebarSearchListElementComponent } from '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component'; import { TruncatablePartComponent } from '../../../../../shared/truncatable/truncatable-part/truncatable-part.component'; @@ -20,7 +21,7 @@ import { TruncatablePartComponent } from '../../../../../shared/truncatable/trun selector: 'ds-project-sidebar-search-list-element', templateUrl: '../../../../../shared/object-list/sidebar-search-list-element/sidebar-search-list-element.component.html', standalone: true, - imports: [TruncatablePartComponent, NgClass, NgIf, AsyncPipe, TranslateModule], + imports: [TruncatablePartComponent, NgClass, AsyncPipe, TranslateModule], }) /** * Component displaying a list element for a {@link ItemSearchResult} of type "Project" within the context of diff --git a/src/app/entity-groups/research-entities/item-pages/org-unit/org-unit.component.html b/src/app/entity-groups/research-entities/item-pages/org-unit/org-unit.component.html index 21acce9f095..1e1690b99e8 100644 --- a/src/app/entity-groups/research-entities/item-pages/org-unit/org-unit.component.html +++ b/src/app/entity-groups/research-entities/item-pages/org-unit/org-unit.component.html @@ -1,4 +1,6 @@ - +@if (showBackButton$ | async) { + +}
@@ -8,10 +10,10 @@
+ [defaultImage]="'assets/images/orgunit-placeholder.svg'" + [alt]="'thumbnail.orgunit.alt'" + [placeholder]="'thumbnail.orgunit.placeholder'" + > + > +@if (showBackButton$ | async) { + +}
@@ -8,9 +10,9 @@
+ [defaultImage]="'assets/images/person-placeholder.svg'" + [alt]="'thumbnail.person.alt'" + [placeholder]="'thumbnail.person.placeholder'"> +@if (showBackButton$ | async) { + +}
@@ -15,56 +17,56 @@ - - - - - - - - - - - - - -
-
- - - - - - - - - - - + + + + + + + + + + + + + +
+ +
diff --git a/src/app/entity-groups/research-entities/item-pages/project/project.component.spec.ts b/src/app/entity-groups/research-entities/item-pages/project/project.component.spec.ts index 3d8fccaa6fb..f4e272fe76f 100644 --- a/src/app/entity-groups/research-entities/item-pages/project/project.component.spec.ts +++ b/src/app/entity-groups/research-entities/item-pages/project/project.component.spec.ts @@ -1,11 +1,14 @@ -import { buildPaginatedList } from '../../../../core/data/paginated-list.model'; -import { Item } from '../../../../core/shared/item.model'; -import { PageInfo } from '../../../../core/shared/page-info.model'; +import { + buildPaginatedList, + createSuccessfulRemoteDataObject$, + Item, + PageInfo, +} from '@dspace/core'; + import { createRelationshipsObservable, getItemPageFieldsTest, } from '../../../../item-page/simple/item-types/shared/item.component.spec'; -import { createSuccessfulRemoteDataObject$ } from '../../../../shared/remote-data.utils'; import { ProjectComponent } from './project.component'; const mockItem: Item = Object.assign(new Item(), { diff --git a/src/app/entity-groups/research-entities/item-pages/project/project.component.ts b/src/app/entity-groups/research-entities/item-pages/project/project.component.ts index b654f5e17cf..3b4384ac9a7 100644 --- a/src/app/entity-groups/research-entities/item-pages/project/project.component.ts +++ b/src/app/entity-groups/research-entities/item-pages/project/project.component.ts @@ -1,12 +1,9 @@ -import { - AsyncPipe, - NgIf, -} from '@angular/common'; +import { AsyncPipe } from '@angular/common'; import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { ViewMode } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ViewMode } from '../../../../core/shared/view-mode.model'; import { GenericItemPageFieldComponent } from '../../../../item-page/simple/field-components/specific-field/generic/generic-item-page-field.component'; import { ThemedItemPageTitleFieldComponent } from '../../../../item-page/simple/field-components/specific-field/title/themed-item-page-field.component'; import { ItemComponent } from '../../../../item-page/simple/item-types/shared/item.component'; @@ -24,7 +21,7 @@ import { ThemedThumbnailComponent } from '../../../../thumbnail/themed-thumbnail styleUrls: ['./project.component.scss'], templateUrl: './project.component.html', standalone: true, - imports: [NgIf, ThemedResultsBackButtonComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, MetadataFieldWrapperComponent, ThemedThumbnailComponent, ThemedMetadataRepresentationListComponent, GenericItemPageFieldComponent, RelatedItemsComponent, RouterLink, AsyncPipe, TranslateModule], + imports: [ThemedResultsBackButtonComponent, ThemedItemPageTitleFieldComponent, DsoEditMenuComponent, MetadataFieldWrapperComponent, ThemedThumbnailComponent, ThemedMetadataRepresentationListComponent, GenericItemPageFieldComponent, RelatedItemsComponent, RouterLink, AsyncPipe, TranslateModule], }) /** * The component for displaying metadata and relations of an item of the type Project diff --git a/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.spec.ts b/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.spec.ts index 8ecfcaefbcf..9609b761ef8 100644 --- a/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/metadata-representations/org-unit/org-unit-item-metadata-list-element.component.spec.ts @@ -9,11 +9,13 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { RouterLink } from '@angular/router'; +import { + Item, + ItemMetadataRepresentation, + MetadataValue, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { Item } from '../../../../core/shared/item.model'; -import { MetadataValue } from '../../../../core/shared/metadata.models'; -import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-representation/item/item-metadata-representation.model'; import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component'; import { OrgUnitItemMetadataListElementComponent } from './org-unit-item-metadata-list-element.component'; diff --git a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.html b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.html index cbc68ef7cf9..edb3aa78347 100644 --- a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.html +++ b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.html @@ -1,20 +1,27 @@ - - - ; - - - + @if (mdRepresentation.allMetadata(['person.jobTitle']).length > 0) { + + @for (value of mdRepresentation.allMetadataValues(['person.jobTitle']); track value; let last = $last) { + + @if (!last) { + ; + } + + } + + } + - - + [innerHTML]="mdRepresentation.getValue()" + [ngbTooltip]="mdRepresentation.allMetadata(['person.jobTitle']).length > 0 ? descTemplate : null"> + @if (mdRepresentation.firstMetadata('person.identifier.orcid')) { + + + } diff --git a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.spec.ts b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.spec.ts index 05b322c0e27..141589b3b01 100644 --- a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.spec.ts @@ -9,11 +9,13 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { RouterLink } from '@angular/router'; +import { + Item, + ItemMetadataRepresentation, + MetadataValue, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { Item } from '../../../../core/shared/item.model'; -import { MetadataValue } from '../../../../core/shared/metadata.models'; -import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-representation/item/item-metadata-representation.model'; import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component'; import { PersonItemMetadataListElementComponent } from './person-item-metadata-list-element.component'; diff --git a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.ts b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.ts index c7b9e1a3332..82e5f54ebbc 100644 --- a/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.ts +++ b/src/app/entity-groups/research-entities/metadata-representations/person/person-item-metadata-list-element.component.ts @@ -1,7 +1,4 @@ -import { - NgFor, - NgIf, -} from '@angular/common'; + import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; @@ -14,7 +11,7 @@ import { TruncatableComponent } from '../../../../shared/truncatable/truncatable selector: 'ds-person-item-metadata-list-element', templateUrl: './person-item-metadata-list-element.component.html', standalone: true, - imports: [NgIf, NgFor, TruncatableComponent, RouterLink, NgbTooltipModule, OrcidBadgeAndTooltipComponent], + imports: [TruncatableComponent, RouterLink, NgbTooltipModule, OrcidBadgeAndTooltipComponent], }) /** * The component for displaying an item of the type Person as a metadata field diff --git a/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.spec.ts b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.spec.ts index 05c73f31b5f..cc1e6248d22 100644 --- a/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.spec.ts @@ -9,12 +9,14 @@ import { } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; import { RouterLink } from '@angular/router'; +import { + DSONameService, + Item, + ItemMetadataRepresentation, + MetadataValue, +} from '@dspace/core'; import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; -import { Item } from '../../../../core/shared/item.model'; -import { MetadataValue } from '../../../../core/shared/metadata.models'; -import { ItemMetadataRepresentation } from '../../../../core/shared/metadata-representation/item/item-metadata-representation.model'; import { DSONameServiceMock } from '../../../../shared/mocks/dso-name.service.mock'; import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component'; import { ProjectItemMetadataListElementComponent } from './project-item-metadata-list-element.component'; diff --git a/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.ts b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.ts index 84df74f1104..081aca52616 100644 --- a/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.ts +++ b/src/app/entity-groups/research-entities/metadata-representations/project/project-item-metadata-list-element.component.ts @@ -1,8 +1,8 @@ import { Component } from '@angular/core'; import { RouterLink } from '@angular/router'; +import { DSONameService } from '@dspace/core'; import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; -import { DSONameService } from '../../../../core/breadcrumbs/dso-name.service'; import { ItemMetadataRepresentationListElementComponent } from '../../../../shared/object-list/metadata-representation-list-element/item/item-metadata-representation-list-element.component'; import { TruncatableComponent } from '../../../../shared/truncatable/truncatable.component'; diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.html b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.html index 9d4a3566adc..78c86ae639c 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.html +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.html @@ -1,4 +1,6 @@
{{object.display}}
- + @if (uri) { + + }
diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.spec.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.spec.ts index af448acf974..e3c430a91d9 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.spec.ts @@ -4,9 +4,9 @@ import { TestBed, waitForAsync, } from '@angular/core/testing'; +import { ExternalSourceEntry } from '@dspace/core'; import { TranslateModule } from '@ngx-translate/core'; -import { ExternalSourceEntry } from '../../../../../core/shared/external-source-entry.model'; import { ExternalSourceEntryListSubmissionElementComponent } from './external-source-entry-list-submission-element.component'; describe('ExternalSourceEntryListSubmissionElementComponent', () => { diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.ts index d7c5b8aafdd..89583d095bc 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/external-source-entry/external-source-entry-list-submission-element.component.ts @@ -1,14 +1,16 @@ -import { NgIf } from '@angular/common'; + import { Component, OnInit, } from '@angular/core'; +import { + Context, + ExternalSourceEntry, + Metadata, + MetadataValue, + ViewMode, +} from '@dspace/core'; -import { Context } from '../../../../../core/shared/context.model'; -import { ExternalSourceEntry } from '../../../../../core/shared/external-source-entry.model'; -import { MetadataValue } from '../../../../../core/shared/metadata.models'; -import { Metadata } from '../../../../../core/shared/metadata.utils'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { AbstractListableElementComponent } from '../../../../../shared/object-collection/shared/object-collection-element/abstract-listable-element.component'; @@ -19,7 +21,7 @@ import { AbstractListableElementComponent } from '../../../../../shared/object-c styleUrls: ['./external-source-entry-list-submission-element.component.scss'], templateUrl: './external-source-entry-list-submission-element.component.html', standalone: true, - imports: [NgIf], + imports: [], }) /** * The component for displaying a list element of an external source entry diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.html b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.html index 1f020d127f4..351908dee59 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.html +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.html @@ -1,22 +1,32 @@
- - + + -
- +
+ @if (useNameVariants) { + + } -
+ @if (!useNameVariants) { +
+ } - - - , - - - - - -
+ + @if (dso.allMetadata('organization.address.addressLocality').length > 0) { + + @if (dso.allMetadata('organization.address.addressCountry').length > 0) { + , + } + + } + @if (dso.allMetadata('organization.address.addressCountry').length > 0) { + + + + } + +
diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts index a56dc45a393..f1244fa1400 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.spec.ts @@ -9,6 +9,28 @@ import { waitForAsync, } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; +import { + APP_CONFIG, + Bitstream, + BitstreamDataService, + buildPaginatedList, + CommunityDataService, + createSuccessfulRemoteDataObject$, + DefaultChangeAnalyzer, + DSOChangeAnalyzer, + DSONameService, + HALEndpointService, + Item, + ItemDataService, + ItemSearchResult, + NotificationsService, + ObjectCacheService, + RelationshipDataService, + RemoteData, + RemoteDataBuildService, + SelectableListService, + UUIDService, +} from '@dspace/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { Store } from '@ngrx/store'; import { TranslateService } from '@ngx-translate/core'; @@ -17,29 +39,9 @@ import { of as observableOf, } from 'rxjs'; -import { APP_CONFIG } from '../../../../../../config/app-config.interface'; import { environment } from '../../../../../../environments/environment'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { RemoteDataBuildService } from '../../../../../core/cache/builders/remote-data-build.service'; -import { ObjectCacheService } from '../../../../../core/cache/object-cache.service'; -import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service'; -import { CommunityDataService } from '../../../../../core/data/community-data.service'; -import { DefaultChangeAnalyzer } from '../../../../../core/data/default-change-analyzer.service'; -import { DSOChangeAnalyzer } from '../../../../../core/data/dso-change-analyzer.service'; -import { ItemDataService } from '../../../../../core/data/item-data.service'; -import { buildPaginatedList } from '../../../../../core/data/paginated-list.model'; -import { RelationshipDataService } from '../../../../../core/data/relationship-data.service'; -import { RemoteData } from '../../../../../core/data/remote-data'; -import { Bitstream } from '../../../../../core/shared/bitstream.model'; -import { HALEndpointService } from '../../../../../core/shared/hal-endpoint.service'; -import { Item } from '../../../../../core/shared/item.model'; -import { UUIDService } from '../../../../../core/shared/uuid.service'; import { DSONameServiceMock } from '../../../../../shared/mocks/dso-name.service.mock'; import { mockTruncatableService } from '../../../../../shared/mocks/mock-trucatable.service'; -import { NotificationsService } from '../../../../../shared/notifications/notifications.service'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; -import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; -import { createSuccessfulRemoteDataObject$ } from '../../../../../shared/remote-data.utils'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { TruncatePipe } from '../../../../../shared/utils/truncate.pipe'; import { OrgUnitSearchResultListSubmissionElementComponent } from './org-unit-search-result-list-submission-element.component'; diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts index cff764d7441..98d3351fded 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-search-result-list-submission-element.component.ts @@ -1,31 +1,31 @@ -import { NgIf } from '@angular/common'; + import { Component, Inject, OnInit, } from '@angular/core'; import { FormsModule } from '@angular/forms'; +import { + APP_CONFIG, + AppConfig, + BitstreamDataService, + Context, + DSONameService, + Item, + ItemDataService, + ItemSearchResult, + MetadataValue, + NotificationsService, + RelationshipDataService, + SelectableListService, + ViewMode, +} from '@dspace/core'; import { NgbModal } from '@ng-bootstrap/ng-bootstrap'; import { TranslateService } from '@ngx-translate/core'; import { take } from 'rxjs/operators'; -import { - APP_CONFIG, - AppConfig, -} from '../../../../../../config/app-config.interface'; -import { DSONameService } from '../../../../../core/breadcrumbs/dso-name.service'; -import { BitstreamDataService } from '../../../../../core/data/bitstream-data.service'; -import { ItemDataService } from '../../../../../core/data/item-data.service'; -import { RelationshipDataService } from '../../../../../core/data/relationship-data.service'; -import { Context } from '../../../../../core/shared/context.model'; -import { Item } from '../../../../../core/shared/item.model'; -import { MetadataValue } from '../../../../../core/shared/metadata.models'; -import { ViewMode } from '../../../../../core/shared/view-mode.model'; -import { NotificationsService } from '../../../../../shared/notifications/notifications.service'; -import { ItemSearchResult } from '../../../../../shared/object-collection/shared/item-search-result.model'; import { listableObjectComponent } from '../../../../../shared/object-collection/shared/listable-object/listable-object.decorator'; import { SearchResultListElementComponent } from '../../../../../shared/object-list/search-result-list-element/search-result-list-element.component'; -import { SelectableListService } from '../../../../../shared/object-list/selectable-list/selectable-list.service'; import { TruncatableService } from '../../../../../shared/truncatable/truncatable.service'; import { NameVariantModalComponent } from '../../name-variant-modal/name-variant-modal.component'; import { OrgUnitInputSuggestionsComponent } from './org-unit-suggestions/org-unit-input-suggestions.component'; @@ -37,7 +37,7 @@ import { OrgUnitInputSuggestionsComponent } from './org-unit-suggestions/org-uni styleUrls: ['./org-unit-search-result-list-submission-element.component.scss'], templateUrl: './org-unit-search-result-list-submission-element.component.html', standalone: true, - imports: [NgIf, OrgUnitInputSuggestionsComponent, FormsModule], + imports: [OrgUnitInputSuggestionsComponent, FormsModule], }) /** diff --git a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-suggestions/org-unit-input-suggestions.component.html b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-suggestions/org-unit-input-suggestions.component.html index 58f39b8d0b8..45a4dc9bb3a 100644 --- a/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-suggestions/org-unit-input-suggestions.component.html +++ b/src/app/entity-groups/research-entities/submission/item-list-elements/org-unit/org-unit-suggestions/org-unit-input-suggestions.component.html @@ -1,26 +1,28 @@
- - -