diff --git a/.eslintrc.json b/.eslintrc.json index 1c40abe3e..3c419fb41 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -43,9 +43,6 @@ ], "rxjs/no-ignored-observable": "warn", - // disable standalone preference rule — app uses ngmodule architecture - "@angular-eslint/prefer-standalone": "off", - // General TypeScript best practices "prefer-const": "error", "no-console": [ diff --git a/angular.json b/angular.json index 365e45131..597813cb4 100644 --- a/angular.json +++ b/angular.json @@ -31,7 +31,7 @@ "prefix": "app", "architect": { "build": { - "builder": "@angular-devkit/build-angular:application", + "builder": "@angular-devkit/build-angular:browser", "options": { "allowedCommonJsDependencies": [ "pusher-js", @@ -49,8 +49,8 @@ "i18nDuplicateTranslation": "warning", "outputPath": "dist/v3", "index": "projects/v3/src/index.html", - "browser": "projects/v3/src/main.ts", - "polyfills": ["projects/v3/src/polyfills.ts"], + "main": "projects/v3/src/main.ts", + "polyfills": "projects/v3/src/polyfills.ts", "tsConfig": "projects/v3/tsconfig.app.json", "inlineStyleLanguage": "scss", "assets": [ @@ -73,11 +73,11 @@ ], "styles": [ { - "input": "projects/v3/src/global.scss", + "input": "projects/v3/src/theme/variables.scss", "inject": true }, { - "input": "projects/v3/src/theme/variables.scss", + "input": "projects/v3/src/global.scss", "inject": true }, { @@ -86,6 +86,9 @@ } ], "scripts": [], + "vendorChunk": true, + "extractLicenses": false, + "buildOptimizer": false, "sourceMap": true, "optimization": false, "namedChunks": true @@ -121,10 +124,12 @@ "with": "projects/v3/src/environments/environment.custom.ts" } ], + "buildOptimizer": true, "outputHashing": "all", "sourceMap": false, "namedChunks": false, - "extractLicenses": true + "extractLicenses": true, + "vendorChunk": false }, "stage": { "budgets": [ @@ -143,7 +148,9 @@ "with": "projects/v3/src/environments/environment.custom.ts" } ], + "buildOptimizer": false, "optimization": false, + "vendorChunk": true, "extractLicenses": false, "sourceMap": true, "namedChunks": true @@ -181,7 +188,9 @@ "maximumWarning": "20kb" } ], + "buildOptimizer": false, "optimization": false, + "vendorChunk": true, "extractLicenses": false, "sourceMap": true, "namedChunks": true @@ -222,12 +231,10 @@ "test": { "builder": "@angular-devkit/build-angular:karma", "options": { - "builderMode": "application", "main": "projects/v3/src/test.ts", "karmaConfig": "projects/v3/karma.conf.js", "tsConfig": "projects/v3/tsconfig.spec.json", "inlineStyleLanguage": "scss", - "include": ["projects/v3/src/**/*.spec.ts"], "assets": ["./projects/v3/src/assets/icon/favicon.ico", "projects/v3/src/assets"], "styles": ["projects/v3/src/styles.scss"], "scripts": [] diff --git a/docs/docs.md b/docs/docs.md index 7285214de..585bbe02d 100644 --- a/docs/docs.md +++ b/docs/docs.md @@ -2,25 +2,12 @@ # Practera App Documentation This is practera documentation with more informations. -### Upgrades -- [Angular 17 → 18 & Ionic 7 → 8](./upgrades/angular-17-to-18-ionic-7-to-8.md) - ### Services - [Chat Service](./services/chatService.md) ### Components - [Chat Room Component](./components/chatRoomComponent.md) - [Chat List Component](./components/chatListComponent.md) -- [Topic Component](./components/topicComponent.md) ### Directives -- [Toggle Label Directive](./directives/toggleLabelDirective.md) - -### Features -- [Assessment Pagination Feature Toggle](./features/assessment-pagination-feature-toggle.md) -- [Slider Rating Implementation](./features/slider-rating-implementation.md) - -### Fixes -- [CORE-7942 Whitespace Fix](./fixes/CORE-7942-whitespace-fix.md) -- [CORE-8002 Pulse Check Workflow](./fixes/CORE-8002-pulsecheck-workflow.md) -- [CORE-8166/8167 Pagination Answer Persistence](./fixes/CORE-8166-8167-pagination-answer-persistence.md) \ No newline at end of file +- [Toggle Label Directive](./directives/toggleLabelDirective.md) \ No newline at end of file diff --git a/docs/upgrades/angular-17-to-18-ionic-7-to-8.md b/docs/upgrades/angular-17-to-18-ionic-7-to-8.md deleted file mode 100644 index 5a8b9c12f..000000000 --- a/docs/upgrades/angular-17-to-18-ionic-7-to-8.md +++ /dev/null @@ -1,433 +0,0 @@ -# Angular 17 → 18 & Ionic 7 → 8 Upgrade - -> **Branch:** `angular-eos-upgrades-prerelease` -> **Date:** March 2026 -> **Reason:** Angular 17 and Ionic 7 reached end-of-support - ---- - -## Scope of Changes - -169 files changed across framework upgrades, configuration updates, test infrastructure, and source fixes. - -### Version Changes - -| Package | Before | After | -|---------|--------|-------| -| `@angular/*` | ^17.3.12 | ^18.0.0 | -| `@ionic/angular` | ^7.8.6 | ^8.0.0 | -| `apollo-angular` | ^6.0.0 | ^7.0.2 | -| `ngx-quill` | ^25.3.2 | ^26.0.10 | -| `@angular-devkit/build-angular` | ^17.3.16 | ^18.0.0 | -| `@angular-devkit/architect` | ~0.1703.16 | ~0.1802.0 | -| `@angular-eslint/*` | ~17.5.2 | ~18.4.0 | -| `@ionic/angular-toolkit` | ^9.0.0 | ^11.0.0 | -| `ng-packagr` | ^17.3.0 | ^18.0.0 | -| `zone.js` | ~0.14.3 | ~0.14.8 | -| TypeScript | ~5.4.5 | ~5.4.5 (unchanged) | -| Node | v20.x | v20.x (unchanged) | - -### Packages Removed - -| Package | Reason | -|---------|--------| -| `@ionic/storage` ^4.0.0 | no longer used in app | -| `angular2-text-mask` ^9.0.0 | replaced with native solution | -| `ng-intercom` ^8.0.2 | intercom integration removed | - -### Peer Dependency: ngx-quill - -`ngx-quill` v25 declared `@angular/core` ^17 as a peer dependency. upgrading to `ngx-quill` ^26.0.10 was required to resolve the `npm ERESOLVE` conflict against Angular 18. - -### Request Library - -the `projects/request/package.json` peer dependencies were widened: - -```json -// before -"@angular/common": "^13.2.0", -"@angular/core": "^13.2.0" - -// after -"@angular/common": "^17.0.0 || ^18.0.0", -"@angular/core": "^17.0.0 || ^18.0.0" -``` - ---- - -## Configuration Changes - -### angular.json - -1. **style order swap** — `global.scss` now loads before `variables.scss` to ensure CSS variable definitions are available when global styles are processed: - -```json -// before -[{ "input": "projects/v3/src/theme/variables.scss" }, - { "input": "projects/v3/src/global.scss" }] - -// after -[{ "input": "projects/v3/src/global.scss" }, - { "input": "projects/v3/src/theme/variables.scss" }] -``` - -2. **test builder include** — Angular 18's karma builder requires an explicit include pattern to discover spec files: - -```json -"test": { - "options": { - "include": ["projects/v3/src/**/*.spec.ts"] - } -} -``` - -### tsconfig.app.json - -added `src/test.ts` to the exclude array to prevent test infrastructure (jasmine types) from contaminating the application build: - -```json -"exclude": [ - "src/test.ts", - "src/testing/**/*.ts", - "**/*.spec.ts", - "src/environments/environment.*.ts" -] -``` - -### karma.conf.js - -| Setting | Before | After | Reason | -|---------|--------|-------|--------| -| `browsers` | `['Chrome']` | `['ChromeHeadless']` | headless CI execution | -| `jasmineOptions.timeoutInterval` | (default) | `10000` | prevent timeout on complex setup | -| `browserNoActivityTimeout` | (default) | `120000` | prevent disconnect during long suites | -| `browserDisconnectTimeout` | (default) | `30000` | tolerate slow test teardown | -| `browserDisconnectTolerance` | (default) | `3` | allow reconnection attempts | -| `jasmineOptions.random` | `false` | `false` | retained for deterministic runs | - ---- - -## Test Infrastructure (test.ts) - -### destroyAfterEach - -changed from `false` to `true`. Angular 18 defaults to `destroyAfterEach: true`, meaning each test's `TestBed` is torn down after every spec. this surfaces real cleanup issues but requires all components and services to handle destruction gracefully. - -```typescript -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting(), - { teardown: { destroyAfterEach: true } } -); -``` - -### global mock providers - -Ionic 8 changed `ModalController` and `PopoverController` from `providedIn: 'root'` to being registered only by `IonicModule.forRoot()`. this means any component injecting these controllers will throw `NullInjectorError` during test teardown if not explicitly provided. - -a global `beforeEach` block in `test.ts` provides fallback mocks: - -```typescript -beforeEach(() => { - TestBed.overrideProvider(ModalController, { - useValue: jasmine.createSpyObj('ModalController', { - create: Promise.resolve(mockOverlay), - dismiss: Promise.resolve(), - getTop: Promise.resolve(null), - }), - }); - TestBed.overrideProvider(PopoverController, { - useValue: jasmine.createSpyObj('PopoverController', { - create: Promise.resolve(mockOverlay), - dismiss: Promise.resolve(), - }), - }); - TestBed.overrideProvider(AngularDelegate, { - useValue: jasmine.createSpyObj('AngularDelegate', ['create']), - }); - TestBed.overrideProvider(Apollo, { - useValue: jasmine.createSpyObj('Apollo', ['use', 'watchQuery', 'mutate', 'query']), - }); -}); -``` - -specs that need the real service can re-call `TestBed.overrideProvider()` before `compileComponents()`. - -### @angular/localize/init - -added `import '@angular/localize/init'` at the top of `test.ts` to support `$localize` template literals in test context. - ---- - -## Ionic 8 Behavioral Changes - -### ModalController / PopoverController DI - -**breaking change:** these overlay controllers are no longer `providedIn: 'root'`. they are registered by `IonicModule.forRoot()` in the app module, but test modules that don't import `IonicModule.forRoot()` will get `NullInjectorError`. - -**impact:** every test that creates a component injecting `ModalController` or `PopoverController` either needs explicit providers or relies on the global mock in `test.ts`. - -### Checkbox / Radio Label Placement - -Ionic 8 requires `labelPlacement="end"` with content inside the component tag instead of separate `ion-label` elements: - -```html - - - - - - - - -``` - -affected components: `multiple`, `oneof`, `multi-team-member-selector`, `team-member-selector`. - ---- - -## Source Code Changes - -### Circular Dependency Fixes - -three circular dependency chains were broken using `forwardRef()` and dynamic imports: - -#### 1. FastFeedbackService ↔ NotificationsService - -`FastFeedbackService` injects `NotificationsService`, which imports `FastFeedbackComponent`, which injects `FastFeedbackService`. - -```typescript -// fast-feedback.service.ts -@Inject(forwardRef(() => NotificationsService)) private notificationsService: any, -``` - -```typescript -// notifications.service.ts — lazy import instead of top-level -async fastFeedbackModal(props, options) { - const { FastFeedbackComponent } = await import( - '../components/fast-feedback/fast-feedback.component' - ); - // ... -} -``` - -#### 2. ReviewRatingComponent → FastFeedbackService / NotificationsService - -```typescript -// review-rating.component.ts -@Inject(forwardRef(() => FastFeedbackService)) private fastFeedbackService: any, -@Inject(forwardRef(() => NotificationsService)) private notificationsService: any, -``` - -#### 3. UppyUploaderService ↔ UppyUploaderComponent - -```typescript -// uppy-uploader.service.ts — dynamic import instead of top-level -async open(source) { - const { UppyUploaderComponent } = await import('./uppy-uploader.component'); - // ... -} -``` - -### Observable Initialization Pattern - -Angular 18's stricter initialization order requires service-derived observables to be assigned in the constructor rather than at field declaration. field initializers run before the constructor, so injected services may not be available yet. - -```typescript -// before (Angular 17 — worked by coincidence) -export class ActivityDesktopPage { - assessment = this.assessmentService.assessment$; -} - -// after (Angular 18 — explicit constructor assignment) -export class ActivityDesktopPage { - assessment: Observable; - constructor(private assessmentService: AssessmentService) { - this.assessment = this.assessmentService.assessment$; - } -} -``` - -affected pages: `ActivityDesktopPage`, `TopicMobilePage`. - -### .toPromise() → firstValueFrom() Migration (Partial) - -`.toPromise()` is deprecated in RxJS 7 and will be removed in RxJS 8. several call sites were migrated: - -```typescript -// before -const activity = await this.getActivityBase(id).pipe(...).toPromise(); - -// after -const activity = await firstValueFrom(this.getActivityBase(id).pipe(...)); -``` - -**migrated locations:** -- `activity.service.ts` — `goToTask()` assessment/topic fetching -- `activity-desktop.page.ts` — `submitAssessment()`, `fetchAssessment()`, `getTodoItems()` -- `review-desktop.page.ts` — `fetchAssessment()` -- `assessment-mobile.page.ts` — `readFeedback()` - -**remaining (22 call sites):** these still use `.toPromise()` and should be migrated in a follow-up: -- `auth-global-login.component.ts`, `auth-direct-login.component.ts` -- `assessment.component.ts`, `activity.component.ts` -- `experience.service.ts`, `pusher.service.ts`, `filestack.service.ts` -- `review-rating.component.ts`, `support-popup.component.ts` -- `ngx-embed-video.service.ts`, `devtool.page.ts`, `experiences.page.ts` - -### Null-Safety Fixes - -Angular 18's stricter template checking and `destroyAfterEach: true` surfaced several null-safety issues: - -| File | Fix | -|------|-----| -| `auth-direct-login.component.ts` | `res.message.includes()` → `res?.message?.includes()` | -| `auth-global-login.component.ts` | same null-safe `_error()` method | -| `chat-preview.component.ts` | `isBrowserSupportedVideo()` now returns `!!()` for boolean | -| `assessment.component.ts` | `this.review?.status` null check | -| `file-upload.component.ts` | `this.control?.setValue()` null checks | -| `multiple.component.ts` | `this.control?.errors` null check | -| `oneof.component.ts` | `this.control?.errors` null check | -| `slider.component.ts` | `this.control?.errors` null check | -| `team-member-selector.component.ts` | `this.control?.disabled`, `submission?.answer` null checks | -| `multi-team-member-selector.component.ts` | `this.control?.disabled`, `submission?.answer` null checks | -| `text.component.ts` | `audienceContainReviewer()` null guard on `question.audience` | - -### ImgComponent — Missing OnChanges Interface - -`ImgComponent` used `ngOnChanges()` without implementing the `OnChanges` interface. added the interface declaration for Angular 18 strict mode: - -```typescript -// before -export class ImgComponent { ... } - -// after -export class ImgComponent implements OnChanges { ... } -``` - -### Assessment Form Validation Rewrite - -the `_populateQuestionsForm()` method was rewritten to: - -1. **build a new FormGroup before assigning** — avoids `_rawValidators` errors during template rendering with stale `formControlName` bindings -2. **apply validators only when user can edit** — `doAssessment || isPendingReview` check prevents required indicators in read-only mode -3. **use custom validators** for reviewer and file upload fields: - - `_answerRequiredValidatorForReviewer` — validates `{answer, comment, file}` shape - - `_fileRequiredValidatorForLearner` — validates file URL presence -4. **initialize form controls with proper types** — review mode uses `{answer, comment, file}` objects; multi-team-member-selector in assessment mode uses plain arrays - -### ActivityService goToTask() Overload - -`goToTask()` now accepts an optional `activityId` parameter to fix navigation issues where `this.activity` was stale after async operations: - -```typescript -// before -async goToTask(task: Task, getData = true) - -// after -async goToTask(task: Task, activityIdOrGetData?: number | boolean, getData = true) -``` - -the method handles backward compatibility by checking the type of the second parameter. - -### Assessment Submission Button Guard - -a `submitting` flag prevents the submit button from being re-enabled during intermediate fetches after submission: - -```typescript -continueToNextTask() { - case 'submit': - this.submitting = true; - this.btnDisabled$.next(true); - // ... -} -``` - -the flag is cleared when the submission changes or when the assessment exits editable state. - ---- - -## Testing Mock Updates - -### MockRouter - -added missing methods required by Angular 18's router: - -```typescript -this.getCurrentNavigation = this.spy('getCurrentNavigation').and.returnValue(null); -this.serializeUrl = this.spy('serializeUrl').and.returnValue('/test'); -``` - -### TestUtils (UtilsService mock) - -added missing spy methods that Angular 18's stricter initialization calls: - -```typescript -this.isMobile = this.spy('isMobile').and.returnValue(false); -this.isQuillContentEmpty = this.spy('isQuillContentEmpty').and.returnValue(false); -this.scrollToElement = this.spy('scrollToElement'); -this.isColor = this.spy('isColor').and.returnValue(false); -this.getCurrentLocale = this.spy('getCurrentLocale').and.returnValue('en-US'); -this.setPageLanguage = this.spy('setPageLanguage'); -this.isHour12Format = this.spy('isHour12Format').and.returnValue(true); -this.setPageTitle = this.spy('setPageTitle'); -this.addLanguageAttributes = this.spy('addLanguageAttributes').and.callFake((htmlContent) => htmlContent); -this.moveToNewLocale = this.spy('moveToNewLocale'); -this.detectLanguage = this.spy('detectLanguage').and.returnValue(null); -this.decodeHtmlEntities = this.spy('decodeHtmlEntities').and.callFake((text) => text); -this.checkIsPracteraSupportEmail = this.spy('checkIsPracteraSupportEmail').and.returnValue(false); -``` - -### Test Fixtures - -- `tasks.ts` — added `NormalizedActivityFixture` with `unlockConditions` property; reduced task list size -- `programs.ts` — expanded `createExperience()` factory with full `Experience` type -- `chats.ts` — added `mockChatMessages`, `createMessage()`, `createUser()` factories - ---- - -## CI/CD Changes - -the GitHub Actions workflow files (`.github/workflows/*.yml`) received two changes per environment: - -1. **helpline email** — `programs@practera.com` → `help@practera.com` -2. **assessment pagination toggle** — `CUSTOM_ENABLE_ASSESSMENT_PAGINATION` environment variable added - -| Workflow | Pagination Value | -|----------|-----------------| -| `p2-stage-appv3.yml` | `true` | -| `p2-prerelease-appv3.yml` | `true` | -| `p2-aus-appv3.yml` | `false` | -| `p2-euk-appv3.yml` | `false` | -| `p2-usa-appv3.yml` | `false` | - ---- - -## Verification Status - -| Check | Status | -|-------|--------| -| `npm install` | pass (no ERESOLVE, no --legacy-peer-deps) | -| `ng build v3 -c development` | pass (CSS budget warnings pre-existing) | -| `ng serve v3` | pass | -| `npm test` | 1263 SUCCESS, 0 FAILED, 13 skipped | -| removed package references | none found (grep verified) | -| deprecated pattern audit | 22 `.toPromise()` remaining (non-blocking) | - ---- - -## Known Follow-Up Items - -1. **`.toPromise()` migration** — 22 remaining call sites should be migrated to `firstValueFrom()` before RxJS 8 -2. **`emitDecoratorMetadata`** — still `true` in `tsconfig.app.json`; Angular 18 does not require it. removing it reduces bundle metadata but needs testing for DI edge cases -3. **`npm run lint`** — linter should be run and any new Angular 18 lint rules addressed - ---- - -## Related Documentation - -- [Assessment Pagination Feature Toggle](../features/assessment-pagination-feature-toggle.md) -- [Slider Rating Implementation](../features/slider-rating-implementation.md) -- [CORE-8002 Pulse Check Workflow Fix](../fixes/CORE-8002-pulsecheck-workflow.md) -- [CORE-8166/8167 Pagination Answer Persistence](../fixes/CORE-8166-8167-pagination-answer-persistence.md) -- [Toggle Label Directive](../directives/toggleLabelDirective.md) diff --git a/docs/upgrades/angular-18-to-19-security-fixes.md b/docs/upgrades/angular-18-to-19-security-fixes.md deleted file mode 100644 index ff259319f..000000000 --- a/docs/upgrades/angular-18-to-19-security-fixes.md +++ /dev/null @@ -1,489 +0,0 @@ -# Angular 18 → 19 Upgrade & Security Vulnerability Remediation - -> **Branch:** `angular-eos-upgrades-prerelease` -> **Date:** March 2026 -> **Reason:** 58 npm audit vulnerabilities (8 low, 17 moderate, 33 high), Angular 18 reaching end-of-support -> **Previous upgrade doc:** [angular-17-to-18-ionic-7-to-8.md](angular-17-to-18-ionic-7-to-8.md) - ---- - -## Table of Contents - -1. [Motivation](#motivation) -2. [Compatibility Matrix](#compatibility-matrix) -3. [Version Change Summary](#version-change-summary) -4. [Phase 1 — Angular Framework Upgrade](#phase-1--angular-framework-upgrade) -5. [Phase 2 — Companion Library Updates](#phase-2--companion-library-updates) -6. [Phase 3 — Build Tooling & Dev Dependencies](#phase-3--build-tooling--dev-dependencies) -7. [Phase 4 — Request Library](#phase-4--request-library) -8. [Phase 5 — Code Changes & Migration](#phase-5--code-changes--migration) -9. [Phase 6 — Testing & Validation](#phase-6--testing--validation) -10. [Vulnerabilities Addressed](#vulnerabilities-addressed) -11. [Out of Scope](#out-of-scope) -12. [Risks & Rollback](#risks--rollback) -13. [Progress Tracking](#progress-tracking) - ---- - -## Motivation - -`npm audit` reported **58 vulnerabilities** after the Angular 17 → 18 upgrade. The majority stem from Angular 18 itself, which has known high-severity XSS and XSRF CVEs patched only in Angular 19+: - -| Severity | Count | -|----------|-------| -| High | 33 | -| Moderate | 17 | -| Low | 8 | - -Angular 18 is also approaching end-of-support. Upgrading to Angular 19 (latest: **19.2.16**) resolves ~45–50 of the 58 vulnerabilities and keeps the project on a supported major version. - -### Key CVEs driving the upgrade - -| Advisory | Severity | Description | -|----------|----------|-------------| -| GHSA-58c5 | High | XSRF Token Leakage via Protocol-Relative URLs in HTTP Client | -| GHSA-v4hv | High | Stored XSS via SVG Animation, SVG URL and MathML Attributes | -| GHSA-jrmj | High | XSS via Unsanitized SVG Script Attributes | -| GHSA-g93w | High | XSS in i18n attribute bindings | -| GHSA-prjf | High | Angular i18n XSS | -| GHSA-mw96 | High | Rollup 4 Arbitrary File Write via Path Traversal | -| GHSA-5c6j | High | serialize-javascript RCE via RegExp.flags | -| GHSA-34x7 + 5 more | High | node-tar multiple path traversal / symlink CVEs | -| GHSA-67mh | Moderate | esbuild dev server request leakage | -| GHSA-2g4f | Moderate | ajv ReDoS with $data option | - ---- - -## Compatibility Matrix - -Verified compatibility for Angular 19 target: - -| Dependency | Current | Target | Angular 19 Support | -|------------|---------|--------|-------------------| -| `@ionic/angular` | ^8.0.0 | ^8.0.0 (unchanged) | ✅ peer dep: `@angular/core >=16.0.0` | -| `@ionic/angular-toolkit` | ^11.0.0 | ^12.3.0 | ✅ latest v12 | -| `apollo-angular` | ^7.0.2 | ^8.0.0 | ✅ v8 peer dep: `@angular/core ^17 \|\| ^18 \|\| ^19` | -| `ngx-quill` | ^26.0.10 | ^27.0.0 | ✅ v27 = Angular 19 per compatibility table | -| `@uppy/angular` | ^0.7.0 | ^1.1.0 | ✅ v1 peer dep: `@angular/core ^17 \|\| ^18 \|\| ^19 \|\| ^20` | -| `ng-circle-progress` | ~1.7.1 | ~1.7.1 (unchanged) | ✅ peer dep: `@angular/core >=14.0.0` | -| `ng-packagr` | ^18.0.0 | ^19.0.0 | ✅ peer dep: `@angular/compiler-cli ^19.0.0` | -| `typescript` | ~5.4.5 | ~5.5.4 or ~5.6.0 | ✅ Angular 19 requires `>=5.5 <5.9` | -| `zone.js` | ~0.14.8 | ~0.15.0 | ✅ Angular 19 compatible (or keep 0.14.x) | -| `rxjs` | ~7.8.0 | ~7.8.0 (unchanged) | ✅ | -| `@types/node` | ^16.11.35 | ^20.0.0 | ✅ aligns with Node 20 runtime, satisfies vite peer | -| Node.js | v20.19.6 | v20.19.6 (unchanged) | ✅ Angular 19 supports `^18.19.1 \|\| ^20.11.1 \|\| ^22` | - ---- - -## Version Change Summary - -### dependencies (package.json) - -| Package | Before | After | Notes | -|---------|--------|-------|-------| -| `@angular/animations` | ^18.0.0 | ^19.0.0 | | -| `@angular/common` | ^18.0.0 | ^19.0.0 | | -| `@angular/core` | ^18.0.0 | ^19.0.0 | | -| `@angular/forms` | ^18.0.0 | ^19.0.0 | | -| `@angular/platform-browser` | ^18.0.0 | ^19.0.0 | | -| `@angular/platform-browser-dynamic` | ^18.0.0 | ^19.0.0 | | -| `@angular/router` | ^18.0.0 | ^19.0.0 | | -| `apollo-angular` | ^7.0.2 | ^8.0.0 | peer dep added Angular 19 | -| `ngx-quill` | ^26.0.10 | ^27.0.0 | Angular 19 compatibility | -| `@uppy/angular` | ^0.7.0 | ^1.1.0 | major bump; peer dep needs `@uppy/core ^5`, `@uppy/dashboard ^5` | -| `@uppy/core` | ^4.4.4 | ^5.0.2 | required by @uppy/angular v1 | -| `@uppy/dashboard` | ^4.3.3 | ^5.0.2 | required by @uppy/angular v1 | -| `@uppy/drag-drop` | ^4.1.2 | ^5.x (latest) | keep in sync with uppy core | -| `@uppy/progress-bar` | ^4.2.1 | ^5.x (latest) | keep in sync with uppy core | -| `@uppy/remote-sources` | ^2.3.2 | latest compatible | check compatibility with uppy v5 | -| `@uppy/status-bar` | ^4.1.3 | ^5.x (latest) | keep in sync with uppy core | -| `@uppy/xhr-upload` | ^4.3.3 | ^5.x (latest) | keep in sync with uppy core | -| `uppy` | ^4.14.0 | ^5.x (latest) | keep in sync | - -### devDependencies (package.json) - -| Package | Before | After | Notes | -|---------|--------|-------|-------| -| `@angular-devkit/architect` | ~0.1802.0 | ~0.1902.0 | | -| `@angular-devkit/build-angular` | ^18.0.0 | ^19.0.0 | resolves esbuild, rollup, webpack, serialize-javascript vulns | -| `@angular-eslint/builder` | ~18.4.0 | ~19.3.0 | latest 19 | -| `@angular-eslint/eslint-plugin` | ~18.4.0 | ~19.3.0 | | -| `@angular-eslint/eslint-plugin-template` | ~18.4.0 | ~19.3.0 | | -| `@angular-eslint/schematics` | ~19.4.0 | ~19.3.0 | | -| `@angular-eslint/template-parser` | ~18.4.0 | ~19.3.0 | | -| `@angular/cli` | ^18.0.0 | ^19.0.0 | resolves tmp/external-editor vuln | -| `@angular/compiler` | ^18.0.0 | ^19.0.0 | resolves XSS CVEs | -| `@angular/compiler-cli` | ^18.0.0 | ^19.0.0 | | -| `@angular/language-service` | ^18.0.0 | ^19.0.0 | | -| `@angular/localize` | ^18.0.0 | ^19.0.0 | | -| `@ionic/angular-toolkit` | ^11.0.0 | ^12.3.0 | | -| `@types/node` | ^16.11.35 | ^20.0.0 | aligns with runtime, satisfies vite peer | -| `ng-packagr` | ^18.0.0 | ^19.0.0 | resolves cacache/esbuild vulns | -| `typescript` | ~5.4.5 | ~5.6.3 | Angular 19.2 supports >=5.5 <5.9 | - ---- - -## Phase 1 — Angular Framework Upgrade - -### 1.1. Use `ng update` for guided migration - -```bash -# update angular core packages -npx ng update @angular/core@19 @angular/cli@19 - -# update angular build tooling -npx ng update @angular-devkit/build-angular@19 -``` - -`ng update` will: -- apply automatic code migrations (schematics) -- update `angular.json` configuration if needed -- flag any manual migration steps - -### 1.2. Manual package.json updates - -update all `@angular/*` dependency ranges from `^18.0.0` to `^19.0.0`: -- `@angular/animations` -- `@angular/common` -- `@angular/core` -- `@angular/forms` -- `@angular/platform-browser` -- `@angular/platform-browser-dynamic` -- `@angular/router` -- `@angular/compiler` -- `@angular/compiler-cli` -- `@angular/language-service` -- `@angular/localize` -- `@angular/cli` - -update devkit packages: -- `@angular-devkit/architect` → `~0.1902.0` -- `@angular-devkit/build-angular` → `^19.0.0` - -### 1.3. TypeScript upgrade - -```bash -npm install typescript@~5.6.3 --save-dev -``` - -Angular 19.2.x requires TypeScript `>=5.5 <5.9`. Current `~5.4.5` is out of range. Target `~5.6.3` for best stability. - -**potential breaking changes in TypeScript 5.5–5.6:** -- stricter `isolatedDeclarations` support (opt-in, not breaking) -- `satisfies` operator improvements -- review `tsconfig.json` for any deprecated compiler options - -### 1.4. @types/node upgrade - -```bash -npm install @types/node@^20 --save-dev -``` - -aligns type definitions with the actual Node 20 runtime and satisfies vite's peer dependency (`^18 || >=20`). - -### 1.5. zone.js - -check if `~0.15.0` is needed or if `~0.14.8` still works with Angular 19. Angular 19 docs indicate zone.js `>=0.14.0` is supported, so current version may be fine. verify during install. - ---- - -## Phase 2 — Companion Library Updates - -### 2.1. apollo-angular: ^7.0.2 → ^8.0.0 - -`apollo-angular` v7 declares peer dep `@angular/core ^17 || ^18` — does NOT include ^19. -v8 adds `^19.0.0` to the peer dep. - -```bash -npm install apollo-angular@^8.0.0 -``` - -**expected breaking changes:** -- check for API changes in `Apollo` service, `QueryRef`, `MutationRef` -- review import paths — v8 may have changed module exports -- test all GraphQL operations (queries, mutations, subscriptions) - -### 2.2. ngx-quill: ^26.0.10 → ^27.0.0 - -per the ngx-quill compatibility table: -- v26 = Angular 18 -- v27 = Angular 19 - -```bash -npm install ngx-quill@^27.0.0 -``` - -**expected impact:** likely minimal — ngx-quill major bumps typically just update the Angular peer dep. - -### 2.3. @uppy/angular: ^0.7.0 → ^1.1.0 (+ uppy ecosystem) - -`@uppy/angular` v0.7.0 has a vulnerable transitive dep on `@angular/core` (audit flags it). v1.x requires `@uppy/core ^5` and `@uppy/dashboard ^5`. - -this means bumping the entire uppy ecosystem: - -```bash -npm install @uppy/angular@^1.1.0 @uppy/core@^5 @uppy/dashboard@^5 \ - @uppy/drag-drop@^5 @uppy/progress-bar@^5 @uppy/status-bar@^5 \ - @uppy/xhr-upload@^5 @uppy/remote-sources@latest uppy@^5 -``` - -**expected breaking changes:** -- uppy v5 API changes (plugin initialization, event names) -- review `UppyUploaderService` and `UppyUploaderComponent` for API differences -- test file upload workflows end-to-end - -### 2.4. ng-circle-progress: ~1.7.1 (unchanged) - -peer dep `@angular/core >=14.0.0` — no update needed. - ---- - -## Phase 3 — Build Tooling & Dev Dependencies - -### 3.1. @angular-eslint: ~18.4.0 → ~19.3.0 - -```bash -npm install @angular-eslint/builder@~19.3.0 \ - @angular-eslint/eslint-plugin@~19.3.0 \ - @angular-eslint/eslint-plugin-template@~19.3.0 \ - @angular-eslint/schematics@~19.3.0 \ - @angular-eslint/template-parser@~19.3.0 --save-dev -``` - -peer deps: `eslint ^8.57 || ^9`, `typescript *` — compatible with our eslint@^8.57.0. - -### 3.2. ng-packagr: ^18.0.0 → ^19.0.0 - -```bash -npm install ng-packagr@^19.0.0 --save-dev -``` - -required for building the `request` library with Angular 19's compiler-cli. - -### 3.3. @ionic/angular-toolkit: ^11.0.0 → ^12.3.0 - -```bash -npm install @ionic/angular-toolkit@^12.3.0 --save-dev -``` - -### 3.4. @compodoc/compodoc - -current `^1.1.18` — check if latest version resolves the ajv vulnerability in its transitive deps. if not, may need `overrides` in package.json for ajv. - -### 3.5. eslint ecosystem - -current eslint@^8.57.0 is compatible with `@angular-eslint` v19. no change needed. - -`eslint-plugin-jsdoc@39.3.6` has engine requirement `^14 || ^16 || ^17 || ^18` but we run Node 20. this is a pre-existing warning (not a vulnerability). consider upgrading to `eslint-plugin-jsdoc@^48` if time permits, or accept the engine warning. - ---- - -## Phase 4 — Request Library - -### 4.1. Widen peer dependencies - -update `projects/request/package.json` to accept Angular 19: - -```json -{ - "peerDependencies": { - "@angular/common": "^17.0.0 || ^18.0.0 || ^19.0.0", - "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0" - } -} -``` - -### 4.2. Rebuild - -```bash -npm run prebuildv3 # builds request library -``` - -verify no compilation errors from the Angular 19 compiler. - ---- - -## Phase 5 — Code Changes & Migration - -### 5.1. Angular 19 automatic migrations - -`ng update` may apply these migrations automatically: -- **standalone components default:** Angular 19 makes `standalone: true` the default for new components. existing components with `standalone: false` or no `standalone` property continue working unchanged. -- **signal-based inputs/outputs:** Angular 19 promotes signal-based `input()` and `output()` over `@Input()` and `@Output()`. this is opt-in and NOT required for the upgrade. defer to a future PR. -- **`@if`/`@for`/`@switch` syntax:** Angular 19 continues supporting both `*ngIf`/`*ngFor` and the new `@if`/`@for` control flow. no forced migration. -- **inject() function:** Angular 19 encourages `inject()` over constructor injection. this is opt-in. defer to a future PR. - -### 5.2. Known breaking changes in Angular 19 - -review and fix as needed: - -1. **`afterRender` / `afterNextRender` phase changes:** these APIs changed to use a single callback with explicit phases. check if any code uses these. - -2. **`HttpClientModule` deprecation:** Angular 19 deprecates `HttpClientModule` in favor of `provideHttpClient()`. this is a deprecation warning, not a removal — existing code still works. - -3. **stricter type checking in templates:** Angular 19 may surface new template type errors. run `ng build` and fix any new type errors. - -4. **`APP_INITIALIZER` deprecation:** replaced by `provideAppInitializer()`. check if the app uses `APP_INITIALIZER` and migrate if needed. - -5. **`@defer` blocks:** new feature, no migration needed. - -### 5.3. Uppy v5 API changes - -review and update as needed: -- `UppyUploaderService` — verify plugin registration API -- `UppyUploaderComponent` — verify template integration -- filestack-related uppy plugins if any (deprioritize per user decision) - -### 5.4. apollo-angular v8 API changes - -review and update as needed: -- `ApolloService` / `ApolloModule` usage -- `Apollo.use()`, `Apollo.watchQuery()`, `Apollo.mutate()`, `Apollo.query()` signatures -- check for changes in `ApolloModule.forRoot()` vs standalone provider pattern - ---- - -## Phase 6 — Testing & Validation - -### 6.1. Build verification - -```bash -npm run prebuildv3 # build request library -ng build v3 # production build -``` - -### 6.2. Unit tests - -```bash -npm test # run full test suite -``` - -target: all existing tests pass. fix any failures introduced by the upgrade. - -### 6.3. Lint - -```bash -npm run lint # eslint with angular plugin -``` - -### 6.4. Audit verification - -```bash -npm audit # verify vulnerability count reduction -``` - -target: resolve all high-severity Angular/build-tool vulnerabilities (~45–50 of 58). - -### 6.5. Manual testing checklist - -- [ ] login flow (staging) -- [ ] assessment creation, save, submit -- [ ] file upload via uppy -- [ ] rich text editor (quill) -- [ ] chat functionality -- [ ] activity/topic navigation -- [ ] review flow -- [ ] i18n rendering - -### 6.6. Save test output - -```bash -# save full test run output -npm test > ./output/angular-19-upgrade-tests.log 2>&1 - -# save audit results -npm audit > ./output/angular-19-upgrade-audit.log 2>&1 -``` - ---- - -## Vulnerabilities Addressed - -### Resolved by Angular 19 upgrade (~45–50 vulns) - -| Root Cause | Vulns | How Resolved | -|------------|-------|-------------| -| `@angular/core` <= 18.2.14 (XSS, XSRF) | ~15 | `@angular/core` ^19.0.0 | -| `@angular/compiler` <= 18.2.14 (XSS) | ~10 | `@angular/compiler` ^19.0.0 | -| `@angular/common` <= 19.2.15 (XSRF) | ~8 | `@angular/common` ^19.0.0 | -| esbuild <= 0.24.2 (dev server leak) | ~3 | via `@angular/build` v19 | -| rollup 4.0–4.58 (path traversal) | ~1 | via `@angular/build` v19 | -| webpack 5.49–5.104 (SSRF) | ~2 | via `@angular-devkit/build-angular` v19 | -| serialize-javascript <= 7.0.2 (RCE) | ~1 | via `copy-webpack-plugin` in build-angular v19 | -| vite (transitive via esbuild) | ~1 | via `@angular/build` v19 | -| ajv 7–8.17.1 (ReDoS) | ~5 | via `@angular-devkit/core` v19 | -| tar <= 7.5.10 (in cacache) | ~2 | via updated cacache in Angular 19 deps | -| tmp <= 0.2.3 (symlink write) | ~2 | via `@angular/cli` v19 | - -### NOT resolved (out of scope) - -| Root Cause | Vulns | Reason | -|------------|-------|--------| -| `aws-sdk` v2 in `serverless@^3` | ~2 | dev/deploy-only; serverless v4 upgrade deferred | -| `tar` in `serverless@^3` | ~2 | dev/deploy-only; serverless v4 upgrade deferred | -| `file-type` in `filestack-js` | ~2 | filestack slated for deprecation; acceptedisk | -| `file-type` in `@serverless/utils` | ~1 | dev-only transitive dep | - ---- - -## Out of Scope - -1. **Serverless v3 → v4 upgrade** — deferred. `serverless` and `aws-sdk` vulnerabilities are dev/deploy-only tools, not shipped to end users. accepted risk. -2. **Filestack vulnerabilities** — `filestack-js` has a transitive `file-type` vulnerability. filestack is being deprecated from the app. no investment in fixing. -3. **Signal-based inputs/outputs migration** — Angular 19 feature. opt-in, not required. defer to a separate PR. -4. **Standalone component migration** — Angular 19 defaults new components to standalone. existing components continue working. defer to a separate PR. -5. **`inject()` function migration** — Angular 19 feature. opt-in, not required. defer. -6. **Remaining `.toPromise()` migration** — 22 call sites identified in the 17→18 upgrade doc still use deprecated `.toPromise()`. defer to a separate PR. - ---- - -## Risks & Rollback - -| Risk | Mitigation | -|------|-----------| -| apollo-angular v8 API breaking changes | test all GraphQL operations; keep v7 as fallback | -| uppy v5 breaking changes in file upload | test upload flows thoroughly; can pin @uppy/angular@0.7.0 with `overrides` as fallback | -| TypeScript 5.6 stricter checks | incremental fix of any new type errors | -| ngx-quill v27 regressions | minimal risk — usually just peer dep bump | -| CI build failures | run full CI pipeline before merging | - -**Rollback plan:** revert to the pre-upgrade commit on `angular-eos-upgrades-prerelease` branch. all changes are confined to `package.json`, `package-lock.json`, and targeted source fixes. - ---- - -## Progress Tracking - -### Implementation Checklist - -- [ ] **Phase 1:** Angular 18 → 19 framework packages - - [ ] run `ng update @angular/core@19 @angular/cli@19` - - [ ] update remaining `@angular/*` packages - - [ ] upgrade TypeScript to ~5.6.3 - - [ ] upgrade `@types/node` to ^20 - - [ ] verify zone.js compatibility - - [ ] resolve any `ng update` migration warnings -- [ ] **Phase 2:** Companion libraries - - [ ] `apollo-angular` ^7 → ^8 - - [ ] `ngx-quill` ^26 → ^27 - - [ ] `@uppy/angular` ^0.7 → ^1.1 + uppy ecosystem v5 -- [ ] **Phase 3:** Build tooling - - [ ] `@angular-eslint/*` → ~19.3.0 - - [ ] `ng-packagr` → ^19.0.0 - - [ ] `@ionic/angular-toolkit` → ^12.3.0 - - [ ] `@angular-devkit/build-angular` → ^19.0.0 - - [ ] `@angular-devkit/architect` → ~0.1902.0 -- [ ] **Phase 4:** Request library - - [ ] widen peer deps to include ^19.0.0 - - [ ] rebuild and verify -- [ ] **Phase 5:** Code fixes - - [ ] fix any new TypeScript / template errors - - [ ] update uppy service/component if API changed - - [ ] update apollo-angular usage if API changed - - [ ] fix any Angular 19 deprecation warnings -- [ ] **Phase 6:** Validation - - [ ] `npm run prebuildv3` succeeds - - [ ] `ng build v3` succeeds - - [ ] `npm test` passes - - [ ] `npm run lint` passes - - [ ] `npm audit` shows reduced vulnerability count - - [ ] manual testing on staging diff --git a/package-lock.json b/package-lock.json index 5fd76e181..4a21f92b3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,22 +8,29 @@ "name": "practera-app-v2", "version": "3.2.1", "dependencies": { - "@angular/animations": "^19.0.0", - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0", - "@angular/forms": "^19.0.0", - "@angular/platform-browser": "^19.0.0", - "@angular/platform-browser-dynamic": "^19.0.0", - "@angular/router": "^19.0.0", + "@angular/animations": "^17.3.12", + "@angular/common": "^17.3.12", + "@angular/core": "^17.3.12", + "@angular/forms": "^17.3.12", + "@angular/platform-browser": "^17.3.12", + "@angular/platform-browser-dynamic": "^17.3.12", + "@angular/router": "^17.3.12", "@apollo/client": "^3.10.8", "@ffmpeg/core": "^0.12.10", "@ffmpeg/ffmpeg": "^0.12.15", "@ffmpeg/util": "^0.12.2", - "@ionic/angular": "^8.0.0", - "@uppy/angular": "^1.1.0", - "@uppy/core": "^5.2.0", - "@uppy/dashboard": "^5.1.1", - "apollo-angular": "^8.0.0", + "@ionic/angular": "^7.8.6", + "@ionic/storage": "^4.0.0", + "@uppy/angular": "^0.7.0", + "@uppy/core": "^4.4.4", + "@uppy/dashboard": "^4.3.3", + "@uppy/drag-drop": "^4.1.2", + "@uppy/progress-bar": "^4.2.1", + "@uppy/remote-sources": "^2.3.2", + "@uppy/status-bar": "^4.1.3", + "@uppy/xhr-upload": "^4.3.3", + "angular2-text-mask": "^9.0.0", + "apollo-angular": "^6.0.0", "color-convert": "^2.0.1", "core-js": "^3.21.1", "dayjs": "^1.11.10", @@ -35,7 +42,8 @@ "lodash-es": "^4.17.21", "moment": "^2.29.4", "ng-circle-progress": "~1.7.1", - "ngx-quill": "^27.0.0", + "ng-intercom": "^8.0.2", + "ngx-quill": "^25.3.2", "plyr": "^3.6.12", "pusher-js": "^4.4.0", "quill": "^2.0.2", @@ -44,29 +52,29 @@ "rxjs": "~7.8.0", "ts-md5": "^1.3.1", "tslib": "^2.3.0", - "uppy": "^5.2.3", - "zone.js": "~0.15.0" + "uppy": "^4.14.0", + "zone.js": "~0.14.8" }, "devDependencies": { - "@angular-devkit/architect": "~0.1902.0", - "@angular-devkit/build-angular": "^19.0.0", - "@angular-eslint/builder": "~19.3.0", - "@angular-eslint/eslint-plugin": "~19.3.0", - "@angular-eslint/eslint-plugin-template": "~19.3.0", - "@angular-eslint/schematics": "~19.3.0", - "@angular-eslint/template-parser": "~19.3.0", - "@angular/cli": "^19.0.0", - "@angular/compiler": "^19.0.0", - "@angular/compiler-cli": "^19.0.0", - "@angular/language-service": "^19.0.0", - "@angular/localize": "^19.0.0", + "@angular-devkit/architect": "~0.1703.16", + "@angular-devkit/build-angular": "^17.3.16", + "@angular-eslint/builder": "~17.5.2", + "@angular-eslint/eslint-plugin": "~17.5.2", + "@angular-eslint/eslint-plugin-template": "~17.5.2", + "@angular-eslint/schematics": "~17.5.2", + "@angular-eslint/template-parser": "~17.5.2", + "@angular/cli": "^17.3.16", + "@angular/compiler": "~17.3.12", + "@angular/compiler-cli": "^17.3.12", + "@angular/language-service": "~17.3.12", + "@angular/localize": "^17.3.12", "@compodoc/compodoc": "^1.1.18", - "@ionic/angular-toolkit": "^12.3.0", + "@ionic/angular-toolkit": "^9.0.0", "@types/jasmine": "~4.3.0", "@types/jasminewd2": "~2.0.10", "@types/lodash": "^4.14.178", "@types/new-relic-browser": "^0.1212.1", - "@types/node": "^20.0.0", + "@types/node": "^16.11.35", "@types/pusher-js": "^4.2.2", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", @@ -91,11 +99,11 @@ "karma-junit-reporter": "~2.0.1", "karma-ng-html2js-preprocessor": "^1.0.0", "karma-sonarqube-unit-reporter": "0.0.23", - "ng-packagr": "^19.0.0", + "ng-packagr": "^17.3.0", "serverless": "^3.38.0", "serverless-certificate-creator": "^1.6.0", "ts-node": "~10.9.0", - "typescript": "~5.6.3" + "typescript": "~5.4.5" } }, "node_modules/@aduh95/viz.js": { @@ -105,6 +113,8 @@ }, "node_modules/@ampproject/remapping": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -116,37 +126,32 @@ } }, "node_modules/@angular-devkit/architect": { - "version": "0.1902.22", + "version": "0.1703.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1703.17.tgz", + "integrity": "sha512-LD6po8lGP2FI7WbnsSxtvpiIi+FYL0aNfteunkT+7po9jUNflBEYHA64UWNO56u7ryKNdbuiN8/TEh7FEUnmCw==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.22", + "@angular-devkit/core": "17.3.17", "rxjs": "7.8.1" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "node": "^18.13.0 || >=20.9.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" } }, - "node_modules/@angular-devkit/architect/node_modules/rxjs": { - "version": "7.8.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/@angular-devkit/build-angular": { - "version": "19.2.22", + "version": "17.3.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-17.3.17.tgz", + "integrity": "sha512-0kLVwjLZ5v4uIaG0K6sHJxxppS0bvjNmxHkbybU8FBW3r5MOBQh/ApsiCQKQQ8GBrQz9qSJvLJH8lsb/uR8aPQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1902.22", - "@angular-devkit/build-webpack": "0.1902.22", - "@angular-devkit/core": "19.2.22", - "@angular/build": "19.2.22", + "@angular-devkit/architect": "0.1703.17", + "@angular-devkit/build-webpack": "0.1703.17", + "@angular-devkit/core": "17.3.17", "@babel/core": "7.26.10", "@babel/generator": "7.26.10", "@babel/helper-annotate-as-pure": "7.25.9", @@ -156,71 +161,78 @@ "@babel/plugin-transform-runtime": "7.26.10", "@babel/preset-env": "7.26.9", "@babel/runtime": "7.26.10", - "@discoveryjs/json-ext": "0.6.3", - "@ngtools/webpack": "19.2.22", - "@vitejs/plugin-basic-ssl": "1.2.0", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "17.3.17", + "@vitejs/plugin-basic-ssl": "1.1.0", "ansi-colors": "4.1.3", - "autoprefixer": "10.4.20", - "babel-loader": "9.2.1", + "autoprefixer": "10.4.18", + "babel-loader": "9.1.3", + "babel-plugin-istanbul": "6.1.1", "browserslist": "^4.21.5", - "copy-webpack-plugin": "12.0.2", - "css-loader": "7.1.2", - "esbuild-wasm": "0.25.4", - "fast-glob": "3.3.3", - "http-proxy-middleware": "3.0.5", - "istanbul-lib-instrument": "6.0.3", - "jsonc-parser": "3.3.1", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.22", + "css-loader": "6.10.0", + "esbuild-wasm": "0.20.1", + "fast-glob": "3.3.2", + "http-proxy-middleware": "2.0.8", + "https-proxy-agent": "7.0.4", + "inquirer": "9.2.15", + "jsonc-parser": "3.2.1", "karma-source-map-support": "1.4.0", - "less": "4.2.2", - "less-loader": "12.2.0", + "less": "4.2.0", + "less-loader": "11.1.0", "license-webpack-plugin": "4.0.2", - "loader-utils": "3.3.1", - "mini-css-extract-plugin": "2.9.2", - "open": "10.1.0", + "loader-utils": "3.2.1", + "magic-string": "0.30.8", + "mini-css-extract-plugin": "2.8.1", + "mrmime": "2.0.0", + "open": "8.4.2", "ora": "5.4.1", - "picomatch": "4.0.2", - "piscina": "4.8.0", - "postcss": "8.5.2", + "parse5-html-rewriting-stream": "7.0.0", + "picomatch": "4.0.1", + "piscina": "4.4.0", + "postcss": "8.4.35", "postcss-loader": "8.1.1", "resolve-url-loader": "5.0.0", "rxjs": "7.8.1", - "sass": "1.85.0", - "sass-loader": "16.0.5", - "semver": "7.7.1", + "sass": "1.71.1", + "sass-loader": "14.1.1", + "semver": "7.6.0", "source-map-loader": "5.0.0", "source-map-support": "0.5.21", - "terser": "5.39.0", + "terser": "5.29.1", "tree-kill": "1.2.2", - "tslib": "2.8.1", - "webpack": "5.105.0", - "webpack-dev-middleware": "7.4.2", - "webpack-dev-server": "5.2.2", - "webpack-merge": "6.0.1", + "tslib": "2.6.2", + "vite": "~5.4.17", + "watchpack": "2.4.0", + "webpack": "5.94.0", + "webpack-dev-middleware": "6.1.2", + "webpack-dev-server": "4.15.1", + "webpack-merge": "5.10.0", "webpack-subresource-integrity": "5.1.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "node": "^18.13.0 || >=20.9.0", "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", "yarn": ">= 1.13.0" }, "optionalDependencies": { - "esbuild": "0.25.4" + "esbuild": "0.20.1" }, "peerDependencies": { - "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0", - "@angular/localize": "^19.0.0 || ^19.2.0-next.0", - "@angular/platform-server": "^19.0.0 || ^19.2.0-next.0", - "@angular/service-worker": "^19.0.0 || ^19.2.0-next.0", - "@angular/ssr": "^19.2.22", - "@web/test-runner": "^0.20.0", + "@angular/compiler-cli": "^17.0.0", + "@angular/localize": "^17.0.0", + "@angular/platform-server": "^17.0.0", + "@angular/service-worker": "^17.0.0", + "@web/test-runner": "^0.18.0", "browser-sync": "^3.0.2", "jest": "^29.5.0", "jest-environment-jsdom": "^29.5.0", "karma": "^6.3.0", - "ng-packagr": "^19.0.0 || ^19.2.0-next.0", + "ng-packagr": "^17.0.0", "protractor": "^7.0.0", - "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "typescript": ">=5.5 <5.9" + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=5.2 <5.5" }, "peerDependenciesMeta": { "@angular/localize": { @@ -232,9 +244,6 @@ "@angular/service-worker": { "optional": true }, - "@angular/ssr": { - "optional": true - }, "@web/test-runner": { "optional": true }, @@ -261,404 +270,870 @@ } } }, - "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { - "version": "7.8.1", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-devkit/build-webpack": { - "version": "0.1902.22", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], "dev": true, "license": "MIT", - "dependencies": { - "@angular-devkit/architect": "0.1902.22", - "rxjs": "7.8.1" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "webpack": "^5.30.0", - "webpack-dev-server": "^5.0.2" + "node": ">=12" } }, - "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { - "version": "7.8.1", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-devkit/core": { - "version": "19.2.22", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.2", - "rxjs": "7.8.1", - "source-map": "0.7.4" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@angular-devkit/core/node_modules/rxjs": { - "version": "7.8.1", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-devkit/schematics": { - "version": "19.2.22", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@angular-devkit/core": "19.2.22", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "5.4.1", - "rxjs": "7.8.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=12" } }, - "node_modules/@angular-devkit/schematics/node_modules/rxjs": { - "version": "7.8.1", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.1.0" + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-eslint/builder": { - "version": "19.3.0", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@angular-devkit/architect": ">= 0.1900.0 < 0.2000.0", - "@angular-devkit/core": ">= 19.0.0 < 20.0.0" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-eslint/bundled-angular-compiler": { - "version": "19.3.0", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], "dev": true, - "license": "MIT" + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } }, - "node_modules/@angular-eslint/eslint-plugin": { - "version": "19.3.0", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.3.0", - "@angular-eslint/utils": "19.3.0" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-eslint/eslint-plugin-template": { - "version": "19.3.0", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], "dev": true, "license": "MIT", - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.3.0", - "@angular-eslint/utils": "19.3.0", - "aria-query": "5.3.2", - "axobject-query": "4.1.0" - }, - "peerDependencies": { - "@typescript-eslint/types": "^7.11.0 || ^8.0.0", - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-eslint/schematics": { - "version": "19.3.0", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@angular-devkit/core": ">= 19.0.0 < 20.0.0", - "@angular-devkit/schematics": ">= 19.0.0 < 20.0.0", - "@angular-eslint/eslint-plugin": "19.3.0", - "@angular-eslint/eslint-plugin-template": "19.3.0", - "ignore": "7.0.3", - "semver": "7.7.1", - "strip-json-comments": "3.1.1" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-eslint/template-parser": { - "version": "19.3.0", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], "dev": true, "license": "MIT", - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.3.0", - "eslint-scope": "^8.0.2" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular-eslint/utils": { - "version": "19.3.0", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], "dev": true, "license": "MIT", - "dependencies": { - "@angular-eslint/bundled-angular-compiler": "19.3.0" - }, - "peerDependencies": { - "@typescript-eslint/utils": "^7.11.0 || ^8.0.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": "*" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/@angular/animations": { - "version": "19.2.20", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, "license": "MIT", - "dependencies": { - "tslib": "^2.3.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/common": "19.2.20", - "@angular/core": "19.2.20" + "node": ">=12" } }, - "node_modules/@angular/build": { - "version": "19.2.22", + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], "dev": true, "license": "MIT", - "dependencies": { - "@ampproject/remapping": "2.3.0", - "@angular-devkit/architect": "0.1902.22", - "@babel/core": "7.26.10", - "@babel/helper-annotate-as-pure": "7.25.9", - "@babel/helper-split-export-declaration": "7.24.7", - "@babel/plugin-syntax-import-attributes": "7.26.0", - "@inquirer/confirm": "5.1.6", - "@vitejs/plugin-basic-ssl": "1.2.0", - "beasties": "0.3.2", - "browserslist": "^4.23.0", - "esbuild": "0.25.4", - "fast-glob": "3.3.3", - "https-proxy-agent": "7.0.6", - "istanbul-lib-instrument": "6.0.3", - "listr2": "8.2.5", - "magic-string": "0.30.17", - "mrmime": "2.0.1", - "parse5-html-rewriting-stream": "7.0.0", - "picomatch": "4.0.2", - "piscina": "4.8.0", - "rollup": "4.59.0", - "sass": "1.85.0", - "semver": "7.7.1", - "source-map-support": "0.5.21", - "vite": "6.4.1", - "watchpack": "2.4.2" - }, - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/@types/node": { + "version": "25.0.8", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.0.8.tgz", + "integrity": "sha512-powIePYMmC3ibL0UJ2i2s0WIbq6cg6UyVFQxSCpaPxxzAaziRfimGivjdF943sSGV6RADVbk0Nvlm5P/FB44Zg==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" + } + }, + "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", + "integrity": "sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==", + "dev": true, + "engines": { + "node": ">=14.6.0" + }, + "peerDependencies": { + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular/node_modules/vite": { + "version": "5.4.21", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", + "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" }, "optionalDependencies": { - "lmdb": "3.2.6" + "fsevents": "~2.3.3" }, "peerDependencies": { - "@angular/compiler": "^19.0.0 || ^19.2.0-next.0", - "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0", - "@angular/localize": "^19.0.0 || ^19.2.0-next.0", - "@angular/platform-server": "^19.0.0 || ^19.2.0-next.0", - "@angular/service-worker": "^19.0.0 || ^19.2.0-next.0", - "@angular/ssr": "^19.2.22", - "karma": "^6.4.0", - "less": "^4.2.0", - "ng-packagr": "^19.0.0 || ^19.2.0-next.0", - "postcss": "^8.4.0", - "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", - "typescript": ">=5.5 <5.9" + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" }, "peerDependenciesMeta": { - "@angular/localize": { - "optional": true - }, - "@angular/platform-server": { + "@types/node": { "optional": true }, - "@angular/service-worker": { + "less": { "optional": true }, - "@angular/ssr": { + "lightningcss": { "optional": true }, - "karma": { + "sass": { "optional": true }, - "less": { + "sass-embedded": { "optional": true }, - "ng-packagr": { + "stylus": { "optional": true }, - "postcss": { + "sugarss": { "optional": true }, - "tailwindcss": { + "terser": { "optional": true } } }, - "node_modules/@angular/cli": { - "version": "19.2.22", + "node_modules/@angular-devkit/build-angular/node_modules/vite/node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "@angular-devkit/architect": "0.1902.22", - "@angular-devkit/core": "19.2.22", - "@angular-devkit/schematics": "19.2.22", - "@inquirer/prompts": "7.3.2", - "@listr2/prompt-adapter-inquirer": "2.0.18", - "@schematics/angular": "19.2.22", - "@yarnpkg/lockfile": "1.1.0", - "ini": "5.0.0", - "jsonc-parser": "3.3.1", - "listr2": "8.2.5", - "npm-package-arg": "12.0.2", - "npm-pick-manifest": "10.0.0", - "pacote": "20.0.0", - "resolve": "1.22.10", - "semver": "7.7.1", - "symbol-observable": "4.0.0", - "yargs": "17.7.2" - }, "bin": { - "ng": "bin/ng.js" + "esbuild": "bin/esbuild" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - } - }, - "node_modules/@angular/common": { - "version": "19.2.20", + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/vite/node_modules/postcss": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "nanoid": "^3.3.8", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" - }, - "peerDependencies": { - "@angular/core": "19.2.20", - "rxjs": "^6.5.3 || ^7.4.0" + "node": "^10 || ^12 || >=14" } }, - "node_modules/@angular/compiler": { - "version": "19.2.20", + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1703.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1703.17.tgz", + "integrity": "sha512-81RJe/WFQ1QOJA9du+jK41KaaWXmEWt3frtj9eseWSr+d+Ebt0JMblzM12A70qm7LoUvG48hSiimm7GmkzV3rw==", + "dev": true, "license": "MIT", "dependencies": { - "tslib": "^2.3.0" + "@angular-devkit/architect": "0.1703.17", + "rxjs": "7.8.1" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" } }, - "node_modules/@angular/compiler-cli": { - "version": "19.2.20", + "node_modules/@angular-devkit/core": { + "version": "17.3.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-17.3.17.tgz", + "integrity": "sha512-7aNVqS3rOGsSZYAOO44xl2KURwaoOP+EJhJs+LqOGOFpok2kd8YLf4CAMUossMF4H7HsJpgKwYqGrV5eXunrpw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "7.26.9", - "@jridgewell/sourcemap-codec": "^1.4.14", - "chokidar": "^4.0.0", - "convert-source-map": "^1.5.1", - "reflect-metadata": "^0.2.0", - "semver": "^7.0.0", - "tslib": "^2.3.0", - "yargs": "^17.2.1" - }, - "bin": { - "ng-xi18n": "bundles/src/bin/ng_xi18n.js", - "ngc": "bundles/src/bin/ngc.js", - "ngcc": "bundles/ngcc/index.js" + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.1", + "picomatch": "4.0.1", + "rxjs": "7.8.1", + "source-map": "0.7.4" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" }, "peerDependencies": { - "@angular/compiler": "19.2.20", - "typescript": ">=5.5 <5.9" + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core": { - "version": "7.26.9", + "node_modules/@angular-devkit/schematics": { + "version": "17.3.17", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-17.3.17.tgz", + "integrity": "sha512-ZXsIJXZm0I0dNu1BqmjfEtQhnzqoupUHHZb4GHm5NeQHBFZctQlkkNxLUU27GVeBUwFgEmP7kFgSLlMPTGSL5g==", "dev": true, "license": "MIT", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@angular-devkit/core": "17.3.17", + "jsonc-parser": "3.2.1", + "magic-string": "0.30.8", + "ora": "5.4.1", + "rxjs": "7.8.1" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", + "node_modules/@angular-eslint/builder": { + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-17.5.3.tgz", + "integrity": "sha512-DoPCwt8qp5oMkfxY8V3wygf6/E7zzgXkPCwTRhIelklfpB3nYwLnbRSD8G5hueAU4eyASKiIuhR79E996AuUSw==", "dev": true, - "license": "MIT" + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } }, - "node_modules/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-17.5.3.tgz", + "integrity": "sha512-x9jZ6mME9wxumErPGonWERXX/9TJ7mzEkQhOKt3BxBFm0sy9XQqLMAenp1PBSg3RF3rH7EEVdB2+jb75RtHp0g==", + "dev": true + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-17.5.3.tgz", + "integrity": "sha512-2gMRZ+SkiygrPDtCJwMfjmwIFOcvxxC4NRX/MqRo6udsa0gtqPrc8acRbwrmAXlullmhzmaeUfkHpGDSzW8pFw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "17.5.3", + "@angular-eslint/utils": "17.5.3", + "@typescript-eslint/utils": "7.11.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template": { + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-17.5.3.tgz", + "integrity": "sha512-RkRFagxqBPV2xdNyeQQROUm6I1Izto1Z3Wy73lCk2zq1RhVgbznniH/epmOIE8PMkHmMKmZ765FV++J/90p4Ig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "17.5.3", + "@angular-eslint/utils": "17.5.3", + "@typescript-eslint/type-utils": "7.11.0", + "@typescript-eslint/utils": "7.11.0", + "aria-query": "5.3.0", + "axobject-query": "4.0.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/schematics": { + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-17.5.3.tgz", + "integrity": "sha512-a0MlOjNLIM18l/66S+CzhANQR3QH3jDUa1MC50E4KBf1mwjQyfqd6RdfbOTMDjgFlPrfB+5JvoWOHHGj7FFM1A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/eslint-plugin": "17.5.3", + "@angular-eslint/eslint-plugin-template": "17.5.3", + "ignore": "5.3.1", + "strip-json-comments": "3.1.1", + "tmp": "0.2.3" + }, + "peerDependencies": { + "@angular/cli": ">= 17.0.0 < 18.0.0" + } + }, + "node_modules/@angular-eslint/template-parser": { + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-17.5.3.tgz", + "integrity": "sha512-NYybOsMkJUtFOW2JWALicipq0kK5+jGwA1MYyRoXjdbDlXltHUb9qkXj7p0fE6uRutBGXDl4288s8g/fZCnAIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "17.5.3", + "eslint-scope": "^8.0.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/utils": { + "version": "17.5.3", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-17.5.3.tgz", + "integrity": "sha512-0nNm1FUOLhVHrdK2PP5dZCYYVmTIkEJ4CmlwpuC4JtCLbD5XAHQpY/ZW5Ff5n1b7KfJt1Zy//jlhkkIaw3LaBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "17.5.3", + "@typescript-eslint/utils": "7.11.0" + }, + "peerDependencies": { + "eslint": "^7.20.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular/animations": { + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-17.3.12.tgz", + "integrity": "sha512-9hsdWF4gRRcVJtPcCcYLaX1CIyM9wUu6r+xRl6zU5hq8qhl35hig6ounz7CXFAzLf0WDBdM16bPHouVGaG76lg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.12" + } + }, + "node_modules/@angular/cli": { + "version": "17.3.17", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-17.3.17.tgz", + "integrity": "sha512-FgOvf9q5d23Cpa7cjP1FYti/v8S1FTm8DEkW3TY8lkkoxh3isu28GFKcLD1p/XF3yqfPkPVHToOFla5QwsEgBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/architect": "0.1703.17", + "@angular-devkit/core": "17.3.17", + "@angular-devkit/schematics": "17.3.17", + "@schematics/angular": "17.3.17", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "ini": "4.1.2", + "inquirer": "9.2.15", + "jsonc-parser": "3.2.1", + "npm-package-arg": "11.0.1", + "npm-pick-manifest": "9.0.0", + "open": "8.4.2", + "ora": "5.4.1", + "pacote": "17.0.6", + "resolve": "1.22.8", + "semver": "7.6.0", + "symbol-observable": "4.0.0", + "yargs": "17.7.2" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/common": { + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-17.3.12.tgz", + "integrity": "sha512-vabJzvrx76XXFrm1RJZ6o/CyG32piTB/1sfFfKHdlH1QrmArb8It4gyk9oEjZ1IkAD0HvBWlfWmn+T6Vx3pdUw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-17.3.12.tgz", + "integrity": "sha512-vwI8oOL/gM+wPnptOVeBbMfZYwzRxQsovojZf+Zol9szl0k3SZ3FycWlxxXZGFu3VIEfrP6pXplTmyODS/Lt1w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/core": "17.3.12" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-17.3.12.tgz", + "integrity": "sha512-1F8M7nWfChzurb7obbvuE7mJXlHtY1UG58pcwcomVtpPb+kPavgAO8OEvJHYBMV+bzSxkXt5UIwL9lt9jHUxZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "7.23.9", + "@jridgewell/sourcemap-codec": "^1.4.14", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "reflect-metadata": "^0.2.0", + "semver": "^7.0.0", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/index.js" + }, + "engines": { + "node": "^18.13.0 || >=20.9.0" + }, + "peerDependencies": { + "@angular/compiler": "17.3.12", + "typescript": ">=5.2 <5.5" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core/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/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "dev": true, "license": "ISC", @@ -667,51 +1142,57 @@ } }, "node_modules/@angular/core": { - "version": "19.2.20", - "license": "MIT", + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-17.3.12.tgz", + "integrity": "sha512-MuFt5yKi161JmauUta4Dh0m8ofwoq6Ino+KoOtkYMBGsSx+A7dSm+DUxxNwdj7+DNyg3LjVGCFgBFnq4g8z06A==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { "rxjs": "^6.5.3 || ^7.4.0", - "zone.js": "~0.15.0" + "zone.js": "~0.14.0" } }, "node_modules/@angular/forms": { - "version": "19.2.20", - "license": "MIT", + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-17.3.12.tgz", + "integrity": "sha512-tV6r12Q3yEUlXwpVko4E+XscunTIpPkLbaiDn/MTL3Vxi2LZnsLgHyd/i38HaHN+e/H3B0a1ToSOhV5wf3ay4Q==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "19.2.20", - "@angular/core": "19.2.20", - "@angular/platform-browser": "19.2.20", + "@angular/common": "17.3.12", + "@angular/core": "17.3.12", + "@angular/platform-browser": "17.3.12", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@angular/language-service": { - "version": "19.2.20", + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-17.3.12.tgz", + "integrity": "sha512-MVmEXonXwdhFtIpU4q8qbXHsrAsdTjZcPPuWCU0zXVQ+VaB/y6oF7BVpmBtfyBcBCums1guEncPP+AZVvulXmQ==", "dev": true, "license": "MIT", "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0" } }, "node_modules/@angular/localize": { - "version": "19.2.20", + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/localize/-/localize-17.3.12.tgz", + "integrity": "sha512-b7J7zY/CgJhFVPtmu/pEjefU5SHuTy7lQgX6kTrJPaUSJ5i578R17xr4SwrWe7G4jzQwO6GXZZd17a62uNRyOA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "7.26.9", + "@babel/core": "7.23.9", "@types/babel__core": "7.20.5", - "fast-glob": "3.3.3", + "fast-glob": "3.3.2", "yargs": "^17.2.1" }, "bin": { @@ -720,28 +1201,30 @@ "localize-translate": "tools/bundles/src/translate/cli.js" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/compiler": "19.2.20", - "@angular/compiler-cli": "19.2.20" + "@angular/compiler": "17.3.12", + "@angular/compiler-cli": "17.3.12" } }, "node_modules/@angular/localize/node_modules/@babel/core": { - "version": "7.26.9", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.9.tgz", + "integrity": "sha512-5q0175NOjddqpvvzU+kDiSOAk4PfdO6FvwCWoQ6RO7rTzEe8vlo+4HVfcnAREhD4npMs0e9uZypjTwzZPCf/cw==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.9", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.9", - "@babel/parser": "^7.26.9", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.9", - "@babel/types": "^7.26.9", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.9", + "@babel/parser": "^7.23.9", + "@babel/template": "^7.23.9", + "@babel/traverse": "^7.23.9", + "@babel/types": "^7.23.9", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -758,8 +1241,9 @@ }, "node_modules/@angular/localize/node_modules/convert-source-map": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "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/@angular/localize/node_modules/semver": { "version": "6.3.1", @@ -770,18 +1254,19 @@ } }, "node_modules/@angular/platform-browser": { - "version": "19.2.20", - "license": "MIT", + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-17.3.12.tgz", + "integrity": "sha512-DYY04ptWh/ulMHzd+y52WCE8QnEYGeIiW3hEIFjCN8z0kbIdFdUtEB0IK5vjNL3ejyhUmphcpeT5PYf3YXtqWQ==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/animations": "19.2.20", - "@angular/common": "19.2.20", - "@angular/core": "19.2.20" + "@angular/animations": "17.3.12", + "@angular/common": "17.3.12", + "@angular/core": "17.3.12" }, "peerDependenciesMeta": { "@angular/animations": { @@ -790,40 +1275,43 @@ } }, "node_modules/@angular/platform-browser-dynamic": { - "version": "19.2.20", - "license": "MIT", + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-17.3.12.tgz", + "integrity": "sha512-DQwV7B2x/DRLRDSisngZRdLqHdYbbrqZv2Hmu4ZbnNYaWPC8qvzgE/0CvY+UkDat3nCcsfwsMnlDeB6TL7/IaA==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "19.2.20", - "@angular/compiler": "19.2.20", - "@angular/core": "19.2.20", - "@angular/platform-browser": "19.2.20" + "@angular/common": "17.3.12", + "@angular/compiler": "17.3.12", + "@angular/core": "17.3.12", + "@angular/platform-browser": "17.3.12" } }, "node_modules/@angular/router": { - "version": "19.2.20", - "license": "MIT", + "version": "17.3.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-17.3.12.tgz", + "integrity": "sha512-dg7PHBSW9fmPKTVzwvHEeHZPZdpnUqW/U7kj8D29HTP9ur8zZnx9QcnbplwPeYb8yYa62JMnZSEel2X4PxdYBg==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": "^18.13.0 || >=20.9.0" }, "peerDependencies": { - "@angular/common": "19.2.20", - "@angular/core": "19.2.20", - "@angular/platform-browser": "19.2.20", + "@angular/common": "17.3.12", + "@angular/core": "17.3.12", + "@angular/platform-browser": "17.3.12", "rxjs": "^6.5.3 || ^7.4.0" } }, "node_modules/@apollo/client": { - "version": "3.14.1", - "license": "MIT", + "version": "3.11.9", + "resolved": "https://registry.npmjs.org/@apollo/client/-/client-3.11.9.tgz", + "integrity": "sha512-aQ6VL+CPO1G4DLS/3FelfA+nl+ZQCP5qeN1NS6J8xh9wumUM/2W1ccneqCYmbTMDtoSunxE1BV2W6u0FF4axwQ==", "dependencies": { "@graphql-typed-document-node/core": "^3.1.1", "@wry/caches": "^1.0.0", @@ -834,6 +1322,7 @@ "optimism": "^0.18.0", "prop-types": "^15.7.2", "rehackt": "^0.1.0", + "response-iterator": "^0.2.6", "symbol-observable": "^4.0.0", "ts-invariant": "^0.10.3", "tslib": "^2.3.0", @@ -841,9 +1330,9 @@ }, "peerDependencies": { "graphql": "^15.0.0 || ^16.0.0", - "graphql-ws": "^5.5.5 || ^6.0.3", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc", + "graphql-ws": "^5.5.5", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0", "subscriptions-transport-ws": "^0.9.0 || ^0.11.0" }, "peerDependenciesMeta": { @@ -861,16 +1350,10 @@ } } }, - "node_modules/@arr/every": { - "version": "1.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", + "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -884,6 +1367,8 @@ }, "node_modules/@aws-crypto/crc32c": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", + "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -892,10 +1377,28 @@ "tslib": "^2.6.2" } }, + "node_modules/@aws-crypto/ie11-detection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", + "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/ie11-detection/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/@aws-crypto/sha1-browser": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", + "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@aws-crypto/supports-web-crypto": "^5.2.0", "@aws-crypto/util": "^5.2.0", @@ -907,8 +1410,9 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", + "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, @@ -918,8 +1422,9 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", + "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@smithy/is-array-buffer": "^2.2.0", "tslib": "^2.6.2" @@ -930,8 +1435,9 @@ }, "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", + "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@smithy/util-buffer-from": "^2.2.0", "tslib": "^2.6.2" @@ -942,7237 +1448,15502 @@ }, "node_modules/@aws-crypto/sha256-browser": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", + "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", + "@aws-crypto/ie11-detection": "^3.0.0", + "@aws-crypto/sha256-js": "^3.0.0", + "@aws-crypto/supports-web-crypto": "^3.0.0", + "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", + "node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/sha256-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", + "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "@aws-crypto/util": "^3.0.0", + "@aws-sdk/types": "^3.222.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", + "node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/supports-web-crypto": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", + "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "tslib": "^1.11.1" } }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", + "node_modules/@aws-crypto/sha256-browser/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/sha256-browser/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/@aws-crypto/sha256-js": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", + "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/util": "^5.2.0", + "@aws-crypto/util": "^3.0.0", "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" + "tslib": "^1.11.1" + } + }, + "node_modules/@aws-crypto/sha256-js/node_modules/@aws-crypto/util": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", + "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.222.0", + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/sha256-js/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/@aws-crypto/supports-web-crypto": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", + "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "tslib": "^1.11.1" } }, + "node_modules/@aws-crypto/supports-web-crypto/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, "node_modules/@aws-crypto/util": { "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", + "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" + "@aws-sdk/util-utf8-browser": "^3.0.0", + "tslib": "^1.11.1" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", + "node_modules/@aws-crypto/util/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true, + "license": "0BSD" + }, + "node_modules/@aws-sdk/client-api-gateway": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-api-gateway/-/client-api-gateway-3.985.0.tgz", + "integrity": "sha512-bHwF0eU8ZRCklassRgTdfEULPSwxuMlc2JwqkQ0jWCxxXtwTj6WaYSQRMQjzfNQyfFYs9mUAOLm2ZkzFZwG0Ww==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-node": "^3.972.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-sdk-api-gateway": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/client-sso": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.985.0.tgz", + "integrity": "sha512-81J8iE8MuXhdbMfIz4sWFj64Pe41bFi/uqqmqOC5SlGv+kwoyLsyKS/rH2tW2t5buih4vTUxskRjxlqikTD4oQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-api-gateway": { - "version": "3.1016.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.5.tgz", + "integrity": "sha512-LxJ9PEO4gKPXzkufvIESUysykPIdrV7+Ocb9yAhbhJLE4TiAYqbCVUE+VuKP1leGR1bBfjWjYgSV5MxprlX3mQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-node": "^3.972.25", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-sdk-api-gateway": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-cloudformation": { - "version": "3.1016.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.7.tgz", + "integrity": "sha512-L2uOGtvp2x3bTcxFTpSM+GkwFIPd8pHfGWO1764icMbo7e5xJh0nfhx1UwkXLnwvocTNEf8A7jISZLYjUSNaTg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-node": "^3.972.25", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-cognito-identity-provider": { - "version": "3.1016.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.5.tgz", + "integrity": "sha512-SdDTYE6jkARzOeL7+kudMIM4DaFnP5dZVeatzw849k4bSXDdErDS188bgeNzc/RA2WGrlEpsqHUKP6G7sVXhZg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-node": "^3.972.25", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-utf8": "^4.2.2", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-login": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-eventbridge": { - "version": "3.1016.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.6.tgz", + "integrity": "sha512-DZ3CnAAtSVtVz+G+ogqecaErMLgzph4JH5nYbHoBMgBkwTUV+SUcjsjOJwdBJTHu3Dm6l5LBYekZoU2nDqQk2A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-node": "^3.972.25", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/signature-v4-multi-region": "^3.996.12", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-utf8": "^4.2.2", + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-ini": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-iam": { - "version": "3.1016.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.5.tgz", + "integrity": "sha512-HDKF3mVbLnuqGg6dMnzBf1VUOywE12/N286msI9YaK9mEIzdsGCtLTvrDhe3Up0R9/hGFbB+9l21/TwF5L1C6g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-node": "^3.972.25", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-lambda": { - "version": "3.1016.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.5.tgz", + "integrity": "sha512-8urj3AoeNeQisjMmMBhFeiY2gxt6/7wQQbEGun0YV/OaOOiXrIudTIEYF8ZfD+NQI6X1FY5AkRsx6O/CaGiybA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-node": "^3.972.25", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/eventstream-serde-browser": "^4.2.12", - "@smithy/eventstream-serde-config-resolver": "^4.3.12", - "@smithy/eventstream-serde-node": "^4.2.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", + "@aws-sdk/client-sso": "3.985.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/token-providers": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-s3": { - "version": "3.1016.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.5.tgz", + "integrity": "sha512-OK3cULuJl6c+RcDZfPpaK5o3deTOnKZbxm7pzhFNGA3fI2hF9yDih17fGRazJzGGWaDVlR9ejZrpDef4DJCEsw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha1-browser": "5.2.0", - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-node": "^3.972.25", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", - "@aws-sdk/middleware-expect-continue": "^3.972.8", - "@aws-sdk/middleware-flexible-checksums": "^3.974.4", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-location-constraint": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-sdk-s3": "^3.972.24", - "@aws-sdk/middleware-ssec": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/signature-v4-multi-region": "^3.996.12", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/eventstream-serde-browser": "^4.2.12", - "@smithy/eventstream-serde-config-resolver": "^4.3.12", - "@smithy/eventstream-serde-node": "^4.2.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-blob-browser": "^4.2.13", - "@smithy/hash-node": "^4.2.12", - "@smithy/hash-stream-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/md5-js": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/client-sts": { - "version": "3.1016.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-node": "^3.972.25", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-utf8": "^4.2.2", + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/core": { - "version": "3.973.24", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/xml-builder": "^3.972.15", - "@smithy/core": "^3.23.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/signature-v4": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-utf8": "^4.2.2", + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.5", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.22", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.7.tgz", + "integrity": "sha512-HUD+geASjXSCyL/DHPQc/Ua7JhldTcIglVAoCV8kiVm99IaFSlAbTvEnyhZwdE6bdFyTL+uIaWLaCFSRsglZBQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@smithy/core": "^3.22.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.24", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/types": "^3.973.6", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/property-provider": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/util-stream": "^4.5.20", + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.24", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/token-providers": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.985.0.tgz", + "integrity": "sha512-+hwpHZyEq8k+9JL2PkE60V93v2kNhUIv7STFt+EAez1UJsJOQDhc5LpzEX66pNjclI5OTwBROs/DhJjC/BtMjQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/credential-provider-env": "^3.972.22", - "@aws-sdk/credential-provider-http": "^3.972.24", - "@aws-sdk/credential-provider-login": "^3.972.24", - "@aws-sdk/credential-provider-process": "^3.972.22", - "@aws-sdk/credential-provider-sso": "^3.972.24", - "@aws-sdk/credential-provider-web-identity": "^3.972.24", - "@aws-sdk/nested-clients": "^3.996.14", - "@aws-sdk/types": "^3.973.6", - "@smithy/credential-provider-imds": "^4.2.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.24", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/nested-clients": "^3.996.14", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.25", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-endpoints": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.985.0.tgz", + "integrity": "sha512-vth7UfGSUR3ljvaq8V4Rc62FsM7GUTH/myxPWkaEgOrprz1/Pc72EgTXxj+cPPPDAfHFIpjhkB7T7Td0RJx+BA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.22", - "@aws-sdk/credential-provider-http": "^3.972.24", - "@aws-sdk/credential-provider-ini": "^3.972.24", - "@aws-sdk/credential-provider-process": "^3.972.22", - "@aws-sdk/credential-provider-sso": "^3.972.24", - "@aws-sdk/credential-provider-web-identity": "^3.972.24", - "@aws-sdk/types": "^3.973.6", - "@smithy/credential-provider-imds": "^4.2.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.22", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" } }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.24", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.5.tgz", + "integrity": "sha512-GsUDF+rXyxDZkkJxUsDxnA67FG+kc5W1dnloCFLl6fWzceevsCYzJpASBzT+BPjwUgREE6FngfJYYYMQUY5fZQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/nested-clients": "^3.996.14", - "@aws-sdk/token-providers": "3.1015.0", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.24", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/nested-clients": "^3.996.14", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-config-provider": "^4.2.2", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.4", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/crc64-nvme": "^3.972.5", - "@aws-sdk/types": "^3.973.6", - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-api-gateway": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.24", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/core": "^3.23.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/signature-v4": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.25", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@smithy/core": "^3.23.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-retry": "^4.2.12", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.996.14", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.11", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-utf8": "^4.2.2", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.9", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/config-resolver": "^4.4.13", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.12", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.24", - "@aws-sdk/types": "^3.973.6", - "@smithy/protocol-http": "^5.3.12", - "@smithy/signature-v4": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.1015.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/core": "^3.973.24", - "@aws-sdk/nested-clients": "^3.996.14", - "@aws-sdk/types": "^3.973.6", - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/types": { - "version": "3.973.6", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.972.3", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.5", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-endpoints": "^3.3.3", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.5", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "tslib": "^2.6.2" + "@smithy/types": "^4.12.0" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/types": "^3.973.6", - "@smithy/types": "^4.13.1", - "bowser": "^2.11.0", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.11", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.25", - "@aws-sdk/types": "^3.973.6", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-config-provider": "^4.2.2", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.15", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "fast-xml-parser": "5.5.8", + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", "tslib": "^2.6.2" }, "engines": { - "node": ">=20.0.0" + "node": ">=18.0.0" } }, - "node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser": { - "version": "5.5.8", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.0" + "tslib": "^2.6.2" }, - "bin": { - "fxparser": "src/cli/cli.js" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@aws/lambda-invoke-store": { - "version": "0.2.4", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/compat-data": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/core": { - "version": "7.26.10", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.10", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.10", - "@babel/parser": "^7.26.10", - "@babel/template": "^7.26.9", - "@babel/traverse": "^7.26.10", - "@babel/types": "^7.26.10", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": ">=18.0.0" } }, - "node_modules/@babel/core/node_modules/convert-source-map": { - "version": "2.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/generator": { - "version": "7.26.10", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/parser": "^7.26.10", - "@babel/types": "^7.26.10", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^3.0.2" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.25.9", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.25.9" + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "browserslist": "^4.24.0", - "lru-cache": "^5.1.1", - "semver": "^6.3.1" + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/helper-replace-supers": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/traverse": "^7.28.6", - "semver": "^6.3.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.27.3" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.28.5", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "regexpu-core": "^6.3.1", - "semver": "^6.3.1" + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.27.3" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", + "node_modules/@aws-sdk/client-api-gateway/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.8", + "node_modules/@aws-sdk/client-cloudformation": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudformation/-/client-cloudformation-3.985.0.tgz", + "integrity": "sha512-TN99DU4QOn5ERv1+uKF15L0D2h38GtON2g+oVo2/ICPYr9q6AiQu55TVOL7TJDGv9+0w/HOsCYu/MVpRYyL/bQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "debug": "^4.4.3", - "lodash.debounce": "^4.0.8", - "resolve": "^1.22.11" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-node": "^3.972.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.8", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-define-polyfill-provider/node_modules/resolve": { - "version": "1.22.11", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/client-sso": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.985.0.tgz", + "integrity": "sha512-81J8iE8MuXhdbMfIz4sWFj64Pe41bFi/uqqmqOC5SlGv+kwoyLsyKS/rH2tW2t5buih4vTUxskRjxlqikTD4oQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "is-core-module": "^2.16.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-globals": { - "version": "7.28.0", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.28.5", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.5.tgz", + "integrity": "sha512-LxJ9PEO4gKPXzkufvIESUysykPIdrV7+Ocb9yAhbhJLE4TiAYqbCVUE+VuKP1leGR1bBfjWjYgSV5MxprlX3mQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/traverse": "^7.28.5", - "@babel/types": "^7.28.5" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.7.tgz", + "integrity": "sha512-L2uOGtvp2x3bTcxFTpSM+GkwFIPd8pHfGWO1764icMbo7e5xJh0nfhx1UwkXLnwvocTNEf8A7jISZLYjUSNaTg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.5.tgz", + "integrity": "sha512-SdDTYE6jkARzOeL7+kudMIM4DaFnP5dZVeatzw849k4bSXDdErDS188bgeNzc/RA2WGrlEpsqHUKP6G7sVXhZg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-login": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.6.tgz", + "integrity": "sha512-DZ3CnAAtSVtVz+G+ogqecaErMLgzph4JH5nYbHoBMgBkwTUV+SUcjsjOJwdBJTHu3Dm6l5LBYekZoU2nDqQk2A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.27.1" + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-ini": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.5.tgz", + "integrity": "sha512-HDKF3mVbLnuqGg6dMnzBf1VUOywE12/N286msI9YaK9mEIzdsGCtLTvrDhe3Up0R9/hGFbB+9l21/TwF5L1C6g==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.5.tgz", + "integrity": "sha512-8urj3AoeNeQisjMmMBhFeiY2gxt6/7wQQbEGun0YV/OaOOiXrIudTIEYF8ZfD+NQI6X1FY5AkRsx6O/CaGiybA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.1", - "@babel/helper-wrap-function": "^7.27.1", - "@babel/traverse": "^7.27.1" + "@aws-sdk/client-sso": "3.985.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/token-providers": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-remap-async-to-generator/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.5.tgz", + "integrity": "sha512-OK3cULuJl6c+RcDZfPpaK5o3deTOnKZbxm7pzhFNGA3fI2hF9yDih17fGRazJzGGWaDVlR9ejZrpDef4DJCEsw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.27.3" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.28.5", - "@babel/helper-optimise-call-expression": "^7.27.1", - "@babel/traverse": "^7.28.6" + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/traverse": "^7.27.1", - "@babel/types": "^7.27.1" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-split-export-declaration": { - "version": "7.24.7", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.24.7" + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-string-parser": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.7.tgz", + "integrity": "sha512-HUD+geASjXSCyL/DHPQc/Ua7JhldTcIglVAoCV8kiVm99IaFSlAbTvEnyhZwdE6bdFyTL+uIaWLaCFSRsglZBQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@smithy/core": "^3.22.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/token-providers": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.985.0.tgz", + "integrity": "sha512-+hwpHZyEq8k+9JL2PkE60V93v2kNhUIv7STFt+EAez1UJsJOQDhc5LpzEX66pNjclI5OTwBROs/DhJjC/BtMjQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/helpers": { - "version": "7.29.2", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-endpoints": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.985.0.tgz", + "integrity": "sha512-vth7UfGSUR3ljvaq8V4Rc62FsM7GUTH/myxPWkaEgOrprz1/Pc72EgTXxj+cPPPDAfHFIpjhkB7T7Td0RJx+BA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/parser": { - "version": "7.29.2", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.29.0" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { - "version": "7.28.5", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.5.tgz", + "integrity": "sha512-GsUDF+rXyxDZkkJxUsDxnA67FG+kc5W1dnloCFLl6fWzceevsCYzJpASBzT+BPjwUgREE6FngfJYYYMQUY5fZQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0" + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-transform-optional-chaining": "^7.27.1" + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/traverse": "^7.28.6" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.21.0-placeholder-for-preset-env.2", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.26.0", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-syntax-unicode-sets-regex": { - "version": "7.18.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.26.8", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-remap-async-to-generator": "^7.25.9", - "@babel/traverse": "^7.26.8" + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.25.9", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.25.9", - "@babel/helper-remap-async-to-generator": "^7.25.9" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-replace-supers": "^7.28.6", - "@babel/traverse": "^7.28.6" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.27.3" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/template": "^7.28.6" + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.28.5", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.28.5" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/types": "^4.12.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-dynamic-import": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-export-namespace-from": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-compilation-targets": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/traverse": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.29.0" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-transforms": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cloudformation/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity-provider/-/client-cognito-identity-provider-3.985.0.tgz", + "integrity": "sha512-DJMgEO2yETfINlupLLlhbUmKhjaEZ0QFf/FV0MDFavyV+cnfvsaMdUsCj5/MOl7rTKCbNpMYGSw/rbwz9kt0vg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-node": "^3.972.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/client-sso": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.985.0.tgz", + "integrity": "sha512-81J8iE8MuXhdbMfIz4sWFj64Pe41bFi/uqqmqOC5SlGv+kwoyLsyKS/rH2tW2t5buih4vTUxskRjxlqikTD4oQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.6" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-replace-supers": "^7.27.1" + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.5.tgz", + "integrity": "sha512-LxJ9PEO4gKPXzkufvIESUysykPIdrV7+Ocb9yAhbhJLE4TiAYqbCVUE+VuKP1leGR1bBfjWjYgSV5MxprlX3mQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.7.tgz", + "integrity": "sha512-L2uOGtvp2x3bTcxFTpSM+GkwFIPd8pHfGWO1764icMbo7e5xJh0nfhx1UwkXLnwvocTNEf8A7jISZLYjUSNaTg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.27.7", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.5.tgz", + "integrity": "sha512-SdDTYE6jkARzOeL7+kudMIM4DaFnP5dZVeatzw849k4bSXDdErDS188bgeNzc/RA2WGrlEpsqHUKP6G7sVXhZg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-login": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.6.tgz", + "integrity": "sha512-DZ3CnAAtSVtVz+G+ogqecaErMLgzph4JH5nYbHoBMgBkwTUV+SUcjsjOJwdBJTHu3Dm6l5LBYekZoU2nDqQk2A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-ini": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.5.tgz", + "integrity": "sha512-HDKF3mVbLnuqGg6dMnzBf1VUOywE12/N286msI9YaK9mEIzdsGCtLTvrDhe3Up0R9/hGFbB+9l21/TwF5L1C6g==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-private-property-in-object/node_modules/@babel/helper-annotate-as-pure": { - "version": "7.27.3", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.5.tgz", + "integrity": "sha512-8urj3AoeNeQisjMmMBhFeiY2gxt6/7wQQbEGun0YV/OaOOiXrIudTIEYF8ZfD+NQI6X1FY5AkRsx6O/CaGiybA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/types": "^7.27.3" + "@aws-sdk/client-sso": "3.985.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/token-providers": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.5.tgz", + "integrity": "sha512-OK3cULuJl6c+RcDZfPpaK5o3deTOnKZbxm7pzhFNGA3fI2hF9yDih17fGRazJzGGWaDVlR9ejZrpDef4DJCEsw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.26.10", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.7.tgz", + "integrity": "sha512-HUD+geASjXSCyL/DHPQc/Ua7JhldTcIglVAoCV8kiVm99IaFSlAbTvEnyhZwdE6bdFyTL+uIaWLaCFSRsglZBQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-plugin-utils": "^7.26.5", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "semver": "^6.3.1" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@smithy/core": "^3.22.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/token-providers": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.985.0.tgz", + "integrity": "sha512-+hwpHZyEq8k+9JL2PkE60V93v2kNhUIv7STFt+EAez1UJsJOQDhc5LpzEX66pNjclI5OTwBROs/DhJjC/BtMjQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/util-endpoints": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.985.0.tgz", + "integrity": "sha512-vth7UfGSUR3ljvaq8V4Rc62FsM7GUTH/myxPWkaEgOrprz1/Pc72EgTXxj+cPPPDAfHFIpjhkB7T7Td0RJx+BA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=20.0.0" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.5.tgz", + "integrity": "sha512-GsUDF+rXyxDZkkJxUsDxnA67FG+kc5W1dnloCFLl6fWzceevsCYzJpASBzT+BPjwUgREE6FngfJYYYMQUY5fZQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=20.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.27.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.27.1", - "@babel/helper-plugin-utils": "^7.27.1" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/preset-env": { - "version": "7.26.9", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.26.8", - "@babel/helper-compilation-targets": "^7.26.5", - "@babel/helper-plugin-utils": "^7.26.5", - "@babel/helper-validator-option": "^7.25.9", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.26.0", - "@babel/plugin-syntax-import-attributes": "^7.26.0", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.25.9", - "@babel/plugin-transform-async-generator-functions": "^7.26.8", - "@babel/plugin-transform-async-to-generator": "^7.25.9", - "@babel/plugin-transform-block-scoped-functions": "^7.26.5", - "@babel/plugin-transform-block-scoping": "^7.25.9", - "@babel/plugin-transform-class-properties": "^7.25.9", - "@babel/plugin-transform-class-static-block": "^7.26.0", - "@babel/plugin-transform-classes": "^7.25.9", - "@babel/plugin-transform-computed-properties": "^7.25.9", - "@babel/plugin-transform-destructuring": "^7.25.9", - "@babel/plugin-transform-dotall-regex": "^7.25.9", - "@babel/plugin-transform-duplicate-keys": "^7.25.9", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-dynamic-import": "^7.25.9", - "@babel/plugin-transform-exponentiation-operator": "^7.26.3", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-for-of": "^7.26.9", - "@babel/plugin-transform-function-name": "^7.25.9", - "@babel/plugin-transform-json-strings": "^7.25.9", - "@babel/plugin-transform-literals": "^7.25.9", - "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", - "@babel/plugin-transform-member-expression-literals": "^7.25.9", - "@babel/plugin-transform-modules-amd": "^7.25.9", - "@babel/plugin-transform-modules-commonjs": "^7.26.3", - "@babel/plugin-transform-modules-systemjs": "^7.25.9", - "@babel/plugin-transform-modules-umd": "^7.25.9", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", - "@babel/plugin-transform-new-target": "^7.25.9", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", - "@babel/plugin-transform-numeric-separator": "^7.25.9", - "@babel/plugin-transform-object-rest-spread": "^7.25.9", - "@babel/plugin-transform-object-super": "^7.25.9", - "@babel/plugin-transform-optional-catch-binding": "^7.25.9", - "@babel/plugin-transform-optional-chaining": "^7.25.9", - "@babel/plugin-transform-parameters": "^7.25.9", - "@babel/plugin-transform-private-methods": "^7.25.9", - "@babel/plugin-transform-private-property-in-object": "^7.25.9", - "@babel/plugin-transform-property-literals": "^7.25.9", - "@babel/plugin-transform-regenerator": "^7.25.9", - "@babel/plugin-transform-regexp-modifiers": "^7.26.0", - "@babel/plugin-transform-reserved-words": "^7.25.9", - "@babel/plugin-transform-shorthand-properties": "^7.25.9", - "@babel/plugin-transform-spread": "^7.25.9", - "@babel/plugin-transform-sticky-regex": "^7.25.9", - "@babel/plugin-transform-template-literals": "^7.26.8", - "@babel/plugin-transform-typeof-symbol": "^7.26.7", - "@babel/plugin-transform-unicode-escapes": "^7.25.9", - "@babel/plugin-transform-unicode-property-regex": "^7.25.9", - "@babel/plugin-transform-unicode-regex": "^7.25.9", - "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.11.0", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "core-js-compat": "^3.40.0", - "semver": "^6.3.1" + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.6-no-external-plugins", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@babel/runtime": { - "version": "7.26.10", - "license": "MIT", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "regenerator-runtime": "^0.14.0" + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/runtime-corejs3": { - "version": "7.29.2", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "core-js-pure": "^3.48.0" + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/template": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/types": "^7.28.6" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/traverse": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", - "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", - "debug": "^4.3.1" + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.29.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@babel/types": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-string-parser": "^7.27.1", - "@babel/helper-validator-identifier": "^7.28.5" + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@colors/colors": { - "version": "1.5.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=0.1.90" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc": { - "version": "1.2.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", "dev": true, - "hasInstallScript": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@angular-devkit/schematics": "21.1.0", - "@babel/core": "7.28.6", - "@babel/plugin-transform-private-methods": "7.28.6", - "@babel/preset-env": "7.28.6", - "@compodoc/live-server": "^1.2.3", - "@compodoc/ngd-transformer": "^2.1.3", - "@polka/send-type": "^0.5.2", - "body-parser": "^2.2.2", - "bootstrap.native": "^5.1.6", - "cheerio": "1.1.2", - "chokidar": "^5.0.0", - "colors": "1.4.0", - "commander": "^14.0.2", - "cosmiconfig": "^9.0.0", - "decache": "^4.6.2", - "es6-shim": "^0.35.8", - "fancy-log": "^2.0.0", - "fast-glob": "^3.3.3", - "fs-extra": "^11.3.3", - "glob": "^13.0.0", - "handlebars": "^4.7.8", - "html-entities": "^2.6.0", - "i18next": "25.7.4", - "json5": "^2.2.3", - "lodash": "^4.17.21", - "loglevel": "^1.9.2", - "loglevel-plugin-prefix": "^0.8.4", - "lunr": "^2.3.9", - "marked": "7.0.3", - "minimist": "^1.2.8", - "neotraverse": "^0.6.18", - "opencollective-postinstall": "^2.0.3", - "os-name": "4.0.1", - "picocolors": "^1.1.1", - "polka": "^0.5.2", - "prismjs": "^1.30.0", - "semver": "^7.7.3", - "sirv": "^3.0.2", - "svg-pan-zoom": "^3.6.2", - "tablesort": "^5.7.0", - "ts-morph": "^27.0.2", - "uuid": "11.1.0", - "vis-network": "^10.0.2" - }, - "bin": { - "compodoc": "bin/index-cli.js" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/core": { - "version": "21.1.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ajv": "8.17.1", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.3", - "rxjs": "7.8.2", - "source-map": "0.7.6" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^5.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/schematics": { - "version": "21.1.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@angular-devkit/core": "21.1.0", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.21", - "ora": "9.0.0", - "rxjs": "7.8.2" + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@babel/core": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/code-frame": "^7.28.6", - "@babel/generator": "^7.28.6", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helpers": "^7.28.6", - "@babel/parser": "^7.28.6", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6", - "@jridgewell/remapping": "^2.3.5", - "convert-source-map": "^2.0.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.3", - "semver": "^6.3.1" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@babel/generator": { - "version": "7.29.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "@jridgewell/gen-mapping": "^0.3.12", - "@jridgewell/trace-mapping": "^0.3.28", - "jsesc": "^3.0.2" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.29.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.29.0" + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-remap-async-to-generator": "^7.27.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@babel/preset-env": { - "version": "7.28.6", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.28.5", - "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.27.1", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.27.1", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.27.1", - "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.28.6", - "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", - "@babel/plugin-syntax-import-assertions": "^7.28.6", - "@babel/plugin-syntax-import-attributes": "^7.28.6", - "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", - "@babel/plugin-transform-arrow-functions": "^7.27.1", - "@babel/plugin-transform-async-generator-functions": "^7.28.6", - "@babel/plugin-transform-async-to-generator": "^7.28.6", - "@babel/plugin-transform-block-scoped-functions": "^7.27.1", - "@babel/plugin-transform-block-scoping": "^7.28.6", - "@babel/plugin-transform-class-properties": "^7.28.6", - "@babel/plugin-transform-class-static-block": "^7.28.6", - "@babel/plugin-transform-classes": "^7.28.6", - "@babel/plugin-transform-computed-properties": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", - "@babel/plugin-transform-dotall-regex": "^7.28.6", - "@babel/plugin-transform-duplicate-keys": "^7.27.1", - "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.28.6", - "@babel/plugin-transform-dynamic-import": "^7.27.1", - "@babel/plugin-transform-explicit-resource-management": "^7.28.6", - "@babel/plugin-transform-exponentiation-operator": "^7.28.6", - "@babel/plugin-transform-export-namespace-from": "^7.27.1", - "@babel/plugin-transform-for-of": "^7.27.1", - "@babel/plugin-transform-function-name": "^7.27.1", - "@babel/plugin-transform-json-strings": "^7.28.6", - "@babel/plugin-transform-literals": "^7.27.1", - "@babel/plugin-transform-logical-assignment-operators": "^7.28.6", - "@babel/plugin-transform-member-expression-literals": "^7.27.1", - "@babel/plugin-transform-modules-amd": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.28.6", - "@babel/plugin-transform-modules-systemjs": "^7.28.5", - "@babel/plugin-transform-modules-umd": "^7.27.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.27.1", - "@babel/plugin-transform-new-target": "^7.27.1", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.28.6", - "@babel/plugin-transform-numeric-separator": "^7.28.6", - "@babel/plugin-transform-object-rest-spread": "^7.28.6", - "@babel/plugin-transform-object-super": "^7.27.1", - "@babel/plugin-transform-optional-catch-binding": "^7.28.6", - "@babel/plugin-transform-optional-chaining": "^7.28.6", - "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/plugin-transform-private-methods": "^7.28.6", - "@babel/plugin-transform-private-property-in-object": "^7.28.6", - "@babel/plugin-transform-property-literals": "^7.27.1", - "@babel/plugin-transform-regenerator": "^7.28.6", - "@babel/plugin-transform-regexp-modifiers": "^7.28.6", - "@babel/plugin-transform-reserved-words": "^7.27.1", - "@babel/plugin-transform-shorthand-properties": "^7.27.1", - "@babel/plugin-transform-spread": "^7.28.6", - "@babel/plugin-transform-sticky-regex": "^7.27.1", - "@babel/plugin-transform-template-literals": "^7.27.1", - "@babel/plugin-transform-typeof-symbol": "^7.27.1", - "@babel/plugin-transform-unicode-escapes": "^7.27.1", - "@babel/plugin-transform-unicode-property-regex": "^7.28.6", - "@babel/plugin-transform-unicode-regex": "^7.27.1", - "@babel/plugin-transform-unicode-sets-regex": "^7.28.6", - "@babel/preset-modules": "0.1.6-no-external-plugins", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", - "core-js-compat": "^3.43.0", - "semver": "^6.3.1" + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/@babel/preset-env/node_modules/semver": { - "version": "6.3.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/ajv": { - "version": "8.17.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/ansi-regex": { - "version": "6.2.2", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/chalk": { - "version": "5.6.2", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/chokidar": { - "version": "5.0.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "readdirp": "^5.0.0" + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 20.19.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/cli-spinners": { - "version": "3.4.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.20" + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/convert-source-map": { - "version": "2.0.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@compodoc/compodoc/node_modules/is-interactive": { - "version": "2.0.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/is-unicode-supported": { - "version": "2.1.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/log-symbols": { - "version": "7.0.1", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "is-unicode-supported": "^2.0.0", - "yoctocolors": "^2.1.1" + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/magic-string": { - "version": "0.30.21", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/ora": { - "version": "9.0.0", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "chalk": "^5.6.2", - "cli-cursor": "^5.0.0", - "cli-spinners": "^3.2.0", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.1.0", - "log-symbols": "^7.0.1", - "stdin-discarder": "^0.2.2", - "string-width": "^8.1.0", - "strip-ansi": "^7.1.2" + "tslib": "^2.6.2" }, "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/picomatch": { - "version": "4.0.3", + "node_modules/@aws-sdk/client-cognito-identity-provider/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/readdirp": { - "version": "5.0.0", + "node_modules/@aws-sdk/client-eventbridge": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-eventbridge/-/client-eventbridge-3.985.0.tgz", + "integrity": "sha512-XutS30/TiKFdT9B+ICqnQ6Mmh3mRiF91E49l4oKKAIbAjVZAvp+cuuRQJ2AXu+pTUyPQtzLXQFKMMDksSFNM8A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 20.19.0" + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-node": "^3.972.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/signature-v4-multi-region": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/semver": { - "version": "7.7.4", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/client-sso": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.985.0.tgz", + "integrity": "sha512-81J8iE8MuXhdbMfIz4sWFj64Pe41bFi/uqqmqOC5SlGv+kwoyLsyKS/rH2tW2t5buih4vTUxskRjxlqikTD4oQ==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/source-map": { - "version": "0.7.6", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 12" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/string-width": { - "version": "8.2.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.5.tgz", + "integrity": "sha512-LxJ9PEO4gKPXzkufvIESUysykPIdrV7+Ocb9yAhbhJLE4TiAYqbCVUE+VuKP1leGR1bBfjWjYgSV5MxprlX3mQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/compodoc/node_modules/strip-ansi": { - "version": "7.2.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.7.tgz", + "integrity": "sha512-L2uOGtvp2x3bTcxFTpSM+GkwFIPd8pHfGWO1764icMbo7e5xJh0nfhx1UwkXLnwvocTNEf8A7jISZLYjUSNaTg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^6.2.2" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server": { - "version": "1.2.3", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.5.tgz", + "integrity": "sha512-SdDTYE6jkARzOeL7+kudMIM4DaFnP5dZVeatzw849k4bSXDdErDS188bgeNzc/RA2WGrlEpsqHUKP6G7sVXhZg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "chokidar": "^3.5.2", - "colors": "1.4.0", - "connect": "^3.7.0", - "cors": "latest", - "event-stream": "4.0.1", - "faye-websocket": "0.11.x", - "http-auth": "4.1.9", - "http-auth-connect": "^1.0.5", - "morgan": "^1.10.0", - "object-assign": "latest", - "open": "8.4.0", - "proxy-middleware": "latest", - "send": "latest", - "serve-index": "^1.9.1" - }, - "bin": { - "live-server": "live-server.js" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-login": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.10.0" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server/node_modules/chokidar": { - "version": "3.6.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.6.tgz", + "integrity": "sha512-DZ3CnAAtSVtVz+G+ogqecaErMLgzph4JH5nYbHoBMgBkwTUV+SUcjsjOJwdBJTHu3Dm6l5LBYekZoU2nDqQk2A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "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" + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-ini": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server/node_modules/define-lazy-prop": { - "version": "2.0.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.5.tgz", + "integrity": "sha512-HDKF3mVbLnuqGg6dMnzBf1VUOywE12/N286msI9YaK9mEIzdsGCtLTvrDhe3Up0R9/hGFbB+9l21/TwF5L1C6g==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server/node_modules/glob-parent": { - "version": "5.1.2", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.5.tgz", + "integrity": "sha512-8urj3AoeNeQisjMmMBhFeiY2gxt6/7wQQbEGun0YV/OaOOiXrIudTIEYF8ZfD+NQI6X1FY5AkRsx6O/CaGiybA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "is-glob": "^4.0.1" + "@aws-sdk/client-sso": "3.985.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/token-providers": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server/node_modules/is-docker": { - "version": "2.2.1", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.5.tgz", + "integrity": "sha512-OK3cULuJl6c+RcDZfPpaK5o3deTOnKZbxm7pzhFNGA3fI2hF9yDih17fGRazJzGGWaDVlR9ejZrpDef4DJCEsw==", "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server/node_modules/is-wsl": { - "version": "2.2.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "is-docker": "^2.0.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server/node_modules/open": { - "version": "8.4.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server/node_modules/picomatch": { - "version": "2.3.2", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@compodoc/live-server/node_modules/readdirp": { - "version": "3.6.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.7.tgz", + "integrity": "sha512-HUD+geASjXSCyL/DHPQc/Ua7JhldTcIglVAoCV8kiVm99IaFSlAbTvEnyhZwdE6bdFyTL+uIaWLaCFSRsglZBQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "picomatch": "^2.2.1" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@smithy/core": "^3.22.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.10.0" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/ngd-core": { - "version": "2.1.1", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ansi-colors": "^4.1.3", - "fancy-log": "^2.0.0", - "typescript": "^5.0.4" + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=20.0.0" } }, - "node_modules/@compodoc/ngd-transformer": { - "version": "2.1.3", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/token-providers": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.985.0.tgz", + "integrity": "sha512-+hwpHZyEq8k+9JL2PkE60V93v2kNhUIv7STFt+EAez1UJsJOQDhc5LpzEX66pNjclI5OTwBROs/DhJjC/BtMjQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@aduh95/viz.js": "3.4.0", - "@compodoc/ngd-core": "~2.1.1", - "dot": "^2.0.0-beta.1", - "fs-extra": "^11.1.1" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=20.0.0" } }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "license": "MIT", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" + "node": ">=20.0.0" } }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "license": "MIT", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/util-endpoints": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.985.0.tgz", + "integrity": "sha512-vth7UfGSUR3ljvaq8V4Rc62FsM7GUTH/myxPWkaEgOrprz1/Pc72EgTXxj+cPPPDAfHFIpjhkB7T7Td0RJx+BA==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.6.3", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.17.0" + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@egjs/hammerjs": { - "version": "2.0.17", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.5.tgz", + "integrity": "sha512-GsUDF+rXyxDZkkJxUsDxnA67FG+kc5W1dnloCFLl6fWzceevsCYzJpASBzT+BPjwUgREE6FngfJYYYMQUY5fZQ==", "dev": true, - "license": "MIT", - "peer": true, + "license": "Apache-2.0", "dependencies": { - "@types/hammerjs": "^2.0.36" + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.8.0" + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.31.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "comment-parser": "1.3.1", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "~3.1.0" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^14 || ^16 || ^17 || ^18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", - "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", - "cpu": [ - "ppc64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", - "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", - "cpu": [ - "arm" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", - "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", - "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.4", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", - "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", - "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", - "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", - "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", - "cpu": [ - "arm" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", - "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", - "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", - "cpu": [ - "ia32" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", - "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", - "cpu": [ - "loong64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", - "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", - "cpu": [ - "mips64el" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", - "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", - "cpu": [ - "ppc64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", - "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", - "cpu": [ - "riscv64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", - "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", - "cpu": [ - "s390x" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", - "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", - "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", - "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", - "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", - "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", - "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", - "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", - "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", - "cpu": [ - "ia32" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.4", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", - "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "eslint-visitor-keys": "^3.4.3" + "tslib": "^2.6.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "node": ">=18.0.0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.14.0", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "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" + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.12", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 4" + "node": ">=18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.5", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "*" + "node": ">=18.0.0" } }, - "node_modules/@eslint/js": { - "version": "8.57.1", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@ffmpeg/core": { - "version": "0.12.10", - "license": "GPL-2.0-or-later", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=16.x" + "node": ">=18.0.0" } }, - "node_modules/@ffmpeg/ffmpeg": { - "version": "0.12.15", - "license": "MIT", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@ffmpeg/types": "^0.12.4" + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18.x" + "node": ">=18.0.0" } }, - "node_modules/@ffmpeg/types": { - "version": "0.12.4", - "license": "MIT", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=16.x" + "node": ">=18.0.0" } }, - "node_modules/@ffmpeg/util": { - "version": "0.12.2", - "license": "MIT", + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18.x" + "node": ">=18.0.0" } }, - "node_modules/@filestack/loader": { - "version": "1.0.9", - "license": "SEE LICENSE IN LICENSE" - }, - "node_modules/@graphql-typed-document-node/core": { - "version": "3.2.0", - "license": "MIT", - "peerDependencies": { - "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + "node_modules/@aws-sdk/client-eventbridge/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.13.0", + "node_modules/@aws-sdk/client-iam": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-iam/-/client-iam-3.985.0.tgz", + "integrity": "sha512-J7ZHwV8OfVlN9WBIUuLQAjSLIKADMvzchqP9JOgAYfn8ygdBzYRIcL55fXym4nwj7xQoao1wMXEXBH51M0I/Pg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@humanwhocodes/object-schema": "^2.0.3", - "debug": "^4.3.1", - "minimatch": "^3.0.5" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-node": "^3.972.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.10.0" + "node": ">=20.0.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.12", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/client-sso": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.985.0.tgz", + "integrity": "sha512-81J8iE8MuXhdbMfIz4sWFj64Pe41bFi/uqqmqOC5SlGv+kwoyLsyKS/rH2tW2t5buih4vTUxskRjxlqikTD4oQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.5", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": "*" + "node": ">=20.0.0" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.5.tgz", + "integrity": "sha512-LxJ9PEO4gKPXzkufvIESUysykPIdrV7+Ocb9yAhbhJLE4TiAYqbCVUE+VuKP1leGR1bBfjWjYgSV5MxprlX3mQ==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=12.22" + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.7.tgz", + "integrity": "sha512-L2uOGtvp2x3bTcxFTpSM+GkwFIPd8pHfGWO1764icMbo7e5xJh0nfhx1UwkXLnwvocTNEf8A7jISZLYjUSNaTg==", "dev": true, - "license": "BSD-3-Clause" + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.5.tgz", + "integrity": "sha512-SdDTYE6jkARzOeL7+kudMIM4DaFnP5dZVeatzw849k4bSXDdErDS188bgeNzc/RA2WGrlEpsqHUKP6G7sVXhZg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-login": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=20.0.0" } }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.6.tgz", + "integrity": "sha512-DZ3CnAAtSVtVz+G+ogqecaErMLgzph4JH5nYbHoBMgBkwTUV+SUcjsjOJwdBJTHu3Dm6l5LBYekZoU2nDqQk2A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-ini": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/confirm": { - "version": "5.1.6", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.5.tgz", + "integrity": "sha512-HDKF3mVbLnuqGg6dMnzBf1VUOywE12/N286msI9YaK9mEIzdsGCtLTvrDhe3Up0R9/hGFbB+9l21/TwF5L1C6g==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.1.7", - "@inquirer/type": "^3.0.4" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/core": { - "version": "10.3.2", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.5.tgz", + "integrity": "sha512-8urj3AoeNeQisjMmMBhFeiY2gxt6/7wQQbEGun0YV/OaOOiXrIudTIEYF8ZfD+NQI6X1FY5AkRsx6O/CaGiybA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" + "@aws-sdk/client-sso": "3.985.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/token-providers": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.5.tgz", + "integrity": "sha512-OK3cULuJl6c+RcDZfPpaK5o3deTOnKZbxm7pzhFNGA3fI2hF9yDih17fGRazJzGGWaDVlR9ejZrpDef4DJCEsw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=20.0.0" } }, - "node_modules/@inquirer/input": { - "version": "4.3.1", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.7.tgz", + "integrity": "sha512-HUD+geASjXSCyL/DHPQc/Ua7JhldTcIglVAoCV8kiVm99IaFSlAbTvEnyhZwdE6bdFyTL+uIaWLaCFSRsglZBQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@smithy/core": "^3.22.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/number": { - "version": "3.0.23", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/password": { - "version": "4.0.23", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/token-providers": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.985.0.tgz", + "integrity": "sha512-+hwpHZyEq8k+9JL2PkE60V93v2kNhUIv7STFt+EAez1UJsJOQDhc5LpzEX66pNjclI5OTwBROs/DhJjC/BtMjQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=20.0.0" } }, - "node_modules/@inquirer/prompts": { - "version": "7.3.2", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/checkbox": "^4.1.2", - "@inquirer/confirm": "^5.1.6", - "@inquirer/editor": "^4.2.7", - "@inquirer/expand": "^4.0.9", - "@inquirer/input": "^4.1.6", - "@inquirer/number": "^3.0.9", - "@inquirer/password": "^4.0.9", - "@inquirer/rawlist": "^4.0.9", - "@inquirer/search": "^3.0.9", - "@inquirer/select": "^4.0.9" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-endpoints": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.985.0.tgz", + "integrity": "sha512-vth7UfGSUR3ljvaq8V4Rc62FsM7GUTH/myxPWkaEgOrprz1/Pc72EgTXxj+cPPPDAfHFIpjhkB7T7Td0RJx+BA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-iam/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.5.tgz", + "integrity": "sha512-GsUDF+rXyxDZkkJxUsDxnA67FG+kc5W1dnloCFLl6fWzceevsCYzJpASBzT+BPjwUgREE6FngfJYYYMQUY5fZQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" + "node": ">=20.0.0" }, "peerDependencies": { - "@types/node": ">=18" + "aws-crt": ">=1.0.0" }, "peerDependenciesMeta": { - "@types/node": { + "aws-crt": { "optional": true } } }, - "node_modules/@inquirer/search": { - "version": "3.2.2", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=18.0.0" } }, - "node_modules/@inquirer/select": { - "version": "4.4.2", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "node": ">=18.0.0" } }, - "node_modules/@inquirer/type": { - "version": "3.0.10", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular": { - "version": "8.8.1", - "license": "MIT", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@ionic/core": "8.8.1", - "ionicons": "^8.0.13", - "jsonc-parser": "^3.0.0", - "tslib": "^2.3.0" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@angular/core": ">=16.0.0", - "@angular/forms": ">=16.0.0", - "@angular/router": ">=16.0.0", - "rxjs": ">=7.5.0", - "zone.js": ">=0.13.0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit": { - "version": "12.3.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@angular-devkit/core": "^20.0.0", - "@angular-devkit/schematics": "^20.0.0", - "@schematics/angular": "^20.0.0" + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/@angular-devkit/core": { - "version": "20.3.21", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ajv": "8.18.0", - "ajv-formats": "3.0.1", - "jsonc-parser": "3.3.1", - "picomatch": "4.0.3", - "rxjs": "7.8.2", - "source-map": "0.7.6" + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" - }, - "peerDependencies": { - "chokidar": "^4.0.0" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/@angular-devkit/schematics": { - "version": "20.3.21", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@angular-devkit/core": "20.3.21", - "jsonc-parser": "3.3.1", - "magic-string": "0.30.17", - "ora": "8.2.0", - "rxjs": "7.8.2" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/@schematics/angular": { - "version": "20.3.21", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@angular-devkit/core": "20.3.21", - "@angular-devkit/schematics": "20.3.21", - "jsonc-parser": "3.3.1" + "tslib": "^2.6.2" }, "engines": { - "node": "^20.19.0 || ^22.12.0 || >=24.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/ansi-regex": { - "version": "6.2.2", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/chalk": { - "version": "5.6.2", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/is-interactive": { - "version": "2.0.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/is-unicode-supported": { - "version": "2.1.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/log-symbols": { - "version": "6.0.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/ora": { - "version": "8.2.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^5.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.2", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0" + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/picomatch": { - "version": "4.0.3", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/source-map": { - "version": "0.7.6", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 12" + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/string-width": { - "version": "7.2.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/@ionic/angular-toolkit/node_modules/strip-ansi": { - "version": "7.2.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^6.2.2" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=18.0.0" } }, - "node_modules/@ionic/core": { - "version": "8.8.1", - "license": "MIT", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@stencil/core": "4.43.0", - "ionicons": "^8.0.13", - "tslib": "^2.1.0" + "@smithy/types": "^4.12.0" }, "engines": { - "node": ">= 16" + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.2.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ansi-regex": "^6.2.2" + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">=18.0.0" } }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "minipass": "^7.0.4" + "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "license": "MIT", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6.0.0" + "node": ">=18.0.0" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jsonjoy.com/base64": { - "version": "1.1.2", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jsonjoy.com/buffers": { - "version": "17.67.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jsonjoy.com/codegen": { - "version": "1.0.0", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-core": { - "version": "4.57.1", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "thingies": "^2.5.0" + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-fsa": { - "version": "4.57.1", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.57.1", - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "thingies": "^2.5.0" + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-node": { - "version": "4.57.1", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-core": "4.57.1", - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "@jsonjoy.com/fs-print": "4.57.1", - "@jsonjoy.com/fs-snapshot": "4.57.1", - "glob-to-regex.js": "^1.0.0", - "thingies": "^2.5.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-node-builtins": { - "version": "4.57.1", + "node_modules/@aws-sdk/client-iam/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jsonjoy.com/fs-node-to-fsa": { - "version": "4.57.1", + "node_modules/@aws-sdk/client-lambda": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-lambda/-/client-lambda-3.985.0.tgz", + "integrity": "sha512-RFQVkOn9wn4LAYBDpOXyN+qY/akpGN1zJrEHkWbE+cXx/ypKo7nRt/r5jSTW2k0MttuI9ViVFemtGn69z22uBA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-fsa": "4.57.1", - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-node": "^3.972.6", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/eventstream-serde-browser": "^4.2.8", + "@smithy/eventstream-serde-config-resolver": "^4.3.8", + "@smithy/eventstream-serde-node": "^4.2.8", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/fs-node-utils": { - "version": "4.57.1", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/client-sso": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.985.0.tgz", + "integrity": "sha512-81J8iE8MuXhdbMfIz4sWFj64Pe41bFi/uqqmqOC5SlGv+kwoyLsyKS/rH2tW2t5buih4vTUxskRjxlqikTD4oQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-builtins": "4.57.1" + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/fs-print": { - "version": "4.57.1", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/fs-node-utils": "4.57.1", - "tree-dump": "^1.1.0" + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot": { - "version": "4.57.1", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.5.tgz", + "integrity": "sha512-LxJ9PEO4gKPXzkufvIESUysykPIdrV7+Ocb9yAhbhJLE4TiAYqbCVUE+VuKP1leGR1bBfjWjYgSV5MxprlX3mQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/buffers": "^17.65.0", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "@jsonjoy.com/json-pack": "^17.65.0", - "@jsonjoy.com/util": "^17.65.0" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/base64": { - "version": "17.67.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.7.tgz", + "integrity": "sha512-L2uOGtvp2x3bTcxFTpSM+GkwFIPd8pHfGWO1764icMbo7e5xJh0nfhx1UwkXLnwvocTNEf8A7jISZLYjUSNaTg==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/codegen": { - "version": "17.67.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.5.tgz", + "integrity": "sha512-SdDTYE6jkARzOeL7+kudMIM4DaFnP5dZVeatzw849k4bSXDdErDS188bgeNzc/RA2WGrlEpsqHUKP6G7sVXhZg==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-login": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pack": { - "version": "17.67.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.6.tgz", + "integrity": "sha512-DZ3CnAAtSVtVz+G+ogqecaErMLgzph4JH5nYbHoBMgBkwTUV+SUcjsjOJwdBJTHu3Dm6l5LBYekZoU2nDqQk2A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/base64": "17.67.0", - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0", - "@jsonjoy.com/json-pointer": "17.67.0", - "@jsonjoy.com/util": "17.67.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-ini": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/json-pointer": { - "version": "17.67.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.5.tgz", + "integrity": "sha512-HDKF3mVbLnuqGg6dMnzBf1VUOywE12/N286msI9YaK9mEIzdsGCtLTvrDhe3Up0R9/hGFbB+9l21/TwF5L1C6g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/util": "17.67.0" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/fs-snapshot/node_modules/@jsonjoy.com/util": { - "version": "17.67.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.5.tgz", + "integrity": "sha512-8urj3AoeNeQisjMmMBhFeiY2gxt6/7wQQbEGun0YV/OaOOiXrIudTIEYF8ZfD+NQI6X1FY5AkRsx6O/CaGiybA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/buffers": "17.67.0", - "@jsonjoy.com/codegen": "17.67.0" + "@aws-sdk/client-sso": "3.985.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/token-providers": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/json-pack": { - "version": "1.21.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.5.tgz", + "integrity": "sha512-OK3cULuJl6c+RcDZfPpaK5o3deTOnKZbxm7pzhFNGA3fI2hF9yDih17fGRazJzGGWaDVlR9ejZrpDef4DJCEsw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/base64": "^1.1.2", - "@jsonjoy.com/buffers": "^1.2.0", - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/json-pointer": "^1.0.2", - "@jsonjoy.com/util": "^1.9.0", - "hyperdyperid": "^1.2.0", - "thingies": "^2.5.0", - "tree-dump": "^1.1.0" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/json-pack/node_modules/@jsonjoy.com/buffers": { - "version": "1.2.1", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", "dev": true, "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/json-pointer": { - "version": "1.0.2", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/codegen": "^1.0.0", - "@jsonjoy.com/util": "^1.9.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.7.tgz", + "integrity": "sha512-HUD+geASjXSCyL/DHPQc/Ua7JhldTcIglVAoCV8kiVm99IaFSlAbTvEnyhZwdE6bdFyTL+uIaWLaCFSRsglZBQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@smithy/core": "^3.22.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/util": { - "version": "1.9.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@jsonjoy.com/buffers": "^1.0.0", - "@jsonjoy.com/codegen": "^1.0.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/token-providers": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.985.0.tgz", + "integrity": "sha512-+hwpHZyEq8k+9JL2PkE60V93v2kNhUIv7STFt+EAez1UJsJOQDhc5LpzEX66pNjclI5OTwBROs/DhJjC/BtMjQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@jsonjoy.com/util/node_modules/@jsonjoy.com/buffers": { - "version": "1.2.1", + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-endpoints": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.985.0.tgz", + "integrity": "sha512-vth7UfGSUR3ljvaq8V4Rc62FsM7GUTH/myxPWkaEgOrprz1/Pc72EgTXxj+cPPPDAfHFIpjhkB7T7Td0RJx+BA==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=10.0" + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/client-lambda/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.5.tgz", + "integrity": "sha512-GsUDF+rXyxDZkkJxUsDxnA67FG+kc5W1dnloCFLl6fWzceevsCYzJpASBzT+BPjwUgREE6FngfJYYYMQUY5fZQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "engines": { + "node": ">=20.0.0" }, "peerDependencies": { - "tslib": "2" + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } } }, - "node_modules/@kwsites/file-exists": { - "version": "1.1.1", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "debug": "^4.1.1" + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@kwsites/promise-deferred": { - "version": "1.1.1", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@listr2/prompt-adapter-inquirer": { - "version": "2.0.18", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@inquirer/type": "^1.5.5" + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" - }, - "peerDependencies": { - "@inquirer/prompts": ">= 3 < 8" } }, - "node_modules/@listr2/prompt-adapter-inquirer/node_modules/@inquirer/type": { - "version": "1.5.5", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "mute-stream": "^1.0.0" + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" + "node": ">=18.0.0" } }, - "node_modules/@listr2/prompt-adapter-inquirer/node_modules/mute-stream": { - "version": "1.0.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=18.0.0" } }, - "node_modules/@lmdb/lmdb-darwin-arm64": { - "version": "3.2.6", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@lmdb/lmdb-darwin-x64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-darwin-x64/-/lmdb-darwin-x64-3.2.6.tgz", - "integrity": "sha512-5BbCumsFLbCi586Bb1lTWQFkekdQUw8/t8cy++Uq251cl3hbDIGEwD9HAwh8H6IS2F6QA9KdKmO136LmipRNkg==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@lmdb/lmdb-linux-arm": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm/-/lmdb-linux-arm-3.2.6.tgz", - "integrity": "sha512-+6XgLpMb7HBoWxXj+bLbiiB4s0mRRcDPElnRS3LpWRzdYSe+gFk5MT/4RrVNqd2MESUDmb53NUXw1+BP69bjiQ==", - "cpu": [ - "arm" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@lmdb/lmdb-linux-arm64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-arm64/-/lmdb-linux-arm64-3.2.6.tgz", - "integrity": "sha512-l5VmJamJ3nyMmeD1ANBQCQqy7do1ESaJQfKPSm2IG9/ADZryptTyCj8N6QaYgIWewqNUrcbdMkJajRQAt5Qjfg==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@lmdb/lmdb-linux-x64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-linux-x64/-/lmdb-linux-x64-3.2.6.tgz", - "integrity": "sha512-nDYT8qN9si5+onHYYaI4DiauDMx24OAiuZAUsEqrDy+ja/3EbpXPX/VAkMV8AEaQhy3xc4dRC+KcYIvOFefJ4Q==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@lmdb/lmdb-win32-x64": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/@lmdb/lmdb-win32-x64/-/lmdb-win32-x64-3.2.6.tgz", - "integrity": "sha512-XlqVtILonQnG+9fH2N3Aytria7P/1fwDgDhl29rde96uH2sLB8CHORIf2PfuLVzFQJ7Uqp8py9AYwr3ZUCFfWg==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { - "version": "3.0.3", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-darwin-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-x64/-/msgpackr-extract-darwin-x64-3.0.3.tgz", - "integrity": "sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm/-/msgpackr-extract-linux-arm-3.0.3.tgz", - "integrity": "sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==", - "cpu": [ - "arm" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-arm64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-arm64/-/msgpackr-extract-linux-arm64-3.0.3.tgz", - "integrity": "sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-linux-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-linux-x64/-/msgpackr-extract-linux-x64-3.0.3.tgz", - "integrity": "sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@msgpackr-extract/msgpackr-extract-win32-x64": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-win32-x64/-/msgpackr-extract-win32-x64-3.0.3.tgz", - "integrity": "sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@napi-rs/nice": { - "version": "1.1.1", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" }, - "optionalDependencies": { - "@napi-rs/nice-android-arm-eabi": "1.1.1", - "@napi-rs/nice-android-arm64": "1.1.1", - "@napi-rs/nice-darwin-arm64": "1.1.1", - "@napi-rs/nice-darwin-x64": "1.1.1", - "@napi-rs/nice-freebsd-x64": "1.1.1", - "@napi-rs/nice-linux-arm-gnueabihf": "1.1.1", - "@napi-rs/nice-linux-arm64-gnu": "1.1.1", - "@napi-rs/nice-linux-arm64-musl": "1.1.1", - "@napi-rs/nice-linux-ppc64-gnu": "1.1.1", - "@napi-rs/nice-linux-riscv64-gnu": "1.1.1", - "@napi-rs/nice-linux-s390x-gnu": "1.1.1", - "@napi-rs/nice-linux-x64-gnu": "1.1.1", - "@napi-rs/nice-linux-x64-musl": "1.1.1", - "@napi-rs/nice-openharmony-arm64": "1.1.1", - "@napi-rs/nice-win32-arm64-msvc": "1.1.1", - "@napi-rs/nice-win32-ia32-msvc": "1.1.1", - "@napi-rs/nice-win32-x64-msvc": "1.1.1" - } - }, - "node_modules/@napi-rs/nice-android-arm-eabi": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm-eabi/-/nice-android-arm-eabi-1.1.1.tgz", - "integrity": "sha512-kjirL3N6TnRPv5iuHw36wnucNqXAO46dzK9oPb0wj076R5Xm8PfUVA9nAFB5ZNMmfJQJVKACAPd/Z2KYMppthw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-android-arm64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-android-arm64/-/nice-android-arm64-1.1.1.tgz", - "integrity": "sha512-blG0i7dXgbInN5urONoUCNf+DUEAavRffrO7fZSeoRMJc5qD+BJeNcpr54msPF6qfDD6kzs9AQJogZvT2KD5nw==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-darwin-arm64": { - "version": "1.1.1", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-darwin-x64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-darwin-x64/-/nice-darwin-x64-1.1.1.tgz", - "integrity": "sha512-dGoEBnVpsdcC+oHHmW1LRK5eiyzLwdgNQq3BmZIav+9/5WTZwBYX7r5ZkQC07Nxd3KHOCkgbHSh4wPkH1N1LiQ==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-freebsd-x64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-freebsd-x64/-/nice-freebsd-x64-1.1.1.tgz", - "integrity": "sha512-kHv4kEHAylMYmlNwcQcDtXjklYp4FCf0b05E+0h6nDHsZ+F0bDe04U/tXNOqrx5CmIAth4vwfkjjUmp4c4JktQ==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-linux-arm-gnueabihf": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm-gnueabihf/-/nice-linux-arm-gnueabihf-1.1.1.tgz", - "integrity": "sha512-E1t7K0efyKXZDoZg1LzCOLxgolxV58HCkaEkEvIYQx12ht2pa8hoBo+4OB3qh7e+QiBlp1SRf+voWUZFxyhyqg==", - "cpu": [ - "arm" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-linux-arm64-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-gnu/-/nice-linux-arm64-gnu-1.1.1.tgz", - "integrity": "sha512-CIKLA12DTIZlmTaaKhQP88R3Xao+gyJxNWEn04wZwC2wmRapNnxCUZkVwggInMJvtVElA+D4ZzOU5sX4jV+SmQ==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-linux-arm64-musl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-arm64-musl/-/nice-linux-arm64-musl-1.1.1.tgz", - "integrity": "sha512-+2Rzdb3nTIYZ0YJF43qf2twhqOCkiSrHx2Pg6DJaCPYhhaxbLcdlV8hCRMHghQ+EtZQWGNcS2xF4KxBhSGeutg==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-linux-ppc64-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-ppc64-gnu/-/nice-linux-ppc64-gnu-1.1.1.tgz", - "integrity": "sha512-4FS8oc0GeHpwvv4tKciKkw3Y4jKsL7FRhaOeiPei0X9T4Jd619wHNe4xCLmN2EMgZoeGg+Q7GY7BsvwKpL22Tg==", - "cpu": [ - "ppc64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-linux-riscv64-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-riscv64-gnu/-/nice-linux-riscv64-gnu-1.1.1.tgz", - "integrity": "sha512-HU0nw9uD4FO/oGCCk409tCi5IzIZpH2agE6nN4fqpwVlCn5BOq0MS1dXGjXaG17JaAvrlpV5ZeyZwSon10XOXw==", - "cpu": [ - "riscv64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-linux-s390x-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-s390x-gnu/-/nice-linux-s390x-gnu-1.1.1.tgz", - "integrity": "sha512-2YqKJWWl24EwrX0DzCQgPLKQBxYDdBxOHot1KWEq7aY2uYeX+Uvtv4I8xFVVygJDgf6/92h9N3Y43WPx8+PAgQ==", - "cpu": [ - "s390x" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-linux-x64-gnu": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-gnu/-/nice-linux-x64-gnu-1.1.1.tgz", - "integrity": "sha512-/gaNz3R92t+dcrfCw/96pDopcmec7oCcAQ3l/M+Zxr82KT4DljD37CpgrnXV+pJC263JkW572pdbP3hP+KjcIg==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-linux-x64-musl": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-linux-x64-musl/-/nice-linux-x64-musl-1.1.1.tgz", - "integrity": "sha512-xScCGnyj/oppsNPMnevsBe3pvNaoK7FGvMjT35riz9YdhB2WtTG47ZlbxtOLpjeO9SqqQ2J2igCmz6IJOD5JYw==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-openharmony-arm64": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-openharmony-arm64/-/nice-openharmony-arm64-1.1.1.tgz", - "integrity": "sha512-6uJPRVwVCLDeoOaNyeiW0gp2kFIM4r7PL2MczdZQHkFi9gVlgm+Vn+V6nTWRcu856mJ2WjYJiumEajfSm7arPQ==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-win32-arm64-msvc": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-arm64-msvc/-/nice-win32-arm64-msvc-1.1.1.tgz", - "integrity": "sha512-uoTb4eAvM5B2aj/z8j+Nv8OttPf2m+HVx3UjA5jcFxASvNhQriyCQF1OB1lHL43ZhW+VwZlgvjmP5qF3+59atA==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-win32-ia32-msvc": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-ia32-msvc/-/nice-win32-ia32-msvc-1.1.1.tgz", - "integrity": "sha512-CNQqlQT9MwuCsg1Vd/oKXiuH+TcsSPJmlAFc5frFyX/KkOh0UpBLEj7aoY656d5UKZQMQFP7vJNa1DNUNORvug==", - "cpu": [ - "ia32" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@napi-rs/nice-win32-x64-msvc": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@napi-rs/nice-win32-x64-msvc/-/nice-win32-x64-msvc-1.1.1.tgz", - "integrity": "sha512-vB+4G/jBQCAh0jelMTY3+kgFy00Hlx2f2/1zjMoH821IbplbWZOkLiTYXQkygNTzQJTq5cvwBDgn2ppHD+bglQ==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=18.0.0" } }, - "node_modules/@ngtools/webpack": { - "version": "19.2.22", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", "dev": true, - "license": "MIT", - "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependencies": { - "@angular/compiler-cli": "^19.0.0 || ^19.2.0-next.0", - "typescript": ">=5.5 <5.9", - "webpack": "^5.54.0" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@noble/hashes": { - "version": "1.8.0", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", "dev": true, - "license": "MIT", - "engines": { - "node": "^14.21.3 || >=16" + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=18.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 8" + "node": ">=18.0.0" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", + "node_modules/@aws-sdk/client-lambda/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=18.0.0" } }, - "node_modules/@npmcli/agent": { - "version": "3.0.0", + "node_modules/@aws-sdk/client-s3": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.985.0.tgz", + "integrity": "sha512-S9TqjzzZEEIKBnC7yFpvqM7CG9ALpY5qhQ5BnDBJtdG20NoGpjKLGUUfD2wmZItuhbrcM4Z8c6m6Fg0XYIOVvw==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "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" + "@aws-crypto/sha1-browser": "5.2.0", + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-node": "^3.972.6", + "@aws-sdk/middleware-bucket-endpoint": "^3.972.3", + "@aws-sdk/middleware-expect-continue": "^3.972.3", + "@aws-sdk/middleware-flexible-checksums": "^3.972.5", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-location-constraint": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-sdk-s3": "^3.972.7", + "@aws-sdk/middleware-ssec": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/signature-v4-multi-region": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/eventstream-serde-browser": "^4.2.8", + "@smithy/eventstream-serde-config-resolver": "^4.3.8", + "@smithy/eventstream-serde-node": "^4.2.8", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-blob-browser": "^4.2.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/hash-stream-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/md5-js": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/util-waiter": "^4.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.4.3", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sso": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.985.0.tgz", + "integrity": "sha512-81J8iE8MuXhdbMfIz4sWFj64Pe41bFi/uqqmqOC5SlGv+kwoyLsyKS/rH2tW2t5buih4vTUxskRjxlqikTD4oQ==", "dev": true, - "license": "ISC" + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } }, - "node_modules/@npmcli/fs": { - "version": "4.0.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "semver": "^7.3.5" + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/git": { - "version": "6.0.3", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-env": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.5.tgz", + "integrity": "sha512-LxJ9PEO4gKPXzkufvIESUysykPIdrV7+Ocb9yAhbhJLE4TiAYqbCVUE+VuKP1leGR1bBfjWjYgSV5MxprlX3mQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "@npmcli/promise-spawn": "^8.0.0", - "ini": "^5.0.0", - "lru-cache": "^10.0.1", - "npm-pick-manifest": "^10.0.0", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^5.0.0" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/git/node_modules/isexe": { - "version": "3.1.5", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-http": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.7.tgz", + "integrity": "sha512-L2uOGtvp2x3bTcxFTpSM+GkwFIPd8pHfGWO1764icMbo7e5xJh0nfhx1UwkXLnwvocTNEf8A7jISZLYjUSNaTg==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/git/node_modules/lru-cache": { - "version": "10.4.3", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.5.tgz", + "integrity": "sha512-SdDTYE6jkARzOeL7+kudMIM4DaFnP5dZVeatzw849k4bSXDdErDS188bgeNzc/RA2WGrlEpsqHUKP6G7sVXhZg==", "dev": true, - "license": "ISC" + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-login": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } }, - "node_modules/@npmcli/git/node_modules/which": { - "version": "5.0.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": { + "version": "3.972.6", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.6.tgz", + "integrity": "sha512-DZ3CnAAtSVtVz+G+ogqecaErMLgzph4JH5nYbHoBMgBkwTUV+SUcjsjOJwdBJTHu3Dm6l5LBYekZoU2nDqQk2A==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@aws-sdk/credential-provider-env": "^3.972.5", + "@aws-sdk/credential-provider-http": "^3.972.7", + "@aws-sdk/credential-provider-ini": "^3.972.5", + "@aws-sdk/credential-provider-process": "^3.972.5", + "@aws-sdk/credential-provider-sso": "^3.972.5", + "@aws-sdk/credential-provider-web-identity": "^3.972.5", + "@aws-sdk/types": "^3.973.1", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/installed-package-contents": { - "version": "3.0.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-process": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.5.tgz", + "integrity": "sha512-HDKF3mVbLnuqGg6dMnzBf1VUOywE12/N286msI9YaK9mEIzdsGCtLTvrDhe3Up0R9/hGFbB+9l21/TwF5L1C6g==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "npm-bundled": "^4.0.0", - "npm-normalize-package-bin": "^4.0.0" - }, - "bin": { - "installed-package-contents": "bin/index.js" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/node-gyp": { - "version": "4.0.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.5.tgz", + "integrity": "sha512-8urj3AoeNeQisjMmMBhFeiY2gxt6/7wQQbEGun0YV/OaOOiXrIudTIEYF8ZfD+NQI6X1FY5AkRsx6O/CaGiybA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.985.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/token-providers": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/package-json": { - "version": "6.2.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.5.tgz", + "integrity": "sha512-OK3cULuJl6c+RcDZfPpaK5o3deTOnKZbxm7pzhFNGA3fI2hF9yDih17fGRazJzGGWaDVlR9ejZrpDef4DJCEsw==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "@npmcli/git": "^6.0.0", - "glob": "^10.2.2", - "hosted-git-info": "^8.0.0", - "json-parse-even-better-errors": "^4.0.0", - "proc-log": "^5.0.0", - "semver": "^7.5.3", - "validate-npm-package-license": "^3.0.4" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/glob": { - "version": "10.5.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "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" + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@npmcli/package-json/node_modules/lru-cache": { - "version": "10.4.3", - "dev": true, - "license": "ISC" - }, - "node_modules/@npmcli/package-json/node_modules/path-scurry": { - "version": "1.11.1", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "Apache-2.0", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/promise-spawn": { - "version": "8.0.3", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "which": "^5.0.0" + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@npmcli/promise-spawn/node_modules/isexe": { - "version": "3.1.5", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/promise-spawn/node_modules/which": { - "version": "5.0.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.7.tgz", + "integrity": "sha512-HUD+geASjXSCyL/DHPQc/Ua7JhldTcIglVAoCV8kiVm99IaFSlAbTvEnyhZwdE6bdFyTL+uIaWLaCFSRsglZBQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@smithy/core": "^3.22.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/redact": { - "version": "3.2.2", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/run-script": { - "version": "9.1.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/token-providers": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.985.0.tgz", + "integrity": "sha512-+hwpHZyEq8k+9JL2PkE60V93v2kNhUIv7STFt+EAez1UJsJOQDhc5LpzEX66pNjclI5OTwBROs/DhJjC/BtMjQ==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "@npmcli/node-gyp": "^4.0.0", - "@npmcli/package-json": "^6.0.0", - "@npmcli/promise-spawn": "^8.0.0", - "node-gyp": "^11.0.0", - "proc-log": "^5.0.0", - "which": "^5.0.0" + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/run-script/node_modules/isexe": { - "version": "3.1.5", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=18" + "node": ">=20.0.0" } }, - "node_modules/@npmcli/run-script/node_modules/which": { - "version": "5.0.0", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.985.0.tgz", + "integrity": "sha512-vth7UfGSUR3ljvaq8V4Rc62FsM7GUTH/myxPWkaEgOrprz1/Pc72EgTXxj+cPPPDAfHFIpjhkB7T7Td0RJx+BA==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=20.0.0" } }, - "node_modules/@paralleldrive/cuid2": { - "version": "2.3.1", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@noble/hashes": "^1.1.5" + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" } }, - "node_modules/@parcel/watcher": { - "version": "2.5.6", + "node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.5.tgz", + "integrity": "sha512-GsUDF+rXyxDZkkJxUsDxnA67FG+kc5W1dnloCFLl6fWzceevsCYzJpASBzT+BPjwUgREE6FngfJYYYMQUY5fZQ==", "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", "dependencies": { - "detect-libc": "^2.0.3", - "is-glob": "^4.0.3", - "node-addon-api": "^7.0.0", - "picomatch": "^4.0.3" + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 10.0.0" + "node": ">=20.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "peerDependencies": { + "aws-crt": ">=1.0.0" }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.6", - "@parcel/watcher-darwin-arm64": "2.5.6", - "@parcel/watcher-darwin-x64": "2.5.6", - "@parcel/watcher-freebsd-x64": "2.5.6", - "@parcel/watcher-linux-arm-glibc": "2.5.6", - "@parcel/watcher-linux-arm-musl": "2.5.6", - "@parcel/watcher-linux-arm64-glibc": "2.5.6", - "@parcel/watcher-linux-arm64-musl": "2.5.6", - "@parcel/watcher-linux-x64-glibc": "2.5.6", - "@parcel/watcher-linux-x64-musl": "2.5.6", - "@parcel/watcher-win32-arm64": "2.5.6", - "@parcel/watcher-win32-ia32": "2.5.6", - "@parcel/watcher-win32-x64": "2.5.6" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz", - "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==", - "cpu": [ - "arm64" - ], + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.6", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz", - "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz", - "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz", - "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==", - "cpu": [ - "arm" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz", - "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==", - "cpu": [ - "arm" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz", - "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz", - "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz", - "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz", - "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz", - "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz", - "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==", - "cpu": [ - "ia32" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.6", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz", - "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==", - "cpu": [ - "x64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@parcel/watcher/node_modules/node-addon-api": { - "version": "7.1.1", + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", "dev": true, - "license": "MIT", - "optional": true + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@parcel/watcher/node_modules/picomatch": { - "version": "4.0.4", + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", "dev": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=12" + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", "dev": true, - "license": "MIT", - "optional": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0" + }, "engines": { - "node": ">=14" + "node": ">=18.0.0" } }, - "node_modules/@polka/send-type": { - "version": "0.5.2", + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@polka/url": { - "version": "0.5.0", + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", "dev": true, - "license": "MIT" + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/plugin-json": { - "version": "6.1.0", + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@rollup/pluginutils": "^5.1.0" + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@rollup/pluginutils": { - "version": "5.3.0", + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^4.0.2" + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", - "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", - "cpu": [ - "arm" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", - "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", - "cpu": [ - "arm64" - ], + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-s3/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/client-sso": { + "version": "3.687.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.687.0.tgz", + "integrity": "sha512-dfj0y9fQyX4kFill/ZG0BqBTLQILKlL7+O5M4F9xlsh2WNuV2St6WtcOg14Y1j5UODPJiJs//pO+mD1lihT5Kw==", + "dev": true, + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.686.0", + "@aws-sdk/middleware-host-header": "3.686.0", + "@aws-sdk/middleware-logger": "3.686.0", + "@aws-sdk/middleware-recursion-detection": "3.686.0", + "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/region-config-resolver": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@aws-sdk/util-endpoints": "3.686.0", + "@aws-sdk/util-user-agent-browser": "3.686.0", + "@aws-sdk/util-user-agent-node": "3.687.0", + "@smithy/config-resolver": "^3.0.10", + "@smithy/core": "^2.5.1", + "@smithy/fetch-http-handler": "^4.0.0", + "@smithy/hash-node": "^3.0.8", + "@smithy/invalid-dependency": "^3.0.8", + "@smithy/middleware-content-length": "^3.0.10", + "@smithy/middleware-endpoint": "^3.2.1", + "@smithy/middleware-retry": "^3.0.25", + "@smithy/middleware-serde": "^3.0.8", + "@smithy/middleware-stack": "^3.0.8", + "@smithy/node-config-provider": "^3.1.9", + "@smithy/node-http-handler": "^3.2.5", + "@smithy/protocol-http": "^4.1.5", + "@smithy/smithy-client": "^3.4.2", + "@smithy/types": "^3.6.0", + "@smithy/url-parser": "^3.0.8", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.25", + "@smithy/util-defaults-mode-node": "^3.0.25", + "@smithy/util-endpoints": "^2.1.4", + "@smithy/util-middleware": "^3.0.8", + "@smithy/util-retry": "^3.0.8", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/client-sso-oidc": { + "version": "3.687.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.687.0.tgz", + "integrity": "sha512-Rdd8kLeTeh+L5ZuG4WQnWgYgdv7NorytKdZsGjiag1D8Wv3PcJvPqqWdgnI0Og717BSXVoaTYaN34FyqFYSx6Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "3.686.0", + "@aws-sdk/credential-provider-node": "3.687.0", + "@aws-sdk/middleware-host-header": "3.686.0", + "@aws-sdk/middleware-logger": "3.686.0", + "@aws-sdk/middleware-recursion-detection": "3.686.0", + "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/region-config-resolver": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@aws-sdk/util-endpoints": "3.686.0", + "@aws-sdk/util-user-agent-browser": "3.686.0", + "@aws-sdk/util-user-agent-node": "3.687.0", + "@smithy/config-resolver": "^3.0.10", + "@smithy/core": "^2.5.1", + "@smithy/fetch-http-handler": "^4.0.0", + "@smithy/hash-node": "^3.0.8", + "@smithy/invalid-dependency": "^3.0.8", + "@smithy/middleware-content-length": "^3.0.10", + "@smithy/middleware-endpoint": "^3.2.1", + "@smithy/middleware-retry": "^3.0.25", + "@smithy/middleware-serde": "^3.0.8", + "@smithy/middleware-stack": "^3.0.8", + "@smithy/node-config-provider": "^3.1.9", + "@smithy/node-http-handler": "^3.2.5", + "@smithy/protocol-http": "^4.1.5", + "@smithy/smithy-client": "^3.4.2", + "@smithy/types": "^3.6.0", + "@smithy/url-parser": "^3.0.8", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.25", + "@smithy/util-defaults-mode-node": "^3.0.25", + "@smithy/util-endpoints": "^2.1.4", + "@smithy/util-middleware": "^3.0.8", + "@smithy/util-retry": "^3.0.8", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.687.0" + } + }, + "node_modules/@aws-sdk/client-sts": { + "version": "3.687.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.687.0.tgz", + "integrity": "sha512-SQjDH8O4XCTtouuCVYggB0cCCrIaTzUZIkgJUpOsIEJBLlTbNOb/BZqUShAQw2o9vxr2rCeOGjAQOYPysW/Pmg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/client-sso-oidc": "3.687.0", + "@aws-sdk/core": "3.686.0", + "@aws-sdk/credential-provider-node": "3.687.0", + "@aws-sdk/middleware-host-header": "3.686.0", + "@aws-sdk/middleware-logger": "3.686.0", + "@aws-sdk/middleware-recursion-detection": "3.686.0", + "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/region-config-resolver": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@aws-sdk/util-endpoints": "3.686.0", + "@aws-sdk/util-user-agent-browser": "3.686.0", + "@aws-sdk/util-user-agent-node": "3.687.0", + "@smithy/config-resolver": "^3.0.10", + "@smithy/core": "^2.5.1", + "@smithy/fetch-http-handler": "^4.0.0", + "@smithy/hash-node": "^3.0.8", + "@smithy/invalid-dependency": "^3.0.8", + "@smithy/middleware-content-length": "^3.0.10", + "@smithy/middleware-endpoint": "^3.2.1", + "@smithy/middleware-retry": "^3.0.25", + "@smithy/middleware-serde": "^3.0.8", + "@smithy/middleware-stack": "^3.0.8", + "@smithy/node-config-provider": "^3.1.9", + "@smithy/node-http-handler": "^3.2.5", + "@smithy/protocol-http": "^4.1.5", + "@smithy/smithy-client": "^3.4.2", + "@smithy/types": "^3.6.0", + "@smithy/url-parser": "^3.0.8", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-body-length-node": "^3.0.0", + "@smithy/util-defaults-mode-browser": "^3.0.25", + "@smithy/util-defaults-mode-node": "^3.0.25", + "@smithy/util-endpoints": "^2.1.4", + "@smithy/util-middleware": "^3.0.8", + "@smithy/util-retry": "^3.0.8", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.686.0.tgz", + "integrity": "sha512-Xt3DV4DnAT3v2WURwzTxWQK34Ew+iiLzoUoguvLaZrVMFOqMMrwVjP+sizqIaHp1j7rGmFcN5I8saXnsDLuQLA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.686.0", + "@smithy/core": "^2.5.1", + "@smithy/node-config-provider": "^3.1.9", + "@smithy/property-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.5", + "@smithy/signature-v4": "^4.2.0", + "@smithy/smithy-client": "^3.4.2", + "@smithy/types": "^3.6.0", + "@smithy/util-middleware": "^3.0.8", + "fast-xml-parser": "4.4.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/core/node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], + "dependencies": { + "strnum": "^1.0.5" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/crc64-nvme": { + "version": "3.972.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.0.tgz", + "integrity": "sha512-ThlLhTqX68jvoIVv+pryOdb5coP1cX1/MaTbB9xkGDCbWbsqQcLqzPxuSoW1DCnAAIacmXCWpzUNOB9pv+xXQw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/crc64-nvme/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-env": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.686.0.tgz", + "integrity": "sha512-osD7lPO8OREkgxPiTWmA1i6XEmOth1uW9HWWj/+A2YGCj1G/t2sHu931w4Qj9NWHYZtbTTXQYVRg+TErALV7nQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-http": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.686.0.tgz", + "integrity": "sha512-xyGAD/f3vR/wssUiZrNFWQWXZvI4zRm2wpHhoHA1cC2fbRMNFYtFn365yw6dU7l00ZLcdFB1H119AYIUZS7xbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@smithy/fetch-http-handler": "^4.0.0", + "@smithy/node-http-handler": "^3.2.5", + "@smithy/property-provider": "^3.1.7", + "@smithy/protocol-http": "^4.1.5", + "@smithy/smithy-client": "^3.4.2", + "@smithy/types": "^3.6.0", + "@smithy/util-stream": "^3.2.1", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-ini": { + "version": "3.687.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.687.0.tgz", + "integrity": "sha512-6d5ZJeZch+ZosJccksN0PuXv7OSnYEmanGCnbhUqmUSz9uaVX6knZZfHCZJRgNcfSqg9QC0zsFA/51W5HCUqSQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.686.0", + "@aws-sdk/credential-provider-env": "3.686.0", + "@aws-sdk/credential-provider-http": "3.686.0", + "@aws-sdk/credential-provider-process": "3.686.0", + "@aws-sdk/credential-provider-sso": "3.687.0", + "@aws-sdk/credential-provider-web-identity": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@smithy/credential-provider-imds": "^3.2.4", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.687.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.5.tgz", + "integrity": "sha512-uYq1ILyTSI6ZDCMY5+vUsRM0SOCVI7kaW4wBrehVVkhAxC6y+e9rvGtnoZqCOWL1gKjTMouvsf4Ilhc5NCg1Aw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/nested-clients": "3.985.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-login/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-node": { + "version": "3.687.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.687.0.tgz", + "integrity": "sha512-Pqld8Nx11NYaBUrVk3bYiGGpLCxkz8iTONlpQWoVWFhSOzlO7zloNOaYbD2XgFjjqhjlKzE91drs/f41uGeCTA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/credential-provider-env": "3.686.0", + "@aws-sdk/credential-provider-http": "3.686.0", + "@aws-sdk/credential-provider-ini": "3.687.0", + "@aws-sdk/credential-provider-process": "3.686.0", + "@aws-sdk/credential-provider-sso": "3.687.0", + "@aws-sdk/credential-provider-web-identity": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@smithy/credential-provider-imds": "^3.2.4", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-process": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.686.0.tgz", + "integrity": "sha512-sXqaAgyzMOc+dm4CnzAR5Q6S9OWVHyZjLfW6IQkmGjqeQXmZl24c4E82+w64C+CTkJrFLzH1VNOYp1Hy5gE6Qw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-sso": { + "version": "3.687.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.687.0.tgz", + "integrity": "sha512-N1YCoE7DovIRF2ReyRrA4PZzF0WNi4ObPwdQQkVxhvSm7PwjbWxrfq7rpYB+6YB1Uq3QPzgVwUFONE36rdpxUQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/client-sso": "3.687.0", + "@aws-sdk/core": "3.686.0", + "@aws-sdk/token-providers": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/credential-provider-web-identity": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.686.0.tgz", + "integrity": "sha512-40UqCpPxyHCXDP7CGd9JIOZDgDZf+u1OyLaGBpjQJlz1HYuEsIWnnbTe29Yg3Ah/Zc3g4NBWcUdlGVotlnpnDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sts": "^3.686.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.3.tgz", + "integrity": "sha512-fmbgWYirF67YF1GfD7cg5N6HHQ96EyRNx/rDIrTF277/zTWVuPI2qS/ZHgofwR1NZPe/NWvoppflQY01LrbVLg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-arn-parser": "^3.972.2", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.3.tgz", + "integrity": "sha512-4msC33RZsXQpUKR5QR4HnvBSNCPLGHmB55oDiROqqgyOc+TOfVu2xgi5goA7ms6MdZLeEh2905UfWMnMMF4mRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-expect-continue/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.972.5.tgz", + "integrity": "sha512-SF/1MYWx67OyCrLA4icIpWUfCkdlOi8Y1KecQ9xYxkL10GMjVdPTGPnYhAg0dw5U43Y9PVUWhAV2ezOaG+0BLg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/crc32": "5.2.0", + "@aws-crypto/crc32c": "5.2.0", + "@aws-crypto/util": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/crc64-nvme": "3.972.0", + "@aws-sdk/types": "^3.973.1", + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-host-header": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.686.0.tgz", + "integrity": "sha512-+Yc6rO02z+yhFbHmRZGvEw1vmzf/ifS9a4aBjJGeVVU+ZxaUvnk+IUZWrj4YQopUQ+bSujmMUzJLXSkbDq7yuw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.686.0", + "@smithy/protocol-http": "^4.1.5", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.3.tgz", + "integrity": "sha512-nIg64CVrsXp67vbK0U1/Is8rik3huS3QkRHn2DRDx4NldrEFMgdkZGI/+cZMKD9k4YOS110Dfu21KZLHrFA/1g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-location-constraint/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-logger": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.686.0.tgz", + "integrity": "sha512-cX43ODfA2+SPdX7VRxu6gXk4t4bdVJ9pkktbfnkE5t27OlwNfvSGGhnHrQL8xTOFeyQ+3T+oowf26gf1OI+vIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.686.0", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.686.0.tgz", + "integrity": "sha512-jF9hQ162xLgp9zZ/3w5RUNhmwVnXDBlABEUX8jCgzaFpaa742qR/KKtjjZQ6jMbQnP+8fOCSXFAVNMU+s6v81w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.686.0", + "@smithy/protocol-http": "^4.1.5", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-api-gateway": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-api-gateway/-/middleware-sdk-api-gateway-3.972.3.tgz", + "integrity": "sha512-MGYqM2kWuK0i8QE09eS32CJarJxlhEOm2j8DuIoDo5rrhaH9vhnAO6gJa+tNWHEmBgLbRQZr9XpjZ6VNPZjgBQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-api-gateway/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-api-gateway/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-api-gateway/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.7.tgz", + "integrity": "sha512-VtZ7tMIw18VzjG+I6D6rh2eLkJfTtByiFoCIauGDtTTPBEUMQUiGaJ/zZrPlCY6BsvLLeFKz3+E5mntgiOWmIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-arn-parser": "^3.972.2", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-sdk-s3/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.3.tgz", + "integrity": "sha512-dU6kDuULN3o3jEHcjm0c4zWJlY1zWVkjG9NPe9qxYLLpcbdj5kRYBS2DdWYD+1B9f910DezRuws7xDEqKkHQIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/middleware-ssec/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.687.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.687.0.tgz", + "integrity": "sha512-nUgsKiEinyA50CaDXojAkOasAU3Apdg7Qox6IjNUC4ZjgOu7QWsCDB5N28AYMUt06cNYeYQdfMX1aEzG85a1Mg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "3.686.0", + "@aws-sdk/types": "3.686.0", + "@aws-sdk/util-endpoints": "3.686.0", + "@smithy/core": "^2.5.1", + "@smithy/protocol-http": "^4.1.5", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.985.0.tgz", + "integrity": "sha512-TsWwKzb/2WHafAY0CE7uXgLj0FmnkBTgfioG9HO+7z/zCPcl1+YU+i7dW4o0y+aFxFgxTMG+ExBQpqT/k2ao8g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-crypto/sha256-browser": "5.2.0", + "@aws-crypto/sha256-js": "5.2.0", + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/middleware-host-header": "^3.972.3", + "@aws-sdk/middleware-logger": "^3.972.3", + "@aws-sdk/middleware-recursion-detection": "^3.972.3", + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/region-config-resolver": "^3.972.3", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@aws-sdk/util-user-agent-browser": "^3.972.3", + "@aws-sdk/util-user-agent-node": "^3.972.5", + "@smithy/config-resolver": "^4.4.6", + "@smithy/core": "^3.22.1", + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/hash-node": "^4.2.8", + "@smithy/invalid-dependency": "^4.2.8", + "@smithy/middleware-content-length": "^4.2.8", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-retry": "^4.4.30", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-body-length-node": "^4.2.1", + "@smithy/util-defaults-mode-browser": "^4.3.29", + "@smithy/util-defaults-mode-node": "^4.2.32", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/core": { + "version": "3.973.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.973.7.tgz", + "integrity": "sha512-wNZZQQNlJ+hzD49cKdo+PY6rsTDElO8yDImnrI69p2PLBa7QomeUKAJWYp9xnaR38nlHqWhMHZuYLCQ3oSX+xg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/xml-builder": "^3.972.4", + "@smithy/core": "^3.22.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-host-header": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.3.tgz", + "integrity": "sha512-aknPTb2M+G3s+0qLCx4Li/qGZH8IIYjugHMv15JTYMe6mgZO8VBpYgeGYsNMGCqCZOcWzuf900jFBG5bopfzmA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-logger": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.3.tgz", + "integrity": "sha512-Ftg09xNNRqaz9QNzlfdQWfpqMCJbsQdnZVJP55jfhbKi1+FTWxGuvfPoBhDHIovqWKjqbuiew3HuhxbJ0+OjgA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-recursion-detection": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.3.tgz", + "integrity": "sha512-PY57QhzNuXHnwbJgbWYTrqIDHYSeOlhfYERTAuc16LKZpTZRJUjzBFokp9hF7u1fuGeE3D70ERXzdbMBOqQz7Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@aws/lambda-invoke-store": "^0.2.2", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/middleware-user-agent": { + "version": "3.972.7", + "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.7.tgz", + "integrity": "sha512-HUD+geASjXSCyL/DHPQc/Ua7JhldTcIglVAoCV8kiVm99IaFSlAbTvEnyhZwdE6bdFyTL+uIaWLaCFSRsglZBQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/core": "^3.973.7", + "@aws-sdk/types": "^3.973.1", + "@aws-sdk/util-endpoints": "3.985.0", + "@smithy/core": "^3.22.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/region-config-resolver": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.3.tgz", + "integrity": "sha512-v4J8qYAWfOMcZ4MJUyatntOicTzEMaU7j3OpkRCGGFSL2NgXQ5VbxauIyORA+pxdKZ0qQG2tCQjQjZDlXEC3Ow==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/config-resolver": "^4.4.6", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-endpoints": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.985.0.tgz", + "integrity": "sha512-vth7UfGSUR3ljvaq8V4Rc62FsM7GUTH/myxPWkaEgOrprz1/Pc72EgTXxj+cPPPDAfHFIpjhkB7T7Td0RJx+BA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-endpoints": "^3.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.972.3", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.3.tgz", + "integrity": "sha512-JurOwkRUcXD/5MTDBcqdyQ9eVedtAsZgw5rBwktsPTN7QtPiS2Ld1jkJepNgYoCufz1Wcut9iup7GJDoIHp8Fw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "^3.973.1", + "@smithy/types": "^4.12.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.972.5", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.972.5.tgz", + "integrity": "sha512-GsUDF+rXyxDZkkJxUsDxnA67FG+kc5W1dnloCFLl6fWzceevsCYzJpASBzT+BPjwUgREE6FngfJYYYMQUY5fZQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/config-resolver": { + "version": "4.4.6", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.6.tgz", + "integrity": "sha512-qJpzYC64kaj3S0fueiu3kXm8xPrR3PcXDPEgnaNMRn0EjNSZFoFjvbUp0YUDsRhN1CB90EnHJtbxWKevnH99UQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-config-provider": "^4.2.0", + "@smithy/util-endpoints": "^3.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/core": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.22.1.tgz", + "integrity": "sha512-x3ie6Crr58MWrm4viHqqy2Du2rHYZjwu8BekasrQx4ca+Y24dzVAwq3yErdqIbc2G3I0kLQA13PQ+/rde+u65g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-serde": "^4.2.9", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-body-length-browser": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-stream": "^4.5.11", + "@smithy/util-utf8": "^4.2.0", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/credential-provider-imds": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.8.tgz", + "integrity": "sha512-FNT0xHS1c/CPN8upqbMFP83+ul5YgdisfCfkZ86Jh2NSmnqw/AJ6x5pEogVCTVvSm7j9MopRU89bmDelxuDMYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/fetch-http-handler": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.9.tgz", + "integrity": "sha512-I4UhmcTYXBrct03rwzQX1Y/iqQlzVQaPxWjCjula++5EmWq9YGBrx6bbGqluGc1f0XEfhSkiY4jhLgbsJUMKRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/hash-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.8.tgz", + "integrity": "sha512-7ZIlPbmaDGxVoxErDZnuFG18WekhbA/g2/i97wGj+wUBeS6pcUeAym8u4BXh/75RXWhgIJhyC11hBzig6MljwA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/invalid-dependency": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.8.tgz", + "integrity": "sha512-N9iozRybwAQ2dn9Fot9kI6/w9vos2oTXLhtK7ovGqwZjlOcxu6XhPlpLpC+INsxktqHinn5gS2DXDjDF2kG5sQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-content-length": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.8.tgz", + "integrity": "sha512-RO0jeoaYAB1qBRhfVyq0pMgBoUK34YEJxVxyjOWYZiOKOq2yMZ4MnVXMZCUDenpozHue207+9P5ilTV1zeda0A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-endpoint": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.13.tgz", + "integrity": "sha512-x6vn0PjYmGdNuKh/juUJJewZh7MoQ46jYaJ2mvekF4EesMuFfrl4LaW/k97Zjf8PTCPQmPgMvwewg7eNoH9n5w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-serde": "^4.2.9", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "@smithy/url-parser": "^4.2.8", + "@smithy/util-middleware": "^4.2.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-retry": { + "version": "4.4.30", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.4.30.tgz", + "integrity": "sha512-CBGyFvN0f8hlnqKH/jckRDz78Snrp345+PVk8Ux7pnkUCW97Iinse59lY78hBt04h1GZ6hjBN94BRwZy1xC8Bg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/service-error-classification": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-retry": "^4.2.8", + "@smithy/uuid": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-serde": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.9.tgz", + "integrity": "sha512-eMNiej0u/snzDvlqRGSN3Vl0ESn3838+nKyVfF2FKNXFbi4SERYT6PR392D39iczngbqqGG0Jl1DlCnp7tBbXQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/middleware-stack": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.8.tgz", + "integrity": "sha512-w6LCfOviTYQjBctOKSwy6A8FIkQy7ICvglrZFl6Bw4FmcQ1Z420fUtIhxaUZZshRe0VCq4kvDiPiXrPZAe8oRA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-config-provider": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.8.tgz", + "integrity": "sha512-aFP1ai4lrbVlWjfpAfRSL8KFcnJQYfTl5QxLJXY32vghJrDuFyPZ6LtUL+JEGYiFRG1PfPLHLoxj107ulncLIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/shared-ini-file-loader": "^4.4.3", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/node-http-handler": { + "version": "4.4.9", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.4.9.tgz", + "integrity": "sha512-KX5Wml5mF+luxm1szW4QDz32e3NObgJ4Fyw+irhph4I/2geXwUy4jkIMUs5ZPGflRBeR6BUkC2wqIab4Llgm3w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/abort-controller": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/querystring-builder": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/property-provider": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.8.tgz", + "integrity": "sha512-EtCTbyIveCKeOXDSWSdze3k612yCPq1YbXsbqX3UHhkOSW8zKsM9NOJG5gTIya0vbY2DIaieG8pKo1rITHYL0w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/querystring-builder": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.8.tgz", + "integrity": "sha512-Xr83r31+DrE8CP3MqPgMJl+pQlLLmOfiEUnoyAlGzzJIrEsbKsPy1hqH0qySaQm4oWrCBlUqRt+idEgunKB+iw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "@smithy/util-uri-escape": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/querystring-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.8.tgz", + "integrity": "sha512-vUurovluVy50CUlazOiXkPq40KGvGWSdmusa3130MwrR1UNnNgKAlj58wlOe61XSHRpUfIIh6cE0zZ8mzKaDPA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/service-error-classification": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.2.8.tgz", + "integrity": "sha512-mZ5xddodpJhEt3RkCjbmUQuXUOaPNTkbMGR0bcS8FE0bJDLMZlhmpgrvPNCYglVw5rsYTpSnv19womw9WWXKQQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/shared-ini-file-loader": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.3.tgz", + "integrity": "sha512-DfQjxXQnzC5UbCUPeC3Ie8u+rIWZTvuDPAGU/BxzrOGhRvgUanaP68kDZA+jaT3ZI+djOf+4dERGlm9mWfFDrg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/smithy-client": { + "version": "4.11.2", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.11.2.tgz", + "integrity": "sha512-SCkGmFak/xC1n7hKRsUr6wOnBTJ3L22Qd4e8H1fQIuKTAjntwgU8lrdMe7uHdiT2mJAOWA/60qaW9tiMu69n1A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/core": "^3.22.1", + "@smithy/middleware-endpoint": "^4.4.13", + "@smithy/middleware-stack": "^4.2.8", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-stream": "^4.5.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/url-parser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.8.tgz", + "integrity": "sha512-NQho9U68TGMEU639YkXnVMV3GEFFULmmaWdlu1E9qzyIePOHsoSnagTGSDv1Zi8DCNN6btxOSdgmy5E/hsZwhA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/querystring-parser": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-body-length-browser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.0.tgz", + "integrity": "sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-body-length-node": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.1.tgz", + "integrity": "sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-config-provider": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.0.tgz", + "integrity": "sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-defaults-mode-browser": { + "version": "4.3.29", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.29.tgz", + "integrity": "sha512-nIGy3DNRmOjaYaaKcQDzmWsro9uxlaqUOhZDHQed9MW/GmkBZPtnU70Pu1+GT9IBmUXwRdDuiyaeiy9Xtpn3+Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-defaults-mode-node": { + "version": "4.2.32", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.32.tgz", + "integrity": "sha512-7dtFff6pu5fsjqrVve0YMhrnzJtccCWDacNKOkiZjJ++fmjGExmmSu341x+WU6Oc1IccL7lDuaUj7SfrHpWc5Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^4.4.6", + "@smithy/credential-provider-imds": "^4.2.8", + "@smithy/node-config-provider": "^4.3.8", + "@smithy/property-provider": "^4.2.8", + "@smithy/smithy-client": "^4.11.2", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-endpoints": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.2.8.tgz", + "integrity": "sha512-8JaVTn3pBDkhZgHQ8R0epwWt+BqPSLCjdjXXusK1onwJlRuN69fbvSK66aIKKO7SwVFM6x2J2ox5X8pOaWcUEw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^4.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-retry": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.2.8.tgz", + "integrity": "sha512-CfJqwvoRY0kTGe5AkQokpURNCT1u/MkRzMTASWMPPo2hNSnKtF1D45dQl3DE2LKLr4m+PW9mCeBMJr5mCAVThg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/service-error-classification": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-stream": { + "version": "4.5.11", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.11.tgz", + "integrity": "sha512-lKmZ0S/3Qj2OF5H1+VzvDLb6kRxGzZHq6f3rAsoSu5cTLGsn3v3VQBA8czkNNXlLjoFEtVu3OQT2jEeOtOE2CA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^5.3.9", + "@smithy/node-http-handler": "^4.4.9", + "@smithy/types": "^4.12.0", + "@smithy/util-base64": "^4.3.0", + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/nested-clients/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/region-config-resolver": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.686.0.tgz", + "integrity": "sha512-6zXD3bSD8tcsMAVVwO1gO7rI1uy2fCD3czgawuPGPopeLiPpo6/3FoUWCQzk2nvEhj7p9Z4BbjwZGSlRkVrXTw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.686.0", + "@smithy/node-config-provider": "^3.1.9", + "@smithy/types": "^3.6.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.8", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region": { + "version": "3.985.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.985.0.tgz", + "integrity": "sha512-W6hTSOPiSbh4IdTYVxN7xHjpCh0qvfQU1GKGBzGQm0ZEIOaMmWqiDEvFfyGYKmfBvumT8vHKxQRTX0av9omtIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-sdk-s3": "^3.972.7", + "@aws-sdk/types": "^3.973.1", + "@smithy/protocol-http": "^5.3.8", + "@smithy/signature-v4": "^5.3.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@aws-sdk/types": { + "version": "3.973.1", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.1.tgz", + "integrity": "sha512-DwHBiMNOB468JiX6+i34c+THsKHErYUdNQ3HexeXZvVn4zouLjgaS4FejiGSi2HyBuzuyHg7SuOPmjSvoU9NRg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/protocol-http": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.8.tgz", + "integrity": "sha512-QNINVDhxpZ5QnP3aviNHQFlRogQZDfYlCkQT+7tJnErPQbDhysondEjhikuANxgMsZrkGeiAxXy4jguEGsDrWQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/signature-v4": { + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.8.tgz", + "integrity": "sha512-6A4vdGj7qKNRF16UIcO8HhHjKW27thsxYci+5r/uVRkdcBEkOEiY8OMPuydLX4QHSrJqGHPJzPRwwVTqbLZJhg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "@smithy/protocol-http": "^5.3.8", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "@smithy/util-middleware": "^4.2.8", + "@smithy/util-uri-escape": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/util-middleware": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.8.tgz", + "integrity": "sha512-PMqfeJxLcNPMDgvPbbLl/2Vpin+luxqTGPpW3NAQVLbRrFRzTa4rNAASYeIGjRV9Ytuhzny39SpyU04EQreF+A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/util-uri-escape": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.0.tgz", + "integrity": "sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/signature-v4-multi-region/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/token-providers": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.686.0.tgz", + "integrity": "sha512-9oL4kTCSePFmyKPskibeiOXV6qavPZ63/kXM9Wh9V6dTSvBtLeNnMxqGvENGKJcTdIgtoqyqA6ET9u0PJ5IRIg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.686.0", + "@smithy/property-provider": "^3.1.7", + "@smithy/shared-ini-file-loader": "^3.1.8", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "@aws-sdk/client-sso-oidc": "^3.686.0" + } + }, + "node_modules/@aws-sdk/types": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.686.0.tgz", + "integrity": "sha512-xFnrb3wxOoJcW2Xrh63ZgFo5buIu9DF7bOHnwoUxHdNpUXicUh0AHw85TjXxyxIAd0d1psY/DU7QHoNI3OswgQ==", + "dev": true, + "dependencies": { + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-arn-parser": { + "version": "3.972.2", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.2.tgz", + "integrity": "sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/util-endpoints": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.686.0.tgz", + "integrity": "sha512-7msZE2oYl+6QYeeRBjlDgxQUhq/XRky3cXE0FqLFs2muLS7XSuQEXkpOXB3R782ygAP6JX0kmBxPTLurRTikZg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.686.0", + "@smithy/types": "^3.6.0", + "@smithy/util-endpoints": "^2.1.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-locate-window": { + "version": "3.679.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.679.0.tgz", + "integrity": "sha512-zKTd48/ZWrCplkXpYDABI74rQlbR0DNHs8nH95htfSLj9/mWRSwaGptoxwcihaq/77vi/fl2X3y0a1Bo8bt7RA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@aws-sdk/util-user-agent-browser": { + "version": "3.686.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.686.0.tgz", + "integrity": "sha512-YiQXeGYZegF1b7B2GOR61orhgv79qmI0z7+Agm3NXLO6hGfVV3kFUJbXnjtH1BgWo5hbZYW7HQ2omGb3dnb6Lg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/types": "3.686.0", + "@smithy/types": "^3.6.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@aws-sdk/util-user-agent-node": { + "version": "3.687.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.687.0.tgz", + "integrity": "sha512-idkP6ojSTZ4ek1pJ8wIN7r9U3KR5dn0IkJn3KQBXQ58LWjkRqLtft2vxzdsktWwhPKjjmIKl1S0kbvqLawf8XQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@aws-sdk/middleware-user-agent": "3.687.0", + "@aws-sdk/types": "3.686.0", + "@smithy/node-config-provider": "^3.1.9", + "@smithy/types": "^3.6.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "aws-crt": ">=1.0.0" + }, + "peerDependenciesMeta": { + "aws-crt": { + "optional": true + } + } + }, + "node_modules/@aws-sdk/util-utf8-browser": { + "version": "3.259.0", + "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.259.0.tgz", + "integrity": "sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.3.1" + } + }, + "node_modules/@aws-sdk/xml-builder": { + "version": "3.972.4", + "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.4.tgz", + "integrity": "sha512-0zJ05ANfYqI6+rGqj8samZBFod0dPPousBjLEqg8WdxSgbMAkRgLyn81lP215Do0rFJ/17LIXwr7q0yK24mP6Q==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "fast-xml-parser": "5.3.4", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@aws-sdk/xml-builder/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@aws-sdk/xml-builder/node_modules/fast-xml-parser": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.4.tgz", + "integrity": "sha512-EFd6afGmXlCx8H8WTZHhAoDaWaGyuIBoZJ2mknrNxug+aZKjkp0a0dlars9Izl+jF+7Gu1/5f/2h68cQpe0IiA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "dependencies": { + "strnum": "^2.1.0" + }, + "bin": { + "fxparser": "src/cli/cli.js" + } + }, + "node_modules/@aws-sdk/xml-builder/node_modules/strnum": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", + "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT" + }, + "node_modules/@aws/lambda-invoke-store": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.3.tgz", + "integrity": "sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.26.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz", + "integrity": "sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz", + "integrity": "sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.26.10", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helpers": "^7.26.10", + "@babel/parser": "^7.26.10", + "@babel/template": "^7.26.9", + "@babel/traverse": "^7.26.10", + "@babel/types": "^7.26.10", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/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/@babel/core/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.10.tgz", + "integrity": "sha512-rRHT8siFIXQrAYOYqZQVsAr8vJ+cBNqcVAY6m5V8/4QqzaPl+zDBe6cLEPRDuNOUf3ww8RfJVlOyQMoSI+5Ang==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.26.10", + "@babel/types": "^7.26.10", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz", + "integrity": "sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@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.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "regexpu-core": "^6.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz", + "integrity": "sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==", + "dev": true, + "license": "MIT", + "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/helper-member-expression-to-functions": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "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, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-wrap-function": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-member-expression-to-functions": "^7.25.9", + "@babel/helper-optimise-call-expression": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz", + "integrity": "sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.9", + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.27.0" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-firefox-class-in-computed-class-key": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-class-field-initializer-scope": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.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", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.26.0", + "dev": true, + "license": "MIT", + "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-import-attributes": { + "version": "7.26.0", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz", + "integrity": "sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-remap-async-to-generator": "^7.25.9", + "@babel/traverse": "^7.26.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz", + "integrity": "sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-remap-async-to-generator": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz", + "integrity": "sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.26.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9", + "@babel/traverse": "^7.25.9", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/template": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.26.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz", + "integrity": "sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz", + "integrity": "sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "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, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.26.0", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-transforms": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.26.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz", + "integrity": "sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-compilation-targets": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-replace-supers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz", + "integrity": "sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regexp-modifiers": { + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz", + "integrity": "sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.26.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz", + "integrity": "sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz", + "integrity": "sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.26.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.25.9", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.26.9", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz", + "integrity": "sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.26.8", + "@babel/helper-compilation-targets": "^7.26.5", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.9", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.9", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.9", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.9", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.9", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.26.0", + "@babel/plugin-syntax-import-attributes": "^7.26.0", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.9", + "@babel/plugin-transform-async-generator-functions": "^7.26.8", + "@babel/plugin-transform-async-to-generator": "^7.25.9", + "@babel/plugin-transform-block-scoped-functions": "^7.26.5", + "@babel/plugin-transform-block-scoping": "^7.25.9", + "@babel/plugin-transform-class-properties": "^7.25.9", + "@babel/plugin-transform-class-static-block": "^7.26.0", + "@babel/plugin-transform-classes": "^7.25.9", + "@babel/plugin-transform-computed-properties": "^7.25.9", + "@babel/plugin-transform-destructuring": "^7.25.9", + "@babel/plugin-transform-dotall-regex": "^7.25.9", + "@babel/plugin-transform-duplicate-keys": "^7.25.9", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-dynamic-import": "^7.25.9", + "@babel/plugin-transform-exponentiation-operator": "^7.26.3", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-for-of": "^7.26.9", + "@babel/plugin-transform-function-name": "^7.25.9", + "@babel/plugin-transform-json-strings": "^7.25.9", + "@babel/plugin-transform-literals": "^7.25.9", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.9", + "@babel/plugin-transform-member-expression-literals": "^7.25.9", + "@babel/plugin-transform-modules-amd": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-modules-systemjs": "^7.25.9", + "@babel/plugin-transform-modules-umd": "^7.25.9", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.9", + "@babel/plugin-transform-new-target": "^7.25.9", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.26.6", + "@babel/plugin-transform-numeric-separator": "^7.25.9", + "@babel/plugin-transform-object-rest-spread": "^7.25.9", + "@babel/plugin-transform-object-super": "^7.25.9", + "@babel/plugin-transform-optional-catch-binding": "^7.25.9", + "@babel/plugin-transform-optional-chaining": "^7.25.9", + "@babel/plugin-transform-parameters": "^7.25.9", + "@babel/plugin-transform-private-methods": "^7.25.9", + "@babel/plugin-transform-private-property-in-object": "^7.25.9", + "@babel/plugin-transform-property-literals": "^7.25.9", + "@babel/plugin-transform-regenerator": "^7.25.9", + "@babel/plugin-transform-regexp-modifiers": "^7.26.0", + "@babel/plugin-transform-reserved-words": "^7.25.9", + "@babel/plugin-transform-shorthand-properties": "^7.25.9", + "@babel/plugin-transform-spread": "^7.25.9", + "@babel/plugin-transform-sticky-regex": "^7.25.9", + "@babel/plugin-transform-template-literals": "^7.26.8", + "@babel/plugin-transform-typeof-symbol": "^7.26.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.9", + "@babel/plugin-transform-unicode-property-regex": "^7.25.9", + "@babel/plugin-transform-unicode-regex": "^7.25.9", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.9", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.40.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz", + "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/runtime-corejs3": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime-corejs3/-/runtime-corejs3-7.27.0.tgz", + "integrity": "sha512-UWjX6t+v+0ckwZ50Y5ShZLnlk95pP5MyW/pon9tiYzl3+18pkTHTFNTKr7rQbfRXPkowt2QAn30o1b6oswszew==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-js-pure": "^3.30.2", + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz", + "integrity": "sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "@babel/generator": "^7.27.0", + "@babel/parser": "^7.27.0", + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz", + "integrity": "sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@compodoc/compodoc": { + "version": "1.1.26", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/schematics": "18.2.8", + "@babel/core": "7.25.8", + "@babel/plugin-transform-private-methods": "7.25.7", + "@babel/preset-env": "7.25.8", + "@compodoc/live-server": "^1.2.3", + "@compodoc/ngd-transformer": "^2.1.3", + "bootstrap.native": "^5.0.13", + "cheerio": "1.0.0-rc.12", + "chokidar": "^4.0.1", + "colors": "1.4.0", + "commander": "^12.1.0", + "cosmiconfig": "^9.0.0", + "decache": "^4.6.2", + "es6-shim": "^0.35.8", + "fancy-log": "^2.0.0", + "fast-glob": "^3.3.2", + "fs-extra": "^11.2.0", + "glob": "^11.0.0", + "handlebars": "^4.7.8", + "html-entities": "^2.5.2", + "i18next": "^23.16.0", + "json5": "^2.2.3", + "lodash": "^4.17.21", + "loglevel": "^1.9.2", + "loglevel-plugin-prefix": "^0.8.4", + "lunr": "^2.3.9", + "marked": "7.0.3", + "minimist": "^1.2.8", + "neotraverse": "^0.6.18", + "opencollective-postinstall": "^2.0.3", + "os-name": "4.0.1", + "picocolors": "^1.1.0", + "prismjs": "^1.29.0", + "semver": "^7.6.3", + "svg-pan-zoom": "^3.6.1", + "tablesort": "^5.3.0", + "ts-morph": "^24.0.0", + "uuid": "^10.0.0", + "vis": "^4.21.0-EOL" + }, + "bin": { + "compodoc": "bin/index-cli.js" + }, + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/schematics": { + "version": "18.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "18.2.8", + "jsonc-parser": "3.3.1", + "magic-string": "0.30.11", + "ora": "5.4.1", + "rxjs": "7.8.1" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/schematics/node_modules/@angular-devkit/core": { + "version": "18.2.8", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "8.17.1", + "ajv-formats": "3.0.1", + "jsonc-parser": "3.3.1", + "picomatch": "4.0.2", + "rxjs": "7.8.1", + "source-map": "0.7.4" + }, + "engines": { + "node": "^18.19.1 || ^20.11.1 || >=22.0.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@compodoc/compodoc/node_modules/@angular-devkit/schematics/node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "optional": true, + "peer": 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" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@babel/core": { + "version": "7.25.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.8", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.8", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@babel/plugin-transform-private-methods": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.7.tgz", + "integrity": "sha512-KY0hh2FluNxMLwOCHbxVOKfdB5sjWG4M183885FmaqWWiGMhRZq4DQRKH6mHdEucbJnyDyYiZNwNG424RymJjA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@babel/preset-env": { + "version": "7.25.8", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.8", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-plugin-utils": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "@babel/plugin-bugfix-firefox-class-in-computed-class-key": "^7.25.7", + "@babel/plugin-bugfix-safari-class-field-initializer-scope": "^7.25.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.25.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.25.7", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.25.7", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-import-assertions": "^7.25.7", + "@babel/plugin-syntax-import-attributes": "^7.25.7", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.25.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.8", + "@babel/plugin-transform-async-to-generator": "^7.25.7", + "@babel/plugin-transform-block-scoped-functions": "^7.25.7", + "@babel/plugin-transform-block-scoping": "^7.25.7", + "@babel/plugin-transform-class-properties": "^7.25.7", + "@babel/plugin-transform-class-static-block": "^7.25.8", + "@babel/plugin-transform-classes": "^7.25.7", + "@babel/plugin-transform-computed-properties": "^7.25.7", + "@babel/plugin-transform-destructuring": "^7.25.7", + "@babel/plugin-transform-dotall-regex": "^7.25.7", + "@babel/plugin-transform-duplicate-keys": "^7.25.7", + "@babel/plugin-transform-duplicate-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-dynamic-import": "^7.25.8", + "@babel/plugin-transform-exponentiation-operator": "^7.25.7", + "@babel/plugin-transform-export-namespace-from": "^7.25.8", + "@babel/plugin-transform-for-of": "^7.25.7", + "@babel/plugin-transform-function-name": "^7.25.7", + "@babel/plugin-transform-json-strings": "^7.25.8", + "@babel/plugin-transform-literals": "^7.25.7", + "@babel/plugin-transform-logical-assignment-operators": "^7.25.8", + "@babel/plugin-transform-member-expression-literals": "^7.25.7", + "@babel/plugin-transform-modules-amd": "^7.25.7", + "@babel/plugin-transform-modules-commonjs": "^7.25.7", + "@babel/plugin-transform-modules-systemjs": "^7.25.7", + "@babel/plugin-transform-modules-umd": "^7.25.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.25.7", + "@babel/plugin-transform-new-target": "^7.25.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.25.8", + "@babel/plugin-transform-numeric-separator": "^7.25.8", + "@babel/plugin-transform-object-rest-spread": "^7.25.8", + "@babel/plugin-transform-object-super": "^7.25.7", + "@babel/plugin-transform-optional-catch-binding": "^7.25.8", + "@babel/plugin-transform-optional-chaining": "^7.25.8", + "@babel/plugin-transform-parameters": "^7.25.7", + "@babel/plugin-transform-private-methods": "^7.25.7", + "@babel/plugin-transform-private-property-in-object": "^7.25.8", + "@babel/plugin-transform-property-literals": "^7.25.7", + "@babel/plugin-transform-regenerator": "^7.25.7", + "@babel/plugin-transform-reserved-words": "^7.25.7", + "@babel/plugin-transform-shorthand-properties": "^7.25.7", + "@babel/plugin-transform-spread": "^7.25.7", + "@babel/plugin-transform-sticky-regex": "^7.25.7", + "@babel/plugin-transform-template-literals": "^7.25.7", + "@babel/plugin-transform-typeof-symbol": "^7.25.7", + "@babel/plugin-transform-unicode-escapes": "^7.25.7", + "@babel/plugin-transform-unicode-property-regex": "^7.25.7", + "@babel/plugin-transform-unicode-regex": "^7.25.7", + "@babel/plugin-transform-unicode-sets-regex": "^7.25.7", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.10.6", + "babel-plugin-polyfill-regenerator": "^0.6.1", + "core-js-compat": "^3.38.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@compodoc/compodoc/node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@compodoc/compodoc/node_modules/ajv": { + "version": "8.17.1", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@compodoc/compodoc/node_modules/ajv-formats": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@compodoc/compodoc/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.10.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.2", + "core-js-compat": "^3.38.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@compodoc/compodoc/node_modules/chokidar": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@compodoc/compodoc/node_modules/chokidar/node_modules/readdirp": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@compodoc/compodoc/node_modules/convert-source-map": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@compodoc/compodoc/node_modules/jsonc-parser": { + "version": "3.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@compodoc/compodoc/node_modules/magic-string": { + "version": "0.30.11", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/@compodoc/compodoc/node_modules/picomatch": { + "version": "4.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@compodoc/compodoc/node_modules/semver": { + "version": "7.6.3", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@compodoc/live-server": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^3.5.2", + "colors": "1.4.0", + "connect": "^3.7.0", + "cors": "latest", + "event-stream": "4.0.1", + "faye-websocket": "0.11.x", + "http-auth": "4.1.9", + "http-auth-connect": "^1.0.5", + "morgan": "^1.10.0", + "object-assign": "latest", + "open": "8.4.0", + "proxy-middleware": "latest", + "send": "latest", + "serve-index": "^1.9.1" + }, + "bin": { + "live-server": "live-server.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@compodoc/live-server/node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@compodoc/ngd-core": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-colors": "^4.1.3", + "fancy-log": "^2.0.0", + "typescript": "^5.0.4" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@compodoc/ngd-transformer": { + "version": "2.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@aduh95/viz.js": "3.4.0", + "@compodoc/ngd-core": "~2.1.1", + "dot": "^2.0.0-beta.1", + "fs-extra": "^11.1.1" + }, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "license": "CC0-1.0", + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.31.0", + "dev": true, + "license": "MIT", + "dependencies": { + "comment-parser": "1.3.1", + "esquery": "^1.4.0", + "jsdoc-type-pratt-parser": "~3.1.0" + }, + "engines": { + "node": "^14 || ^16 || ^17 || ^18" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.20.1.tgz", + "integrity": "sha512-m55cpeupQ2DbuRGQMMZDzbv9J9PgVelPjlcmM5kxHnrBdBx6REaEd7LamYV7Dm8N7rCyR/XwU6rVP8ploKtIkA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.1.tgz", + "integrity": "sha512-4j0+G27/2ZXGWR5okcJi7pQYhmkVgb4D7UKwxcqrjhvp5TKWx3cUjgB1CGj1mfdmJBQ9VnUGgUhign+FPF2Zgw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.1.tgz", + "integrity": "sha512-hCnXNF0HM6AjowP+Zou0ZJMWWa1VkD77BXe959zERgGJBBxB+sV+J9f/rcjeg2c5bsukD/n17RKWXGFCO5dD5A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.1.tgz", + "integrity": "sha512-MSfZMBoAsnhpS+2yMFYIQUPs8Z19ajwfuaSZx+tSl09xrHZCjbeXXMsUF/0oq7ojxYEpsSo4c0SfjxOYXRbpaA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.1.tgz", + "integrity": "sha512-Ylk6rzgMD8klUklGPzS414UQLa5NPXZD5tf8JmQU8GQrj6BrFA/Ic9tb2zRe1kOZyCbGl+e8VMbDRazCEBqPvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.1.tgz", + "integrity": "sha512-pFIfj7U2w5sMp52wTY1XVOdoxw+GDwy9FsK3OFz4BpMAjvZVs0dT1VXs8aQm22nhwoIWUmIRaE+4xow8xfIDZA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.1.tgz", + "integrity": "sha512-UyW1WZvHDuM4xDz0jWun4qtQFauNdXjXOtIy7SYdf7pbxSWWVlqhnR/T2TpX6LX5NI62spt0a3ldIIEkPM6RHw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.1.tgz", + "integrity": "sha512-itPwCw5C+Jh/c624vcDd9kRCCZVpzpQn8dtwoYIt2TJF3S9xJLiRohnnNrKwREvcZYx0n8sCSbvGH349XkcQeg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.1.tgz", + "integrity": "sha512-LojC28v3+IhIbfQ+Vu4Ut5n3wKcgTu6POKIHN9Wpt0HnfgUGlBuyDDQR4jWZUZFyYLiz4RBBBmfU6sNfn6RhLw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.1.tgz", + "integrity": "sha512-cX8WdlF6Cnvw/DO9/X7XLH2J6CkBnz7Twjpk56cshk9sjYVcuh4sXQBy5bmTwzBjNVZze2yaV1vtcJS04LbN8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.1.tgz", + "integrity": "sha512-4H/sQCy1mnnGkUt/xszaLlYJVTz3W9ep52xEefGtd6yXDQbz/5fZE5dFLUgsPdbUOQANcVUa5iO6g3nyy5BJiw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.1.tgz", + "integrity": "sha512-c0jgtB+sRHCciVXlyjDcWb2FUuzlGVRwGXgI+3WqKOIuoo8AmZAddzeOHeYLtD+dmtHw3B4Xo9wAUdjlfW5yYA==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.1.tgz", + "integrity": "sha512-TgFyCfIxSujyuqdZKDZ3yTwWiGv+KnlOeXXitCQ+trDODJ+ZtGOzLkSWngynP0HZnTsDyBbPy7GWVXWaEl6lhA==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.1.tgz", + "integrity": "sha512-b+yuD1IUeL+Y93PmFZDZFIElwbmFfIKLKlYI8M6tRyzE6u7oEP7onGk0vZRh8wfVGC2dZoy0EqX1V8qok4qHaw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.1.tgz", + "integrity": "sha512-wpDlpE0oRKZwX+GfomcALcouqjjV8MIX8DyTrxfyCfXxoKQSDm45CZr9fanJ4F6ckD4yDEPT98SrjvLwIqUCgg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.1.tgz", + "integrity": "sha512-5BepC2Au80EohQ2dBpyTquqGCES7++p7G+7lXe1bAIvMdXm4YYcEfZtQrP4gaoZ96Wv1Ute61CEHFU7h4FMueQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.1.tgz", + "integrity": "sha512-5gRPk7pKuaIB+tmH+yKd2aQTRpqlf1E4f/mC+tawIm/CGJemZcHZpp2ic8oD83nKgUPMEd0fNanrnFljiruuyA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.1.tgz", + "integrity": "sha512-4fL68JdrLV2nVW2AaWZBv3XEm3Ae3NZn/7qy2KGAt3dexAgSVT+Hc97JKSZnqezgMlv9x6KV0ZkZY7UO5cNLCg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.1.tgz", + "integrity": "sha512-GhRuXlvRE+twf2ES+8REbeCb/zeikNqwD3+6S5y5/x+DYbAQUNl0HNBs4RQJqrechS4v4MruEr8ZtAin/hK5iw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.1.tgz", + "integrity": "sha512-ZnWEyCM0G1Ex6JtsygvC3KUUrlDXqOihw8RicRuQAzw+c4f1D66YlPNNV3rkjVW90zXVsHwZYWbJh3v+oQFM9Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.1.tgz", + "integrity": "sha512-QZ6gXue0vVQY2Oon9WyLFCdSuYbXSoxaZrPuJ4c20j6ICedfsDilNPYfHLlMH7vGfU5DQR0czHLmJvH4Nzis/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.1.tgz", + "integrity": "sha512-HzcJa1NcSWTAU0MJIxOho8JftNp9YALui3o+Ny7hCh0v5f90nprly1U3Sj1Ldj/CvKKdvvFsCRvDkpsEMp4DNw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.1.tgz", + "integrity": "sha512-0MBh53o6XtI6ctDnRMeQ+xoCN8kD2qI1rY1KgF/xdWQwoFeKou7puvDfV8/Wv4Ctx2rRpET/gGdz3YlNtNACSA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.1.tgz", + "integrity": "sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "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/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/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, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz", + "integrity": "sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@ffmpeg/core": { + "version": "0.12.10", + "resolved": "https://registry.npmjs.org/@ffmpeg/core/-/core-0.12.10.tgz", + "integrity": "sha512-dzNplnn2Nxle2c2i2rrDhqcB19q9cglCkWnoMTDN9Q9l3PvdjZWd1HfSPjCNWc/p8Q3CT+Es9fWOR0UhAeYQZA==", + "license": "GPL-2.0-or-later", + "engines": { + "node": ">=16.x" + } + }, + "node_modules/@ffmpeg/ffmpeg": { + "version": "0.12.15", + "resolved": "https://registry.npmjs.org/@ffmpeg/ffmpeg/-/ffmpeg-0.12.15.tgz", + "integrity": "sha512-1C8Obr4GsN3xw+/1Ww6PFM84wSQAGsdoTuTWPOj2OizsRDLT4CXTaVjPhkw6ARyDus1B9X/L2LiXHqYYsGnRFw==", + "license": "MIT", + "dependencies": { + "@ffmpeg/types": "^0.12.4" + }, + "engines": { + "node": ">=18.x" + } + }, + "node_modules/@ffmpeg/types": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/@ffmpeg/types/-/types-0.12.4.tgz", + "integrity": "sha512-k9vJQNBGTxE5AhYDtOYR5rO5fKsspbg51gbcwtbkw2lCdoIILzklulcjJfIDwrtn7XhDeF2M+THwJ2FGrLeV6A==", + "license": "MIT", + "engines": { + "node": ">=16.x" + } + }, + "node_modules/@ffmpeg/util": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/@ffmpeg/util/-/util-0.12.2.tgz", + "integrity": "sha512-ouyoW+4JB7WxjeZ2y6KpRvB+dLp7Cp4ro8z0HIVpZVCM7AwFlHa0c4R8Y/a4M3wMqATpYKhC7lSFHQ0T11MEDw==", + "license": "MIT", + "engines": { + "node": ">=18.x" + } + }, + "node_modules/@filestack/loader": { + "version": "1.0.9", + "license": "SEE LICENSE IN LICENSE" + }, + "node_modules/@graphql-typed-document-node/core": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@graphql-typed-document-node/core/-/core-3.2.0.tgz", + "integrity": "sha512-mB9oAsNCm9aM3/SOv4YtBMqZbYj10R7dkq8byBqxGY/ncFwhf2oQzMV+LCRlWoDSEBJ3COiR1yeDvMtsoOsuFQ==", + "peerDependencies": { + "graphql": "^0.8.0 || ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 || ^17.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", + "integrity": "sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.3", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/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/@humanwhocodes/module-importer": { + "version": "1.0.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@ionic/angular": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@ionic/angular/-/angular-7.8.6.tgz", + "integrity": "sha512-3Qe53hXpyjtx6fFcxt/NTAlauIawsGmCZJPauV5sAnSKVuX8C82C1zMAZTeJt6m2dnd71wythc98BXUXsx/UxQ==", + "dependencies": { + "@ionic/core": "7.8.6", + "ionicons": "^7.0.0", + "jsonc-parser": "^3.0.0", + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/core": ">=14.0.0", + "@angular/forms": ">=14.0.0", + "@angular/router": ">=14.0.0", + "rxjs": ">=7.5.0", + "zone.js": ">=0.11.0" + } + }, + "node_modules/@ionic/angular-toolkit": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@ionic/angular-toolkit/-/angular-toolkit-9.0.0.tgz", + "integrity": "sha512-Rh8z+XGQiyEzJ2nMKTAa3nmejgabxY6f/2q+9Jm/B/VnXjpyeSe8bgP008c0EZYBvrKs7MjP1ZrNi+4FM0W3fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "^15.0.0", + "@angular-devkit/schematics": "^15.0.0", + "@schematics/angular": "^15.0.0" + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/@angular-devkit/core": { + "version": "15.2.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-15.2.11.tgz", + "integrity": "sha512-zd6QelJ8pOPvz6TsehR0JqixjDjzgEOkKywBJBuwNXY+Nw3MJGayJeWS0UgC+Gk+LoTkpI21RoyaYELkAmD/tw==", + "dev": true, + "dependencies": { + "ajv": "8.12.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.2.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/@angular-devkit/schematics": { + "version": "15.2.11", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-15.2.11.tgz", + "integrity": "sha512-Wfj0FO8lcGqOkg7GTYOGUsAHqTS9GMfGXTAGsM/8g0SZI4kaPy/luZSPFtevpFE5PSR6dyWSIC0GgzfavjhJMg==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "15.2.11", + "jsonc-parser": "3.2.0", + "magic-string": "0.29.0", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/@schematics/angular": { + "version": "15.2.11", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-15.2.11.tgz", + "integrity": "sha512-z38f9abwfzUGe9TEIggf3igpVf/ylmSlHy1jydAxXbeKv24ejg8m5dYBPH2/MvgUFP6tjHdxjKD56DnOdyKl3g==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "15.2.11", + "@angular-devkit/schematics": "15.2.11", + "jsonc-parser": "3.2.0" + }, + "engines": { + "node": "^14.20.0 || ^16.13.0 || >=18.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@ionic/angular-toolkit/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/@ionic/angular-toolkit/node_modules/magic-string": { + "version": "0.29.0", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.29.0.tgz", + "integrity": "sha512-WcfidHrDjMY+eLjlU+8OvwREqHwpgCeKVBUpQ3OhYYuvfaYCUgcbuBzappNzZvg/v8onU3oQj+BYpkOJe9Iw4Q==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.13" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@ionic/angular-toolkit/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@ionic/core": { + "version": "7.8.6", + "resolved": "https://registry.npmjs.org/@ionic/core/-/core-7.8.6.tgz", + "integrity": "sha512-HAYZdEmeJgOdo2kDlZkcCGHb+zs/vjU6iv4skbVBL7y+OnSv/oC2u83Yee8S3/aY0YAxkyBgu7hLTYH13Zc2Aw==", + "dependencies": { + "@stencil/core": "^4.12.2", + "ionicons": "^7.2.2", + "tslib": "^2.1.0" + } + }, + "node_modules/@ionic/storage": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@ionic/storage/-/storage-4.0.0.tgz", + "integrity": "sha512-3N21P19Xk6cICLnSXZ3ilRqbSXAGSFeIF3HNqz+1kARcm0UFT/vwmZreaXtFyq437vvEWOfJ2enlj3JHLKS0FA==", + "dependencies": { + "localforage": "^1.9.0" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "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==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.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==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@kwsites/file-exists": { + "version": "1.1.1", + "dev": true, + "dependencies": { + "debug": "^4.1.1" + } + }, + "node_modules/@kwsites/promise-deferred": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz", + "integrity": "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==", + "dev": true + }, + "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, + "license": "MIT" + }, + "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": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@ngtools/webpack": { + "version": "17.3.17", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-17.3.17.tgz", + "integrity": "sha512-LaO++U8DoqV36M0YLKhubc1+NqM8fyp5DN03k1uP9GvtRchP9+7bfG+IEEZiDFkCUh9lfzi1CiGvUHrN4MYcsA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.13.0 || >=20.9.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^17.0.0", + "typescript": ">=5.2 <5.5", + "webpack": "^5.54.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "dev": true, + "license": "MIT", + "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.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "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, + "license": "ISC", + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-5.0.8.tgz", + "integrity": "sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^7.0.0", + "ini": "^4.1.3", + "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/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.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.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "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, + "license": "ISC", + "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/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.1", + "resolved": "https://registry.npmjs.org/@npmcli/package-json/-/package-json-5.2.1.tgz", + "integrity": "sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==", + "dev": true, + "license": "ISC", + "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.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "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/@npmcli/package-json/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@npmcli/package-json/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/@npmcli/package-json/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "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, + "license": "ISC", + "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, + "license": "MIT", + "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, + "license": "MIT", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/@paralleldrive/cuid2": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@paralleldrive/cuid2/-/cuid2-2.2.2.tgz", + "integrity": "sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@noble/hashes": "^1.1.5" + } + }, + "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.0", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.3.0.tgz", + "integrity": "sha512-9eO5McEICxMzJpDW9OnMYSv4Sta3hmt7VtBFz5zR9273suNOydOyq/FrGeGy+KsTRFm8w0SLVhzig2ILFT63Ag==", + "dev": true, + "license": "ISC", + "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.3", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", + "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", + "dev": true, + "license": "MIT", + "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, + "license": "ISC", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.25.0.tgz", + "integrity": "sha512-CC/ZqFZwlAIbU1wUPisHyV/XRc5RydFrNLtgl3dGYskdwPZdt4HERtKm50a/+DtTlKeCq9IXFEWR+P6blwjqBA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.25.0.tgz", + "integrity": "sha512-/Y76tmLGUJqVBXXCfVS8Q8FJqYGhgH4wl4qTA24E9v/IJM0XvJCGQVSW1QZ4J+VURO9h8YCa28sTFacZXwK7Rg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.34.9", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.25.0.tgz", + "integrity": "sha512-YVT6L3UrKTlC0FpCZd0MGA7NVdp7YNaEqkENbWQ7AOVOqd/7VzyHpgIpc1mIaxRAo1ZsJRH45fq8j4N63I/vvg==", "cpu": [ "arm64" ], - "license": "MIT", + "dev": true, "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz", - "integrity": "sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.25.0.tgz", + "integrity": "sha512-ZRL+gexs3+ZmmWmGKEU43Bdn67kWnMeWXLFhcVv5Un8FQcx38yulHBA7XR2+KQdYIOtD0yZDWBCudmfj6lQJoA==", "cpu": [ "x64" ], - "license": "MIT", + "dev": true, "optional": true, "os": [ "darwin" ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", - "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.25.0.tgz", + "integrity": "sha512-xpEIXhiP27EAylEpreCozozsxWQ2TJbOLSivGfXhU4G1TBVEYtUPi2pOZBnvGXHyOdLAUUhPnJzH3ah5cqF01g==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", - "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.25.0.tgz", + "integrity": "sha512-sC5FsmZGlJv5dOcURrsnIK7ngc3Kirnx3as2XU9uER+zjfyqIjdcMVgzy4cOawhsssqzoAX19qmxgJ8a14Qrqw==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "freebsd" ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", - "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.25.0.tgz", + "integrity": "sha512-uD/dbLSs1BEPzg564TpRAQ/YvTnCds2XxyOndAO8nJhaQcqQGFgv/DAVko/ZHap3boCvxnzYMa3mTkV/B/3SWA==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", - "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.25.0.tgz", + "integrity": "sha512-ZVt/XkrDlQWegDWrwyC3l0OfAF7yeJUF4fq5RMS07YM72BlSfn2fQQ6lPyBNjt+YbczMguPiJoCfaQC2dnflpQ==", "cpu": [ "arm" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz", - "integrity": "sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.25.0.tgz", + "integrity": "sha512-qboZ+T0gHAW2kkSDPHxu7quaFaaBlynODXpBVnPxUgvWYaE84xgCKAPEYE+fSMd3Zv5PyFZR+L0tCdYCMAtG0A==", "cpu": [ "arm64" ], - "license": "MIT", + "dev": true, "optional": true, "os": [ "linux" ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz", - "integrity": "sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.25.0.tgz", + "integrity": "sha512-ndWTSEmAaKr88dBuogGH2NZaxe7u2rDoArsejNslugHZ+r44NfWiwjzizVS1nUOHo+n1Z6qV3X60rqE/HlISgw==", "cpu": [ "arm64" ], - "license": "MIT", + "dev": true, "optional": true, "os": [ "linux" ] }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", - "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.25.0.tgz", + "integrity": "sha512-BVSQvVa2v5hKwJSy6X7W1fjDex6yZnNKy3Kx1JGimccHft6HV0THTwNtC2zawtNXKUu+S5CjXslilYdKBAadzA==", "cpu": [ - "loong64" + "ppc64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", - "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.25.0.tgz", + "integrity": "sha512-G4hTREQrIdeV0PE2JruzI+vXdRnaK1pg64hemHq2v5fhv8C7WjVaeXc9P5i4Q5UC06d/L+zA0mszYIKl+wY8oA==", "cpu": [ - "loong64" + "riscv64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", - "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.25.0.tgz", + "integrity": "sha512-9T/w0kQ+upxdkFL9zPVB6zy9vWW1deA3g8IauJxojN4bnz5FwSsUAD034KpXIVX5j5p/rn6XqumBMxfRkcHapQ==", "cpu": [ - "ppc64" + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.25.0.tgz", + "integrity": "sha512-ThcnU0EcMDn+J4B9LD++OgBYxZusuA7iemIIiz5yzEcFg04VZFzdFjuwPdlURmYPZw+fgVrFzj4CA64jSTG4Ig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.25.0.tgz", + "integrity": "sha512-zx71aY2oQxGxAT1JShfhNG79PnjYhMC6voAjzpu/xmMjDnKNf6Nl/xv7YaB/9SIa9jDYf8RBPWEnjcdlhlv1rQ==", + "cpu": [ + "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "linux" ] }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", - "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", - "cpu": [ - "ppc64" - ], + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.25.0.tgz", + "integrity": "sha512-JT8tcjNocMs4CylWY/CxVLnv8e1lE7ff1fi6kbGocWwxDq9pj30IJ28Peb+Y8yiPNSF28oad42ApJB8oUkwGww==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.25.0.tgz", + "integrity": "sha512-dRLjLsO3dNOfSN6tjyVlG+Msm4IiZnGkuZ7G5NmpzwF9oOc582FZG05+UdfTbz5Jd4buK/wMb6UeHFhG18+OEg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.25.0.tgz", + "integrity": "sha512-/RqrIFtLB926frMhZD0a5oDa4eFIbyNEwLLloMTEjmqfwZWXywwVVOVmwTsuyhC9HKkVEZcOOi+KV4U9wmOdlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/wasm-node": { + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/@rollup/wasm-node/-/wasm-node-4.25.0.tgz", + "integrity": "sha512-Brhz6gK/43E9lpMkbcfg06hRHctpMkbmy1JzOU2JWub3teujTNqou1xWTQgt9CRu15WGTt78t7p7rNxGIBZv+g==", + "dev": true, + "license": "MIT", + "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/@schematics/angular": { + "version": "17.3.17", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-17.3.17.tgz", + "integrity": "sha512-S5HwYem5Yjeceb5OLvforNcjfTMh2qsHnTP1BAYL81XPpqeg2udjAkJjKBxCwxMZSqdCMw3ne0eKppEYTaEZ+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular-devkit/core": "17.3.17", + "@angular-devkit/schematics": "17.3.17", + "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/@sentry/hub": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "6.19.7", + "@sentry/utils": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/minimal": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/hub": "6.19.7", + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@sentry/types": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "6.19.7", + "license": "BSD-3-Clause", + "dependencies": { + "@sentry/types": "6.19.7", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "node_modules/@serverless/dashboard-plugin": { + "version": "7.2.3", + "dev": true, + "dependencies": { + "@aws-sdk/client-cloudformation": "^3.410.0", + "@aws-sdk/client-sts": "^3.410.0", + "@serverless/event-mocks": "^1.1.1", + "@serverless/platform-client": "^4.5.1", + "@serverless/utils": "^6.14.0", + "child-process-ext": "^3.0.1", + "chokidar": "^3.5.3", + "flat": "^5.0.2", + "fs-extra": "^9.1.0", + "js-yaml": "^4.1.0", + "jszip": "^3.10.1", + "lodash": "^4.17.21", + "memoizee": "^0.4.15", + "ncjsm": "^4.3.2", + "node-dir": "^0.1.17", + "node-fetch": "^2.6.8", + "open": "^7.4.2", + "semver": "^7.3.8", + "simple-git": "^3.16.0", + "timers-ext": "^0.1.7", + "type": "^2.7.2", + "uuid": "^8.3.2", + "yamljs": "^0.3.0" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/@serverless/dashboard-plugin/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==", + "dev": true + }, + "node_modules/@serverless/dashboard-plugin/node_modules/child-process-ext": { + "version": "3.0.2", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "es5-ext": "^0.10.62", + "log": "^6.3.1", + "split2": "^3.2.2", + "stream-promise": "^3.2.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/fs-extra": { + "version": "9.1.0", + "dev": true, + "dependencies": { + "at-least-node": "^1.0.0", + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/open": { + "version": "7.4.2", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0", + "is-wsl": "^2.1.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@serverless/dashboard-plugin/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@serverless/event-mocks": { + "version": "1.1.1", + "dev": true, + "dependencies": { + "@types/lodash": "^4.14.123", + "lodash": "^4.17.11" + } + }, + "node_modules/@serverless/platform-client": { + "version": "4.5.1", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "adm-zip": "^0.5.5", + "archiver": "^5.3.0", + "axios": "^1.6.2", + "fast-glob": "^3.2.7", + "https-proxy-agent": "^5.0.0", + "ignore": "^5.1.8", + "isomorphic-ws": "^4.0.1", + "js-yaml": "^3.14.1", + "jwt-decode": "^2.2.0", + "minimatch": "^3.0.4", + "querystring": "^0.2.1", + "run-parallel-limit": "^1.1.0", + "throat": "^5.0.0", + "traverse": "^0.6.6", + "ws": "^7.5.3" + }, + "engines": { + "node": ">=10.0" + } }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", - "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", - "cpu": [ - "riscv64" - ], + "node_modules/@serverless/platform-client/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", - "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", - "cpu": [ - "riscv64" - ], + "node_modules/@serverless/platform-client/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", - "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", - "cpu": [ - "s390x" - ], + "node_modules/@serverless/platform-client/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, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz", - "integrity": "sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@serverless/platform-client/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/@rollup/rollup-linux-x64-musl": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz", - "integrity": "sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] + "node_modules/@serverless/utils": { + "version": "6.15.0", + "dev": true, + "dependencies": { + "archive-type": "^4.0.0", + "chalk": "^4.1.2", + "ci-info": "^3.8.0", + "cli-progress-footer": "^2.3.2", + "content-disposition": "^0.5.4", + "d": "^1.0.1", + "decompress": "^4.2.1", + "event-emitter": "^0.3.5", + "ext": "^1.7.0", + "ext-name": "^5.0.0", + "file-type": "^16.5.4", + "filenamify": "^4.3.0", + "get-stream": "^6.0.1", + "got": "^11.8.6", + "inquirer": "^8.2.5", + "js-yaml": "^4.1.0", + "jwt-decode": "^3.1.2", + "lodash": "^4.17.21", + "log": "^6.3.1", + "log-node": "^8.0.3", + "make-dir": "^4.0.0", + "memoizee": "^0.4.15", + "ms": "^2.1.3", + "ncjsm": "^4.3.2", + "node-fetch": "^2.6.11", + "open": "^8.4.2", + "p-event": "^4.2.0", + "supports-color": "^8.1.1", + "timers-ext": "^0.1.7", + "type": "^2.7.2", + "uni-global": "^1.0.0", + "uuid": "^8.3.2", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": ">=12.0" + } }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", - "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", - "cpu": [ - "x64" - ], + "node_modules/@serverless/utils/node_modules/@inquirer/external-editor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] + "dependencies": { + "chardet": "^2.1.1", + "iconv-lite": "^0.7.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "@types/node": ">=18" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + } + } }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", - "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", - "cpu": [ - "arm64" - ], + "node_modules/@serverless/utils/node_modules/@types/node": { + "version": "25.2.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.2.2.tgz", + "integrity": "sha512-BkmoP5/FhRYek5izySdkOneRyXYN35I860MFAGupTdebyE66uZaR+bXLHq8k4DirE5DwQi3NuhvRU1jqTVwUrQ==", "dev": true, "license": "MIT", "optional": true, - "os": [ - "openharmony" - ] + "peer": true, + "dependencies": { + "undici-types": "~7.16.0" + } }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz", - "integrity": "sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "node_modules/@serverless/utils/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==", + "dev": true }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", - "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", - "cpu": [ - "ia32" - ], + "node_modules/@serverless/utils/node_modules/chardet": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "license": "MIT" }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", - "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", - "cpu": [ - "x64" - ], + "node_modules/@serverless/utils/node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.34.9", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz", - "integrity": "sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] + "engines": { + "node": ">= 10" + } }, - "node_modules/@rollup/wasm-node": { - "version": "4.60.0", + "node_modules/@serverless/utils/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" + "node": ">=0.10.0" }, - "optionalDependencies": { - "fsevents": "~2.3.2" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" } }, - "node_modules/@schematics/angular": { - "version": "19.2.22", + "node_modules/@serverless/utils/node_modules/inquirer": { + "version": "8.2.7", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.7.tgz", + "integrity": "sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==", "dev": true, "license": "MIT", "dependencies": { - "@angular-devkit/core": "19.2.22", - "@angular-devkit/schematics": "19.2.22", - "jsonc-parser": "3.3.1" + "@inquirer/external-editor": "^1.0.0", + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^6.0.1" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0", - "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", - "yarn": ">= 1.13.0" + "node": ">=12.0.0" } }, - "node_modules/@sentry-internal/browser-utils": { - "version": "8.55.0", - "license": "MIT", - "dependencies": { - "@sentry/core": "8.55.0" - }, + "node_modules/@serverless/utils/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, "engines": { - "node": ">=14.18" + "node": ">=8" } }, - "node_modules/@sentry-internal/feedback": { - "version": "8.55.0", + "node_modules/@serverless/utils/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, "license": "MIT", "dependencies": { - "@sentry/core": "8.55.0" + "argparse": "^2.0.1" }, - "engines": { - "node": ">=14.18" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@sentry-internal/replay": { - "version": "8.55.0", - "license": "MIT", - "dependencies": { - "@sentry-internal/browser-utils": "8.55.0", - "@sentry/core": "8.55.0" - }, + "node_modules/@serverless/utils/node_modules/jwt-decode": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-3.1.2.tgz", + "integrity": "sha512-UfpWE/VZn0iP50d8cz9NrZLM9lSWhcJ+0Gt/nm4by88UL+J1SiKN8/5dkjMmbEzwL2CAe+67GsegCbIKtbp75A==", + "dev": true + }, + "node_modules/@serverless/utils/node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/@serverless/utils/node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, "engines": { - "node": ">=14.18" + "node": ">=0.12.0" } }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "8.55.0", - "license": "MIT", + "node_modules/@serverless/utils/node_modules/string-width": { + "version": "4.2.3", + "dev": true, "dependencies": { - "@sentry-internal/replay": "8.55.0", - "@sentry/core": "8.55.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=14.18" + "node": ">=8" } }, - "node_modules/@sentry/browser": { - "version": "8.55.0", - "license": "MIT", + "node_modules/@serverless/utils/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, "dependencies": { - "@sentry-internal/browser-utils": "8.55.0", - "@sentry-internal/feedback": "8.55.0", - "@sentry-internal/replay": "8.55.0", - "@sentry-internal/replay-canvas": "8.55.0", - "@sentry/core": "8.55.0" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=14.18" - } - }, - "node_modules/@sentry/core": { - "version": "8.55.0", - "license": "MIT", - "engines": { - "node": ">=14.18" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@serverless/dashboard-plugin": { - "version": "7.2.3", + "node_modules/@serverless/utils/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "license": "MIT", - "dependencies": { - "@aws-sdk/client-cloudformation": "^3.410.0", - "@aws-sdk/client-sts": "^3.410.0", - "@serverless/event-mocks": "^1.1.1", - "@serverless/platform-client": "^4.5.1", - "@serverless/utils": "^6.14.0", - "child-process-ext": "^3.0.1", - "chokidar": "^3.5.3", - "flat": "^5.0.2", - "fs-extra": "^9.1.0", - "js-yaml": "^4.1.0", - "jszip": "^3.10.1", - "lodash": "^4.17.21", - "memoizee": "^0.4.15", - "ncjsm": "^4.3.2", - "node-dir": "^0.1.17", - "node-fetch": "^2.6.8", - "open": "^7.4.2", - "semver": "^7.3.8", - "simple-git": "^3.16.0", - "timers-ext": "^0.1.7", - "type": "^2.7.2", - "uuid": "^8.3.2", - "yamljs": "^0.3.0" - }, - "engines": { - "node": ">=12.0" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/child-process-ext": { - "version": "3.0.2", + "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, - "license": "ISC", "dependencies": { - "cross-spawn": "^7.0.3", - "es5-ext": "^0.10.62", - "log": "^6.3.1", - "split2": "^3.2.2", - "stream-promise": "^3.2.0" + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": ">=8.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/chokidar": { - "version": "3.6.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, - "license": "MIT", - "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" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/fs-extra": { - "version": "9.1.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, - "license": "MIT", - "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=10" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/glob-parent": { - "version": "5.1.2", + "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, - "license": "ISC", "dependencies": { - "is-glob": "^4.0.1" + "@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": ">= 6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/is-docker": { - "version": "2.2.1", + "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, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/is-wsl": { - "version": "2.2.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, - "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "@sigstore/protobuf-specs": "^0.3.2", + "tuf-js": "^2.2.1" }, "engines": { - "node": ">=8" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/open": { - "version": "7.4.2", + "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, - "license": "MIT", "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.1.0", + "@sigstore/protobuf-specs": "^0.3.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/picomatch": { - "version": "2.3.2", + "node_modules/@sindresorhus/is": { + "version": "4.6.0", "dev": true, - "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@serverless/dashboard-plugin/node_modules/readdirp": { - "version": "3.6.0", + "node_modules/@smithy/abort-controller": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.9.tgz", + "integrity": "sha512-yiW0WI30zj8ZKoSYNx90no7ugVn3khlyH/z5W8qtKBtVE6awRALbhSG+2SAHA1r6bO/6M9utxYKVZ3PCJ1rWxw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "picomatch": "^2.2.1" + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/@serverless/dashboard-plugin/node_modules/uuid": { - "version": "8.3.2", - "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">=16.0.0" } }, - "node_modules/@serverless/event-mocks": { - "version": "1.1.1", + "node_modules/@smithy/chunked-blob-reader": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.0.tgz", + "integrity": "sha512-WmU0TnhEAJLWvfSeMxBNe5xtbselEO8+4wG0NtZeL8oR21WgH1xiO37El+/Y+H/Ie4SCwBy3MxYWmOYaGgZueA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@types/lodash": "^4.14.123", - "lodash": "^4.17.11" - } - }, - "node_modules/@serverless/platform-client": { - "version": "4.5.1", - "dev": true, - "license": "ISC", - "dependencies": { - "adm-zip": "^0.5.5", - "archiver": "^5.3.0", - "axios": "^1.6.2", - "fast-glob": "^3.2.7", - "https-proxy-agent": "^5.0.0", - "ignore": "^5.1.8", - "isomorphic-ws": "^4.0.1", - "js-yaml": "^3.14.1", - "jwt-decode": "^2.2.0", - "minimatch": "^3.0.4", - "querystring": "^0.2.1", - "run-parallel-limit": "^1.1.0", - "throat": "^5.0.0", - "traverse": "^0.6.6", - "ws": "^7.5.3" + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.0" + "node": ">=18.0.0" } }, - "node_modules/@serverless/platform-client/node_modules/agent-base": { - "version": "6.0.2", + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.1.tgz", + "integrity": "sha512-lX9Ay+6LisTfpLid2zZtIhSEjHMZoAR5hHCR4H7tBz/Zkfr5ea8RcQ7Tk4mi0P76p4cN+Btz16Ffno7YHpKXnQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "debug": "4" + "@smithy/util-base64": "^4.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/@serverless/platform-client/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" + "node": ">=18.0.0" } }, - "node_modules/@serverless/platform-client/node_modules/brace-expansion": { - "version": "1.1.12", + "node_modules/@smithy/chunked-blob-reader-native/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@serverless/platform-client/node_modules/https-proxy-agent": { - "version": "5.0.1", + "node_modules/@smithy/chunked-blob-reader-native/node_modules/@smithy/util-base64": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.0.tgz", + "integrity": "sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "agent-base": "6", - "debug": "4" + "@smithy/util-buffer-from": "^4.2.0", + "@smithy/util-utf8": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6" + "node": ">=18.0.0" } }, - "node_modules/@serverless/platform-client/node_modules/ignore": { - "version": "5.3.2", + "node_modules/@smithy/chunked-blob-reader-native/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^4.2.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 4" + "node": ">=18.0.0" } }, - "node_modules/@serverless/platform-client/node_modules/js-yaml": { - "version": "3.14.2", + "node_modules/@smithy/chunked-blob-reader-native/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" + "@smithy/util-buffer-from": "^4.2.0", + "tslib": "^2.6.2" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@serverless/platform-client/node_modules/minimatch": { - "version": "3.1.5", + "node_modules/@smithy/config-resolver": { + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.13.tgz", + "integrity": "sha512-Gr/qwzyPaTL1tZcq8WQyHhTZREER5R1Wytmz4WnVGL4onA3dNk6Btll55c8Vr58pLdvWZmtG8oZxJTw3t3q7Jg==", "dev": true, - "license": "ISC", + "license": "Apache-2.0", "dependencies": { - "brace-expansion": "^1.1.7" + "@smithy/node-config-provider": "^3.1.12", + "@smithy/types": "^3.7.2", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.11", + "tslib": "^2.6.2" }, "engines": { - "node": "*" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils": { - "version": "6.15.0", + "node_modules/@smithy/core": { + "version": "2.5.7", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.5.7.tgz", + "integrity": "sha512-8olpW6mKCa0v+ibCjoCzgZHQx1SQmZuW/WkrdZo73wiTprTH6qhmskT60QLFdT9DRa5mXxjz89kQPZ7ZSsoqqg==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "archive-type": "^4.0.0", - "chalk": "^4.1.2", - "ci-info": "^3.8.0", - "cli-progress-footer": "^2.3.2", - "content-disposition": "^0.5.4", - "d": "^1.0.1", - "decompress": "^4.2.1", - "event-emitter": "^0.3.5", - "ext": "^1.7.0", - "ext-name": "^5.0.0", - "file-type": "^16.5.4", - "filenamify": "^4.3.0", - "get-stream": "^6.0.1", - "got": "^11.8.6", - "inquirer": "^8.2.5", - "js-yaml": "^4.1.0", - "jwt-decode": "^3.1.2", - "lodash": "^4.17.21", - "log": "^6.3.1", - "log-node": "^8.0.3", - "make-dir": "^4.0.0", - "memoizee": "^0.4.15", - "ms": "^2.1.3", - "ncjsm": "^4.3.2", - "node-fetch": "^2.6.11", - "open": "^8.4.2", - "p-event": "^4.2.0", - "supports-color": "^8.1.1", - "timers-ext": "^0.1.7", - "type": "^2.7.2", - "uni-global": "^1.0.0", - "uuid": "^8.3.2", - "write-file-atomic": "^4.0.2" + "@smithy/middleware-serde": "^3.0.11", + "@smithy/protocol-http": "^4.1.8", + "@smithy/types": "^3.7.2", + "@smithy/util-body-length-browser": "^3.0.0", + "@smithy/util-middleware": "^3.0.11", + "@smithy/util-stream": "^3.3.4", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=12.0" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils/node_modules/define-lazy-prop": { - "version": "2.0.0", + "node_modules/@smithy/core/node_modules/@smithy/util-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.3.4.tgz", + "integrity": "sha512-SGhGBG/KupieJvJSZp/rfHHka8BFgj56eek9px4pp7lZbOF+fRiVr4U7A3y3zJD8uGhxq32C5D96HxsTC9BckQ==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", + "dependencies": { + "@smithy/fetch-http-handler": "^4.1.3", + "@smithy/node-http-handler": "^3.3.3", + "@smithy/types": "^3.7.2", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils/node_modules/is-docker": { - "version": "2.2.1", + "node_modules/@smithy/credential-provider-imds": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.5.tgz", + "integrity": "sha512-4FTQGAsuwqTzVMmiRVTn0RR9GrbRfkP0wfu/tXWVHd2LgNpTY0uglQpIScXK4NaEyXbB3JmZt8gfVqO50lP8wg==", "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.9", + "@smithy/property-provider": "^3.1.8", + "@smithy/types": "^3.6.0", + "@smithy/url-parser": "^3.0.8", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0" } }, - "node_modules/@serverless/utils/node_modules/is-wsl": { - "version": "2.2.0", + "node_modules/@smithy/eventstream-codec": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.8.tgz", + "integrity": "sha512-jS/O5Q14UsufqoGhov7dHLOPCzkYJl9QDzusI2Psh4wyYx/izhzvX9P4D69aTxcdfVhEPhjK+wYyn/PzLjKbbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "is-docker": "^2.0.0" + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^4.12.0", + "@smithy/util-hex-encoding": "^4.2.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/@serverless/utils/node_modules/jwt-decode": { - "version": "3.1.2", - "dev": true, - "license": "MIT" - }, - "node_modules/@serverless/utils/node_modules/open": { - "version": "8.4.2", + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/@serverless/utils/node_modules/supports-color": { - "version": "8.1.1", + "node_modules/@smithy/eventstream-codec/node_modules/@smithy/util-hex-encoding": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.0.tgz", + "integrity": "sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "has-flag": "^4.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "node": ">=18.0.0" } }, - "node_modules/@serverless/utils/node_modules/uuid": { - "version": "8.3.2", + "node_modules/@smithy/eventstream-serde-browser": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.8.tgz", + "integrity": "sha512-MTfQT/CRQz5g24ayXdjg53V0mhucZth4PESoA5IhvaWVDTOQLfo8qI9vzqHcPsdd2v6sqfTYqF5L/l+pea5Uyw==", "dev": true, - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@sigstore/bundle": { - "version": "3.1.0", + "node_modules/@smithy/eventstream-serde-browser/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.4.0" + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/core": { - "version": "2.0.0", + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "4.3.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.8.tgz", + "integrity": "sha512-ah12+luBiDGzBruhu3efNy1IlbwSEdNiw8fOZksoKoWW1ZHvO/04MQsdnws/9Aj+5b0YXSSN2JXKy/ClIsW8MQ==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/protobuf-specs": { - "version": "0.4.3", + "node_modules/@smithy/eventstream-serde-config-resolver/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/sign": { - "version": "3.1.0", + "node_modules/@smithy/eventstream-serde-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.8.tgz", + "integrity": "sha512-cYpCpp29z6EJHa5T9WL0KAlq3SOKUQkcgSoeRfRVwjGgSFl7Uh32eYGt7IDYCX20skiEdRffyDpvF2efEZPC0A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.1.0", - "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.4.0", - "make-fetch-happen": "^14.0.2", - "proc-log": "^5.0.0", - "promise-retry": "^2.0.1" + "@smithy/eventstream-serde-universal": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/tuf": { - "version": "3.1.1", + "node_modules/@smithy/eventstream-serde-node/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/protobuf-specs": "^0.4.1", - "tuf-js": "^3.0.1" + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18.0.0" } }, - "node_modules/@sigstore/verify": { - "version": "2.1.1", + "node_modules/@smithy/eventstream-serde-universal": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.8.tgz", + "integrity": "sha512-iJ6YNJd0bntJYnX6s52NC4WFYcZeKrPUr1Kmmr5AwZcwCSzVpS7oavAmxMR7pMq7V+D1G4s9F5NJK0xwOsKAlQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.1.0", - "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.4.1" + "@smithy/eventstream-codec": "^4.2.8", + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=18.0.0" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", + "node_modules/@smithy/eventstream-serde-universal/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", + "node_modules/@smithy/fetch-http-handler": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-4.1.3.tgz", + "integrity": "sha512-6SxNltSncI8s689nvnzZQc/dPXcpHQ34KUj6gR/HBroytKOd/isMG3gJF/zBE1TBmTT18TXyzhg3O3SOOqGEhA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^4.1.8", + "@smithy/querystring-builder": "^3.0.11", + "@smithy/types": "^3.7.2", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/@smithy/abort-controller": { - "version": "4.2.12", + "node_modules/@smithy/hash-blob-browser": { + "version": "4.2.9", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.9.tgz", + "integrity": "sha512-m80d/iicI7DlBDxyQP6Th7BW/ejDGiF0bgI754+tiwK0lgMkcaIBgvwwVc7OFbY4eUzpGtnig52MhPAEJ7iNYg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/chunked-blob-reader": "^5.2.0", + "@smithy/chunked-blob-reader-native": "^4.2.1", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.2", + "node_modules/@smithy/hash-blob-browser/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -8182,648 +16953,768 @@ "node": ">=18.0.0" } }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.3", + "node_modules/@smithy/hash-node": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.8.tgz", + "integrity": "sha512-tlNQYbfpWXHimHqrvgo14DrMAgUBua/cNoz9fMYcDmYej7MAmUcjav/QKQbFc3NrcPxeJ7QClER4tWZmfwoPng==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@smithy/util-base64": "^4.3.2", + "@smithy/types": "^3.6.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/config-resolver": { - "version": "4.4.13", + "node_modules/@smithy/hash-stream-node": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.8.tgz", + "integrity": "sha512-v0FLTXgHrTeheYZFGhR+ehX5qUm4IQsjAiL9qehad2cyjMWcN2QG6/4mSwbSgEQzI7jwfoXj7z4fxZUx/Mhj2w==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", + "@smithy/types": "^4.12.0", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/core": { - "version": "3.23.12", + "node_modules/@smithy/hash-stream-node/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", - "@smithy/uuid": "^1.1.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.12", + "node_modules/@smithy/hash-stream-node/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/eventstream-codec": { - "version": "4.2.12", + "node_modules/@smithy/hash-stream-node/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.13.1", - "@smithy/util-hex-encoding": "^4.2.2", + "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.12", + "node_modules/@smithy/hash-stream-node/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.12", + "node_modules/@smithy/invalid-dependency": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.8.tgz", + "integrity": "sha512-7Qynk6NWtTQhnGTTZwks++nJhQ1O54Mzi7fz4PqZOiYXb4Z1Flpb2yRvdALoggTS8xjtohWUM+RygOtB30YL3Q==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^3.6.0", "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" } }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.12", + "node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.12", - "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.12", + "node_modules/@smithy/md5-js": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.8.tgz", + "integrity": "sha512-oGMaLj4tVZzLi3itBa9TCswgMBr7k9b+qKYowQ6x1rTyTuO1IU2YHdHUa+891OsOH+wCsH7aTPRsTJO3RMQmjQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/eventstream-codec": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/types": "^4.12.0", + "@smithy/util-utf8": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.15", + "node_modules/@smithy/md5-js/node_modules/@smithy/is-array-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.0.tgz", + "integrity": "sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/querystring-builder": "^4.2.12", - "@smithy/types": "^4.13.1", - "@smithy/util-base64": "^4.3.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.13", + "node_modules/@smithy/md5-js/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.2", - "@smithy/chunked-blob-reader-native": "^4.2.3", - "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/hash-node": { - "version": "4.2.12", + "node_modules/@smithy/md5-js/node_modules/@smithy/util-buffer-from": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.0.tgz", + "integrity": "sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/is-array-buffer": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/hash-stream-node": { - "version": "4.2.12", + "node_modules/@smithy/md5-js/node_modules/@smithy/util-utf8": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.0.tgz", + "integrity": "sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-utf8": "^4.2.2", + "@smithy/util-buffer-from": "^4.2.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.2.12", + "node_modules/@smithy/middleware-content-length": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.10.tgz", + "integrity": "sha512-T4dIdCs1d/+/qMpwhJ1DzOhxCZjZHbHazEPJWdB4GDi2HjIZllVzeBEcdJUN0fomV8DURsgOyrbEUzg3vzTaOg==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/protocol-http": "^4.1.5", + "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.2.2", + "node_modules/@smithy/middleware-endpoint": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.2.8.tgz", + "integrity": "sha512-OEJZKVUEhMOqMs3ktrTWp7UvvluMJEvD5XgQwRePSbDg1VvBaL8pX8mwPltFn6wk1GySbcVwwyldL8S+iqnrEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@smithy/core": "^2.5.7", + "@smithy/middleware-serde": "^3.0.11", + "@smithy/node-config-provider": "^3.1.12", + "@smithy/shared-ini-file-loader": "^3.1.12", + "@smithy/types": "^3.7.2", + "@smithy/url-parser": "^3.0.11", + "@smithy/util-middleware": "^3.0.11", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/md5-js": { - "version": "4.2.12", + "node_modules/@smithy/middleware-endpoint/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz", + "integrity": "sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-utf8": "^4.2.2", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.2.12", + "node_modules/@smithy/middleware-retry": { + "version": "3.0.25", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.25.tgz", + "integrity": "sha512-m1F70cPaMBML4HiTgCw5I+jFNtjgz5z5UdGnUbG37vw6kh4UvizFYjqJGHvicfgKMkDL6mXwyPp5mhZg02g5sg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "tslib": "^2.6.2" + "@smithy/node-config-provider": "^3.1.9", + "@smithy/protocol-http": "^4.1.5", + "@smithy/service-error-classification": "^3.0.8", + "@smithy/smithy-client": "^3.4.2", + "@smithy/types": "^3.6.0", + "@smithy/util-middleware": "^3.0.8", + "@smithy/util-retry": "^3.0.8", + "tslib": "^2.6.2", + "uuid": "^9.0.1" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.27", + "node_modules/@smithy/middleware-retry/node_modules/uuid": { + "version": "9.0.1", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@smithy/middleware-serde": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.11.tgz", + "integrity": "sha512-KzPAeySp/fOoQA82TpnwItvX8BBURecpx6ZMu75EZDkAcnPtO6vf7q4aH5QHs/F1s3/snQaSFbbUMcFFZ086Mw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.12", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-middleware": "^4.2.12", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-retry": { - "version": "4.4.44", + "node_modules/@smithy/middleware-stack": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.11.tgz", + "integrity": "sha512-1HGo9a6/ikgOMrTrWL/WiN9N8GSVYpuRQO5kjstAq4CvV59bjqnh7TbdXGQ4vxLD3xlSjfBjq5t1SOELePsLnA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/service-error-classification": "^4.2.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/uuid": "^1.1.2", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-serde": { - "version": "4.2.15", + "node_modules/@smithy/node-config-provider": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.12.tgz", + "integrity": "sha512-O9LVEu5J/u/FuNlZs+L7Ikn3lz7VB9hb0GtPT9MQeiBmtK8RSY3ULmsZgXhe6VAlgTw0YO+paQx4p8xdbs43vQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", + "@smithy/property-provider": "^3.1.11", + "@smithy/shared-ini-file-loader": "^3.1.12", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/middleware-stack": { - "version": "4.2.12", + "node_modules/@smithy/node-config-provider/node_modules/@smithy/property-provider": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.11.tgz", + "integrity": "sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.12", + "node_modules/@smithy/node-config-provider/node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.12.tgz", + "integrity": "sha512-1xKSGI+U9KKdbG2qDvIR9dGrw3CNx+baqJfyr0igKEpjbHL5stsqAesYBzHChYHlelWtb87VnLWlhvfCz13H8Q==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.12", - "@smithy/shared-ini-file-loader": "^4.4.7", - "@smithy/types": "^4.13.1", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/node-http-handler": { - "version": "4.5.0", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.3.3.tgz", + "integrity": "sha512-BrpZOaZ4RCbcJ2igiSNG16S+kgAc65l/2hmxWdmhyoGWHTLlzQzr06PXavJp9OBlPEG/sHlqdxjWmjzV66+BSQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/querystring-builder": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/abort-controller": "^3.1.9", + "@smithy/protocol-http": "^4.1.8", + "@smithy/querystring-builder": "^3.0.11", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/property-provider": { - "version": "4.2.12", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.8.tgz", + "integrity": "sha512-ukNUyo6rHmusG64lmkjFeXemwYuKge1BJ8CtpVKmrxQxc6rhUX0vebcptFA9MmrGsnLhwnnqeH83VTU9hwOpjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/protocol-http": { - "version": "5.3.12", + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.8.tgz", + "integrity": "sha512-hmgIAVyxw1LySOwkgMIUN0kjN8TG9Nc85LJeEmEE/cNEe2rkHDUWhnJf2gxcSRFLWsyqWsrZGw40ROjUogg+Iw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-builder": { - "version": "4.2.12", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.11.tgz", + "integrity": "sha512-u+5HV/9uJaeLj5XTb6+IEF/dokWWkEqJ0XiaRRogyREmKGUgZnNecLucADLdauWFKUNbQfulHFEZEdjwEBjXRg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", - "@smithy/util-uri-escape": "^4.2.2", + "@smithy/types": "^3.7.2", + "@smithy/util-uri-escape": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/querystring-parser": { - "version": "4.2.12", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.11.tgz", + "integrity": "sha512-Je3kFvCsFMnso1ilPwA7GtlbPaTixa3WwC+K21kmMZHsBEOZYQaqxcMqeFFoU7/slFjKDIpiiPydvdJm8Q/MCw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/service-error-classification": { - "version": "4.2.12", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.8.tgz", + "integrity": "sha512-uEC/kCCFto83bz5ZzapcrgGqHOh/0r69sZ2ZuHlgoD5kYgXJEThCoTuw/y1Ub3cE7aaKdznb+jD9xRPIfIwD7g==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1" + "@smithy/types": "^3.6.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.7", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.9.tgz", + "integrity": "sha512-/+OsJRNtoRbtsX0UpSgWVxFZLsJHo/4sTr+kBg/J78sr7iC+tHeOvOJrS5hCpVQ6sWBbhWLp1UNiuMyZhE6pmA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/signature-v4": { - "version": "5.3.12", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.2.1.tgz", + "integrity": "sha512-NsV1jF4EvmO5wqmaSzlnTVetemBS3FZHdyc5CExbDljcyJCEEkJr8ANu2JvtNbVg/9MvKAWV44kTrGS+Pi4INg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-uri-escape": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.5", + "@smithy/types": "^3.6.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.8", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/smithy-client": { - "version": "4.12.7", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.7.0.tgz", + "integrity": "sha512-9wYrjAZFlqWhgVo3C4y/9kpc68jgiSsKUnsFPzr/MSiRL93+QRDafGTfhhKAb2wsr69Ru87WTiqSfQusSmWipA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/core": "^3.23.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/protocol-http": "^5.3.12", - "@smithy/types": "^4.13.1", - "@smithy/util-stream": "^4.5.20", + "@smithy/core": "^2.5.7", + "@smithy/middleware-endpoint": "^3.2.8", + "@smithy/middleware-stack": "^3.0.11", + "@smithy/protocol-http": "^4.1.8", + "@smithy/types": "^3.7.2", + "@smithy/util-stream": "^3.3.4", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/types": { - "version": "4.13.1", + "node_modules/@smithy/smithy-client/node_modules/@smithy/util-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.3.4.tgz", + "integrity": "sha512-SGhGBG/KupieJvJSZp/rfHHka8BFgj56eek9px4pp7lZbOF+fRiVr4U7A3y3zJD8uGhxq32C5D96HxsTC9BckQ==", "dev": true, "license": "Apache-2.0", "dependencies": { + "@smithy/fetch-http-handler": "^4.1.3", + "@smithy/node-http-handler": "^3.3.3", + "@smithy/types": "^3.7.2", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/url-parser": { - "version": "4.2.12", + "node_modules/@smithy/types": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.7.2.tgz", + "integrity": "sha512-bNwBYYmN8Eh9RyjS1p2gW6MIhSO2rl7X9QeLM8iTdcGRP+eDiIWDt66c9IysCc22gefKszZv+ubV9qZc7hdESg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/querystring-parser": "^4.2.12", - "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/@smithy/util-base64": { - "version": "4.3.2", + "node_modules/@smithy/url-parser": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.11.tgz", + "integrity": "sha512-TmlqXkSk8ZPhfc+SQutjmFr5FjC0av3GZP4B/10caK1SbRwe/v+Wzu/R6xEKxoNqL+8nY18s1byiy6HqPG37Aw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/querystring-parser": "^3.0.11", + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/util-base64": { + "version": "3.0.0", + "dev": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.2", + "version": "3.0.0", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" } }, "node_modules/@smithy/util-body-length-node": { - "version": "4.2.3", + "version": "3.0.0", "dev": true, - "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-buffer-from": { - "version": "4.2.2", + "version": "3.0.0", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", + "@smithy/is-array-buffer": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-config-provider": { - "version": "4.2.2", + "version": "3.0.0", "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.43", + "version": "3.0.25", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.25.tgz", + "integrity": "sha512-fRw7zymjIDt6XxIsLwfJfYUfbGoO9CmCJk6rjJ/X5cd20+d2Is7xjU5Kt/AiDt6hX8DAf5dztmfP5O82gR9emA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/property-provider": "^4.2.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", + "@smithy/property-provider": "^3.1.8", + "@smithy/smithy-client": "^3.4.2", + "@smithy/types": "^3.6.0", + "bowser": "^2.11.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">= 10.0.0" } }, "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.47", + "version": "3.0.34", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.34.tgz", + "integrity": "sha512-vN6aHfzW9dVVzkI0wcZoUXvfjkl4CSbM9nE//08lmUMyf00S75uuCpTrqF9uD4bD9eldIXlt53colrlwKAT8Gw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/config-resolver": "^4.4.13", - "@smithy/credential-provider-imds": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/property-provider": "^4.2.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", + "@smithy/config-resolver": "^3.0.13", + "@smithy/credential-provider-imds": "^3.2.8", + "@smithy/node-config-provider": "^3.1.12", + "@smithy/property-provider": "^3.1.11", + "@smithy/smithy-client": "^3.7.0", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">= 10.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node/node_modules/@smithy/credential-provider-imds": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.8.tgz", + "integrity": "sha512-ZCY2yD0BY+K9iMXkkbnjo+08T2h8/34oHd0Jmh6BZUSZwaaGlGCyBT/3wnS7u7Xl33/EEfN4B6nQr3Gx5bYxgw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.12", + "@smithy/property-provider": "^3.1.11", + "@smithy/types": "^3.7.2", + "@smithy/url-parser": "^3.0.11", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-defaults-mode-node/node_modules/@smithy/property-provider": { + "version": "3.1.11", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.11.tgz", + "integrity": "sha512-I/+TMc4XTQ3QAjXfOcUWbSS073oOEAxgx4aZy8jHaf8JQnRkq2SZWw8+PfDtBvLUjcGMdxl+YwtzWe6i5uhL/A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.7.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, "node_modules/@smithy/util-endpoints": { - "version": "3.3.3", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.1.4.tgz", + "integrity": "sha512-kPt8j4emm7rdMWQyL0F89o92q10gvCUa6sBkBtDJ7nV2+P7wpXczzOfoDJ49CKXe5CCqb8dc1W+ZdLlrKzSAnQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/node-config-provider": "^4.3.12", - "@smithy/types": "^4.13.1", + "@smithy/node-config-provider": "^3.1.9", + "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.2", + "version": "3.0.0", "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-middleware": { - "version": "4.2.12", + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.11.tgz", + "integrity": "sha512-dWpyc1e1R6VoXrwLoLDd57U1z6CwNSdkM69Ie4+6uYh2GC7Vg51Qtan7ITzczuVpqezdDTKJGJB95fFvvjU/ow==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/types": "^4.13.1", + "@smithy/types": "^3.7.2", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-retry": { - "version": "4.2.12", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.8.tgz", + "integrity": "sha512-TCEhLnY581YJ+g1x0hapPz13JFqzmh/pMWL2KEFASC51qCfw3+Y47MrTmea4bUE5vsdxQ4F6/KFbUeSz22Q1ow==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/service-error-classification": "^4.2.12", - "@smithy/types": "^4.13.1", + "@smithy/service-error-classification": "^3.0.8", + "@smithy/types": "^3.6.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-stream": { - "version": "4.5.20", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.2.1.tgz", + "integrity": "sha512-R3ufuzJRxSJbE58K9AEnL/uSZyVdHzud9wLS8tIbXclxKzoe09CRohj2xV8wpx5tj7ZbiJaKYcutMm1eYgz/0A==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/types": "^4.13.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", + "@smithy/fetch-http-handler": "^4.0.0", + "@smithy/node-http-handler": "^3.2.5", + "@smithy/types": "^3.6.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-uri-escape": { - "version": "4.2.2", + "version": "3.0.0", "dev": true, "license": "Apache-2.0", "dependencies": { "tslib": "^2.6.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=16.0.0" } }, "node_modules/@smithy/util-utf8": { - "version": "4.2.2", + "version": "3.0.0", + "dev": true, + "dependencies": { + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/util-waiter": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.2.8.tgz", + "integrity": "sha512-n+lahlMWk+aejGuax7DPWtqav8HYnWxQwR+LCG2BgCUmaGcTe9qZCFsmw8TMg9iG75HOwhrJCX9TCJRLH+Yzqg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", + "@smithy/abort-controller": "^4.2.8", + "@smithy/types": "^4.12.0", "tslib": "^2.6.2" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@smithy/util-waiter": { - "version": "4.2.13", + "node_modules/@smithy/util-waiter/node_modules/@smithy/abort-controller": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-4.2.8.tgz", + "integrity": "sha512-peuVfkYHAmS5ybKxWcfraK7WBBP0J+rkfUcbHJJKQ4ir3UAUNQI+Y4Vt/PqSzGqgloJ5O1dk7+WzNL8wcCSXbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^4.12.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@smithy/util-waiter/node_modules/@smithy/types": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.12.0.tgz", + "integrity": "sha512-9YcuJVTOBDjg9LWo23Qp0lTQ3D7fQsQtwle0jVfpbUHy9qBwCEgKuVH4FqFB3VYu0nwdHKiEMA+oXz7oV8X1kw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@smithy/abort-controller": "^4.2.12", - "@smithy/types": "^4.13.1", "tslib": "^2.6.2" }, "engines": { @@ -8831,7 +17722,9 @@ } }, "node_modules/@smithy/uuid": { - "version": "1.1.2", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.0.tgz", + "integrity": "sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -8847,30 +17740,20 @@ "license": "MIT" }, "node_modules/@stencil/core": { - "version": "4.43.0", - "license": "MIT", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.22.2.tgz", + "integrity": "sha512-eq2pYrrnzcLyBRANk0X/VVOfCtD0nCxWnEZ0AVdscuqfDkOjxa6SSZOfEhR9FAvrmESHp8y5jRCVPnf4n5CC4A==", "bin": { "stencil": "bin/stencil" }, "engines": { "node": ">=16.0.0", "npm": ">=7.10.0" - }, - "optionalDependencies": { - "@rollup/rollup-darwin-arm64": "4.34.9", - "@rollup/rollup-darwin-x64": "4.34.9", - "@rollup/rollup-linux-arm64-gnu": "4.34.9", - "@rollup/rollup-linux-arm64-musl": "4.34.9", - "@rollup/rollup-linux-x64-gnu": "4.34.9", - "@rollup/rollup-linux-x64-musl": "4.34.9", - "@rollup/rollup-win32-arm64-msvc": "4.34.9", - "@rollup/rollup-win32-x64-msvc": "4.34.9" } }, "node_modules/@szmarczak/http-timer": { "version": "4.0.6", "dev": true, - "license": "MIT", "dependencies": { "defer-to-connect": "^2.0.0" }, @@ -8879,28 +17762,16 @@ } }, "node_modules/@thednp/event-listener": { - "version": "2.0.14", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16", - "pnpm": ">=8.6.0" - } - }, - "node_modules/@thednp/position-observer": { - "version": "1.1.2", + "version": "2.0.8", "dev": true, "license": "MIT", - "dependencies": { - "@thednp/shorty": "^2.0.13" - }, "engines": { "node": ">=16", "pnpm": ">=8.6.0" } }, "node_modules/@thednp/shorty": { - "version": "2.0.13", + "version": "2.0.7", "dev": true, "license": "MIT", "engines": { @@ -8910,99 +17781,76 @@ }, "node_modules/@tokenizer/token": { "version": "0.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==" }, "node_modules/@transloadit/prettier-bytes": { "version": "0.3.5", - "license": "MIT" - }, - "node_modules/@transloadit/types": { - "version": "4.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@transloadit/prettier-bytes/-/prettier-bytes-0.3.5.tgz", + "integrity": "sha512-xF4A3d/ZyX2LJWeQZREZQw+qFX4TGQ8bGVP97OLRt6sPO6T0TNHBFTuRHOJh7RNmYOBmQ9MHxpolD9bXihpuVA==" }, "node_modules/@ts-morph/common": { - "version": "0.28.1", + "version": "0.25.0", "dev": true, "license": "MIT", "dependencies": { - "minimatch": "^10.0.1", + "minimatch": "^9.0.4", "path-browserify": "^1.0.1", - "tinyglobby": "^0.2.14" - } - }, - "node_modules/@ts-morph/common/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@ts-morph/common/node_modules/brace-expansion": { - "version": "5.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@ts-morph/common/node_modules/minimatch": { - "version": "10.2.4", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "tinyglobby": "^0.2.9" } }, "node_modules/@tsconfig/node10": { - "version": "1.0.12", - "license": "MIT" + "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", - "license": "MIT" + "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", - "license": "MIT" + "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", - "license": "MIT" + "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, - "license": "MIT", "engines": { "node": "^16.14.0 || >=18.0.0" } }, "node_modules/@tufjs/models": { - "version": "3.0.1", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@tufjs/models/-/models-2.0.1.tgz", + "integrity": "sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { "@tufjs/canonical-json": "2.0.0", - "minimatch": "^9.0.5" + "minimatch": "^9.0.4" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.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==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -9012,32 +17860,37 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.27.0", + "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==", "dev": true, - "license": "MIT", "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==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__traverse": { - "version": "7.28.0", + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", "dev": true, - "license": "MIT", "dependencies": { - "@babel/types": "^7.28.2" + "@babel/types": "^7.20.7" } }, "node_modules/@types/body-parser": { - "version": "1.19.6", + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, "license": "MIT", "dependencies": { @@ -9047,6 +17900,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -9056,7 +17911,6 @@ "node_modules/@types/cacheable-request": { "version": "6.0.3", "dev": true, - "license": "MIT", "dependencies": { "@types/http-cache-semantics": "*", "@types/keyv": "^3.1.4", @@ -9066,6 +17920,8 @@ }, "node_modules/@types/connect": { "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, "license": "MIT", "dependencies": { @@ -9074,6 +17930,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -9081,50 +17939,42 @@ "@types/node": "*" } }, - "node_modules/@types/cors": { - "version": "2.8.19", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "9.6.1", + "node_modules/@types/cookie": { + "version": "0.4.1", "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } + "license": "MIT" }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", + "node_modules/@types/cors": { + "version": "2.8.17", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "@types/node": "*" } }, - "node_modules/@types/estree": { - "version": "1.0.8", - "dev": true, - "license": "MIT" + "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.25", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", "@types/qs": "*", - "@types/serve-static": "^1" + "@types/serve-static": "*" } }, "node_modules/@types/express-serve-static-core": { - "version": "4.19.8", + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-5.0.6.tgz", + "integrity": "sha512-3xhRnjJPkULekpSzgtoNYYcTWgEZkp4myc+Saevii5JPnHNvHMRlBSHDbs7Bh1iPPoVTERHEZXyhyLbMEsExsA==", "dev": true, "license": "MIT", "dependencies": { @@ -9134,24 +17984,36 @@ "@types/send": "*" } }, - "node_modules/@types/hammerjs": { - "version": "2.0.46", + "node_modules/@types/express/node_modules/@types/express-serve-static-core": { + "version": "4.19.6", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz", + "integrity": "sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A==", "dev": true, "license": "MIT", - "peer": true + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" + } }, "node_modules/@types/http-cache-semantics": { - "version": "4.2.0", - "dev": true, - "license": "MIT" + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true }, "node_modules/@types/http-errors": { - "version": "2.0.5", + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "dev": true, "license": "MIT" }, "node_modules/@types/http-proxy": { - "version": "1.17.17", + "version": "1.17.16", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.16.tgz", + "integrity": "sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w==", "dev": true, "license": "MIT", "dependencies": { @@ -9160,11 +18022,14 @@ }, "node_modules/@types/jasmine": { "version": "4.3.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.3.6.tgz", + "integrity": "sha512-3N0FpQTeiWjm+Oo1WUYWguUS7E6JLceiGTriFrG8k5PU7zRLJCzLcWURU3wjMbZGS//a2/LgjsnO3QxIlwxt9g==", + "dev": true }, "node_modules/@types/jasminewd2": { "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/jasminewd2/-/jasminewd2-2.0.13.tgz", + "integrity": "sha512-aJ3wj8tXMpBrzQ5ghIaqMisD8C3FIrcO6sDKHqFbuqAsI7yOxj0fA7MrRCPLZHIVUjERIwsMmGn/vB0UQ9u0Hg==", "dev": true, "license": "MIT", "dependencies": { @@ -9173,8 +18038,9 @@ }, "node_modules/@types/json-schema": { "version": "7.0.15", - "dev": true, - "license": "MIT" + "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", @@ -9184,35 +18050,39 @@ "node_modules/@types/keyv": { "version": "3.1.4", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/lodash": { - "version": "4.17.24", - "dev": true, - "license": "MIT" + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz", + "integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==", + "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==", "dev": true, "license": "MIT" }, "node_modules/@types/new-relic-browser": { "version": "0.1212.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/new-relic-browser/-/new-relic-browser-0.1212.3.tgz", + "integrity": "sha512-iA5qIxbDuTrXDmlvv3SotFMBfOcATG15iSkeKi879w5toV+VTYCeabQCB3nzDR2RH3IHQ1ttwupFg898t5wT2g==", + "dev": true }, "node_modules/@types/node": { - "version": "20.19.37", - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } + "version": "16.18.119", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.119.tgz", + "integrity": "sha512-ia7V9a2FnhUFfetng4/sRPBMTwHZUkPFY736rb1cg9AgG7MZdR97q7/nLR9om+sq5f1la9C857E0l/nrI0RiFQ==", + "dev": true }, "node_modules/@types/node-forge": { - "version": "1.3.14", + "version": "1.3.11", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.11.tgz", + "integrity": "sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -9225,13 +18095,16 @@ "license": "MIT" }, "node_modules/@types/qs": { - "version": "6.15.0", + "version": "6.9.18", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.18.tgz", + "integrity": "sha512-kK7dgTYDyGqS+e2Q4aK9X3D7q234CIZ1Bv0q/7Z5IwRDoADNU81xXJK/YVyLbLTZCoIwUoDoffFeF+p/eIklAA==", "dev": true, "license": "MIT" }, "node_modules/@types/quill": { "version": "2.0.14", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/quill/-/quill-2.0.14.tgz", + "integrity": "sha512-zvoXCRnc2Dl8g+7/9VSAmRWPN6oH+MVhTPizmCR+GJCITplZ5VRVzMs4+a/nOE3yzNwEZqylJJrMB07bwbM1/g==", "dependencies": { "parchment": "^1.1.2", "quill-delta": "^5.1.0" @@ -9239,40 +18112,57 @@ }, "node_modules/@types/quill/node_modules/parchment": { "version": "1.1.4", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" }, "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==", "dev": true, "license": "MIT" }, + "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/responselike": { "version": "1.0.3", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/retry": { - "version": "0.12.2", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true, "license": "MIT" }, "node_modules/@types/semver": { - "version": "7.7.1", - "dev": true, - "license": "MIT" + "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": "1.2.1", + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, "license": "MIT", "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, "license": "MIT", "dependencies": { @@ -9280,26 +18170,21 @@ } }, "node_modules/@types/serve-static": { - "version": "1.15.10", + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", "dev": true, "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/node": "*", - "@types/send": "<1" - } - }, - "node_modules/@types/serve-static/node_modules/@types/send": { - "version": "0.17.6", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" + "@types/send": "*" } }, "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, "license": "MIT", "dependencies": { @@ -9308,6 +18193,8 @@ }, "node_modules/@types/ws": { "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", "dev": true, "license": "MIT", "dependencies": { @@ -9315,7 +18202,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.35", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "dev": true, "license": "MIT", "dependencies": { @@ -9324,13 +18213,15 @@ }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true }, "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, - "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "7.18.0", @@ -9359,22 +18250,39 @@ } } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { + "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, "license": "MIT", + "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/eslint-plugin/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, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@typescript-eslint/scope-manager": "7.18.0", @@ -9392,18 +18300,11 @@ "eslint": "^8.56.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "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, - "license": "MIT", "dependencies": { "@typescript-eslint/utils": "5.62.0" }, @@ -9420,6 +18321,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==", "dev": true, "license": "MIT", "dependencies": { @@ -9436,6 +18339,8 @@ }, "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, "license": "MIT", "engines": { @@ -9448,6 +18353,8 @@ }, "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, "license": "BSD-2-Clause", "dependencies": { @@ -9474,6 +18381,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -9499,6 +18408,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -9515,8 +18426,10 @@ }, "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, - "license": "BSD-2-Clause", + "license": "MIT", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -9527,14 +18440,17 @@ }, "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, - "license": "BSD-2-Clause", "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, "license": "BSD-2-Clause", "dependencies": { @@ -9560,41 +18476,10 @@ } } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.57.2", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.57.2", - "@typescript-eslint/types": "^8.57.2", - "debug": "^4.4.3" - }, - "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 <6.0.0" - } - }, "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, "license": "MIT", "dependencies": { @@ -9609,42 +18494,61 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { - "version": "7.18.0", + "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, "license": "MIT", + "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/tsconfig-utils": { - "version": "8.57.2", + "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, "license": "MIT", - "peer": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "7.18.0", + "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, - "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "7.18.0", - "@typescript-eslint/utils": "7.18.0", + "@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": { @@ -9654,36 +18558,20 @@ "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/types": { - "version": "7.18.0", - "dev": true, - "license": "MIT", - "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/utils": { - "version": "7.18.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, - "license": "MIT", "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" + "@typescript-eslint/types": "7.11.0", + "eslint-visitor-keys": "^3.4.3" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -9691,18 +18579,15 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.57.2", + "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, - "license": "MIT", - "peer": true, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", @@ -9711,6 +18596,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==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -9736,180 +18623,96 @@ } } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { - "version": "7.18.0", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || >=20.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, "node_modules/@typescript-eslint/utils": { - "version": "8.57.2", + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.11.0.tgz", + "integrity": "sha512-xlAWwPleNRHwF37AhrZurOxA1wyXowW4PqVXZVUNCLjB48CqdPJoJWkrpH2nij9Q3Lb7rtWindtoXwxjxlKKCA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/typescript-estree": "8.57.2" + "@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.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.0.0" + "eslint": "^8.56.0" } }, "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/scope-manager": { - "version": "8.57.2", - "dev": true, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.57.2", + "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, "license": "MIT", - "peer": true, "dependencies": { - "@typescript-eslint/project-service": "8.57.2", - "@typescript-eslint/tsconfig-utils": "8.57.2", - "@typescript-eslint/types": "8.57.2", - "@typescript-eslint/visitor-keys": "8.57.2", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.4.0" + "@typescript-eslint/types": "7.11.0", + "@typescript-eslint/visitor-keys": "7.11.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.57.2", + "node_modules/@typescript-eslint/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, - "license": "MIT", - "peer": true, - "dependencies": { - "@typescript-eslint/types": "8.57.2", - "eslint-visitor-keys": "^5.0.0" - }, "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^18.18.0 || >=20.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/utils/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "peer": true, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/brace-expansion": { - "version": "5.0.5", + "node_modules/@typescript-eslint/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, "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "dev": true, - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/minimatch": { - "version": "10.2.4", - "dev": true, - "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { - "brace-expansion": "^5.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/semver": { - "version": "7.7.4", - "dev": true, - "license": "ISC", - "peer": true, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/utils/node_modules/ts-api-utils": { - "version": "2.5.0", - "dev": true, - "license": "MIT", - "peer": true, + "@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.12" + "node": "^18.18.0 || >=20.0.0" }, - "peerDependencies": { - "typescript": ">=4.8.4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.18.0", + "node_modules/@typescript-eslint/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, - "license": "MIT", "dependencies": { - "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/types": "7.11.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -9920,10 +18723,15 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { + "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, - "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, "engines": { "node": "^18.18.0 || >=20.0.0" }, @@ -9933,92 +18741,139 @@ } }, "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "dev": true, - "license": "ISC" + "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/@uppy/angular": { - "version": "1.1.0", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@uppy/angular/-/angular-0.7.0.tgz", + "integrity": "sha512-WrwQ00xPaBf5U1Y6/NbalNudfgaG6UetrgSlGzfO2hmkIiPJJUip4sd9SHUgR7IXUqVfpgJwgtl8uoQDvP3snQ==", "license": "MIT", "dependencies": { "tslib": "^2.0.0" }, "peerDependencies": { - "@angular/common": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0 || ^20.0.0", - "@uppy/core": "^5.0.2", - "@uppy/dashboard": "^5.0.2", - "@uppy/utils": "^7.0.2" + "@angular/common": "^17.0.0 || ^18.0.0", + "@angular/core": "^17.0.0 || ^18.0.0", + "@uppy/core": "^4.0.0", + "@uppy/dashboard": "^4.0.0", + "@uppy/drag-drop": "^4.0.0", + "@uppy/progress-bar": "^4.0.0", + "@uppy/status-bar": "^4.0.0", + "@uppy/utils": "^6.0.0" } }, "node_modules/@uppy/audio": { - "version": "3.1.0", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@uppy/audio/-/audio-2.1.2.tgz", + "integrity": "sha512-iTw//VkvX96LMEBjejAtxJXktT3H6o3G8l1VcTlGx4XTJOSdEN1fFVquLT1Faze7Andthqnct/5bGnSTq3QJGw==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/aws-s3": { - "version": "5.1.0", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@uppy/aws-s3/-/aws-s3-4.2.3.tgz", + "integrity": "sha512-5vNgTE85DLujOXpzC6KEwJHLSi8o96v4rwZxMvDWQuikvX4sGcGflYjBCsPaVDYUCiiDXuhI8f93zfwCUEwQ/Q==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/utils": "^7.1.4" + "@uppy/companion-client": "^4.4.1", + "@uppy/utils": "^6.1.1" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/box": { - "version": "4.1.0", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@uppy/box/-/box-3.2.2.tgz", + "integrity": "sha512-BX7Ay80WUTS9/YHyC//OTpAiU3r3ErOaFZukXnM1oyPTbkj1XiWqm4m56qwJkCXp1r3ajLtMVuwFfgw2Uz+lVw==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/companion-client": { - "version": "5.1.1", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/@uppy/companion-client/-/companion-client-4.4.1.tgz", + "integrity": "sha512-ardMacShsfzaIbqHEH48YlpzWZkBj1qhAj0Dvn3r31p9d0HA5xFUvAdLYrZ6ezKvZ0RcDbf0SB5qCrQMkjscXQ==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.1", + "@uppy/utils": "^6.1.1", "namespace-emitter": "^2.0.1", "p-retry": "^6.1.0" }, "peerDependencies": { - "@uppy/core": "^5.1.1" + "@uppy/core": "^4.4.1" + } + }, + "node_modules/@uppy/companion-client/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==" + }, + "node_modules/@uppy/companion-client/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==", + "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/@uppy/companion-client/node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "engines": { + "node": ">= 4" } }, "node_modules/@uppy/compressor": { - "version": "3.1.0", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@uppy/compressor/-/compressor-2.2.1.tgz", + "integrity": "sha512-2xWEHfmy/9HxOYZ1m11do69Gfa9Detz/zdfATlDZXlxUBhb9SKidea2FdZrea7gxFJjcBH9hO9tPK9k4ev+YJA==", "license": "MIT", "dependencies": { "@transloadit/prettier-bytes": "^0.3.4", - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.1", "compressorjs": "^1.2.1", "preact": "^10.5.13", "promise-queue": "^2.2.5" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/core": { - "version": "5.2.0", + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/@uppy/core/-/core-4.4.4.tgz", + "integrity": "sha512-etaG6uSrShnS8x/CGI9ME/XP23jw8FTkujzKbaag4lDTtdlvcs6PxcObtH3I5MxxJXUEWwcfVGTdAUvd/tGCaA==", "license": "MIT", "dependencies": { "@transloadit/prettier-bytes": "^0.3.4", - "@uppy/store-default": "^5.0.0", - "@uppy/utils": "^7.1.4", + "@uppy/store-default": "^4.2.0", + "@uppy/utils": "^6.1.3", "lodash": "^4.17.21", "mime-match": "^1.0.2", "namespace-emitter": "^2.0.1", @@ -10026,316 +18881,527 @@ "preact": "^10.5.13" } }, + "node_modules/@uppy/core/node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, "node_modules/@uppy/dashboard": { - "version": "5.1.1", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@uppy/dashboard/-/dashboard-4.3.3.tgz", + "integrity": "sha512-bZzzyzWzyoCsXxLUKsjT+X6AWNlFjRU1Ui+28Hp0C7A43zm8y0pb8BbwECl8a3NJH10tKNOHwT8IiVwbiGwXPQ==", "license": "MIT", "dependencies": { "@transloadit/prettier-bytes": "^0.3.4", - "@uppy/provider-views": "^5.2.2", - "@uppy/thumbnail-generator": "^5.1.0", - "@uppy/utils": "^7.1.5", + "@uppy/informer": "^4.2.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/status-bar": "^4.1.3", + "@uppy/thumbnail-generator": "^4.1.1", + "@uppy/utils": "^6.1.3", "classnames": "^2.2.6", - "lodash": "^4.17.23", + "lodash": "^4.17.21", + "memoize-one": "^6.0.0", "nanoid": "^5.0.9", - "preact": "^10.26.10", + "preact": "^10.5.13", "shallow-equal": "^3.0.0" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" + } + }, + "node_modules/@uppy/dashboard/node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" } }, "node_modules/@uppy/drag-drop": { - "version": "5.1.0", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@uppy/drag-drop/-/drag-drop-4.1.2.tgz", + "integrity": "sha512-vD/T2NmS+2zHcdYSVzv4zmCBOm3Bcr2efPDu5A5U8351t84MFT6v5Lk2Il6EBzgDZ9OHpVGSrn2aMno2PhzaGQ==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/drop-target": { - "version": "4.1.0", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@uppy/drop-target/-/drop-target-3.1.1.tgz", + "integrity": "sha512-/2jnQ3DqfcWGjgoasLBLvwJ3fozavwSXFVULenDmPUI8YPjuxmEtOu61XnZ/OLhRnZo6Qm+kltSd+YUS0P/LNA==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.4" + "@uppy/utils": "^6.1.1" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/dropbox": { - "version": "5.1.0", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@uppy/dropbox/-/dropbox-4.2.2.tgz", + "integrity": "sha512-ssMa/QPeDwGFJcYW8cnipqSDLOcOTGE5nTQG50hPWAQEs7rd3lzxv4YlPwsZFTNJcp0z2L0+ss5w5Dx84vDjMg==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/facebook": { - "version": "5.1.0", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@uppy/facebook/-/facebook-4.2.2.tgz", + "integrity": "sha512-PKJkQqPFTAwvKPEP84s5zmUZLdIZmyl6O4ItR7Kuo7A4/nx90AGek0lZ3uORUO9JZ5PClCTXl+Wtw4E0aD1bAQ==", + "license": "MIT", + "dependencies": { + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^4.4.4" + } + }, + "node_modules/@uppy/file-input": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@uppy/file-input/-/file-input-4.1.2.tgz", + "integrity": "sha512-tpxT41/00wI3WzqzbRaBPf9bphWYT8XMPxDhPhUqG7Y+k29PLhCu0rL57m/pvOfOWundug4E1CAejo9V01FNRg==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/form": { - "version": "5.1.0", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@uppy/form/-/form-4.1.1.tgz", + "integrity": "sha512-S4GqnFOp0Q+el8iz6tTYYdcr4vw2HU5AIeZmKT+vJdYj74JnMGWCJuaAn7VN8w5Bm28bgYoK5M37cGviMB0yrw==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.1", "get-form-data": "^3.0.0" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/golden-retriever": { - "version": "5.2.1", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@uppy/golden-retriever/-/golden-retriever-4.1.1.tgz", + "integrity": "sha512-ZzgG2p0iS/4xAOVQjckIOO29otZpxJEaZr6aDvNvc67eW0VhRMqWQhq/1X4bULmKg2TVIW06vaECd71DucUsQw==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.5", + "@uppy/utils": "^6.1.1", "lodash": "^4.17.21" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/google-drive": { - "version": "5.1.0", + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@uppy/google-drive/-/google-drive-4.3.2.tgz", + "integrity": "sha512-h4AhEyllqM6Kun8g7vVIHtchqPD7l5L/lzfVBulD9dgwlOihyrI2vsAO9CnunzDXHDme37hgrOraCavJ7sRJ0Q==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/google-drive-picker": { - "version": "1.1.1", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@uppy/google-drive-picker/-/google-drive-picker-0.3.4.tgz", + "integrity": "sha512-P4UOWYldEVpKAVMIEa2BzkQoFfPF9YCkevXmjOo9csgMH0H5zDDHvrvTOWpH2OfoMv4knrTEMn8FEV+1tRp4Bg==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.2", - "@uppy/utils": "^7.1.5", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/google-photos-picker": { - "version": "1.1.0", + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@uppy/google-photos-picker/-/google-photos-picker-0.3.4.tgz", + "integrity": "sha512-xYsdkGsO1SI+8mMl+A+OfEZb65MvDTCRoRM7f4KdtpTf/wlJj+EJTBPy8CyQjz13rofMw+/t0x/OWj5g35SZiw==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/image-editor": { - "version": "4.2.0", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@uppy/image-editor/-/image-editor-3.3.2.tgz", + "integrity": "sha512-Kqe8RfH7Jns9Xs7bcyPrDajBnZ7rL5KHuIIwt2KbuWS2if5sypZlbQCqn1d1AU2kKMuNpmko8K1SierTfpKArg==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.5", + "@uppy/utils": "^6.1.3", "cropperjs": "^1.6.2", - "preact": "^10.26.10" + "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, - "node_modules/@uppy/image-generator": { - "version": "1.0.0", + "node_modules/@uppy/informer": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@uppy/informer/-/informer-4.2.1.tgz", + "integrity": "sha512-0en8Py47pl6RMDrgUfqFoF807W5kK5AKVJNT1SkTsLiGg5anmTIMuvmNG3k6LN4cn9P/rKyEHSdGcoBBUj9u7Q==", "license": "MIT", "dependencies": { - "@uppy/provider-views": "^5.2.1", - "@uppy/transloadit": "^5.4.0", - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.1", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/instagram": { - "version": "5.1.0", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@uppy/instagram/-/instagram-4.2.2.tgz", + "integrity": "sha512-54pB3sjE1O/5o4rAjAkpwu639DOR8Z/MLeQkdMHNXPNBCfDBkjJ7f3Uk/2zTJrSP/wYFdsQhtIuu8rpcCRHXjA==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, - "node_modules/@uppy/locales": { - "version": "5.1.1", + "node_modules/@uppy/onedrive": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@uppy/onedrive/-/onedrive-4.2.3.tgz", + "integrity": "sha512-24IgzA5WfDkbHXqkliNrOc7gUdIOGyL0sdFHiikL02frBEFbYUQKL4OjIgVvlj91oPNwE2W1r4sUl93xbT+MVA==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.5" + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", + "preact": "^10.5.13" + }, + "peerDependencies": { + "@uppy/core": "^4.4.4" } }, - "node_modules/@uppy/onedrive": { - "version": "5.1.0", + "node_modules/@uppy/progress-bar": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@uppy/progress-bar/-/progress-bar-4.2.1.tgz", + "integrity": "sha512-5TrUYYt1e/Qy4L4GS7pHeH9I9/zYpp7SiJzC5BtYlku5J6yxZbdxpMPW1mBhQqW+ou/IByaVIGFIR6iSq6yo0w==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.1", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/provider-views": { - "version": "5.2.2", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/@uppy/provider-views/-/provider-views-4.4.3.tgz", + "integrity": "sha512-5Ymeuqin+OwIGiiJnEiWguHwLImHmKURf/xDl8bPY5mh5KNXPuFXqQZJvirxwj+sU700usrPSXEmCZYfP7RMpw==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.5", + "@uppy/utils": "^6.1.3", "classnames": "^2.2.6", - "lodash": "^4.17.21", "nanoid": "^5.0.9", "p-queue": "^8.0.0", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" + } + }, + "node_modules/@uppy/provider-views/node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/@uppy/provider-views/node_modules/p-queue": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", + "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@uppy/provider-views/node_modules/p-timeout": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.3.tgz", + "integrity": "sha512-UJUyfKbwvr/uZSV6btANfb+0t/mOhKV/KXcCUTp8FcQI+v/0d+wXqH4htrW0E4rR6WiEO/EPvUFiV9D5OI4vlw==", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@uppy/redux-dev-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@uppy/redux-dev-tools/-/redux-dev-tools-4.0.1.tgz", + "integrity": "sha512-YpMPhJqjUbI2ebyBKGx19US4UDDfcqCVebvMhQvL7BqlirjjBGykYdxuGLg7Uui7hvlAOvdsi+iwLtOeuOZHbg==", + "peerDependencies": { + "@uppy/core": "^4.2.3" } }, "node_modules/@uppy/remote-sources": { - "version": "3.1.0", + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@uppy/remote-sources/-/remote-sources-2.3.2.tgz", + "integrity": "sha512-ZL8Flf4Lqav7/pDWM1xhsrOBOlcnnJEv+o8Lt121U/hxCPJsIWHGoK+NwzVTFAuk9BEhl85xIJCHO+UhrBxUVA==", "license": "MIT", "dependencies": { - "@uppy/box": "^4.1.0", - "@uppy/dashboard": "^5.1.0", - "@uppy/dropbox": "^5.1.0", - "@uppy/facebook": "^5.1.0", - "@uppy/google-drive": "^5.1.0", - "@uppy/instagram": "^5.1.0", - "@uppy/onedrive": "^5.1.0", - "@uppy/unsplash": "^5.1.0", - "@uppy/url": "^5.1.0", - "@uppy/zoom": "^4.1.0" + "@uppy/box": "^3.2.2", + "@uppy/dashboard": "^4.3.3", + "@uppy/dropbox": "^4.2.2", + "@uppy/facebook": "^4.2.2", + "@uppy/google-drive": "^4.3.2", + "@uppy/instagram": "^4.2.2", + "@uppy/onedrive": "^4.2.3", + "@uppy/unsplash": "^4.3.3", + "@uppy/url": "^4.2.3", + "@uppy/zoom": "^3.2.2" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/screen-capture": { - "version": "5.1.0", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@uppy/screen-capture/-/screen-capture-4.2.2.tgz", + "integrity": "sha512-dTGa13O1a99lHSD4zKqvLS1S5gnM7PU/qZCjoyhrQEEXO/TWasWIWvIl7n/O9X6KCSvHF6fl/KwZIhxl2O/tJA==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/status-bar": { - "version": "5.1.0", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@uppy/status-bar/-/status-bar-4.1.3.tgz", + "integrity": "sha512-1YlbsoA9lTNL2b7nhehDri15XslVzGLG+J7HFAsxbE2cMHnOusuLCkm03oE9c72pOU9nG2qZV6yqdWBTwdxbNA==", "license": "MIT", "dependencies": { "@transloadit/prettier-bytes": "^0.3.4", - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.3", "classnames": "^2.2.6", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/store-default": { - "version": "5.0.0", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@uppy/store-default/-/store-default-4.2.0.tgz", + "integrity": "sha512-PieFVa8yTvRHIqsNKfpO/yaJw5Ae/hT7uT58ryw7gvCBY5bHrNWxH5N0XFe8PFHMpLpLn8v3UXGx9ib9QkB6+Q==", "license": "MIT" }, + "node_modules/@uppy/store-redux": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@uppy/store-redux/-/store-redux-4.0.2.tgz", + "integrity": "sha512-ideTWfNE1XxXHzvhiWlh/ZdRVew0uxE1AswpEYJMQEaZ9Hab7EmGS6UOryjtEfeuqsMgqQ5vReBWWGEGccBbww==", + "license": "MIT", + "dependencies": { + "nanoid": "^5.0.9" + } + }, + "node_modules/@uppy/store-redux/node_modules/nanoid": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.5.tgz", + "integrity": "sha512-Ir/+ZpE9fDsNH0hQ3C68uyThDXzYcim2EqcZ8zn8Chtt1iylPT9xXJB0kPCnqzgcEGikO9RxSrh63MsmVCU7Fw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, "node_modules/@uppy/thumbnail-generator": { - "version": "5.1.0", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/@uppy/thumbnail-generator/-/thumbnail-generator-4.1.1.tgz", + "integrity": "sha512-65znkGNgVTbVte51IKOhgxOpHGSwYj9Qik2jF2ZBocMbhBY4gPkWFwqMrKQBfddA9KbUa4jVe1psxhAQTzYgiA==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.1", "exifr": "^7.0.0" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/transloadit": { - "version": "5.5.0", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@uppy/transloadit/-/transloadit-4.2.2.tgz", + "integrity": "sha512-R7iKDi3gbbcZydUulSLIwCAI5krPTZBUfWIBkdc4XpcL5oGQHHjLmVbSIyLgsTBrBowrtaQP2Nj6ZkWtF6LF+Q==", "license": "MIT", "dependencies": { - "@transloadit/types": "^4.1.3", - "@uppy/tus": "^5.1.1", - "@uppy/utils": "^7.1.5", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/tus": "^4.2.2", + "@uppy/utils": "^6.1.3", "component-emitter": "^2.0.0" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" + } + }, + "node_modules/@uppy/transloadit/node_modules/component-emitter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-2.0.0.tgz", + "integrity": "sha512-4m5s3Me2xxlVKG9PkZpQqHQR7bgpnN7joDMJ4yvVkVXngjoITG76IaZmzmywSeRTeTpc6N6r3H3+KyUurV8OYw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@uppy/tus": { - "version": "5.1.1", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@uppy/tus/-/tus-4.2.2.tgz", + "integrity": "sha512-fauUHqoLDtyRXwoaIyWM8ctuJ+SAXdjuM2eyoPYcGtpVaEGa+AS7IQkJkWz2RrWSdLCHL9O+fk6jKr+0PIDEpQ==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/utils": "^7.1.5", + "@uppy/companion-client": "^4.4.1", + "@uppy/utils": "^6.1.1", "tus-js-client": "^4.2.3" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.1" } }, "node_modules/@uppy/unsplash": { - "version": "5.1.0", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@uppy/unsplash/-/unsplash-4.3.3.tgz", + "integrity": "sha512-KsaUz1/1A5F9fNnLuE9EGZjSm8DHPwSzKRsEHAaefjZ286sDcNGnQy/WqH3iIA+8tZ8dAfvyVFfCSUsnTf5HsA==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/url": { - "version": "5.1.0", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@uppy/url/-/url-4.2.3.tgz", + "integrity": "sha512-lN9mKdpGeh7R98A0uo3zsc6Di+m1JaTNNydyNpMhsixwXrsuK7KWE/iwg4xZaY+I1ESqNgnIc9fFEQJO46O1Qg==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/utils": "^6.1.3", "nanoid": "^5.0.9", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" + } + }, + "node_modules/@uppy/url/node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" } }, "node_modules/@uppy/utils": { - "version": "7.1.5", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@uppy/utils/-/utils-6.1.3.tgz", + "integrity": "sha512-7WuTtMf0k1g962sE76mKy8aDV/kLeDrF8Wv1oTxaXQzUpmHBAoKd3FXLrQXu7TgM0XNHHRZXAckBttbVOWkKCw==", "license": "MIT", "dependencies": { "lodash": "^4.17.21", @@ -10343,69 +19409,67 @@ } }, "node_modules/@uppy/webcam": { - "version": "5.1.0", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/@uppy/webcam/-/webcam-4.1.2.tgz", + "integrity": "sha512-sbiqtrKxd+aoAkV10vTAj/Wr9PB6WjPhJyTGEz9Ff4+3gqnhUlusO4Od+cHZgGVZeqLhL4L9l6HwsFhdyK3nWg==", "license": "MIT", "dependencies": { - "@uppy/utils": "^7.1.4", + "@uppy/utils": "^6.1.3", "is-mobile": "^4.0.0", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/webdav": { - "version": "1.1.1", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@uppy/webdav/-/webdav-0.3.2.tgz", + "integrity": "sha512-BFwrBdBgw9RWVWCHLZGTBAUTjsDyr6kI2BOUfOPDClGalEEo1pXKySZVh1bI22kKMY9bDYodPAMoAH9hiSdQoA==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.1", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.4" } }, "node_modules/@uppy/xhr-upload": { - "version": "5.1.1", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/@uppy/xhr-upload/-/xhr-upload-4.3.3.tgz", + "integrity": "sha512-I7RVppwTvLRlVfoW5piMxcZKzWF42E6CwYFQ42d2LzizrkG4tVLQkQrTZlw85za3nhcSrX3o/d1eNx3pzLmsdw==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/utils": "^7.1.5" + "@uppy/companion-client": "^4.4.1", + "@uppy/utils": "^6.1.2" }, "peerDependencies": { - "@uppy/core": "^5.2.0" + "@uppy/core": "^4.4.2" } }, "node_modules/@uppy/zoom": { - "version": "4.1.0", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@uppy/zoom/-/zoom-3.2.2.tgz", + "integrity": "sha512-jsfrGfmedln6dRGlLzkXlGC19KxDE8zilJ5MB8nqAcWL1kd9mTjBg8zKvfLjDiAV8El+5tZZRjCAr5NdEYz45g==", "license": "MIT", "dependencies": { - "@uppy/companion-client": "^5.1.1", - "@uppy/provider-views": "^5.2.0", - "@uppy/utils": "^7.1.4", + "@uppy/companion-client": "^4.4.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/utils": "^6.1.3", "preact": "^10.5.13" }, "peerDependencies": { - "@uppy/core": "^5.2.0" - } - }, - "node_modules/@vitejs/plugin-basic-ssl": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.21.3" - }, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0" + "@uppy/core": "^4.4.4" } }, "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, - "license": "MIT", "dependencies": { "@webassemblyjs/helper-numbers": "1.13.2", "@webassemblyjs/helper-wasm-bytecode": "1.13.2" @@ -10413,21 +19477,26 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.13.2", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "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", - "dev": true, - "license": "MIT" + "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, "license": "MIT", "dependencies": { @@ -10438,11 +19507,14 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.13.2", - "dev": true, - "license": "MIT" + "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, "license": "MIT", "dependencies": { @@ -10454,6 +19526,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -10462,6 +19536,8 @@ }, "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, "license": "Apache-2.0", "dependencies": { @@ -10470,11 +19546,14 @@ }, "node_modules/@webassemblyjs/utf8": { "version": "1.13.2", - "dev": true, - "license": "MIT" + "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, "license": "MIT", "dependencies": { @@ -10490,6 +19569,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -10502,6 +19583,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -10513,6 +19596,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -10526,6 +19611,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -10535,7 +19622,8 @@ }, "node_modules/@wry/caches": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@wry/caches/-/caches-1.0.1.tgz", + "integrity": "sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==", "dependencies": { "tslib": "^2.3.0" }, @@ -10545,7 +19633,8 @@ }, "node_modules/@wry/context": { "version": "0.7.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@wry/context/-/context-0.7.4.tgz", + "integrity": "sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==", "dependencies": { "tslib": "^2.3.0" }, @@ -10555,7 +19644,8 @@ }, "node_modules/@wry/equality": { "version": "0.5.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@wry/equality/-/equality-0.5.7.tgz", + "integrity": "sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==", "dependencies": { "tslib": "^2.3.0" }, @@ -10565,7 +19655,8 @@ }, "node_modules/@wry/trie": { "version": "0.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.5.0.tgz", + "integrity": "sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==", "dependencies": { "tslib": "^2.3.0" }, @@ -10591,7 +19682,6 @@ "node_modules/2-thenable": { "version": "1.0.0", "dev": true, - "license": "ISC", "dependencies": { "d": "1", "es5-ext": "^0.10.47" @@ -10599,19 +19689,22 @@ }, "node_modules/abab": { "version": "2.0.6", - "license": "BSD-3-Clause" + "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" }, "node_modules/abbrev": { - "version": "3.0.1", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", "dev": true, - "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/abort-controller": { "version": "3.0.0", - "license": "MIT", + "dev": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -10631,35 +19724,20 @@ "node": ">= 0.6" } }, - "node_modules/accepts/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/accepts/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/accepts/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==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/acorn": { - "version": "8.16.0", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", + "dev": true, "license": "MIT", "bin": { "acorn": "bin/acorn" @@ -10668,15 +19746,14 @@ "node": ">=0.4.0" } }, - "node_modules/acorn-import-phases": { - "version": "1.0.4", + "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", - "engines": { - "node": ">=10.13.0" - }, "peerDependencies": { - "acorn": "^8.14.0" + "acorn": "^8" } }, "node_modules/acorn-jsx": { @@ -10688,8 +19765,10 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.5", - "license": "MIT", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", + "dev": true, "dependencies": { "acorn": "^8.11.0" }, @@ -10724,29 +19803,49 @@ }, "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, - "license": "MIT", "engines": { "node": ">=12.0" } }, "node_modules/agent-base": { - "version": "7.1.4", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, "engines": { "node": ">= 14" } }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ajv": { - "version": "8.18.0", + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", + "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, "funding": { "type": "github", @@ -10754,7 +19853,7 @@ } }, "node_modules/ajv-formats": { - "version": "3.0.1", + "version": "2.1.1", "dev": true, "license": "MIT", "dependencies": { @@ -10780,8 +19879,17 @@ "ajv": "^8.8.2" } }, + "node_modules/angular2-text-mask": { + "version": "9.0.0", + "license": "Unlicense", + "dependencies": { + "text-mask-core": "^5.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, "license": "MIT", "engines": { @@ -10789,14 +19897,14 @@ } }, "node_modules/ansi-escapes": { - "version": "7.3.0", + "version": "4.3.2", "dev": true, "license": "MIT", "dependencies": { - "environment": "^1.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -10804,6 +19912,8 @@ }, "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" @@ -10823,6 +19933,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -10842,6 +19954,8 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -10853,9 +19967,10 @@ } }, "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.2", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -10883,8 +19998,9 @@ } }, "node_modules/apollo-angular": { - "version": "8.0.2", - "license": "MIT", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/apollo-angular/-/apollo-angular-6.0.0.tgz", + "integrity": "sha512-Ys4MLCOSBpNZ411R+xw2XcUSUZo3Az/r/PujZZM9ZEvBhCHlqxAmXacRBda+MGc34NYqkXO0yxLwF+UXPHogkg==", "dependencies": { "tslib": "^2.6.2" }, @@ -10892,8 +20008,8 @@ "node": ">=16" }, "peerDependencies": { - "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0", - "@apollo/client": "^3.10.0", + "@angular/core": "^17.0.0", + "@apollo/client": "^3.0.0", "graphql": "^15.0.0 || ^16.0.0", "rxjs": "^6.0.0 || ^7.0.0" } @@ -10901,7 +20017,6 @@ "node_modules/archive-type": { "version": "4.0.0", "dev": true, - "license": "MIT", "dependencies": { "file-type": "^4.2.0" }, @@ -10912,7 +20027,6 @@ "node_modules/archive-type/node_modules/file-type": { "version": "4.4.0", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -10920,7 +20034,6 @@ "node_modules/archiver": { "version": "5.3.2", "dev": true, - "license": "MIT", "dependencies": { "archiver-utils": "^2.1.0", "async": "^3.2.4", @@ -10937,7 +20050,6 @@ "node_modules/archiver-utils": { "version": "2.1.0", "dev": true, - "license": "MIT", "dependencies": { "glob": "^7.1.4", "graceful-fs": "^4.2.0", @@ -10956,6 +20068,8 @@ }, "node_modules/archiver-utils/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -10965,8 +20079,10 @@ }, "node_modules/archiver-utils/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -10984,13 +20100,15 @@ }, "node_modules/archiver-utils/node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/archiver-utils/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -11001,7 +20119,6 @@ "node_modules/archiver-utils/node_modules/readable-stream": { "version": "2.3.8", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -11015,7 +20132,6 @@ "node_modules/archiver-utils/node_modules/string_decoder": { "version": "1.1.1", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -11025,20 +20141,27 @@ "license": "MIT" }, "node_modules/argparse": { - "version": "2.0.1", + "version": "1.0.10", "dev": true, - "license": "Python-2.0" + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } }, "node_modules/aria-query": { - "version": "5.3.2", + "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, "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" + "dependencies": { + "dequal": "^2.0.3" } }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", "dependencies": { @@ -11054,22 +20177,24 @@ }, "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==", "dev": true, "license": "MIT" }, "node_modules/array-includes": { - "version": "3.1.9", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" + "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" @@ -11087,14 +20212,16 @@ } }, "node_modules/array.prototype.flat": { - "version": "1.3.3", + "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, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" + "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" @@ -11105,6 +20232,8 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11156,11 +20285,14 @@ }, "node_modules/async": { "version": "3.2.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true }, "node_modules/async-function": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, "license": "MIT", "engines": { @@ -11181,7 +20313,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.20", + "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": [ { @@ -11199,11 +20333,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001591", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.0.0", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -11218,8 +20352,9 @@ }, "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, - "license": "MIT", "dependencies": { "possible-typed-array-names": "^1.0.0" }, @@ -11232,6 +20367,8 @@ }, "node_modules/aws-sdk": { "version": "2.1693.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1693.0.tgz", + "integrity": "sha512-cJmb8xEnVLT+R6fBS5sn/EFJiX7tUnDaPtOPZ1vFbOJtd0fnZn/Ky2XGgsvvoeliWeH7mL3TWSX5zXXGSQV6gQ==", "dev": true, "hasInstallScript": true, "license": "Apache-2.0", @@ -11268,8 +20405,9 @@ }, "node_modules/aws-sdk/node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/aws-sdk/node_modules/querystring": { "version": "0.2.0", @@ -11280,8 +20418,9 @@ }, "node_modules/aws-sdk/node_modules/sax": { "version": "1.2.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "dev": true }, "node_modules/aws-sdk/node_modules/uuid": { "version": "8.0.0", @@ -11292,7 +20431,9 @@ } }, "node_modules/axios": { - "version": "1.13.6", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -11302,15 +20443,19 @@ } }, "node_modules/axobject-query": { - "version": "4.1.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.0.0.tgz", + "integrity": "sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==", "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">= 0.4" + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" } }, "node_modules/babel-loader": { - "version": "9.2.1", + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, "license": "MIT", "dependencies": { @@ -11325,13 +20470,30 @@ "webpack": ">=5" } }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "dev": true, + "license": "BSD-3-Clause", + "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-polyfill-corejs2": { - "version": "0.4.17", + "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, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.8", + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.6.2", "semver": "^6.3.1" }, "peerDependencies": { @@ -11348,6 +20510,8 @@ }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11359,11 +20523,13 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.8", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz", + "integrity": "sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.8" + "@babel/helper-define-polyfill-provider": "^0.6.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -11376,6 +20542,7 @@ }, "node_modules/base64-js": { "version": "1.5.1", + "dev": true, "funding": [ { "type": "github", @@ -11400,17 +20567,6 @@ "node": "^4.5.0 || >= 5.9" } }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.10", - "dev": true, - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/basic-auth": { "version": "2.0.1", "dev": true, @@ -11432,24 +20588,6 @@ "dev": true, "license": "MIT" }, - "node_modules/beasties": { - "version": "0.3.2", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "htmlparser2": "^10.0.0", - "picocolors": "^1.1.1", - "postcss": "^8.4.49", - "postcss-media-query-parser": "^0.2.3" - }, - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/becke-ch--regex--s0-0-v1--base--pl--lib": { "version": "1.4.0", "dev": true, @@ -11457,8 +20595,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "bytesish": "^0.4.1", "caseless": "~0.12.0", @@ -11475,6 +20614,8 @@ }, "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==", "dev": true, "license": "MIT", "engines": { @@ -11501,33 +20642,94 @@ }, "node_modules/blueimp-canvas-to-blob": { "version": "3.29.0", + "resolved": "https://registry.npmjs.org/blueimp-canvas-to-blob/-/blueimp-canvas-to-blob-3.29.0.tgz", + "integrity": "sha512-0pcSSGxC0QxT+yVkivxIqW0Y4VlO2XSDPofBAqoJ1qJxgH9eiUDLv50Rixij2cDuEfx4M6DpD9UGZpRhT5Q8qg==", "license": "MIT" }, "node_modules/body-parser": { - "version": "2.2.2", + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.4.tgz", + "integrity": "sha512-ZTgYYLMOXY9qKU/57FAo8F+HA2dGX7bqGc71txDRC1rS4frdFI5R7NhluHxH6M0YItAP0sHB4uqAOcYKxO6uGA==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "^3.1.2", - "content-type": "^1.0.5", - "debug": "^4.4.3", - "http-errors": "^2.0.0", - "iconv-lite": "^0.7.0", - "on-finished": "^2.4.1", - "qs": "^6.14.1", - "raw-body": "^3.0.1", - "type-is": "^2.0.1" + "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.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.14.0", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=18" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/express" } }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/body-parser/node_modules/on-finished": { + "version": "2.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/bonjour-service": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.3.0.tgz", + "integrity": "sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==", "dev": true, "license": "MIT", "dependencies": { @@ -11541,13 +20743,12 @@ "license": "ISC" }, "node_modules/bootstrap.native": { - "version": "5.1.9", + "version": "5.0.13", "dev": true, "license": "MIT", "dependencies": { - "@thednp/event-listener": "^2.0.14", - "@thednp/position-observer": "^1.1.2", - "@thednp/shorty": "^2.0.13" + "@thednp/event-listener": "^2.0.4", + "@thednp/shorty": "^2.0.0" }, "engines": { "node": ">=16", @@ -11555,12 +20756,15 @@ } }, "node_modules/bowser": { - "version": "2.14.1", - "dev": true, - "license": "MIT" + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "dev": true }, "node_modules/brace-expansion": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -11579,7 +20783,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.1", + "version": "4.24.4", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz", + "integrity": "sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==", "dev": true, "funding": [ { @@ -11597,11 +20803,10 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.9.0", - "caniuse-lite": "^1.0.30001759", - "electron-to-chromium": "^1.5.263", - "node-releases": "^2.0.27", - "update-browserslist-db": "^1.2.0" + "caniuse-lite": "^1.0.30001688", + "electron-to-chromium": "^1.5.73", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -11636,7 +20841,6 @@ "node_modules/buffer-alloc": { "version": "1.2.0", "dev": true, - "license": "MIT", "dependencies": { "buffer-alloc-unsafe": "^1.1.0", "buffer-fill": "^1.0.0" @@ -11644,21 +20848,22 @@ }, "node_modules/buffer-alloc-unsafe": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==", + "dev": true }, "node_modules/buffer-crc32": { "version": "0.2.13", "dev": true, - "license": "MIT", "engines": { "node": "*" } }, "node_modules/buffer-fill": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==", + "dev": true }, "node_modules/buffer-from": { "version": "1.1.2", @@ -11680,20 +20885,6 @@ "dev": true, "license": "MIT" }, - "node_modules/bundle-name": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/bytes": { "version": "3.1.2", "dev": true, @@ -11704,41 +20895,39 @@ }, "node_modules/bytesish": { "version": "0.4.4", - "dev": true, - "license": "(Apache-2.0 AND MIT)" + "resolved": "https://registry.npmjs.org/bytesish/-/bytesish-0.4.4.tgz", + "integrity": "sha512-i4uu6M4zuMUiyfZN4RU2+i9+peJh//pXhd9x1oSe1LBkZ3LEbCoygu8W0bXTukU1Jme2txKuotpCZRaC3FLxcQ==", + "dev": true }, "node_modules/cacache": { - "version": "19.0.1", + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/fs": "^4.0.0", + "@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": "^7.0.2", - "ssri": "^12.0.0", - "tar": "^7.4.3", - "unique-filename": "^4.0.0" - }, - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/cacache/node_modules/chownr": { - "version": "3.0.0", - "dev": true, - "license": "BlueOak-1.0.0", + "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": ">=18" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/cacache/node_modules/glob": { "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -11756,15 +20945,32 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/cacache/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/cacache/node_modules/lru-cache": { "version": "10.4.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, "node_modules/cacache/node_modules/path-scurry": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -11776,33 +20982,9 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/cacache/node_modules/tar": { - "version": "7.5.13", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/cacache/node_modules/yallist": { - "version": "5.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/cacheable-lookup": { "version": "5.0.4", "dev": true, - "license": "MIT", "engines": { "node": ">=10.6.0" } @@ -11810,7 +20992,6 @@ "node_modules/cacheable-request": { "version": "7.0.4", "dev": true, - "license": "MIT", "dependencies": { "clone-response": "^1.0.2", "get-stream": "^5.1.0", @@ -11827,7 +21008,6 @@ "node_modules/cacheable-request/node_modules/get-stream": { "version": "5.2.0", "dev": true, - "license": "MIT", "dependencies": { "pump": "^3.0.0" }, @@ -11840,8 +21020,9 @@ }, "node_modules/cacheable-request/node_modules/normalize-url": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -11851,6 +21032,8 @@ }, "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, "license": "MIT", "engines": { @@ -11859,6 +21042,8 @@ }, "node_modules/call-bind": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.0", @@ -11875,6 +21060,8 @@ }, "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==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -11886,6 +21073,8 @@ }, "node_modules/call-bound": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -11913,8 +21102,18 @@ "node": ">=6" } }, + "node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/caniuse-lite": { - "version": "1.0.30001781", + "version": "1.0.30001713", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001713.tgz", + "integrity": "sha512-wCIWIg+A4Xr7NfhTuHdX+/FKh3+Op3LBbSp2N5Pfx6T/LhdQy3GTyoTg48BReaW/MyMNZAkTadsBtai3ldWK0Q==", "dev": true, "funding": [ { @@ -11939,6 +21138,8 @@ }, "node_modules/chai": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", "dev": true, "license": "MIT", "dependencies": { @@ -11956,6 +21157,8 @@ }, "node_modules/chai-as-promised": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", + "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", "dev": true, "license": "WTFPL", "dependencies": { @@ -11967,6 +21170,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -11981,14 +21186,15 @@ } }, "node_modules/chardet": { - "version": "2.1.1", + "version": "0.7.0", "dev": true, "license": "MIT" }, "node_modules/check-error": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", "dev": true, - "license": "MIT", "dependencies": { "get-func-name": "^2.0.2" }, @@ -11997,24 +21203,20 @@ } }, "node_modules/cheerio": { - "version": "1.1.2", + "version": "1.0.0-rc.12", "dev": true, "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.0.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", - "parse5-parser-stream": "^7.1.2", - "undici": "^7.12.0", - "whatwg-mimetype": "^4.0.0" + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" }, "engines": { - "node": ">=20.18.1" + "node": ">= 6" }, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" @@ -12039,7 +21241,6 @@ "node_modules/child-process-ext": { "version": "2.1.1", "dev": true, - "license": "ISC", "dependencies": { "cross-spawn": "^6.0.5", "es5-ext": "^0.10.53", @@ -12050,8 +21251,9 @@ }, "node_modules/child-process-ext/node_modules/cross-spawn": { "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", "dev": true, - "license": "MIT", "dependencies": { "nice-try": "^1.0.4", "path-key": "^2.0.1", @@ -12066,7 +21268,6 @@ "node_modules/child-process-ext/node_modules/path-key": { "version": "2.0.1", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -12074,7 +21275,6 @@ "node_modules/child-process-ext/node_modules/semver": { "version": "5.7.2", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } @@ -12082,7 +21282,6 @@ "node_modules/child-process-ext/node_modules/shebang-command": { "version": "1.2.0", "dev": true, - "license": "MIT", "dependencies": { "shebang-regex": "^1.0.0" }, @@ -12093,7 +21292,6 @@ "node_modules/child-process-ext/node_modules/shebang-regex": { "version": "1.0.0", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -12101,7 +21299,6 @@ "node_modules/child-process-ext/node_modules/which": { "version": "1.3.1", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^2.0.0" }, @@ -12110,17 +21307,24 @@ } }, "node_modules/chokidar": { - "version": "4.0.3", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", "dev": true, - "license": "MIT", "dependencies": { - "readdirp": "^4.0.1" + "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": ">= 14.16.0" + "node": ">= 8.10.0" }, - "funding": { - "url": "https://paulmillr.com/funding/" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, "node_modules/chownr": { @@ -12133,6 +21337,8 @@ }, "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, "license": "MIT", "engines": { @@ -12148,19 +21354,26 @@ "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/classnames": { "version": "2.5.1", - "license": "MIT" + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, "node_modules/cli-color": { "version": "2.0.4", "dev": true, - "license": "ISC", "dependencies": { "d": "^1.0.1", "es5-ext": "^0.10.64", @@ -12173,23 +21386,19 @@ } }, "node_modules/cli-cursor": { - "version": "5.0.0", + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^5.0.0" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/cli-progress-footer": { "version": "2.3.3", "dev": true, - "license": "ISC", "dependencies": { "cli-color": "^2.0.4", "d": "^1.0.1", @@ -12205,11 +21414,14 @@ }, "node_modules/cli-progress-footer/node_modules/mute-stream": { "version": "0.0.8", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true }, "node_modules/cli-spinners": { "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "dev": true, "license": "MIT", "engines": { @@ -12222,7 +21434,6 @@ "node_modules/cli-sprintf-format": { "version": "1.1.1", "dev": true, - "license": "ISC", "dependencies": { "cli-color": "^2.0.1", "es5-ext": "^0.10.53", @@ -12235,8 +21446,9 @@ }, "node_modules/cli-sprintf-format/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, - "license": "MIT", "engines": { "node": ">=4" } @@ -12244,7 +21456,6 @@ "node_modules/cli-sprintf-format/node_modules/supports-color": { "version": "6.1.0", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -12267,64 +21478,10 @@ "colors": "^1.1.2" } }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?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==", "dev": true, "license": "ISC", "engines": { @@ -12333,6 +21490,8 @@ }, "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==", "dev": true, "license": "ISC", "dependencies": { @@ -12344,11 +21503,6 @@ "node": ">=12" } }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/cliui/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -12372,8 +21526,9 @@ }, "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==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -12407,21 +21562,9 @@ "node": ">=6" } }, - "node_modules/clone-deep/node_modules/is-plain-object": { - "version": "2.0.4", - "dev": true, - "license": "MIT", - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/clone-response": { "version": "1.0.3", "dev": true, - "license": "MIT", "dependencies": { "mimic-response": "^1.0.0" }, @@ -12436,6 +21579,8 @@ }, "node_modules/collapse-white-space": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", "license": "MIT", "funding": { "type": "github", @@ -12466,8 +21611,9 @@ }, "node_modules/colorette": { "version": "2.0.20", - "dev": true, - "license": "MIT" + "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", @@ -12479,6 +21625,8 @@ }, "node_modules/combine-errors": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/combine-errors/-/combine-errors-3.0.3.tgz", + "integrity": "sha512-C8ikRNRMygCwaTx+Ek3Yr+OuZzgZjduCOfSQBjbM8V3MfgcjSTeto/GXP6PAwKvJz/v15b7GHZvx5rOlczFw/Q==", "dependencies": { "custom-error-instance": "2.1.1", "lodash.uniqby": "4.5.0" @@ -12496,11 +21644,11 @@ } }, "node_modules/commander": { - "version": "14.0.3", + "version": "12.1.0", "dev": true, "license": "MIT", "engines": { - "node": ">=20" + "node": ">=18" } }, "node_modules/comment-parser": { @@ -12513,13 +21661,15 @@ }, "node_modules/common-path-prefix": { "version": "3.0.0", - "dev": true, - "license": "ISC" + "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, - "license": "MIT", "engines": { "node": ">=4.0.0" } @@ -12530,11 +21680,10 @@ "license": "MIT" }, "node_modules/component-emitter": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=18" - }, + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/sindresorhus" } @@ -12542,7 +21691,6 @@ "node_modules/compress-commons": { "version": "4.1.2", "dev": true, - "license": "MIT", "dependencies": { "buffer-crc32": "^0.2.13", "crc32-stream": "^4.0.2", @@ -12555,6 +21703,8 @@ }, "node_modules/compressible": { "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dev": true, "license": "MIT", "dependencies": { @@ -12566,6 +21716,8 @@ }, "node_modules/compression": { "version": "1.8.1", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.8.1.tgz", + "integrity": "sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==", "dev": true, "license": "MIT", "dependencies": { @@ -12583,6 +21735,8 @@ }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -12591,19 +21745,15 @@ }, "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==", "dev": true, "license": "MIT" }, - "node_modules/compression/node_modules/negotiator": { - "version": "0.6.4", - "dev": true, - "license": "MIT", - "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==", "dev": true, "funding": [ { @@ -12623,6 +21773,8 @@ }, "node_modules/compressorjs": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/compressorjs/-/compressorjs-1.2.1.tgz", + "integrity": "sha512-+geIjeRnPhQ+LLvvA7wxBQE5ddeLU7pJ3FsKFWirDw6veY3s9iLxAQEw7lXGHnhCJvBujEQWuNnGzZcvCvdkLQ==", "license": "MIT", "dependencies": { "blueimp-canvas-to-blob": "^3.29.0", @@ -12650,6 +21802,8 @@ }, "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, "license": "MIT", "engines": { @@ -12709,8 +21863,9 @@ }, "node_modules/convert-source-map": { "version": "1.9.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true }, "node_modules/cookie": { "version": "0.7.2", @@ -12721,7 +21876,9 @@ } }, "node_modules/cookie-signature": { - "version": "1.0.7", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", "dev": true, "license": "MIT" }, @@ -12742,19 +21899,21 @@ } }, "node_modules/copy-webpack-plugin": { - "version": "12.0.2", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "license": "MIT", "dependencies": { - "fast-glob": "^3.3.2", + "fast-glob": "^3.2.11", "glob-parent": "^6.0.1", - "globby": "^14.0.0", + "globby": "^13.1.1", "normalize-path": "^3.0.0", - "schema-utils": "^4.2.0", - "serialize-javascript": "^6.0.2" + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": ">= 18.12.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", @@ -12764,49 +21923,52 @@ "webpack": "^5.1.0" } }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "14.1.0", + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10.13.0" } }, - "node_modules/copy-webpack-plugin/node_modules/path-type": { - "version": "6.0.0", + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, "license": "MIT", + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, "engines": { - "node": ">=18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "5.1.0", + "version": "4.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/core-js": { - "version": "3.49.0", + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz", + "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==", "hasInstallScript": true, "license": "MIT", "funding": { @@ -12815,11 +21977,13 @@ } }, "node_modules/core-js-compat": { - "version": "3.49.0", + "version": "3.41.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz", + "integrity": "sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.28.1" + "browserslist": "^4.24.4" }, "funding": { "type": "opencollective", @@ -12827,7 +21991,9 @@ } }, "node_modules/core-js-pure": { - "version": "3.49.0", + "version": "3.39.0", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.39.0.tgz", + "integrity": "sha512-7fEcWwKI4rJinnK+wLTezeg2smbFFdSBP6E2kQZNbnzM2s1rpKQ6aaRteZSSg7FLU3P0HGGVo/gbpfanU36urg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -12842,25 +22008,22 @@ "license": "MIT" }, "node_modules/cors": { - "version": "2.8.6", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", - "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "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, - "license": "MIT", "dependencies": { "object-assign": "^4", "vary": "^1" }, "engines": { "node": ">= 0.10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/cosmiconfig": { - "version": "9.0.1", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, "license": "MIT", "dependencies": { @@ -12884,10 +22047,28 @@ } } }, + "node_modules/cosmiconfig/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==", + "dev": true + }, + "node_modules/cosmiconfig/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, "node_modules/crc-32": { "version": "1.2.2", "dev": true, - "license": "Apache-2.0", "bin": { "crc32": "bin/crc32.njs" }, @@ -12898,7 +22079,6 @@ "node_modules/crc32-stream": { "version": "4.0.3", "dev": true, - "license": "MIT", "dependencies": { "crc-32": "^1.2.0", "readable-stream": "^3.4.0" @@ -12909,14 +22089,36 @@ }, "node_modules/create-require": { "version": "1.1.1", - "license": "MIT" + "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==", + "dev": true, + "license": "Apache-2.0", + "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/cropperjs": { "version": "1.6.2", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.6.2.tgz", + "integrity": "sha512-nhymn9GdnV3CqiEHJVai54TULFAE3VshJTXSqSJKa8yXAKyBKDWdhHarnlIPrshJ0WMFTGuFvG02YjLXfPiuOA==", "license": "MIT" }, "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": { @@ -12929,21 +22131,23 @@ } }, "node_modules/css-loader": { - "version": "7.1.2", + "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, "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.33", - "postcss-modules-extract-imports": "^3.1.0", - "postcss-modules-local-by-default": "^4.0.5", - "postcss-modules-scope": "^3.2.0", + "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": ">= 18.12.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", @@ -12951,7 +22155,7 @@ }, "peerDependencies": { "@rspack/core": "0.x || 1.x", - "webpack": "^5.27.0" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { "@rspack/core": { @@ -12963,7 +22167,7 @@ } }, "node_modules/css-select": { - "version": "5.2.2", + "version": "5.1.0", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -12978,7 +22182,7 @@ } }, "node_modules/css-what": { - "version": "6.2.2", + "version": "6.1.0", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -13049,12 +22253,16 @@ } }, "node_modules/cucumber-tag-expressions": { - "version": "2.0.3", - "dev": true, - "license": "MIT" + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cucumber-tag-expressions/-/cucumber-tag-expressions-2.0.3.tgz", + "integrity": "sha512-+x5j1IfZrBtbvYHuoUX0rl4nUGxaey6Do9sM0CABmZfDCcWXuuRm1fQeCaklIYQgOFHQ6xOHvDSdkMHHpni6tQ==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", + "dev": true }, "node_modules/cucumber/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -13069,8 +22277,10 @@ }, "node_modules/cucumber/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -13087,9 +22297,10 @@ } }, "node_modules/cucumber/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -13099,6 +22310,8 @@ }, "node_modules/custom-error-instance": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/custom-error-instance/-/custom-error-instance-2.1.1.tgz", + "integrity": "sha512-p6JFxJc3M4OTD2li2qaHkDCw9SfMw82Ldr6OC9Je1aXiGfhx2W8p3GaoeaGrPJTUN9NirTM/KTxHWMUdR1rsUg==", "license": "ISC" }, "node_modules/custom-event": { @@ -13113,7 +22326,6 @@ "node_modules/d": { "version": "1.0.2", "dev": true, - "license": "ISC", "dependencies": { "es5-ext": "^0.10.64", "type": "^2.7.2" @@ -13124,6 +22336,8 @@ }, "node_modules/data-view-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13140,6 +22354,8 @@ }, "node_modules/data-view-byte-length": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13156,6 +22372,8 @@ }, "node_modules/data-view-byte-offset": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -13172,6 +22390,8 @@ }, "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, "license": "MIT", "engines": { @@ -13179,12 +22399,14 @@ } }, "node_modules/dayjs": { - "version": "1.11.20", - "license": "MIT" + "version": "1.11.13", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", + "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" }, "node_modules/debug": { - "version": "4.4.3", - "license": "MIT", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dependencies": { "ms": "^2.1.3" }, @@ -13207,6 +22429,8 @@ }, "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, "license": "MIT", "engines": { @@ -13219,7 +22443,6 @@ "node_modules/decompress": { "version": "4.2.1", "dev": true, - "license": "MIT", "dependencies": { "decompress-tar": "^4.0.0", "decompress-tarbz2": "^4.0.0", @@ -13237,7 +22460,6 @@ "node_modules/decompress-response": { "version": "6.0.0", "dev": true, - "license": "MIT", "dependencies": { "mimic-response": "^3.1.0" }, @@ -13251,7 +22473,6 @@ "node_modules/decompress-response/node_modules/mimic-response": { "version": "3.1.0", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -13262,7 +22483,6 @@ "node_modules/decompress-tar": { "version": "4.1.1", "dev": true, - "license": "MIT", "dependencies": { "file-type": "^5.2.0", "is-stream": "^1.1.0", @@ -13275,7 +22495,6 @@ "node_modules/decompress-tar/node_modules/bl": { "version": "1.2.3", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "^2.3.5", "safe-buffer": "^5.1.1" @@ -13284,7 +22503,6 @@ "node_modules/decompress-tar/node_modules/file-type": { "version": "5.2.0", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -13292,20 +22510,19 @@ "node_modules/decompress-tar/node_modules/is-stream": { "version": "1.1.0", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/decompress-tar/node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/decompress-tar/node_modules/readable-stream": { "version": "2.3.8", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -13319,7 +22536,6 @@ "node_modules/decompress-tar/node_modules/string_decoder": { "version": "1.1.1", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } @@ -13327,7 +22543,6 @@ "node_modules/decompress-tar/node_modules/tar-stream": { "version": "1.6.2", "dev": true, - "license": "MIT", "dependencies": { "bl": "^1.0.0", "buffer-alloc": "^1.2.0", @@ -13344,7 +22559,6 @@ "node_modules/decompress-tarbz2": { "version": "4.1.1", "dev": true, - "license": "MIT", "dependencies": { "decompress-tar": "^4.1.0", "file-type": "^6.1.0", @@ -13359,7 +22573,6 @@ "node_modules/decompress-tarbz2/node_modules/file-type": { "version": "6.2.0", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -13367,7 +22580,6 @@ "node_modules/decompress-tarbz2/node_modules/is-stream": { "version": "1.1.0", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13375,7 +22587,6 @@ "node_modules/decompress-targz": { "version": "4.1.1", "dev": true, - "license": "MIT", "dependencies": { "decompress-tar": "^4.1.1", "file-type": "^5.2.0", @@ -13388,7 +22599,6 @@ "node_modules/decompress-targz/node_modules/file-type": { "version": "5.2.0", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } @@ -13396,7 +22606,6 @@ "node_modules/decompress-targz/node_modules/is-stream": { "version": "1.1.0", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13404,7 +22613,6 @@ "node_modules/decompress-unzip": { "version": "4.0.1", "dev": true, - "license": "MIT", "dependencies": { "file-type": "^3.8.0", "get-stream": "^2.2.0", @@ -13418,7 +22626,6 @@ "node_modules/decompress-unzip/node_modules/file-type": { "version": "3.9.0", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -13426,7 +22633,6 @@ "node_modules/decompress-unzip/node_modules/get-stream": { "version": "2.3.1", "dev": true, - "license": "MIT", "dependencies": { "object-assign": "^4.0.1", "pinkie-promise": "^2.0.0" @@ -13438,7 +22644,6 @@ "node_modules/decompress/node_modules/make-dir": { "version": "1.3.0", "dev": true, - "license": "MIT", "dependencies": { "pify": "^3.0.0" }, @@ -13449,13 +22654,14 @@ "node_modules/decompress/node_modules/make-dir/node_modules/pify": { "version": "3.0.0", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/deep-eql": { "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", "dev": true, "license": "MIT", "dependencies": { @@ -13467,7 +22673,8 @@ }, "node_modules/deep-equal": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.2.tgz", + "integrity": "sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==", "dependencies": { "is-arguments": "^1.1.1", "is-date-object": "^1.0.5", @@ -13488,34 +22695,33 @@ "dev": true, "license": "MIT" }, - "node_modules/default-browser": { - "version": "5.5.0", + "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==", "dev": true, "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/default-browser-id": { - "version": "5.0.1", + "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, - "license": "MIT", - "engines": { - "node": ">=18" + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^5.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 10" } }, "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, "license": "MIT", "dependencies": { @@ -13528,7 +22734,6 @@ "node_modules/defer-to-connect": { "version": "2.0.1", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } @@ -13536,7 +22741,6 @@ "node_modules/deferred": { "version": "0.7.11", "dev": true, - "license": "ISC", "dependencies": { "d": "^1.0.1", "es5-ext": "^0.10.50", @@ -13561,21 +22765,18 @@ } }, "node_modules/define-lazy-prop": { - "version": "3.0.0", + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/define-properties": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", "object-keys": "^1.1.1" }, @@ -13615,12 +22816,23 @@ }, "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, "license": "MIT", "engines": { "node": ">=4" } }, + "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", "dev": true, @@ -13630,17 +22842,10 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/detect-libc": { - "version": "2.1.2", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=8" - } - }, "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, "license": "MIT" }, @@ -13660,6 +22865,8 @@ }, "node_modules/diff": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", + "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -13678,6 +22885,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -13748,7 +22957,9 @@ } }, "node_modules/domutils": { - "version": "3.2.2", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -13766,7 +22977,9 @@ "license": "MIT" }, "node_modules/dotenv": { - "version": "16.6.1", + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -13779,13 +22992,14 @@ "node_modules/dotenv-expand": { "version": "10.0.0", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=12" } }, "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==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.1", @@ -13821,12 +23035,21 @@ "license": "MIT" }, "node_modules/electron-to-chromium": { - "version": "1.5.322", + "version": "1.5.137", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.137.tgz", + "integrity": "sha512-/QSJaU2JyIuTbbABAo/crOs+SuAZLS+fVVS10PVrIT9hrRkmZl8Hb0xPSkKRUUWHQtYzXHpQUW3Dy5hwMzGZkA==", "dev": true, "license": "ISC" }, + "node_modules/emitter-component": { + "version": "1.1.2", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/emoji-regex": { - "version": "10.6.0", + "version": "8.0.0", "dev": true, "license": "MIT" }, @@ -13855,29 +23078,6 @@ "iconv-lite": "^0.6.2" } }, - "node_modules/encoding-sniffer": { - "version": "0.2.1", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.3", - "whatwg-encoding": "^3.1.1" - }, - "funding": { - "url": "https://github.com/fb55/encoding-sniffer?sponsor=1" - } - }, - "node_modules/encoding-sniffer/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", "dev": true, @@ -13891,7 +23091,7 @@ } }, "node_modules/end-of-stream": { - "version": "1.4.5", + "version": "1.4.4", "dev": true, "license": "MIT", "dependencies": { @@ -13899,20 +23099,20 @@ } }, "node_modules/engine.io": { - "version": "6.6.6", + "version": "6.6.2", "dev": true, "license": "MIT", "dependencies": { + "@types/cookie": "^0.4.1", "@types/cors": "^2.8.12", "@types/node": ">=10.0.0", - "@types/ws": "^8.5.12", "accepts": "~1.3.4", "base64id": "2.0.0", "cookie": "~0.7.2", "cors": "~2.8.5", - "debug": "~4.4.1", + "debug": "~4.3.1", "engine.io-parser": "~5.2.1", - "ws": "~8.18.3" + "ws": "~8.17.1" }, "engines": { "node": ">=10.2.0" @@ -13927,7 +23127,7 @@ } }, "node_modules/engine.io/node_modules/ws": { - "version": "8.18.3", + "version": "8.17.1", "dev": true, "license": "MIT", "engines": { @@ -13947,26 +23147,27 @@ } }, "node_modules/enhanced-resolve": { - "version": "5.20.1", + "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": { "graceful-fs": "^4.2.4", - "tapable": "^2.3.0" + "tapable": "^2.2.0" }, "engines": { "node": ">=10.13.0" } }, "node_modules/ent": { - "version": "2.2.2", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.1.tgz", + "integrity": "sha512-QHuXVeZx9d+tIQAz/XztU0ZwZf2Agg9CcXcgE1rurqvdBeDBrpSwjl8/6XUqMg7tw2Y7uAdKb2sRv+bSEFqQ5A==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "punycode": "^1.4.1", - "safe-regex-test": "^1.1.0" + "punycode": "^1.4.1" }, "engines": { "node": ">= 0.4" @@ -13974,6 +23175,8 @@ }, "node_modules/entities": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -13991,17 +23194,6 @@ "node": ">=6" } }, - "node_modules/environment": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/err-code": { "version": "2.0.3", "dev": true, @@ -14020,7 +23212,7 @@ } }, "node_modules/error-ex": { - "version": "1.3.4", + "version": "1.3.2", "dev": true, "license": "MIT", "dependencies": { @@ -14036,7 +23228,9 @@ } }, "node_modules/es-abstract": { - "version": "1.24.1", + "version": "1.23.9", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", + "integrity": "sha512-py07lI0wjxAC/DcfK1S6G7iANonniZwTISvdPzk9hzeH0IZIshbuuFxLIU96OyF89Yb9hiqWn8M/bY83KY5vzA==", "dev": true, "license": "MIT", "dependencies": { @@ -14044,18 +23238,18 @@ "arraybuffer.prototype.slice": "^1.0.4", "available-typed-arrays": "^1.0.7", "call-bind": "^1.0.8", - "call-bound": "^1.0.4", + "call-bound": "^1.0.3", "data-view-buffer": "^1.0.2", "data-view-byte-length": "^1.0.2", "data-view-byte-offset": "^1.0.1", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", + "es-object-atoms": "^1.0.0", "es-set-tostringtag": "^2.1.0", "es-to-primitive": "^1.3.0", "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.0", "get-symbol-description": "^1.1.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", @@ -14067,24 +23261,21 @@ "is-array-buffer": "^3.0.5", "is-callable": "^1.2.7", "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", "is-regex": "^1.2.1", - "is-set": "^2.0.3", "is-shared-array-buffer": "^1.0.4", "is-string": "^1.1.1", "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", + "is-weakref": "^1.1.0", "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", + "object-inspect": "^1.13.3", "object-keys": "^1.1.1", "object.assign": "^4.1.7", "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", + "regexp.prototype.flags": "^1.5.3", "safe-array-concat": "^1.1.3", "safe-push-apply": "^1.0.0", "safe-regex-test": "^1.1.0", "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", "string.prototype.trim": "^1.2.10", "string.prototype.trimend": "^1.0.9", "string.prototype.trimstart": "^1.0.8", @@ -14093,7 +23284,7 @@ "typed-array-byte-offset": "^1.0.4", "typed-array-length": "^1.0.7", "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" + "which-typed-array": "^1.1.18" }, "engines": { "node": ">= 0.4" @@ -14104,6 +23295,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -14117,12 +23310,15 @@ } }, "node_modules/es-module-lexer": { - "version": "2.0.0", - "dev": true, - "license": "MIT" + "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.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "license": "MIT", "dependencies": { "es-errors": "^1.3.0" @@ -14133,6 +23329,8 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { @@ -14146,18 +23344,18 @@ } }, "node_modules/es-shim-unscopables": { - "version": "1.1.0", + "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, - "license": "MIT", "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" + "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "license": "MIT", "dependencies": { @@ -14176,7 +23374,6 @@ "version": "0.10.64", "dev": true, "hasInstallScript": true, - "license": "ISC", "dependencies": { "es6-iterator": "^2.0.3", "es6-symbol": "^3.1.3", @@ -14220,6 +23417,8 @@ }, "node_modules/es6-symbol": { "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", "dev": true, "license": "ISC", "dependencies": { @@ -14233,7 +23432,6 @@ "node_modules/es6-weak-map": { "version": "2.0.3", "dev": true, - "license": "ISC", "dependencies": { "d": "1", "es5-ext": "^0.10.46", @@ -14242,53 +23440,56 @@ } }, "node_modules/esbuild": { - "version": "0.25.4", + "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, "license": "MIT", + "optional": true, "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=18" + "node": ">=12" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.4", - "@esbuild/android-arm": "0.25.4", - "@esbuild/android-arm64": "0.25.4", - "@esbuild/android-x64": "0.25.4", - "@esbuild/darwin-arm64": "0.25.4", - "@esbuild/darwin-x64": "0.25.4", - "@esbuild/freebsd-arm64": "0.25.4", - "@esbuild/freebsd-x64": "0.25.4", - "@esbuild/linux-arm": "0.25.4", - "@esbuild/linux-arm64": "0.25.4", - "@esbuild/linux-ia32": "0.25.4", - "@esbuild/linux-loong64": "0.25.4", - "@esbuild/linux-mips64el": "0.25.4", - "@esbuild/linux-ppc64": "0.25.4", - "@esbuild/linux-riscv64": "0.25.4", - "@esbuild/linux-s390x": "0.25.4", - "@esbuild/linux-x64": "0.25.4", - "@esbuild/netbsd-arm64": "0.25.4", - "@esbuild/netbsd-x64": "0.25.4", - "@esbuild/openbsd-arm64": "0.25.4", - "@esbuild/openbsd-x64": "0.25.4", - "@esbuild/sunos-x64": "0.25.4", - "@esbuild/win32-arm64": "0.25.4", - "@esbuild/win32-ia32": "0.25.4", - "@esbuild/win32-x64": "0.25.4" + "@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/esbuild-wasm": { - "version": "0.25.4", + "version": "0.20.1", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.20.1.tgz", + "integrity": "sha512-6v/WJubRsjxBbQdz6izgvx7LsVFvVaGmSdwrFHmEzoVgfXL89hkKPoQHsnVI2ngOkcBUQT9kmAM1hVL1k/Av4A==", "dev": true, "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=18" + "node": ">=12" } }, "node_modules/escalade": { @@ -14306,6 +23507,8 @@ }, "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, "license": "MIT", "engines": { @@ -14314,6 +23517,9 @@ }, "node_modules/eslint": { "version": "8.57.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", + "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, "license": "MIT", "dependencies": { @@ -14368,8 +23574,9 @@ }, "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, - "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "^5.0.0", "tsutils": "^3.17.1", @@ -14382,6 +23589,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -14399,7 +23608,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.12.1", + "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, "license": "MIT", "dependencies": { @@ -14450,6 +23661,8 @@ }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -14477,7 +23690,7 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", "dev": true, "license": "ISC", "dependencies": { @@ -14533,8 +23746,9 @@ }, "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, - "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "^5.0.0", "common-tags": "^1.8.0", @@ -14552,7 +23766,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.4.0", + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", + "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -14568,6 +23784,8 @@ }, "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, "license": "Apache-2.0", "engines": { @@ -14578,7 +23796,7 @@ } }, "node_modules/eslint/node_modules/ajv": { - "version": "6.14.0", + "version": "6.12.6", "dev": true, "license": "MIT", "dependencies": { @@ -14592,8 +23810,15 @@ "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "dev": true, + "license": "Python-2.0" + }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -14614,6 +23839,8 @@ }, "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, "license": "BSD-2-Clause", "dependencies": { @@ -14627,12 +23854,59 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", "dev": true, "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "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, + "license": "MIT", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/eslint/node_modules/json-schema-traverse": { @@ -14640,21 +23914,73 @@ "dev": true, "license": "MIT" }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.5", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint/node_modules/p-limit": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/esniff": { "version": "2.0.1", "dev": true, - "license": "ISC", "dependencies": { "d": "^1.0.1", "es5-ext": "^0.10.62", @@ -14667,6 +23993,8 @@ }, "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, "license": "BSD-2-Clause", "dependencies": { @@ -14694,7 +24022,9 @@ } }, "node_modules/esquery": { - "version": "1.7.0", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -14725,6 +24055,8 @@ }, "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, "license": "BSD-2-Clause", "engines": { @@ -14733,8 +24065,9 @@ }, "node_modules/estree-walker": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "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/esutils": { "version": "2.0.3", @@ -14777,14 +24110,15 @@ }, "node_modules/event-target-shim": { "version": "5.0.1", - "license": "MIT", + "dev": true, "engines": { "node": ">=6" } }, "node_modules/eventemitter3": { - "version": "5.0.4", - "license": "MIT" + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, "node_modules/events": { "version": "1.1.1", @@ -14795,18 +24129,20 @@ } }, "node_modules/execa": { - "version": "4.1.0", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", + "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.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", "strip-final-newline": "^2.0.0" }, "engines": { @@ -14816,36 +24152,10 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "5.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/execa/node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/execa/node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, "license": "ISC" }, @@ -14855,15 +24165,19 @@ }, "node_modules/exifr": { "version": "7.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/exifr/-/exifr-7.1.3.tgz", + "integrity": "sha512-g/aje2noHivrRSLbAUtBPWFbxKdKhgj/xr1vATDdUXPOFYJlQ62Ft0oy+72V6XLIpDJfHs6gXLbBLAolqOXYRw==" }, "node_modules/exponential-backoff": { - "version": "3.1.3", - "dev": true, - "license": "Apache-2.0" + "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.22.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.1.tgz", + "integrity": "sha512-F2X8g9P1X7uCPZMA3MVf9wcTqlyNp7IhH5qPCI0izhaOIYXaW9L535tGA3qmjRzpH+bZczqq7hVKxTR4NWnu+g==", "dev": true, "license": "MIT", "dependencies": { @@ -14907,31 +24221,10 @@ "url": "https://opencollective.com/express" } }, - "node_modules/express/node_modules/body-parser": { - "version": "1.20.4", - "dev": true, - "license": "MIT", - "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.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, "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==", "dev": true, "license": "MIT", "dependencies": { @@ -14940,11 +24233,15 @@ }, "node_modules/express/node_modules/debug/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT" }, "node_modules/express/node_modules/encodeurl": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", "engines": { @@ -14952,51 +24249,28 @@ } }, "node_modules/express/node_modules/finalhandler": { - "version": "1.3.2", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~2.0.0", "escape-html": "~1.0.3", - "on-finished": "~2.4.1", + "on-finished": "2.4.1", "parseurl": "~1.3.3", - "statuses": "~2.0.2", + "statuses": "2.0.1", "unpipe": "~1.0.0" }, "engines": { "node": ">= 0.8" } }, - "node_modules/express/node_modules/fresh": { - "version": "0.5.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/iconv-lite": { - "version": "0.4.24", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/express/node_modules/media-typer": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/express/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, "license": "MIT", "bin": { @@ -15006,48 +24280,14 @@ "node": ">=4" } }, - "node_modules/express/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/express/node_modules/qs": { - "version": "6.14.2", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/express/node_modules/raw-body": { - "version": "2.5.3", + "node_modules/express/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dev": true, "license": "MIT", "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" + "ee-first": "1.1.1" }, "engines": { "node": ">= 0.8" @@ -15055,6 +24295,8 @@ }, "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==", "dev": true, "funding": [ { @@ -15073,46 +24315,48 @@ "license": "MIT" }, "node_modules/express/node_modules/send": { - "version": "0.19.2", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~2.0.0", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.4.1", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~2.0.2" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, - "node_modules/express/node_modules/statuses": { - "version": "2.0.2", + "node_modules/express/node_modules/send/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==", "dev": true, "license": "MIT", "engines": { "node": ">= 0.8" } }, - "node_modules/express/node_modules/type-is": { - "version": "1.6.18", + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/ext": { @@ -15126,7 +24370,6 @@ "node_modules/ext-list": { "version": "2.2.2", "dev": true, - "license": "MIT", "dependencies": { "mime-db": "^1.28.0" }, @@ -15137,7 +24380,6 @@ "node_modules/ext-name": { "version": "5.0.0", "dev": true, - "license": "MIT", "dependencies": { "ext-list": "^2.0.0", "sort-keys-length": "^1.0.0" @@ -15150,6 +24392,30 @@ "version": "3.0.2", "license": "MIT" }, + "node_modules/external-editor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, "node_modules/extsprintf": { "version": "1.4.1", "dev": true, @@ -15176,10 +24442,11 @@ }, "node_modules/fast-diff": { "version": "1.3.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==" }, "node_modules/fast-glob": { - "version": "3.3.3", + "version": "3.3.2", "dev": true, "license": "MIT", "dependencies": { @@ -15187,23 +24454,12 @@ "@nodelib/fs.walk": "^1.2.3", "glob-parent": "^5.1.2", "merge2": "^1.3.0", - "micromatch": "^4.0.8" + "micromatch": "^4.0.4" }, "engines": { "node": ">=8.6.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "dev": true, @@ -15220,35 +24476,14 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.0", + "version": "3.0.3", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], "license": "BSD-3-Clause" }, - "node_modules/fast-xml-builder": { - "version": "1.1.4", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "path-expression-matcher": "^1.1.3" - } - }, "node_modules/fast-xml-parser": { - "version": "5.5.9", + "version": "4.5.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.3.tgz", + "integrity": "sha512-RKihhV+SHsIUGXObeVy9AXiBbFwkVk7Syp8XgwN5U3JV416+Gwp/GO9i0JYKmikykgz/UHRrrV4ROuZEo/T0ig==", "funding": [ { "type": "github", @@ -15257,9 +24492,7 @@ ], "license": "MIT", "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.2" + "strnum": "^1.1.1" }, "bin": { "fxparser": "src/cli/cli.js" @@ -15268,13 +24501,14 @@ "node_modules/fastest-levenshtein": { "version": "1.0.16", "dev": true, - "license": "MIT", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { - "version": "1.20.1", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", "dev": true, "license": "ISC", "dependencies": { @@ -15295,18 +24529,15 @@ "node_modules/fd-slicer": { "version": "1.1.0", "dev": true, - "license": "MIT", "dependencies": { "pend": "~1.2.0" } }, "node_modules/fdir": { - "version": "6.5.0", + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz", + "integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, "peerDependencies": { "picomatch": "^3 || ^4" }, @@ -15332,8 +24563,9 @@ }, "node_modules/figures/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, - "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -15351,7 +24583,8 @@ }, "node_modules/file-type": { "version": "16.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-16.5.4.tgz", + "integrity": "sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw==", "dependencies": { "readable-web-to-node-stream": "^3.0.0", "strtok3": "^6.2.4", @@ -15390,23 +24623,25 @@ }, "node_modules/filesize": { "version": "10.1.6", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-10.1.6.tgz", + "integrity": "sha512-sJslQKU2uM33qH5nqewAwVB2QgR6w1aMNsYUp3aN5rMRyXEwJGmZvaWzeJFNTOXWlHQyBFCWrdj3fV/fsTOX8w==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">= 10.4.0" } }, "node_modules/filestack-js": { - "version": "3.46.4", - "license": "MIT", + "version": "3.34.4", + "resolved": "https://registry.npmjs.org/filestack-js/-/filestack-js-3.34.4.tgz", + "integrity": "sha512-6x0zorUcrwXZHLlTtyuACMcfqNR+bmEv6z6ulx1bVqLYMsjU9dxIU65qWXlv1ZsvK/DBz8kZztPzPEvRi+REOg==", "dependencies": { "@babel/runtime": "^7.8.4", "@filestack/loader": "^1.0.9", - "@sentry/browser": "8.x.x", + "@sentry/minimal": "^6.19.7", "abab": "^2.0.6", "debug": "^4.3.4", "eventemitter3": "^5.0.0", - "fast-xml-parser": "^5.3.6", + "fast-xml-parser": "^4.4.1", "file-type": "^16.5.4", "follow-redirects": "^1.15.2", "isutf8": "^4.0.0", @@ -15414,38 +24649,33 @@ "lodash.clonedeep": "^4.5.0", "p-queue": "^6.6.2", "spark-md5": "^3.0.2", - "ts-node": "^10.9.1" + "ts-node": "^8.10.2" }, "engines": { "node": ">=8" } }, - "node_modules/filestack-js/node_modules/p-queue": { - "version": "6.6.2", + "node_modules/filestack-js/node_modules/ts-node": { + "version": "8.10.2", "license": "MIT", "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" + "arg": "^4.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "source-map-support": "^0.5.17", + "yn": "3.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/filestack-js/node_modules/p-queue/node_modules/eventemitter3": { - "version": "4.0.7", - "license": "MIT" - }, - "node_modules/filestack-js/node_modules/p-timeout": { - "version": "3.2.0", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" + "bin": { + "ts-node": "dist/bin.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": ">=8" + "node": ">=6.0.0" + }, + "peerDependencies": { + "typescript": ">=2.7" } }, "node_modules/fill-range": { @@ -15489,19 +24719,10 @@ "dev": true, "license": "MIT" }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "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, "license": "MIT", "dependencies": { @@ -15518,7 +24739,6 @@ "node_modules/find-requires": { "version": "1.0.0", "dev": true, - "license": "ISC", "dependencies": { "es5-ext": "^0.10.49", "esniff": "^1.1.0" @@ -15530,7 +24750,6 @@ "node_modules/find-requires/node_modules/esniff": { "version": "1.1.3", "dev": true, - "license": "ISC", "dependencies": { "d": "^1.0.1", "es5-ext": "^0.10.62" @@ -15540,18 +24759,15 @@ } }, "node_modules/find-up": { - "version": "5.0.0", + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^6.0.0", + "locate-path": "^5.0.0", "path-exists": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/flat": { @@ -15564,6 +24780,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -15576,12 +24794,15 @@ } }, "node_modules/flatted": { - "version": "3.4.2", - "dev": true, - "license": "ISC" + "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.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "funding": [ { "type": "individual", @@ -15600,6 +24821,8 @@ }, "node_modules/for-each": { "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { @@ -15614,6 +24837,8 @@ }, "node_modules/foreground-child": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", "dev": true, "license": "ISC", "dependencies": { @@ -15629,6 +24854,8 @@ }, "node_modules/form-data": { "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { @@ -15642,27 +24869,10 @@ "node": ">= 6" } }, - "node_modules/form-data/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/form-data/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/formidable": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.5.tgz", + "integrity": "sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==", "dev": true, "license": "MIT", "dependencies": { @@ -15677,6 +24887,8 @@ }, "node_modules/forwarded": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, "license": "MIT", "engines": { @@ -15685,6 +24897,8 @@ }, "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, "license": "MIT", "engines": { @@ -15697,6 +24911,8 @@ }, "node_modules/franc-min": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/franc-min/-/franc-min-6.2.0.tgz", + "integrity": "sha512-1uDIEUSlUZgvJa2AKYR/dmJC66v/PvGQ9mWfI9nOr/kPpMFyvswK0gPXOwpYJYiYD008PpHLkGfG58SPjQJFxw==", "license": "MIT", "dependencies": { "trigram-utils": "^2.0.0" @@ -15707,11 +24923,11 @@ } }, "node_modules/fresh": { - "version": "2.0.0", + "version": "0.5.2", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, "node_modules/from": { @@ -15725,7 +24941,9 @@ "license": "MIT" }, "node_modules/fs-extra": { - "version": "11.3.4", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, "license": "MIT", "dependencies": { @@ -15739,6 +24957,8 @@ }, "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, "license": "ISC", "dependencies": { @@ -15748,15 +24968,22 @@ "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, + "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", "dev": true, "license": "ISC" }, "node_modules/fs2": { - "version": "0.3.16", + "version": "0.3.15", + "resolved": "https://registry.npmjs.org/fs2/-/fs2-0.3.15.tgz", + "integrity": "sha512-T684iG2bR/3g5byqXvYYnJyqkXA7MQdlJx5DvCe0BJ5CH9aMRRc4C11bl75D1MnypvERdJ7Cft5BFpU/eClCMw==", "dev": true, - "license": "ISC", "dependencies": { "d": "^1.0.2", "deferred": "^0.7.11", @@ -15773,8 +25000,9 @@ }, "node_modules/fs2/node_modules/ignore": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } @@ -15784,7 +25012,6 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, - "hasInstallScript": true, "license": "MIT", "optional": true, "os": [ @@ -15803,6 +25030,8 @@ }, "node_modules/function.prototype.name": { "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, "license": "MIT", "dependencies": { @@ -15827,14 +25056,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/generator-function": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, "node_modules/gensync": { "version": "1.0.0-beta.2", "dev": true, @@ -15851,19 +25072,10 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/get-east-asian-width": { - "version": "1.5.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-form-data": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-form-data/-/get-form-data-3.0.0.tgz", + "integrity": "sha512-1d53Kn08wlPuLu31/boF1tW2WRYKw3xAWae3mqcjqpDjoqVBtXolbQnudbbEFyFWL7+2SLGRAFdotxNY06V7MA==", "license": "MIT" }, "node_modules/get-func-name": { @@ -15876,6 +25088,8 @@ }, "node_modules/get-intrinsic": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { "call-bind-apply-helpers": "^1.0.2", @@ -15896,8 +25110,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-package-type": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, "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==", "license": "MIT", "dependencies": { "dunder-proto": "^1.0.1", @@ -15931,6 +25155,8 @@ }, "node_modules/get-symbol-description": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { @@ -15954,45 +25180,39 @@ } }, "node_modules/glob": { - "version": "13.0.6", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/glob-parent": { - "version": "6.0.2", + "version": "5.1.2", "dev": true, "license": "ISC", "dependencies": { - "is-glob": "^4.0.3" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob-to-regex.js": { - "version": "1.2.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "node": ">= 6" } }, "node_modules/glob-to-regexp": { @@ -16000,55 +25220,34 @@ "dev": true, "license": "BSD-2-Clause" }, - "node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.5", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/glob/node_modules/minimatch": { - "version": "10.2.4", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "@isaacs/brace-expansion": "^5.0.1" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/globals": { - "version": "13.24.0", + "version": "11.12.0", "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "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, "license": "MIT", "dependencies": { @@ -16081,16 +25280,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globby/node_modules/ignore": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/gopd": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -16102,7 +25295,6 @@ "node_modules/got": { "version": "11.8.6", "dev": true, - "license": "MIT", "dependencies": { "@sindresorhus/is": "^4.0.0", "@szmarczak/http-timer": "^4.0.5", @@ -16125,12 +25317,14 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/graphlib": { "version": "2.1.8", @@ -16141,8 +25335,9 @@ } }, "node_modules/graphql": { - "version": "16.13.2", - "license": "MIT", + "version": "16.9.0", + "resolved": "https://registry.npmjs.org/graphql/-/graphql-16.9.0.tgz", + "integrity": "sha512-GGTKBX4SD7Wdb8mqeDLni2oaRGYQWjWHGKPQ24ZMnUtKfcsVoiv4uX8+LJr1K6U5VW2Lu1BwJnj7uiori0YtRw==", "engines": { "node": "^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0" } @@ -16160,8 +25355,18 @@ "graphql": "^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0" } }, + "node_modules/hammerjs": { + "version": "2.0.8", + "dev": true, + "license": "MIT", + "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, "license": "MIT" }, @@ -16195,14 +25400,17 @@ }, "node_modules/has": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4.0" } }, "node_modules/has-bigints": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", "engines": { @@ -16214,6 +25422,8 @@ }, "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, "license": "MIT", "engines": { @@ -16232,6 +25442,8 @@ }, "node_modules/has-proto": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16246,6 +25458,8 @@ }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" @@ -16256,9 +25470,10 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dependencies": { - "has-symbols": "^1.0.3" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -16285,23 +25500,28 @@ } }, "node_modules/hosted-git-info": { - "version": "8.1.0", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", "dependencies": { "lru-cache": "^10.0.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "10.4.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "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==", "dev": true, "license": "MIT", "dependencies": { @@ -16313,11 +25533,15 @@ }, "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, "license": "MIT" }, "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, "license": "MIT", "dependencies": { @@ -16332,6 +25556,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==", "dev": true, "license": "MIT", "dependencies": { @@ -16339,7 +25565,7 @@ } }, "node_modules/html-entities": { - "version": "2.6.0", + "version": "2.5.2", "dev": true, "funding": [ { @@ -16359,7 +25585,9 @@ "license": "MIT" }, "node_modules/htmlparser2": { - "version": "10.1.0", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -16372,19 +25600,8 @@ "dependencies": { "domelementtype": "^2.3.0", "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" - } - }, - "node_modules/htmlparser2/node_modules/entities": { - "version": "7.0.1", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "domutils": "^3.0.1", + "entities": "^4.4.0" } }, "node_modules/http-auth": { @@ -16411,43 +25628,42 @@ }, "node_modules/http-auth/node_modules/uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/http-cache-semantics": { - "version": "4.2.0", + "version": "4.1.1", "dev": true, "license": "BSD-2-Clause" }, "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, "license": "MIT" }, "node_modules/http-errors": { - "version": "2.0.1", + "version": "2.0.0", "dev": true, "license": "MIT", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/http-errors/node_modules/statuses": { - "version": "2.0.2", + "version": "2.0.1", "dev": true, "license": "MIT", "engines": { @@ -16455,7 +25671,7 @@ } }, "node_modules/http-parser-js": { - "version": "0.5.10", + "version": "0.5.8", "license": "MIT" }, "node_modules/http-proxy": { @@ -16473,6 +25689,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==", "dev": true, "license": "MIT", "dependencies": { @@ -16484,30 +25702,39 @@ } }, "node_modules/http-proxy-middleware": { - "version": "3.0.5", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.8.tgz", + "integrity": "sha512-/iazaeFPmL8KLA6QB7DFAU4O5j+9y/TA0D019MbLtPuFI56VK4BXFzM6j6QS9oGpScy8IIDH4S2LHv3zg/63Bw==", "dev": true, "license": "MIT", "dependencies": { - "@types/http-proxy": "^1.17.15", - "debug": "^4.3.6", + "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", - "is-glob": "^4.0.3", - "is-plain-object": "^5.0.0", - "micromatch": "^4.0.8" + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } } }, "node_modules/http-proxy/node_modules/eventemitter3": { "version": "4.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true }, "node_modules/http2-wrapper": { "version": "1.0.3", "dev": true, - "license": "MIT", "dependencies": { "quick-lru": "^5.1.1", "resolve-alpn": "^1.0.0" @@ -16517,11 +25744,13 @@ } }, "node_modules/https-proxy-agent": { - "version": "7.0.6", + "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": { - "agent-base": "^7.1.2", + "agent-base": "^7.0.2", "debug": "4" }, "engines": { @@ -16529,23 +25758,19 @@ } }, "node_modules/human-signals": { - "version": "1.1.1", + "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, "license": "Apache-2.0", "engines": { - "node": ">=8.12.0" - } - }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.18" + "node": ">=10.17.0" } }, "node_modules/i18next": { - "version": "25.7.4", + "version": "23.16.5", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-23.16.5.tgz", + "integrity": "sha512-KTlhE3EP9x6pPTAW7dy0WKIhoCpfOGhRQlO+jttQLgzVaoOjWwBWramu7Pp0i+8wDNduuzXfe3kkVbzrKyrbTA==", "dev": true, "funding": [ { @@ -16563,63 +25788,28 @@ ], "license": "MIT", "dependencies": { - "@babel/runtime": "^7.28.4" - }, - "peerDependencies": { - "typescript": "^5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/i18next/node_modules/@babel/runtime": { - "version": "7.29.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.23.2" } }, "node_modules/iconv-lite": { - "version": "0.7.2", + "version": "0.4.24", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ics": { - "version": "3.10.0", - "license": "ISC", - "dependencies": { - "nanoid": "^3.1.23", - "runes2": "^1.1.2", - "yup": "^1.2.0" } }, - "node_modules/ics/node_modules/nanoid": { - "version": "3.3.11", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node_modules/ics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/ics/-/ics-3.8.1.tgz", + "integrity": "sha512-UqQlfkajfhrS4pUGQfGIJMYz/Jsl/ob3LqcfEhUmLbwumg+ZNkU0/6S734Vsjq3/FYNpEcZVKodLBoe+zBM69g==", + "dependencies": { + "nanoid": "^3.1.23", + "runes2": "^1.1.2", + "yup": "^1.2.0" } }, "node_modules/icss-utils": { @@ -16635,6 +25825,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -16652,7 +25844,9 @@ "license": "BSD-3-Clause" }, "node_modules/ignore": { - "version": "7.0.3", + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", + "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==", "dev": true, "license": "MIT", "engines": { @@ -16660,14 +25854,16 @@ } }, "node_modules/ignore-walk": { - "version": "7.0.0", + "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, "license": "ISC", "dependencies": { "minimatch": "^9.0.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/image-size": { @@ -16684,16 +25880,16 @@ }, "node_modules/immediate": { "version": "3.0.6", - "dev": true, "license": "MIT" }, "node_modules/immutable": { - "version": "5.1.5", - "dev": true, - "license": "MIT" + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "dev": true }, "node_modules/import-fresh": { - "version": "3.3.1", + "version": "3.3.0", "dev": true, "license": "MIT", "dependencies": { @@ -16707,6 +25903,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, "node_modules/imurmurhash": { "version": "0.1.4", "dev": true, @@ -16725,6 +25929,9 @@ }, "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, "license": "ISC", "dependencies": { @@ -16734,19 +25941,21 @@ }, "node_modules/inherits": { "version": "2.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/ini": { - "version": "5.0.0", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.2.tgz", + "integrity": "sha512-AMB1mvwR1pyBFY/nSevUX6y8nJWS63/SzUKD3JyQn97s4xgIdgQPT75IRouIiBAN4yLQBUShNYVW0+UG25daCw==", "dev": true, "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/injection-js": { - "version": "2.6.1", + "version": "2.4.0", "dev": true, "license": "MIT", "dependencies": { @@ -16754,68 +25963,44 @@ } }, "node_modules/inquirer": { - "version": "8.2.7", + "version": "9.2.15", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.2.15.tgz", + "integrity": "sha512-vI2w4zl/mDluHt9YEQ/543VTCwPKWiHzKtm9dM2V0NdFcqEexDAjUHzO1oA60HRNaVifGXXM1tRRNluLVHa0Kg==", "dev": true, "license": "MIT", "dependencies": { - "@inquirer/external-editor": "^1.0.0", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.1", + "@ljharb/through": "^2.3.12", + "ansi-escapes": "^4.3.2", + "chalk": "^5.3.0", "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "figures": "^3.0.0", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "figures": "^3.2.0", "lodash": "^4.17.21", - "mute-stream": "0.0.8", + "mute-stream": "1.0.0", "ora": "^5.4.1", - "run-async": "^2.4.0", - "rxjs": "^7.5.5", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6", - "wrap-ansi": "^6.0.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": ">=12.0.0" + "node": ">=18" } }, - "node_modules/inquirer/node_modules/ansi-escapes": { - "version": "4.3.2", + "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, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, "engines": { - "node": ">=8" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/cli-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/cli-width": { - "version": "3.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 10" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/inquirer/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/inquirer/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -16824,42 +26009,6 @@ "node": ">=8" } }, - "node_modules/inquirer/node_modules/mute-stream": { - "version": "0.0.8", - "dev": true, - "license": "ISC" - }, - "node_modules/inquirer/node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/inquirer/node_modules/restore-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/inquirer/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, "node_modules/inquirer/node_modules/string-width": { "version": "4.2.3", "dev": true, @@ -16873,19 +26022,10 @@ "node": ">=8" } }, - "node_modules/inquirer/node_modules/type-fest": { - "version": "0.21.3", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/internal-slot": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", "dependencies": { @@ -16898,22 +26038,36 @@ } }, "node_modules/ionicons": { - "version": "8.0.13", - "license": "MIT", + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/ionicons/-/ionicons-7.4.0.tgz", + "integrity": "sha512-ZK94MMqgzMCPPMhmk8Ouu6goyVHFIlw/ACP6oe3FrikcI0N7CX0xcwVaEbUc0G/v3W0shI93vo+9ve/KpvcNhQ==", "dependencies": { - "@stencil/core": "^4.35.3" + "@stencil/core": "^4.0.3" } }, "node_modules/ip-address": { - "version": "10.1.0", + "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, - "license": "MIT", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, "engines": { "node": ">= 12" } }, + "node_modules/ip-address/node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, "node_modules/ipaddr.js": { - "version": "2.3.0", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "dev": true, "license": "MIT", "engines": { @@ -16921,11 +26075,11 @@ } }, "node_modules/is-arguments": { - "version": "1.2.0", + "version": "1.1.1", "license": "MIT", "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -16936,6 +26090,8 @@ }, "node_modules/is-array-buffer": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { @@ -16957,6 +26113,8 @@ }, "node_modules/is-async-function": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -16975,6 +26133,8 @@ }, "node_modules/is-bigint": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17000,6 +26160,8 @@ }, "node_modules/is-blob": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-blob/-/is-blob-2.1.0.tgz", + "integrity": "sha512-SZ/fTft5eUhQM6oF/ZaASFDEdbFVe89Imltn9uZr03wdKMcWNVYSMjQPFtg05QuNkt5l5c135ElvXEQG0rk4tw==", "license": "MIT", "engines": { "node": ">=6" @@ -17010,6 +26172,8 @@ }, "node_modules/is-boolean-object": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { @@ -17025,6 +26189,8 @@ }, "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, "license": "MIT", "engines": { @@ -17035,7 +26201,9 @@ } }, "node_modules/is-core-module": { - "version": "2.16.1", + "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, "license": "MIT", "dependencies": { @@ -17050,6 +26218,8 @@ }, "node_modules/is-data-view": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { @@ -17066,6 +26236,8 @@ }, "node_modules/is-date-object": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -17079,14 +26251,14 @@ } }, "node_modules/is-docker": { - "version": "3.0.0", + "version": "2.2.1", "dev": true, "license": "MIT", "bin": { "is-docker": "cli.js" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -17102,6 +26274,8 @@ }, "node_modules/is-finalizationregistry": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { @@ -17115,14 +26289,11 @@ } }, "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", + "version": "2.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/is-generator": { @@ -17131,15 +26302,11 @@ "license": "MIT" }, "node_modules/is-generator-function": { - "version": "1.1.2", + "version": "1.0.10", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.4", - "generator-function": "^2.0.0", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -17159,23 +26326,6 @@ "node": ">=0.10.0" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-interactive": { "version": "1.0.0", "dev": true, @@ -17184,8 +26334,15 @@ "node": ">=8" } }, + "node_modules/is-lambda": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, "node_modules/is-map": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", "engines": { @@ -17197,27 +26354,25 @@ }, "node_modules/is-mobile": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-4.0.0.tgz", + "integrity": "sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==", "license": "MIT" }, - "node_modules/is-natural-number": { - "version": "4.0.1", + "node_modules/is-module": { + "version": "1.0.0", "dev": true, "license": "MIT" }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==", + "dev": true }, "node_modules/is-network-error": { - "version": "1.3.1", - "license": "MIT", + "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==", "engines": { "node": ">=16" }, @@ -17235,6 +26390,8 @@ }, "node_modules/is-number-object": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { @@ -17250,35 +26407,47 @@ }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { - "version": "1.1.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/is-plain-object": { - "version": "5.0.0", + "version": "2.0.4", "dev": true, "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, "engines": { "node": ">=0.10.0" } }, "node_modules/is-promise": { "version": "2.2.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "dev": true }, "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==", "license": "MIT", "dependencies": { "call-bound": "^1.0.2", @@ -17295,6 +26464,8 @@ }, "node_modules/is-set": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, "license": "MIT", "engines": { @@ -17306,6 +26477,8 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, "license": "MIT", "dependencies": { @@ -17330,6 +26503,8 @@ }, "node_modules/is-string": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { @@ -17345,6 +26520,8 @@ }, "node_modules/is-symbol": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "license": "MIT", "dependencies": { @@ -17361,6 +26538,8 @@ }, "node_modules/is-typed-array": { "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17386,6 +26565,8 @@ }, "node_modules/is-weakmap": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "license": "MIT", "engines": { @@ -17397,6 +26578,8 @@ }, "node_modules/is-weakref": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { @@ -17411,6 +26594,8 @@ }, "node_modules/is-weakset": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { @@ -17430,21 +26615,20 @@ "license": "MIT" }, "node_modules/is-wsl": { - "version": "3.1.1", + "version": "2.2.0", "dev": true, "license": "MIT", "dependencies": { - "is-inside-container": "^1.0.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "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, "license": "MIT" }, @@ -17475,13 +26659,14 @@ "node_modules/isomorphic-ws": { "version": "4.0.1", "dev": true, - "license": "MIT", "peerDependencies": { "ws": "*" } }, "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, "license": "BSD-3-Clause", "engines": { @@ -17489,22 +26674,34 @@ } }, "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", + "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, "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" + "semver": "^6.3.0" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, "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, "license": "BSD-3-Clause", "dependencies": { @@ -17538,7 +26735,9 @@ } }, "node_modules/istanbul-reports": { - "version": "3.2.0", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -17551,34 +26750,49 @@ }, "node_modules/isutf8": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isutf8/-/isutf8-4.0.1.tgz", + "integrity": "sha512-1pk2/2pE+G48eETnp4uOLxQ9WUCxD7oVauYwhFEAGREJPDxEO7iX9qstylrCcx3lNWa1RCS2DxGTxrHdWqS7/w==", "engines": { "node": ">= 12" } }, "node_modules/jackspeak": { - "version": "3.4.3", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/jackspeak/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, "node_modules/jasmine-core": { "version": "4.6.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.6.1.tgz", + "integrity": "sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ==", + "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, - "license": "MIT", "dependencies": { "lodash": "^4.17.20" }, @@ -17588,6 +26802,8 @@ }, "node_modules/jasmine-spec-reporter": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -17622,9 +26838,10 @@ } }, "node_modules/jiti": { - "version": "1.21.7", + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", "dev": true, - "license": "MIT", "bin": { "jiti": "bin/jiti.js" } @@ -17638,7 +26855,9 @@ } }, "node_modules/js-base64": { - "version": "3.7.8", + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.7.tgz", + "integrity": "sha512-7rCnleh0z2CkXhH67J8K1Ytz0b2Y+yxTPL+/KOJoa20hfnVQ/3/T6W/KflYI4bRHRagNeXeU2bkNGI3v1oS/lw==", "license": "BSD-3-Clause" }, "node_modules/js-tokens": { @@ -17646,16 +26865,25 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.1", + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", + "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" }, "bin": { "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, "node_modules/jsdoc-type-pratt-parser": { "version": "3.1.0", "dev": true, @@ -17666,6 +26894,8 @@ }, "node_modules/jsesc": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -17677,13 +26907,13 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, "node_modules/json-colorizer": { "version": "2.2.2", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^2.4.1", "lodash.get": "^4.4.2" @@ -17691,8 +26921,9 @@ }, "node_modules/json-colorizer/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, - "license": "MIT", "dependencies": { "color-convert": "^1.9.0" }, @@ -17702,8 +26933,9 @@ }, "node_modules/json-colorizer/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, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -17715,37 +26947,42 @@ }, "node_modules/json-colorizer/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, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/json-colorizer/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/json-colorizer/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, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/json-colorizer/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, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/json-colorizer/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, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -17756,17 +26993,17 @@ "node_modules/json-cycle": { "version": "1.5.0", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/json-parse-even-better-errors": { - "version": "4.0.0", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, - "license": "MIT", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/json-refs": { @@ -17790,14 +27027,6 @@ "node": ">=0.8" } }, - "node_modules/json-refs/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/json-refs/node_modules/commander": { "version": "4.1.1", "dev": true, @@ -17806,18 +27035,6 @@ "node": ">= 6" } }, - "node_modules/json-refs/node_modules/js-yaml": { - "version": "3.14.2", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, "node_modules/json-schema-traverse": { "version": "1.0.0", "dev": true, @@ -17840,11 +27057,12 @@ } }, "node_modules/jsonc-parser": { - "version": "3.3.1", - "license": "MIT" + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.2.1.tgz", + "integrity": "sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==" }, "node_modules/jsonfile": { - "version": "6.2.0", + "version": "6.1.0", "dev": true, "license": "MIT", "dependencies": { @@ -17863,7 +27081,7 @@ "license": "MIT" }, "node_modules/jsonschema": { - "version": "1.5.0", + "version": "1.4.1", "license": "MIT", "engines": { "node": "*" @@ -17882,11 +27100,22 @@ }, "node_modules/jszip/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/jszip/node_modules/lie": { + "version": "3.3.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } }, "node_modules/jszip/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, "license": "MIT", "dependencies": { @@ -17909,11 +27138,14 @@ }, "node_modules/jwt-decode": { "version": "2.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-2.2.0.tgz", + "integrity": "sha512-86GgN2vzfUu7m9Wcj63iUkuDzFNYFVmjeDm2GzWpUk+opB0pEpMsw6ePCMrhYkumz2C1ihqtZzOMAg7FiXcNoQ==", + "dev": true }, "node_modules/karma": { "version": "6.4.4", + "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.4.tgz", + "integrity": "sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w==", "dev": true, "license": "MIT", "dependencies": { @@ -17951,6 +27183,8 @@ }, "node_modules/karma-chrome-launcher": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.2.0.tgz", + "integrity": "sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==", "dev": true, "license": "MIT", "dependencies": { @@ -17970,6 +27204,8 @@ }, "node_modules/karma-coverage": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.1.tgz", + "integrity": "sha512-yj7hbequkQP2qOSb20GuNSIyE//PgJWHwC2IydLE6XRtsnaflv+/OSGNssPjobYUlhVVagy99TQpqUt3vAUG7A==", "dev": true, "license": "MIT", "dependencies": { @@ -18001,6 +27237,8 @@ }, "node_modules/karma-coverage-istanbul-reporter/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -18010,8 +27248,10 @@ }, "node_modules/karma-coverage-istanbul-reporter/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -18063,9 +27303,10 @@ } }, "node_modules/karma-coverage-istanbul-reporter/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -18083,6 +27324,9 @@ }, "node_modules/karma-coverage-istanbul-reporter/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, "license": "ISC", "dependencies": { @@ -18110,6 +27354,8 @@ }, "node_modules/karma-coverage/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -18117,25 +27363,11 @@ "concat-map": "0.0.1" } }, - "node_modules/karma-coverage/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "dev": true, - "license": "BSD-3-Clause", - "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": ">=8" - } - }, "node_modules/karma-coverage/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -18143,14 +27375,6 @@ "node": "*" } }, - "node_modules/karma-coverage/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/karma-htmlfile-reporter": { "version": "0.3.8", "dev": true, @@ -18159,309 +27383,157 @@ "xmlbuilder": "^10.0.0" }, "peerDependencies": { - "karma": ">=0.10" - } - }, - "node_modules/karma-jasmine": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "jasmine-core": "^4.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "karma": "^6.0.0" - } - }, - "node_modules/karma-jasmine-html-reporter": { - "version": "2.1.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "jasmine-core": "^4.0.0 || ^5.0.0", - "karma": "^6.0.0", - "karma-jasmine": "^5.0.0" - } - }, - "node_modules/karma-junit-reporter": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "path-is-absolute": "^1.0.0", - "xmlbuilder": "12.0.0" - }, - "engines": { - "node": ">= 8" - }, - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-junit-reporter/node_modules/xmlbuilder": { - "version": "12.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/karma-ng-html2js-preprocessor": { - "version": "1.0.0", - "dev": true, - "license": "MIT", - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-sonarqube-unit-reporter": { - "version": "0.0.23", - "dev": true, - "license": "MIT", - "dependencies": { - "xmlbuilder": "^13.0.2" - }, - "peerDependencies": { - "karma": ">=0.9" - } - }, - "node_modules/karma-sonarqube-unit-reporter/node_modules/xmlbuilder": { - "version": "13.0.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/karma-source-map-support": { - "version": "1.4.0", - "dev": true, - "license": "MIT", - "dependencies": { - "source-map-support": "^0.5.5" - } - }, - "node_modules/karma/node_modules/body-parser": { - "version": "1.20.4", - "dev": true, - "license": "MIT", - "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.1", - "iconv-lite": "~0.4.24", - "on-finished": "~2.4.1", - "qs": "~6.14.0", - "raw-body": "~2.5.3", - "type-is": "~1.6.18", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/karma/node_modules/brace-expansion": { - "version": "1.1.12", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma/node_modules/chokidar": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "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" - } - }, - "node_modules/karma/node_modules/cliui": { - "version": "7.0.4", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/karma/node_modules/debug": { - "version": "2.6.9", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/karma/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, - "node_modules/karma/node_modules/glob": { - "version": "7.2.3", - "dev": true, - "license": "ISC", - "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": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "karma": ">=0.10" } }, - "node_modules/karma/node_modules/glob-parent": { - "version": "5.1.2", + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" + "jasmine-core": "^4.1.0" }, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" } }, - "node_modules/karma/node_modules/iconv-lite": { - "version": "0.4.24", + "node_modules/karma-jasmine-html-reporter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.1.0.tgz", + "integrity": "sha512-sPQE1+nlsn6Hwb5t+HHwyy0A1FNCVKuL1192b+XNauMYWThz2kweiBVW1DqloRpVvZIJkIoHVB7XRpK78n1xbQ==", "dev": true, "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "jasmine-core": "^4.0.0 || ^5.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" } }, - "node_modules/karma/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", + "node_modules/karma-junit-reporter": { + "version": "2.0.1", "dev": true, "license": "MIT", + "dependencies": { + "path-is-absolute": "^1.0.0", + "xmlbuilder": "12.0.0" + }, "engines": { - "node": ">=8" + "node": ">= 8" + }, + "peerDependencies": { + "karma": ">=0.9" } }, - "node_modules/karma/node_modules/media-typer": { - "version": "0.3.0", + "node_modules/karma-junit-reporter/node_modules/xmlbuilder": { + "version": "12.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=6.0" } }, - "node_modules/karma/node_modules/mime-db": { - "version": "1.52.0", + "node_modules/karma-ng-html2js-preprocessor": { + "version": "1.0.0", "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.6" + "peerDependencies": { + "karma": ">=0.9" } }, - "node_modules/karma/node_modules/mime-types": { - "version": "2.1.35", + "node_modules/karma-sonarqube-unit-reporter": { + "version": "0.0.23", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "xmlbuilder": "^13.0.2" }, - "engines": { - "node": ">= 0.6" + "peerDependencies": { + "karma": ">=0.9" } }, - "node_modules/karma/node_modules/minimatch": { - "version": "3.1.5", + "node_modules/karma-sonarqube-unit-reporter/node_modules/xmlbuilder": { + "version": "13.0.2", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "license": "MIT", "engines": { - "node": "*" + "node": ">=6.0" } }, - "node_modules/karma/node_modules/ms": { - "version": "2.0.0", + "node_modules/karma-source-map-support": { + "version": "1.4.0", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "source-map-support": "^0.5.5" + } }, - "node_modules/karma/node_modules/picomatch": { - "version": "2.3.2", + "node_modules/karma/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/karma/node_modules/qs": { - "version": "6.14.2", + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/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": ">=0.6" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/karma/node_modules/raw-body": { - "version": "2.5.3", + "node_modules/karma/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", "dev": true, "license": "MIT", - "dependencies": { - "bytes": "~3.1.2", - "http-errors": "~2.0.1", - "iconv-lite": "~0.4.24", - "unpipe": "~1.0.0" - }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/karma/node_modules/readdirp": { - "version": "3.6.0", + "node_modules/karma/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, "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8.10.0" + "node": "*" } }, "node_modules/karma/node_modules/source-map": { @@ -18485,22 +27557,11 @@ "node": ">=8" } }, - "node_modules/karma/node_modules/type-is": { - "version": "1.6.18", - "dev": true, - "license": "MIT", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/karma/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==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -18539,15 +27600,12 @@ } }, "node_modules/keycharm": { - "version": "0.4.0", - "dev": true, - "license": "(Apache-2.0 OR MIT)", - "peer": true + "version": "0.2.0", + "dev": true }, "node_modules/keyv": { "version": "4.5.4", "dev": true, - "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } @@ -18562,12 +27620,23 @@ }, "node_modules/kleur": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, + "node_modules/klona": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.6.tgz", + "integrity": "sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/knuth-shuffle-seeded": { "version": "1.0.6", "dev": true, @@ -18577,18 +27646,19 @@ } }, "node_modules/launch-editor": { - "version": "2.13.2", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/launch-editor/-/launch-editor-2.10.0.tgz", + "integrity": "sha512-D7dBRJo/qcGX9xlvt/6wUYzQxjh5G1RvZPgPv8vi4KRU99DVQL/oW7tnVOCCTm2HGeo3C5HvGE5Yrh6UBoZ0vA==", "dev": true, "license": "MIT", "dependencies": { - "picocolors": "^1.1.1", - "shell-quote": "^1.8.3" + "picocolors": "^1.0.0", + "shell-quote": "^1.8.1" } }, "node_modules/lazystream": { "version": "1.0.1", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "^2.0.5" }, @@ -18598,13 +27668,13 @@ }, "node_modules/lazystream/node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/lazystream/node_modules/readable-stream": { "version": "2.3.8", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -18618,13 +27688,14 @@ "node_modules/lazystream/node_modules/string_decoder": { "version": "1.1.1", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/less": { - "version": "4.2.2", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -18649,28 +27720,24 @@ } }, "node_modules/less-loader": { - "version": "12.2.0", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.0.tgz", + "integrity": "sha512-C+uDBV7kS7W5fJlUjq5mPBeBVhYpTIm5gB09APT9o3n/ILeaXVsiSFTbZpTJCJwQ/Crczfn3DmfQFwxYusWFug==", "dev": true, "license": "MIT", + "dependencies": { + "klona": "^2.0.4" + }, "engines": { - "node": ">= 18.12.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@rspack/core": "0.x || 1.x", "less": "^3.5.0 || ^4.0.0", "webpack": "^5.0.0" - }, - "peerDependenciesMeta": { - "@rspack/core": { - "optional": true - }, - "webpack": { - "optional": true - } } }, "node_modules/less/node_modules/make-dir": { @@ -18698,197 +27765,85 @@ "node": ">=4" } }, - "node_modules/less/node_modules/pify": { - "version": "4.0.1", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.2", - "dev": true, - "license": "ISC", - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/less/node_modules/source-map": { - "version": "0.6.1", - "dev": true, - "license": "BSD-3-Clause", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/license-webpack-plugin": { - "version": "4.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "webpack-sources": "^3.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "node_modules/lie": { - "version": "3.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "dev": true, - "license": "MIT" - }, - "node_modules/listr2": { - "version": "8.2.5", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.2.2", + "node_modules/less/node_modules/pify": { + "version": "4.0.1", "dev": true, "license": "MIT", + "optional": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">=6" } }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "6.2.3", + "node_modules/less/node_modules/semver": { + "version": "5.7.2", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/listr2/node_modules/string-width": { - "version": "7.2.0", + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, + "license": "BSD-3-Clause", + "optional": true, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/listr2/node_modules/strip-ansi": { - "version": "7.2.0", + "node_modules/levn": { + "version": "0.4.1", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.2.2" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">= 0.8.0" } }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.2", + "node_modules/license-webpack-plugin": { + "version": "4.0.2", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" + "webpack-sources": "^3.0.0" }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } } }, - "node_modules/lmdb": { - "version": "3.2.6", - "dev": true, - "hasInstallScript": true, + "node_modules/lie": { + "version": "3.1.1", "license": "MIT", - "optional": true, "dependencies": { - "msgpackr": "^1.11.2", - "node-addon-api": "^6.1.0", - "node-gyp-build-optional-packages": "5.2.2", - "ordered-binary": "^1.5.3", - "weak-lru-cache": "^1.2.2" - }, - "bin": { - "download-lmdb-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@lmdb/lmdb-darwin-arm64": "3.2.6", - "@lmdb/lmdb-darwin-x64": "3.2.6", - "@lmdb/lmdb-linux-arm": "3.2.6", - "@lmdb/lmdb-linux-arm64": "3.2.6", - "@lmdb/lmdb-linux-x64": "3.2.6", - "@lmdb/lmdb-win32-x64": "3.2.6" + "immediate": "~3.0.5" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, "node_modules/loader-runner": { - "version": "4.3.1", + "version": "4.3.0", "dev": true, "license": "MIT", "engines": { "node": ">=6.11.5" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" } }, "node_modules/loader-utils": { - "version": "3.3.1", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", + "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", "dev": true, "license": "MIT", "engines": { @@ -18897,32 +27852,43 @@ }, "node_modules/loadjs": { "version": "4.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/loadjs/-/loadjs-4.3.0.tgz", + "integrity": "sha512-vNX4ZZLJBeDEOBvdr2v/F+0aN5oMuPu7JTqrMwp+DtgK+AryOlpy6Xtm2/HpNr+azEa828oQjOtWsB6iDtSfSQ==" + }, + "node_modules/localforage": { + "version": "1.10.0", + "license": "Apache-2.0", + "dependencies": { + "lie": "3.1.1" + } }, "node_modules/locate-path": { - "version": "6.0.0", + "version": "5.0.0", "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/lodash": { "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/lodash-es": { "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.23.tgz", + "integrity": "sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==", "license": "MIT" }, "node_modules/lodash._baseiteratee": { "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash._baseiteratee/-/lodash._baseiteratee-4.7.0.tgz", + "integrity": "sha512-nqB9M+wITz0BX/Q2xg6fQ8mLkyfF7MU7eE+MNBNjTHFKeKaZAPEzEg+E8LWxKWf1DQVflNEn9N49yAuqKh2mWQ==", "license": "MIT", "dependencies": { "lodash._stringtopath": "~4.8.0" @@ -18930,10 +27896,14 @@ }, "node_modules/lodash._basetostring": { "version": "4.12.0", + "resolved": "https://registry.npmjs.org/lodash._basetostring/-/lodash._basetostring-4.12.0.tgz", + "integrity": "sha512-SwcRIbyxnN6CFEEK4K1y+zuApvWdpQdBHM/swxP962s8HIxPO3alBH5t3m/dl+f4CMUug6sJb7Pww8d13/9WSw==", "license": "MIT" }, "node_modules/lodash._baseuniq": { "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash._baseuniq/-/lodash._baseuniq-4.6.0.tgz", + "integrity": "sha512-Ja1YevpHZctlI5beLA7oc5KNDhGcPixFhcqSiORHNsp/1QTv7amAXzw+gu4YOvErqVlMVyIJGgtzeepCnnur0A==", "license": "MIT", "dependencies": { "lodash._createset": "~4.0.0", @@ -18942,14 +27912,20 @@ }, "node_modules/lodash._createset": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/lodash._createset/-/lodash._createset-4.0.3.tgz", + "integrity": "sha512-GTkC6YMprrJZCYU3zcqZj+jkXkrXzq3IPBcF/fIPpNEAB4hZEtXU8zp/RwKOvZl43NUmwDbyRk3+ZTbeRdEBXA==", "license": "MIT" }, "node_modules/lodash._root": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/lodash._root/-/lodash._root-3.0.1.tgz", + "integrity": "sha512-O0pWuFSK6x4EXhM1dhZ8gchNtG7JMqBtrHdoUFUWXD7dJnNSUze1GuyQr5sOs0aCvgGeI3o/OJW8f4ca7FDxmQ==", "license": "MIT" }, "node_modules/lodash._stringtopath": { "version": "4.8.0", + "resolved": "https://registry.npmjs.org/lodash._stringtopath/-/lodash._stringtopath-4.8.0.tgz", + "integrity": "sha512-SXL66C731p0xPDC5LZg4wI5H+dJo/EO4KTqOMwLYCH3+FmmfAKJEZCm6ohGpI+T1xwsDsJCfL4OnhorllvlTPQ==", "license": "MIT", "dependencies": { "lodash._basetostring": "~4.12.0" @@ -18966,23 +27942,27 @@ }, "node_modules/lodash.defaults": { "version": "4.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.defaults/-/lodash.defaults-4.2.0.tgz", + "integrity": "sha512-qjxPLHd3r5DnsdGacqOMU6pb/avJzdh9tFX2ymgoZE27BmjXrNy/y4LoaiTeAb+O3gL8AfpJGtqfX/ae2leYYQ==", + "dev": true }, "node_modules/lodash.difference": { "version": "4.5.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.difference/-/lodash.difference-4.5.0.tgz", + "integrity": "sha512-dS2j+W26TQ7taQBGN8Lbbq04ssV3emRw4NY58WErlTO29pIqS0HmoT5aJ9+TUQ1N3G+JOZSji4eugsWwGp9yPA==", + "dev": true }, "node_modules/lodash.flatten": { "version": "4.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.flatten/-/lodash.flatten-4.4.0.tgz", + "integrity": "sha512-C5N2Z3DgnnKr0LOpv/hKCgKdb7ZZwafIrsesve6lmzvZIRZRGaZ/l6Q8+2W7NaT+ZwO3fFlSCzCzrDCFdJfZ4g==", + "dev": true }, "node_modules/lodash.get": { "version": "4.4.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "dev": true }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -18990,8 +27970,9 @@ }, "node_modules/lodash.isplainobject": { "version": "4.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -19000,15 +27981,20 @@ }, "node_modules/lodash.throttle": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==", "license": "MIT" }, "node_modules/lodash.union": { "version": "4.6.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", + "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", + "dev": true }, "node_modules/lodash.uniqby": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.5.0.tgz", + "integrity": "sha512-IRt7cfTtHy6f1aRVA5n7kT8rgN3N1nH6MOWLcHfpWG2SH19E3JksLK38MktLxZDhlAjCP9jpIXkOnRXlu6oByQ==", "license": "MIT", "dependencies": { "lodash._baseiteratee": "~4.7.0", @@ -19017,8 +28003,9 @@ }, "node_modules/log": { "version": "6.3.2", + "resolved": "https://registry.npmjs.org/log/-/log-6.3.2.tgz", + "integrity": "sha512-ek8NRg/OPvS9ISOJNWNAz5vZcpYacWNFDWNJjj5OXsc6YuKacfey6wF04cXz/tOJIVrZ2nGSkHpAY5qKtF6ISg==", "dev": true, - "license": "ISC", "dependencies": { "d": "^1.0.2", "duration": "^0.2.2", @@ -19035,7 +28022,6 @@ "node_modules/log-node": { "version": "8.0.3", "dev": true, - "license": "ISC", "dependencies": { "ansi-regex": "^5.0.1", "cli-color": "^2.0.1", @@ -19056,7 +28042,6 @@ "node_modules/log-node/node_modules/supports-color": { "version": "8.1.1", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -19082,123 +28067,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.3.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.2.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/log4js": { "version": "6.9.1", + "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.9.1.tgz", + "integrity": "sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -19241,6 +28113,8 @@ }, "node_modules/loupe": { "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", "dev": true, "license": "MIT", "dependencies": { @@ -19255,13 +28129,14 @@ "node_modules/lowercase-keys": { "version": "2.0.0", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { @@ -19271,7 +28146,6 @@ "node_modules/lru-queue": { "version": "0.1.0", "dev": true, - "license": "MIT", "dependencies": { "es5-ext": "~0.10.2" } @@ -19283,6 +28157,8 @@ }, "node_modules/macos-release": { "version": "2.5.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.5.1.tgz", + "integrity": "sha512-DXqXhEM7gW59OjZO8NIjBCz9AQ1BEMrfiOAl4AYByHCtVHRF4KoGNO8mqQeM8lRCtQe/UnJ4imO/d2HdkKsd+A==", "dev": true, "license": "MIT", "engines": { @@ -19293,15 +28169,22 @@ } }, "node_modules/magic-string": { - "version": "0.30.17", + "version": "0.30.8", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.8.tgz", + "integrity": "sha512-ISQTe55T2ao7XtlAStud6qwYPZjE4GK1S/BeVPus4jrq6JuOnQ00YKQC581RWhR122W7msZV263KzVeLoqidyQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" } }, "node_modules/make-dir": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "license": "MIT", "dependencies": { @@ -19319,24 +28202,36 @@ "license": "ISC" }, "node_modules/make-fetch-happen": { - "version": "14.0.3", + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/agent": "^3.0.0", - "cacache": "^19.0.1", + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", + "minipass-fetch": "^3.0.0", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", - "negotiator": "^1.0.0", - "proc-log": "^5.0.0", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", "promise-retry": "^2.0.1", - "ssri": "^12.0.0" + "ssri": "^10.0.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/make-fetch-happen/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/map-stream": { @@ -19355,64 +28250,44 @@ "node": ">= 16" } }, - "node_modules/matchit": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "@arr/every": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "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==", "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/media-typer": { - "version": "1.1.0", + "version": "0.3.0", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, "node_modules/memfs": { - "version": "4.57.1", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jsonjoy.com/fs-core": "4.57.1", - "@jsonjoy.com/fs-fsa": "4.57.1", - "@jsonjoy.com/fs-node": "4.57.1", - "@jsonjoy.com/fs-node-builtins": "4.57.1", - "@jsonjoy.com/fs-node-to-fsa": "4.57.1", - "@jsonjoy.com/fs-node-utils": "4.57.1", - "@jsonjoy.com/fs-print": "4.57.1", - "@jsonjoy.com/fs-snapshot": "4.57.1", - "@jsonjoy.com/json-pack": "^1.11.0", - "@jsonjoy.com/util": "^1.9.0", - "glob-to-regex.js": "^1.0.1", - "thingies": "^2.5.0", - "tree-dump": "^1.0.3", - "tslib": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", + "dev": true, + "license": "Unlicense", + "dependencies": { + "fs-monkey": "^1.0.4" }, - "peerDependencies": { - "tslib": "2" + "engines": { + "node": ">= 4.0.0" } }, + "node_modules/memoize-one": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" + }, "node_modules/memoizee": { "version": "0.4.17", "dev": true, - "license": "ISC", "dependencies": { "d": "^1.0.2", "es5-ext": "^0.10.64", @@ -19429,6 +28304,8 @@ }, "node_modules/merge-descriptors": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "dev": true, "license": "MIT", "funding": { @@ -19469,9 +28346,10 @@ } }, "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.2", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.6" }, @@ -19491,7 +28369,7 @@ } }, "node_modules/mime-db": { - "version": "1.54.0", + "version": "1.52.0", "dev": true, "license": "MIT", "engines": { @@ -19500,24 +28378,26 @@ }, "node_modules/mime-match": { "version": "1.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/mime-match/-/mime-match-1.0.2.tgz", + "integrity": "sha512-VXp/ugGDVh3eCLOBCiHZMYWQaTNUHv2IJrut+yXA6+JbLPXHglHwfS/5A5L0ll+jkCY7fIzRJcH6OIunF+c6Cg==", "dependencies": { "wildcard": "^1.1.0" } }, + "node_modules/mime-match/node_modules/wildcard": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-1.1.2.tgz", + "integrity": "sha512-DXukZJxpHA8LuotRwL0pP1+rS6CS7FF2qStDDE1C7DDg2rLud2PXRMuEDYIPhgEezwnlHNL4c+N6MfMTjCGTng==" + }, "node_modules/mime-types": { - "version": "3.0.2", + "version": "2.1.35", "dev": true, "license": "MIT", "dependencies": { - "mime-db": "^1.54.0" + "mime-db": "1.52.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">= 0.6" } }, "node_modules/mimic-fn": { @@ -19528,27 +28408,17 @@ "node": ">=6" } }, - "node_modules/mimic-function": { - "version": "5.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mimic-response": { "version": "1.0.1", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/mini-css-extract-plugin": { - "version": "2.9.2", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.8.1.tgz", + "integrity": "sha512-/1HDlyFRxWIZPI1ZpgqlZ8jMw/1Dp/dl3P0L1jtZ+zVcHqwPhGwaJwKL00WVgfnBy6PWCde9W65or7IIETImuA==", "dev": true, "license": "MIT", "dependencies": { @@ -19568,15 +28438,19 @@ }, "node_modules/minimalistic-assert": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", "dev": true, "license": "ISC" }, "node_modules/minimatch": { - "version": "9.0.9", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -19594,15 +28468,18 @@ } }, "node_modules/minipass": { - "version": "7.1.3", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "dev": true, - "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } }, "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, "license": "ISC", "dependencies": { @@ -19613,16 +28490,18 @@ } }, "node_modules/minipass-fetch": { - "version": "4.0.1", + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", "dev": true, "license": "MIT", "dependencies": { "minipass": "^7.0.3", "minipass-sized": "^1.0.3", - "minizlib": "^3.0.1" + "minizlib": "^2.1.2" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" }, "optionalDependencies": { "encoding": "^0.1.13" @@ -19641,8 +28520,9 @@ }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -19652,8 +28532,38 @@ }, "node_modules/minipass-flush/node_modules/yallist": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/minipass-json-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz", + "integrity": "sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==", "dev": true, - "license": "ISC" + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-json-stream/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-json-stream/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-pipeline": { "version": "1.2.4", @@ -19668,8 +28578,9 @@ }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -19679,8 +28590,9 @@ }, "node_modules/minipass-pipeline/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-sized": { "version": "1.0.3", @@ -19695,8 +28607,9 @@ }, "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -19706,24 +28619,45 @@ }, "node_modules/minipass-sized/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minizlib": { - "version": "3.1.0", + "version": "2.1.2", "dev": true, "license": "MIT", "dependencies": { - "minipass": "^7.1.2" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">= 18" + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, + "node_modules/minizlib/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "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, - "license": "MIT", "dependencies": { "minimist": "^1.2.6" }, @@ -19733,13 +28667,16 @@ }, "node_modules/moment": { "version": "2.30.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "engines": { "node": "*" } }, "node_modules/morgan": { "version": "1.10.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", + "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", "dev": true, "license": "MIT", "dependencies": { @@ -19766,61 +28703,24 @@ "dev": true, "license": "MIT" }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/mrmime": { - "version": "2.0.1", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", + "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/ms": { "version": "2.1.3", - "license": "MIT" - }, - "node_modules/msgpackr": { - "version": "1.11.9", - "dev": true, - "license": "MIT", - "optional": true, - "optionalDependencies": { - "msgpackr-extract": "^3.0.2" - } - }, - "node_modules/msgpackr-extract": { - "version": "3.0.3", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-gyp-build-optional-packages": "5.2.2" - }, - "bin": { - "download-msgpackr-prebuilds": "bin/download-prebuilds.js" - }, - "optionalDependencies": { - "@msgpackr-extract/msgpackr-extract-darwin-arm64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-darwin-x64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-arm64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-linux-x64": "3.0.3", - "@msgpackr-extract/msgpackr-extract-win32-x64": "3.0.3" - } + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "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, "license": "MIT", "dependencies": { @@ -19832,11 +28732,12 @@ } }, "node_modules/mute-stream": { - "version": "2.0.0", + "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, - "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/mz": { @@ -19851,6 +28752,8 @@ }, "node_modules/n-gram": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/n-gram/-/n-gram-2.0.2.tgz", + "integrity": "sha512-S24aGsn+HLBxUGVAUFOwGpKs7LBcG4RudKU//eWzt/mQ97/NMKQxDWHyHx63UNWk/OOdihgmzoETn1tf5nQDzQ==", "license": "MIT", "funding": { "type": "github", @@ -19859,10 +28762,13 @@ }, "node_modules/namespace-emitter": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/namespace-emitter/-/namespace-emitter-2.0.1.tgz", + "integrity": "sha512-N/sMKHniSDJBjfrkbS/tpkPj4RAbvW3mr8UAzvlMHyun93XEm83IAvhWtJVHo+RHn/oO8Job5YN4b+wRjSVp5g==" }, "node_modules/nanoid": { - "version": "5.1.7", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", @@ -19871,10 +28777,10 @@ ], "license": "MIT", "bin": { - "nanoid": "bin/nanoid.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^18 || >=20" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, "node_modules/native-promise-only": { @@ -19890,7 +28796,6 @@ "node_modules/ncjsm": { "version": "4.3.2", "dev": true, - "license": "ISC", "dependencies": { "builtin-modules": "^3.3.0", "deferred": "^0.7.11", @@ -19903,7 +28808,9 @@ } }, "node_modules/needle": { - "version": "3.5.0", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.3.1.tgz", + "integrity": "sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==", "dev": true, "license": "MIT", "optional": true, @@ -19920,6 +28827,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==", "dev": true, "license": "MIT", "optional": true, @@ -19931,7 +28840,9 @@ } }, "node_modules/negotiator": { - "version": "1.0.0", + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", "dev": true, "license": "MIT", "engines": { @@ -19958,7 +28869,8 @@ }, "node_modules/ng-circle-progress": { "version": "1.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ng-circle-progress/-/ng-circle-progress-1.7.1.tgz", + "integrity": "sha512-XAsd/FRWC4lqO7pUakwniO1c+ew3zr+Un/pZ58aqdE1aq3iS7kquxDmzOOCZ2XoUhU/6vC31e/DSYHvlHhITkA==", "dependencies": { "tslib": "^2.0.0" }, @@ -19968,46 +28880,66 @@ "rxjs": ">=6.4.0" } }, + "node_modules/ng-intercom": { + "version": "8.0.2", + "license": "MIT", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "node": ">= 8.0.0", + "npm": ">= 3" + } + }, + "node_modules/ng-intercom/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, "node_modules/ng-packagr": { - "version": "19.2.2", + "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, "license": "MIT", "dependencies": { - "@rollup/plugin-json": "^6.1.0", - "@rollup/wasm-node": "^4.24.0", - "ajv": "^8.17.1", + "@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", - "chokidar": "^4.0.1", - "commander": "^13.0.0", + "cacache": "^18.0.0", + "chokidar": "^3.5.3", + "commander": "^12.0.0", "convert-source-map": "^2.0.0", "dependency-graph": "^1.0.0", - "esbuild": "^0.25.0", - "fast-glob": "^3.3.2", + "esbuild-wasm": "^0.20.0", + "fast-glob": "^3.3.1", "find-cache-dir": "^3.3.2", "injection-js": "^2.4.0", - "jsonc-parser": "^3.3.1", + "jsonc-parser": "^3.2.0", "less": "^4.2.0", "ora": "^5.1.0", - "piscina": "^4.7.0", - "postcss": "^8.4.47", + "piscina": "^4.4.0", + "postcss": "^8.4.31", "rxjs": "^7.8.1", - "sass": "^1.81.0" + "sass": "^1.69.5" }, "bin": { "ng-packagr": "cli/main.js" }, "engines": { - "node": "^18.19.1 || >=20.11.1" + "node": "^18.13.0 || >=20.9.0" }, "optionalDependencies": { - "rollup": "^4.24.0" + "esbuild": "^0.20.0", + "rollup": "^4.5.0" }, "peerDependencies": { - "@angular/compiler-cli": "^19.0.0 || ^19.1.0-next.0 || ^19.2.0-next.0", - "tailwindcss": "^2.0.0 || ^3.0.0 || ^4.0.0", + "@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.5 <5.9" + "typescript": ">=5.2 <5.5" }, "peerDependenciesMeta": { "tailwindcss": { @@ -20015,23 +28947,18 @@ } } }, - "node_modules/ng-packagr/node_modules/commander": { - "version": "13.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/ng-packagr/node_modules/convert-source-map": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -20044,33 +28971,11 @@ "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/ng-packagr/node_modules/find-up": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ng-packagr/node_modules/locate-path": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "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, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -20081,35 +28986,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ng-packagr/node_modules/p-limit": { - "version": "2.3.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ng-packagr/node_modules/p-locate": { - "version": "4.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, "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, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -20119,31 +29000,34 @@ }, "node_modules/ng-packagr/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, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/ngx-quill": { - "version": "27.1.2", - "license": "MIT", + "version": "25.3.3", + "resolved": "https://registry.npmjs.org/ngx-quill/-/ngx-quill-25.3.3.tgz", + "integrity": "sha512-FheJHhYiyokJziidW3cW7P/fZ7RGws4tUdUxd5KSndPYqj6lE0lrT3YruKalJJXmJWHJCVBH3XyJSpcu6gcXnQ==", "dependencies": { "tslib": "^2.3.0" }, "engines": { - "node": "^18.19.1 || ^20.11.1 || >=22.0.0" + "node": ">=18" }, "peerDependencies": { - "@angular/core": "^19.0.0", + "@angular/core": "^17.0.0", "quill": "^2.0.0", "rxjs": "^7.0.0" } }, "node_modules/nice-try": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true }, "node_modules/no-case": { "version": "2.3.2", @@ -20153,16 +29037,9 @@ "lower-case": "^1.1.1" } }, - "node_modules/node-addon-api": { - "version": "6.1.0", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/node-dir": { "version": "0.1.17", "dev": true, - "license": "MIT", "dependencies": { "minimatch": "^3.0.2" }, @@ -20172,6 +29049,8 @@ }, "node_modules/node-dir/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -20180,9 +29059,10 @@ } }, "node_modules/node-dir/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -20193,7 +29073,6 @@ "node_modules/node-fetch": { "version": "2.7.0", "dev": true, - "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -20210,7 +29089,9 @@ } }, "node_modules/node-forge": { - "version": "1.4.0", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "dev": true, "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { @@ -20218,77 +29099,112 @@ } }, "node_modules/node-gyp": { - "version": "11.5.0", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", + "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==", "dev": true, "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", "graceful-fs": "^4.2.6", - "make-fetch-happen": "^14.0.3", - "nopt": "^8.0.0", - "proc-log": "^5.0.0", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", "semver": "^7.3.5", - "tar": "^7.4.3", - "tinyglobby": "^0.2.12", - "which": "^5.0.0" + "tar": "^6.2.1", + "which": "^4.0.0" }, "bin": { "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/node-gyp-build-optional-packages": { - "version": "5.2.2", + "node_modules/node-gyp/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, - "license": "MIT", - "optional": true, + "license": "ISC", "dependencies": { - "detect-libc": "^2.0.1" + "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": { - "node-gyp-build-optional-packages": "bin.js", - "node-gyp-build-optional-packages-optional": "optional.js", - "node-gyp-build-optional-packages-test": "build-test.js" + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-gyp/node_modules/chownr": { - "version": "3.0.0", + "node_modules/node-gyp/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, - "license": "BlueOak-1.0.0", "engines": { - "node": ">=18" + "node": ">=16" } }, - "node_modules/node-gyp/node_modules/isexe": { - "version": "3.1.5", + "node_modules/node-gyp/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/node-gyp/node_modules/tar": { - "version": "7.5.13", + "node_modules/node-gyp/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/node-gyp/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, - "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">=18" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/node-gyp/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/node-gyp/node_modules/which": { - "version": "5.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", "dev": true, - "license": "ISC", "dependencies": { "isexe": "^3.1.1" }, @@ -20296,34 +29212,44 @@ "node-which": "bin/which.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/node-gyp/node_modules/yallist": { - "version": "5.0.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" + "node": "^16.13.0 || >=18.0.0" } }, "node_modules/node-releases": { - "version": "2.0.36", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, "node_modules/nopt": { - "version": "8.1.0", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", "dev": true, "license": "ISC", "dependencies": { - "abbrev": "^3.0.0" + "abbrev": "^2.0.0" }, "bin": { "nopt": "bin/nopt.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/normalize-path": { @@ -20344,102 +29270,125 @@ }, "node_modules/normalize-url": { "version": "4.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", "engines": { "node": ">=8" } }, "node_modules/npm-bundled": { - "version": "4.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-3.0.1.tgz", + "integrity": "sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==", "dev": true, "license": "ISC", "dependencies": { - "npm-normalize-package-bin": "^4.0.0" + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-install-checks": { - "version": "7.1.2", + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-6.3.0.tgz", + "integrity": "sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==", "dev": true, "license": "BSD-2-Clause", "dependencies": { "semver": "^7.1.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-normalize-package-bin": { - "version": "4.0.0", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-3.0.1.tgz", + "integrity": "sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==", "dev": true, - "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-package-arg": { - "version": "12.0.2", + "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, "license": "ISC", "dependencies": { - "hosted-git-info": "^8.0.0", - "proc-log": "^5.0.0", + "hosted-git-info": "^7.0.0", + "proc-log": "^3.0.0", "semver": "^7.3.5", - "validate-npm-package-name": "^6.0.0" + "validate-npm-package-name": "^5.0.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm-packlist": { - "version": "9.0.0", + "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, "license": "ISC", "dependencies": { - "ignore-walk": "^7.0.0" + "ignore-walk": "^6.0.4" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-pick-manifest": { - "version": "10.0.0", + "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, "license": "ISC", "dependencies": { - "npm-install-checks": "^7.1.0", - "npm-normalize-package-bin": "^4.0.0", - "npm-package-arg": "^12.0.0", + "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": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/npm-registry-fetch": { - "version": "18.0.2", + "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, - "license": "ISC", + "license": "MIT", "dependencies": { - "@npmcli/redact": "^3.0.0", - "jsonparse": "^1.3.1", - "make-fetch-happen": "^14.0.0", + "@npmcli/redact": "^1.1.0", + "make-fetch-happen": "^13.0.0", "minipass": "^7.0.2", - "minipass-fetch": "^4.0.0", - "minizlib": "^3.0.1", - "npm-package-arg": "^12.0.0", - "proc-log": "^5.0.0" + "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": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" + } + }, + "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, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/npm-registry-utilities": { "version": "1.0.0", "dev": true, - "license": "ISC", "dependencies": { "ext": "^1.6.0", "fs2": "^0.3.9", @@ -20455,8 +29404,9 @@ }, "node_modules/npm-registry-utilities/node_modules/validate-npm-package-name": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", "dev": true, - "license": "ISC", "dependencies": { "builtins": "^1.0.3" } @@ -20487,7 +29437,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -20495,13 +29444,14 @@ "node_modules/object-hash": { "version": "3.0.0", "dev": true, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/object-inspect": { - "version": "1.13.4", + "version": "1.13.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", + "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", "dev": true, "license": "MIT", "engines": { @@ -20513,7 +29463,8 @@ }, "node_modules/object-is": { "version": "1.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", "dependencies": { "call-bind": "^1.0.7", "define-properties": "^1.2.1" @@ -20534,6 +29485,8 @@ }, "node_modules/object.assign": { "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { @@ -20552,12 +29505,13 @@ } }, "node_modules/object.values": { - "version": "1.2.1", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-object-atoms": "^1.0.0" }, @@ -20570,11 +29524,13 @@ }, "node_modules/obuf": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", "dev": true, "license": "MIT" }, "node_modules/on-finished": { - "version": "2.4.1", + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { @@ -20586,6 +29542,8 @@ }, "node_modules/on-headers": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", "dev": true, "license": "MIT", "engines": { @@ -20601,31 +29559,32 @@ } }, "node_modules/onetime": { - "version": "7.0.0", + "version": "5.1.2", "dev": true, "license": "MIT", "dependencies": { - "mimic-function": "^5.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=18" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/open": { - "version": "10.1.0", + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "license": "MIT", "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=18" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -20640,17 +29599,31 @@ } }, "node_modules/optimism": { - "version": "0.18.1", - "license": "MIT", + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/optimism/-/optimism-0.18.0.tgz", + "integrity": "sha512-tGn8+REwLRNFnb9WmcY5IfpOqeX2kpaYJ1s6Ae3mn12AeydLkR3j+jSCmVQFoXqU8D41PAJ1RG1rCRNWmNZVmQ==", "dependencies": { "@wry/caches": "^1.0.0", "@wry/context": "^0.7.0", - "@wry/trie": "^0.5.0", + "@wry/trie": "^0.4.3", + "tslib": "^2.3.0" + } + }, + "node_modules/optimism/node_modules/@wry/trie": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@wry/trie/-/trie-0.4.3.tgz", + "integrity": "sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==", + "dependencies": { "tslib": "^2.3.0" + }, + "engines": { + "node": ">=8" } }, "node_modules/optionator": { "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { @@ -20687,54 +29660,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/onetime": { - "version": "5.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ora/node_modules/signal-exit": { - "version": "3.0.7", - "dev": true, - "license": "ISC" - }, - "node_modules/ordered-binary": { - "version": "1.6.1", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/os-name": { "version": "4.0.1", "dev": true, @@ -20750,8 +29675,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/own-keys": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, "license": "MIT", "dependencies": { @@ -20769,7 +29704,6 @@ "node_modules/p-cancelable": { "version": "2.1.1", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } @@ -20777,7 +29711,6 @@ "node_modules/p-event": { "version": "4.2.0", "dev": true, - "license": "MIT", "dependencies": { "p-timeout": "^3.1.0" }, @@ -20788,107 +29721,106 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-event/node_modules/p-timeout": { - "version": "3.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/p-finally": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "engines": { "node": ">=4" } }, "node_modules/p-limit": { - "version": "3.1.0", + "version": "2.3.0", "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "p-try": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-locate": { - "version": "5.0.0", + "version": "4.1.0", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/p-map": { - "version": "7.0.4", + "version": "4.0.0", "dev": true, "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { - "node": ">=18" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/p-queue": { - "version": "8.1.1", - "license": "MIT", + "version": "6.6.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-6.6.2.tgz", + "integrity": "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==", "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" + "eventemitter3": "^4.0.4", + "p-timeout": "^3.2.0" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-queue/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==" + }, "node_modules/p-retry": { - "version": "6.2.1", + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/retry": "0.12.2", - "is-network-error": "^1.0.0", + "@types/retry": "0.12.0", "retry": "^0.13.1" }, "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/p-retry/node_modules/retry": { "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/p-timeout": { - "version": "6.1.4", - "license": "MIT", - "engines": { - "node": ">=14.16" + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", + "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", + "dependencies": { + "p-finally": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, "node_modules/p-try": { @@ -20905,33 +29837,36 @@ "license": "BlueOak-1.0.0" }, "node_modules/pacote": { - "version": "20.0.0", + "version": "17.0.6", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-17.0.6.tgz", + "integrity": "sha512-cJKrW21VRE8vVTRskJo78c/RCvwJCn1f4qgfxL4w77SOWrTCRcmfkYHlHtS0gqpgjv3zhXflRtgsrUCX5xwNnQ==", "dev": true, "license": "ISC", "dependencies": { - "@npmcli/git": "^6.0.0", - "@npmcli/installed-package-contents": "^3.0.0", - "@npmcli/package-json": "^6.0.0", - "@npmcli/promise-spawn": "^8.0.0", - "@npmcli/run-script": "^9.0.0", - "cacache": "^19.0.0", + "@npmcli/git": "^5.0.0", + "@npmcli/installed-package-contents": "^2.0.1", + "@npmcli/promise-spawn": "^7.0.0", + "@npmcli/run-script": "^7.0.0", + "cacache": "^18.0.0", "fs-minipass": "^3.0.0", "minipass": "^7.0.2", - "npm-package-arg": "^12.0.0", - "npm-packlist": "^9.0.0", - "npm-pick-manifest": "^10.0.0", - "npm-registry-fetch": "^18.0.0", - "proc-log": "^5.0.0", + "npm-package-arg": "^11.0.0", + "npm-packlist": "^8.0.0", + "npm-pick-manifest": "^9.0.0", + "npm-registry-fetch": "^16.0.0", + "proc-log": "^3.0.0", "promise-retry": "^2.0.1", - "sigstore": "^3.0.0", - "ssri": "^12.0.0", + "read-package-json": "^7.0.0", + "read-package-json-fast": "^3.0.0", + "sigstore": "^2.2.0", + "ssri": "^10.0.0", "tar": "^6.1.11" }, "bin": { - "pacote": "bin/index.js" + "pacote": "lib/bin.js" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/pad-right": { @@ -20952,7 +29887,8 @@ }, "node_modules/parchment": { "version": "3.0.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/parchment/-/parchment-3.0.0.tgz", + "integrity": "sha512-HUrJFQ/StvgmXRcQ1ftY6VEZUq3jA2t9ncFN4F84J/vN0/FPpQF+8FKXb3l6fLces6q0uOHj6NJn+2xvZnxO6A==" }, "node_modules/parent-module": { "version": "1.0.1", @@ -20984,8 +29920,9 @@ }, "node_modules/parse-json/node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/parse-node-version": { "version": "1.0.1", @@ -20996,11 +29933,13 @@ } }, "node_modules/parse5": { - "version": "7.3.0", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^6.0.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -21008,6 +29947,8 @@ }, "node_modules/parse5-html-rewriting-stream": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-7.0.0.tgz", + "integrity": "sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==", "dev": true, "license": "MIT", "dependencies": { @@ -21021,6 +29962,8 @@ }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz", + "integrity": "sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==", "dev": true, "license": "MIT", "dependencies": { @@ -21031,19 +29974,10 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5-parser-stream": { - "version": "7.1.2", - "dev": true, - "license": "MIT", - "dependencies": { - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, "node_modules/parse5-sax-parser": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-7.0.0.tgz", + "integrity": "sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==", "dev": true, "license": "MIT", "dependencies": { @@ -21053,17 +29987,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "dev": true, @@ -21085,19 +30008,6 @@ "node": ">=8" } }, - "node_modules/path-expression-matcher": { - "version": "1.2.0", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/path-is-absolute": { "version": "1.0.1", "dev": true, @@ -21129,7 +30039,7 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.2", + "version": "2.0.0", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -21137,22 +30047,24 @@ "minipass": "^7.1.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.7", + "version": "11.0.2", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "engines": { "node": "20 || >=22" } }, "node_modules/path-to-regexp": { "version": "0.1.12", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz", + "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==", "dev": true, "license": "MIT" }, @@ -21190,7 +30102,8 @@ }, "node_modules/peek-readable": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-4.1.0.tgz", + "integrity": "sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg==", "engines": { "node": ">=8" }, @@ -21201,8 +30114,9 @@ }, "node_modules/pend": { "version": "1.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true }, "node_modules/picocolors": { "version": "1.1.1", @@ -21210,7 +30124,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.2", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.1.tgz", + "integrity": "sha512-xUXwsxNjwTQ8K3GnT4pCJm+xq3RUPQbmkYJTP5aFIfNIvbcc/4MUxgBaaRSZJ6yGJZiGSyYlM6MzwTsRk8SYCg==", "dev": true, "license": "MIT", "engines": { @@ -21248,15 +30164,18 @@ } }, "node_modules/piscina": { - "version": "4.8.0", + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.4.0.tgz", + "integrity": "sha512-+AQduEJefrOApE4bV7KRmp3N2JnnyErlVqq4P/jmko4FPz9Z877BCccl/iB3FdrWSUkvbGV9Kan/KllJgat3Vg==", "dev": true, - "license": "MIT", "optionalDependencies": { - "@napi-rs/nice": "^1.0.1" + "nice-napi": "^1.0.2" } }, "node_modules/pkg-dir": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-7.0.0.tgz", + "integrity": "sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==", "dev": true, "license": "MIT", "dependencies": { @@ -21271,8 +30190,9 @@ }, "node_modules/pkg-dir/node_modules/find-up": { "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -21286,8 +30206,9 @@ }, "node_modules/pkg-dir/node_modules/locate-path": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -21300,8 +30221,9 @@ }, "node_modules/pkg-dir/node_modules/p-limit": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, - "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -21314,8 +30236,9 @@ }, "node_modules/pkg-dir/node_modules/p-locate": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -21328,16 +30251,18 @@ }, "node_modules/pkg-dir/node_modules/path-exists": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/pkg-dir/node_modules/yocto-queue": { - "version": "1.2.2", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, - "license": "MIT", "engines": { "node": ">=12.20" }, @@ -21346,35 +30271,30 @@ } }, "node_modules/plyr": { - "version": "3.8.4", - "license": "MIT", + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/plyr/-/plyr-3.7.8.tgz", + "integrity": "sha512-yG/EHDobwbB/uP+4Bm6eUpJ93f8xxHjjk2dYcD1Oqpe1EcuQl5tzzw9Oq+uVAzd2lkM11qZfydSiyIpiB8pgdA==", "dependencies": { - "core-js": "^3.45.1", + "core-js": "^3.26.1", "custom-event-polyfill": "^1.0.7", - "loadjs": "^4.3.0", + "loadjs": "^4.2.0", "rangetouch": "^2.0.1", - "url-polyfill": "^1.1.13" - } - }, - "node_modules/polka": { - "version": "0.5.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^0.5.0", - "trouter": "^2.0.1" + "url-polyfill": "^1.1.12" } }, "node_modules/possible-typed-array-names": { - "version": "1.1.0", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.4" } }, "node_modules/postcss": { - "version": "8.5.2", + "version": "8.4.35", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.35.tgz", + "integrity": "sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==", "dev": true, "funding": [ { @@ -21390,11 +30310,10 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { - "nanoid": "^3.3.8", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" + "nanoid": "^3.3.7", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { "node": "^10 || ^12 || >=14" @@ -21402,6 +30321,8 @@ }, "node_modules/postcss-loader": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-8.1.1.tgz", + "integrity": "sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==", "dev": true, "license": "MIT", "dependencies": { @@ -21432,11 +30353,14 @@ }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", + "integrity": "sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==", + "dev": true }, "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", + "integrity": "sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==", "dev": true, "license": "ISC", "engines": { @@ -21447,12 +30371,14 @@ } }, "node_modules/postcss-modules-local-by-default": { - "version": "4.2.0", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.5.tgz", + "integrity": "sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==", "dev": true, "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", - "postcss-selector-parser": "^7.0.0", + "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.1.0" }, "engines": { @@ -21463,11 +30389,13 @@ } }, "node_modules/postcss-modules-scope": { - "version": "3.2.1", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.2.0.tgz", + "integrity": "sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==", "dev": true, "license": "ISC", "dependencies": { - "postcss-selector-parser": "^7.0.0" + "postcss-selector-parser": "^6.0.4" }, "engines": { "node": "^10 || ^12 || >= 14" @@ -21491,7 +30419,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "7.1.1", + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "dev": true, "license": "MIT", "dependencies": { @@ -21507,26 +30437,10 @@ "dev": true, "license": "MIT" }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.11", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/preact": { - "version": "10.29.0", - "license": "MIT", + "version": "10.25.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.25.1.tgz", + "integrity": "sha512-frxeZV2vhQSohQwJ7FvlqC40ze89+8friponWUFeVEkaCfhC6Eu4V0iND5C9CXz8JLndV07QRDeXzH1+Anz5Og==", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -21542,6 +30456,8 @@ }, "node_modules/prismjs": { "version": "1.30.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.30.0.tgz", + "integrity": "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==", "dev": true, "license": "MIT", "engines": { @@ -21549,18 +30465,12 @@ } }, "node_modules/proc-log": { - "version": "5.0.0", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", + "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/process": { - "version": "0.11.10", - "license": "MIT", "engines": { - "node": ">= 0.6.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/process-nextick-args": { @@ -21571,7 +30481,6 @@ "node_modules/process-utils": { "version": "4.0.0", "dev": true, - "license": "ISC", "dependencies": { "ext": "^1.4.0", "fs2": "^0.3.9", @@ -21590,6 +30499,11 @@ "node": ">=0.4.0" } }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "dev": true, + "license": "ISC" + }, "node_modules/promise-queue": { "version": "2.2.5", "license": "MIT", @@ -21609,18 +30523,11 @@ "node": ">=10" } }, - "node_modules/promise-retry/node_modules/retry": { - "version": "0.12.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/prompts": { "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "license": "MIT", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -21638,8 +30545,18 @@ "react-is": "^16.13.1" } }, + "node_modules/propagating-hammerjs": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "hammerjs": "^2.0.8" + } + }, "node_modules/proper-lockfile": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", + "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", "license": "MIT", "dependencies": { "graceful-fs": "^4.2.4", @@ -21647,23 +30564,22 @@ "signal-exit": "^3.0.2" } }, - "node_modules/proper-lockfile/node_modules/retry": { - "version": "0.12.0", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/proper-lockfile/node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, "node_modules/property-expr": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/property-expr/-/property-expr-2.0.6.tgz", + "integrity": "sha512-SVtmxhRE/CGkn3eZY1T6pC8Nln6Fr/lu1mKSgRud0eC73whjGfoAogbn78LkD8aFL0zz3bAFerKSnOl7NlErBA==", "license": "MIT" }, "node_modules/proxy-addr": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, "license": "MIT", "dependencies": { @@ -21676,6 +30592,8 @@ }, "node_modules/proxy-addr/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==", "dev": true, "license": "MIT", "engines": { @@ -21684,15 +30602,15 @@ }, "node_modules/proxy-from-env": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true }, "node_modules/proxy-middleware": { "version": "0.15.0", "resolved": "https://registry.npmjs.org/proxy-middleware/-/proxy-middleware-0.15.0.tgz", "integrity": "sha512-EGCG8SeoIRVMhsqHQUdDigB2i7qU7fCsWASwn54+nPutYO8n4q6EiwMzyfWlC+dzRFExP+kvcnDFdBDHoZBU7Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8.0" } @@ -21704,9 +30622,10 @@ "optional": true }, "node_modules/pump": { - "version": "3.0.4", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "dev": true, - "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -21714,8 +30633,9 @@ }, "node_modules/punycode": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==", + "dev": true }, "node_modules/pusher-js": { "version": "4.4.0", @@ -21746,7 +30666,9 @@ } }, "node_modules/qs": { - "version": "6.15.0", + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -21762,13 +30684,14 @@ "node_modules/querystring": { "version": "0.2.1", "dev": true, - "license": "MIT", "engines": { "node": ">=0.4.x" } }, "node_modules/querystringify": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "license": "MIT" }, "node_modules/queue-microtask": { @@ -21793,7 +30716,6 @@ "node_modules/quick-lru": { "version": "5.1.1", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -21802,8 +30724,9 @@ } }, "node_modules/quill": { - "version": "2.0.3", - "license": "BSD-3-Clause", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/quill/-/quill-2.0.2.tgz", + "integrity": "sha512-QfazNrhMakEdRG57IoYFwffUIr04LWJxbS/ZkidRFXYCQt63c1gK6Z7IHUXMx/Vh25WgPBU42oBaNzQ0K1R/xw==", "dependencies": { "eventemitter3": "^5.0.1", "lodash-es": "^4.17.21", @@ -21828,7 +30751,8 @@ }, "node_modules/quill-magic-url": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/quill-magic-url/-/quill-magic-url-4.2.0.tgz", + "integrity": "sha512-u1tHwsQjrTczhECNtXK5EUkWwAMb8raLpsU3llqiLu344kPlA9ldoenHvY3XW+yI+2IZ9WgKgRmcy+cKGN3gnQ==", "dependencies": { "@types/quill": "^2.0.9", "normalize-url": "^4.5.1", @@ -21837,11 +30761,13 @@ }, "node_modules/quill-magic-url/node_modules/fast-diff": { "version": "1.1.2", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" }, "node_modules/quill-magic-url/node_modules/quill-delta": { "version": "3.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", "dependencies": { "deep-equal": "^1.0.1", "extend": "^3.0.2", @@ -21872,105 +30798,184 @@ "license": "MIT" }, "node_modules/raw-body": { - "version": "3.0.2", + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", "dev": true, "license": "MIT", "dependencies": { "bytes": "~3.1.2", "http-errors": "~2.0.1", - "iconv-lite": "~0.7.0", + "iconv-lite": "~0.4.24", "unpipe": "~1.0.0" }, "engines": { - "node": ">= 0.10" + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, "node_modules/react-is": { "version": "16.13.1", "license": "MIT" }, - "node_modules/readable-stream": { - "version": "3.6.2", + "node_modules/read-package-json": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-7.0.1.tgz", + "integrity": "sha512-8PcDiZ8DXUjLf687Ol4BR8Bpm2umR7vhoZOzNRt+uxD9GpBh/K+CAAALVIiYFknmvlmyg7hM7BSNUXPaCCqd0Q==", + "deprecated": "This package is no longer supported. Please use @npmcli/package-json instead.", "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "glob": "^10.2.2", + "json-parse-even-better-errors": "^3.0.0", + "normalize-package-data": "^6.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">= 6" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.4", - "license": "MIT", + "node_modules/read-package-json-fast": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-3.0.2.tgz", + "integrity": "sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==", + "dev": true, + "license": "ISC", "dependencies": { - "readable-stream": "^4.7.0" + "json-parse-even-better-errors": "^3.0.0", + "npm-normalize-package-bin": "^3.0.0" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "ISC", + "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": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/readable-web-to-node-stream/node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", + "node_modules/read-package-json/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/readable-web-to-node-stream/node_modules/events": { - "version": "3.3.0", - "license": "MIT", + "node_modules/read-package-json/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/read-package-json/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, "engines": { - "node": ">=0.8.x" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/readable-web-to-node-stream/node_modules/readable-stream": { - "version": "4.7.0", - "license": "MIT", + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 6" + } + }, + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "dependencies": { + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, "node_modules/readdir-glob": { "version": "1.1.3", "dev": true, - "license": "Apache-2.0", "dependencies": { "minimatch": "^5.1.0" } }, "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.9", + "version": "5.1.6", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -21979,24 +30984,38 @@ } }, "node_modules/readdirp": { - "version": "4.1.2", + "version": "3.6.0", "dev": true, "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/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": ">= 14.18.0" + "node": ">=8.6" }, "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/reflect-metadata": { "version": "0.2.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "dev": true }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "license": "MIT", "dependencies": { @@ -22022,7 +31041,7 @@ "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.2", + "version": "10.2.0", "dev": true, "license": "MIT", "dependencies": { @@ -22034,22 +31053,31 @@ }, "node_modules/regenerator-runtime": { "version": "0.14.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, - "node_modules/regex-parser": { - "version": "2.3.1", + "node_modules/regenerator-transform": { + "version": "0.15.2", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.3.0.tgz", + "integrity": "sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==", + "dev": true }, "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "license": "MIT", + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", "dependencies": { - "call-bind": "^1.0.8", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", "set-function-name": "^2.0.2" }, "engines": { @@ -22060,16 +31088,16 @@ } }, "node_modules/regexpu-core": { - "version": "6.4.0", + "version": "6.1.1", "dev": true, "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.2", + "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.13.0", + "regjsparser": "^0.11.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.2.1" + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" @@ -22081,19 +31109,31 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.13.0", + "version": "0.11.2", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.1.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/rehackt": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rehackt/-/rehackt-0.1.0.tgz", + "integrity": "sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==", "peerDependencies": { "@types/react": "*", "react": "*" @@ -22133,8 +31173,9 @@ }, "node_modules/requireindex": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", + "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.5" } @@ -22144,35 +31185,35 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.10", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, "bin": { "resolve": "bin/resolve" }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/resolve-alpn": { "version": "1.2.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true }, "node_modules/resolve-from": { - "version": "4.0.0", + "version": "5.0.0", "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/resolve-url-loader": { @@ -22211,10 +31252,17 @@ "node": ">=0.10.0" } }, + "node_modules/response-iterator": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/response-iterator/-/response-iterator-0.2.6.tgz", + "integrity": "sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw==", + "engines": { + "node": ">=0.8" + } + }, "node_modules/responselike": { "version": "2.0.1", "dev": true, - "license": "MIT", "dependencies": { "lowercase-keys": "^2.0.0" }, @@ -22223,22 +31271,32 @@ } }, "node_modules/restore-cursor": { - "version": "5.1.0", + "version": "3.1.0", "dev": true, "license": "MIT", "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/retry": { + "version": "0.12.0", + "license": "MIT", + "engines": { + "node": ">= 4" } }, "node_modules/reusify": { - "version": "1.1.0", + "version": "1.0.4", "dev": true, "license": "MIT", "engines": { @@ -22248,11 +31306,15 @@ }, "node_modules/rfdc": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true }, "node_modules/rimraf": { "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -22267,6 +31329,8 @@ }, "node_modules/rimraf/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -22276,8 +31340,10 @@ }, "node_modules/rimraf/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -22294,9 +31360,10 @@ } }, "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -22305,11 +31372,12 @@ } }, "node_modules/rollup": { - "version": "4.59.0", + "version": "4.25.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.25.0.tgz", + "integrity": "sha512-uVbClXmR6wvx5R1M3Od4utyLUxrmOcEm3pAtMphn73Apq19PDtHpgZoEvqH2YnnaNUuvKmg2DgRd2Sqv+odyqg==", "dev": true, - "license": "MIT", "dependencies": { - "@types/estree": "1.0.8" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -22319,157 +31387,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.59.0", - "@rollup/rollup-android-arm64": "4.59.0", - "@rollup/rollup-darwin-arm64": "4.59.0", - "@rollup/rollup-darwin-x64": "4.59.0", - "@rollup/rollup-freebsd-arm64": "4.59.0", - "@rollup/rollup-freebsd-x64": "4.59.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", - "@rollup/rollup-linux-arm-musleabihf": "4.59.0", - "@rollup/rollup-linux-arm64-gnu": "4.59.0", - "@rollup/rollup-linux-arm64-musl": "4.59.0", - "@rollup/rollup-linux-loong64-gnu": "4.59.0", - "@rollup/rollup-linux-loong64-musl": "4.59.0", - "@rollup/rollup-linux-ppc64-gnu": "4.59.0", - "@rollup/rollup-linux-ppc64-musl": "4.59.0", - "@rollup/rollup-linux-riscv64-gnu": "4.59.0", - "@rollup/rollup-linux-riscv64-musl": "4.59.0", - "@rollup/rollup-linux-s390x-gnu": "4.59.0", - "@rollup/rollup-linux-x64-gnu": "4.59.0", - "@rollup/rollup-linux-x64-musl": "4.59.0", - "@rollup/rollup-openbsd-x64": "4.59.0", - "@rollup/rollup-openharmony-arm64": "4.59.0", - "@rollup/rollup-win32-arm64-msvc": "4.59.0", - "@rollup/rollup-win32-ia32-msvc": "4.59.0", - "@rollup/rollup-win32-x64-gnu": "4.59.0", - "@rollup/rollup-win32-x64-msvc": "4.59.0", + "@rollup/rollup-android-arm-eabi": "4.25.0", + "@rollup/rollup-android-arm64": "4.25.0", + "@rollup/rollup-darwin-arm64": "4.25.0", + "@rollup/rollup-darwin-x64": "4.25.0", + "@rollup/rollup-freebsd-arm64": "4.25.0", + "@rollup/rollup-freebsd-x64": "4.25.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.25.0", + "@rollup/rollup-linux-arm-musleabihf": "4.25.0", + "@rollup/rollup-linux-arm64-gnu": "4.25.0", + "@rollup/rollup-linux-arm64-musl": "4.25.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.25.0", + "@rollup/rollup-linux-riscv64-gnu": "4.25.0", + "@rollup/rollup-linux-s390x-gnu": "4.25.0", + "@rollup/rollup-linux-x64-gnu": "4.25.0", + "@rollup/rollup-linux-x64-musl": "4.25.0", + "@rollup/rollup-win32-arm64-msvc": "4.25.0", + "@rollup/rollup-win32-ia32-msvc": "4.25.0", + "@rollup/rollup-win32-x64-msvc": "4.25.0", "fsevents": "~2.3.2" } }, - "node_modules/rollup/node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.59.0", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-darwin-x64": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", - "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", - "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", - "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", - "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", - "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", - "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/rollup/node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.59.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", - "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/run-applescript": { - "version": "7.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/run-async": { - "version": "2.4.1", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "license": "MIT", "engines": { @@ -22515,26 +31457,29 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/runes2": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/runes2/-/runes2-1.1.4.tgz", + "integrity": "sha512-LNPnEDPOOU4ehF71m5JoQyzT2yxwD6ZreFJ7MxZUAoMKNMY1XrAo60H1CUoX5ncSm0rIuKlqn9JZNRrRkNou2g==", "license": "MIT" }, "node_modules/rxjs": { - "version": "7.8.2", - "license": "Apache-2.0", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/rxjs-report-usage": { "version": "1.0.6", + "resolved": "https://registry.npmjs.org/rxjs-report-usage/-/rxjs-report-usage-1.0.6.tgz", + "integrity": "sha512-omv1DIv5z1kV+zDAEjaDjWSkx8w5TbFp5NZoPwUipwzYVcor/4So9ZU3bUyQ1c8lxY5Q0Es/ztWW7PGjY7to0Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.10.3", "@babel/traverse": "^7.10.3", @@ -22550,6 +31495,8 @@ }, "node_modules/rxjs-report-usage/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -22559,8 +31506,10 @@ }, "node_modules/rxjs-report-usage/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -22577,9 +31526,10 @@ } }, "node_modules/rxjs-report-usage/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -22589,6 +31539,8 @@ }, "node_modules/safe-array-concat": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -22611,6 +31563,8 @@ }, "node_modules/safe-push-apply": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, "license": "MIT", "dependencies": { @@ -22626,6 +31580,8 @@ }, "node_modules/safe-regex-test": { "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, "license": "MIT", "dependencies": { @@ -22646,12 +31602,14 @@ "license": "MIT" }, "node_modules/sass": { - "version": "1.85.0", + "version": "1.71.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.71.1.tgz", + "integrity": "sha512-wovtnV2PxzteLlfNzbgm1tFXPLoZILYAMJtvoXXkD7/+1uP41eKkIt1ypWq5/q2uT94qHjXehEYfmjKOvjL9sg==", "dev": true, "license": "MIT", "dependencies": { - "chokidar": "^4.0.0", - "immutable": "^5.0.2", + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", "source-map-js": ">=0.6.2 <2.0.0" }, "bin": { @@ -22659,13 +31617,12 @@ }, "engines": { "node": ">=14.0.0" - }, - "optionalDependencies": { - "@parcel/watcher": "^2.4.1" } }, "node_modules/sass-loader": { - "version": "16.0.5", + "version": "14.1.1", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-14.1.1.tgz", + "integrity": "sha512-QX8AasDg75monlybel38BZ49JP5Z+uSKfKwF2rO7S74BywaRmGQMUBw9dtkS+ekyM/QnP+NOrRYq8ABMZ9G8jw==", "dev": true, "license": "MIT", "dependencies": { @@ -22704,15 +31661,15 @@ } }, "node_modules/sax": { - "version": "1.6.0", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=11.0.0" - } + "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/schema-utils": { - "version": "4.3.3", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", + "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==", "dev": true, "license": "MIT", "dependencies": { @@ -22722,29 +31679,13 @@ "ajv-keywords": "^5.1.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" } }, - "node_modules/schema-utils/node_modules/ajv-formats": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, "node_modules/seed-random": { "version": "2.2.0", "dev": true, @@ -22753,7 +31694,6 @@ "node_modules/seek-bzip": { "version": "1.0.6", "dev": true, - "license": "MIT", "dependencies": { "commander": "^2.8.1" }, @@ -22764,16 +31704,21 @@ }, "node_modules/seek-bzip/node_modules/commander": { "version": "2.20.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true }, "node_modules/select-hose": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", "dev": true, "license": "MIT" }, "node_modules/selfsigned": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, "license": "MIT", "dependencies": { @@ -22785,9 +31730,14 @@ } }, "node_modules/semver": { - "version": "7.7.1", + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", "dev": true, "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, "bin": { "semver": "bin/semver.js" }, @@ -22795,43 +31745,70 @@ "node": ">=10" } }, + "node_modules/semver/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": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/send": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", - "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.1.0.tgz", + "integrity": "sha512-v67WcEouB5GxbTWL/4NeToqcZiAWEq90N888fczVArY8A79J0L4FD7vj5hm3eUMua5EpoQ59wa/oovY6TLvRUA==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.4.3", + "debug": "^4.3.5", + "destroy": "^1.2.0", "encodeurl": "^2.0.0", "escape-html": "^1.0.3", "etag": "^1.8.1", - "fresh": "^2.0.0", - "http-errors": "^2.0.1", - "mime-types": "^3.0.2", + "fresh": "^0.5.2", + "http-errors": "^2.0.0", + "mime-types": "^2.1.35", "ms": "^2.1.3", "on-finished": "^2.4.1", "range-parser": "^1.2.1", - "statuses": "^2.0.2" + "statuses": "^2.0.1" }, "engines": { "node": ">= 18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/send/node_modules/encodeurl": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/send/node_modules/on-finished": { + "version": "2.4.1", "dev": true, "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, "engines": { "node": ">= 0.8" } }, "node_modules/send/node_modules/statuses": { - "version": "2.0.2", + "version": "2.0.1", "dev": true, "license": "MIT", "engines": { @@ -22859,6 +31836,8 @@ }, "node_modules/serialize-javascript": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -22866,24 +31845,20 @@ } }, "node_modules/serve-index": { - "version": "1.9.2", + "version": "1.9.1", "dev": true, "license": "MIT", "dependencies": { - "accepts": "~1.3.8", + "accepts": "~1.3.4", "batch": "0.6.1", "debug": "2.6.9", "escape-html": "~1.0.3", - "http-errors": "~1.8.0", - "mime-types": "~2.1.35", - "parseurl": "~1.3.3" + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" }, "engines": { "node": ">= 0.8.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, "node_modules/serve-index/node_modules/debug": { @@ -22903,53 +31878,45 @@ } }, "node_modules/serve-index/node_modules/http-errors": { - "version": "1.8.1", + "version": "1.6.3", "dev": true, "license": "MIT", "dependencies": { "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" }, "engines": { "node": ">= 0.6" } }, - "node_modules/serve-index/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/serve-index/node_modules/mime-types": { - "version": "2.1.35", + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } + "license": "ISC" }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", "dev": true, "license": "MIT" }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "dev": true, + "license": "ISC" + }, "node_modules/serve-static": { - "version": "1.16.3", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", "dev": true, "license": "MIT", "dependencies": { "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "~0.19.1" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" @@ -22957,6 +31924,8 @@ }, "node_modules/serve-static/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, "license": "MIT", "dependencies": { @@ -22965,27 +31934,25 @@ }, "node_modules/serve-static/node_modules/debug/node_modules/ms": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true, "license": "MIT" }, "node_modules/serve-static/node_modules/encodeurl": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/serve-static/node_modules/fresh": { - "version": "0.5.2", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "dev": true, "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 0.8" } }, "node_modules/serve-static/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, "license": "MIT", "bin": { @@ -22995,31 +31962,58 @@ "node": ">=4" } }, + "node_modules/serve-static/node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serve-static/node_modules/send": { - "version": "0.19.2", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dev": true, "license": "MIT", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", "destroy": "1.2.0", - "encodeurl": "~2.0.0", + "encodeurl": "~1.0.2", "escape-html": "~1.0.3", "etag": "~1.8.1", - "fresh": "~0.5.2", - "http-errors": "~2.0.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", "mime": "1.6.0", "ms": "2.1.3", - "on-finished": "~2.4.1", + "on-finished": "2.4.1", "range-parser": "~1.2.1", - "statuses": "~2.0.2" + "statuses": "2.0.1" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/send/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==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serve-static/node_modules/statuses": { - "version": "2.0.2", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "dev": true, "license": "MIT", "engines": { @@ -23028,6 +32022,8 @@ }, "node_modules/serverless": { "version": "3.40.0", + "resolved": "https://registry.npmjs.org/serverless/-/serverless-3.40.0.tgz", + "integrity": "sha512-6vUSIUqBkhZeIpFz0howqKlT1BNjYxOrucvvSICKCEsxVS9MbTJokGkykDrpr/k4Io3WI8tcvrf25+U5Ynf3lw==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -23118,6 +32114,8 @@ }, "node_modules/serverless-certificate-creator/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, "license": "MIT", "dependencies": { @@ -23129,8 +32127,9 @@ }, "node_modules/serverless-certificate-creator/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, - "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -23142,37 +32141,42 @@ }, "node_modules/serverless-certificate-creator/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, - "license": "MIT", "dependencies": { "color-name": "1.1.3" } }, "node_modules/serverless-certificate-creator/node_modules/color-name": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/serverless-certificate-creator/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, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/serverless-certificate-creator/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, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/serverless-certificate-creator/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -23182,8 +32186,9 @@ }, "node_modules/serverless-certificate-creator/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, - "license": "MIT", "dependencies": { "has-flag": "^3.0.0" }, @@ -23193,8 +32198,9 @@ }, "node_modules/serverless/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, - "license": "MIT", "dependencies": { "debug": "4" }, @@ -23202,32 +32208,15 @@ "node": ">= 6.0.0" } }, - "node_modules/serverless/node_modules/ajv-formats": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/serverless/node_modules/define-lazy-prop": { - "version": "2.0.0", + "node_modules/serverless/node_modules/argparse": { + "version": "2.0.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "Python-2.0" }, "node_modules/serverless/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, "license": "MIT", "dependencies": { @@ -23242,7 +32231,6 @@ "node_modules/serverless/node_modules/https-proxy-agent": { "version": "5.0.1", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "6", "debug": "4" @@ -23251,56 +32239,28 @@ "node": ">= 6" } }, - "node_modules/serverless/node_modules/is-docker": { - "version": "2.2.1", - "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serverless/node_modules/is-wsl": { - "version": "2.2.0", - "dev": true, - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/serverless/node_modules/open": { - "version": "8.4.2", + "node_modules/serverless/node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/serverless/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/serverless/node_modules/supports-color": { "version": "8.1.1", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -23318,7 +32278,6 @@ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } @@ -23340,7 +32299,8 @@ }, "node_modules/set-function-name": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dependencies": { "define-data-property": "^1.1.4", "es-errors": "^1.3.0", @@ -23353,6 +32313,8 @@ }, "node_modules/set-proto": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, "license": "MIT", "dependencies": { @@ -23387,7 +32349,8 @@ }, "node_modules/shallow-equal": { "version": "3.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/shallow-equal/-/shallow-equal-3.1.0.tgz", + "integrity": "sha512-pfVOw8QZIXpMbhBWvzBISicvToTiM5WBF1EeAUZDDSb5Dt29yl4AYbyywbJFSEsRUMr7gJaxqCdr4L3tQf9wVg==" }, "node_modules/shebang-command": { "version": "2.0.0", @@ -23409,7 +32372,9 @@ } }, "node_modules/shell-quote": { - "version": "1.8.3", + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.2.tgz", + "integrity": "sha512-AzqKpGKjrj7EM6rKVQEPpB288oCfnrEIuyoT9cyF4nmGa7V8Zk6f7RRqYisX8X9m+Q7bd632aZW4ky7EhbQztA==", "dev": true, "license": "MIT", "engines": { @@ -23421,6 +32386,8 @@ }, "node_modules/side-channel": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", "dependencies": { @@ -23439,6 +32406,8 @@ }, "node_modules/side-channel-list": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, "license": "MIT", "dependencies": { @@ -23454,6 +32423,8 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", "dependencies": { @@ -23471,6 +32442,8 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { @@ -23489,8 +32462,9 @@ }, "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, - "license": "ISC", "engines": { "node": ">=14" }, @@ -23499,57 +32473,42 @@ } }, "node_modules/sigstore": { - "version": "3.1.0", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sigstore/-/sigstore-2.3.1.tgz", + "integrity": "sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { - "@sigstore/bundle": "^3.1.0", - "@sigstore/core": "^2.0.0", - "@sigstore/protobuf-specs": "^0.4.0", - "@sigstore/sign": "^3.1.0", - "@sigstore/tuf": "^3.1.0", - "@sigstore/verify": "^2.1.0" + "@sigstore/bundle": "^2.3.2", + "@sigstore/core": "^1.0.0", + "@sigstore/protobuf-specs": "^0.3.2", + "@sigstore/sign": "^2.3.2", + "@sigstore/tuf": "^2.3.4", + "@sigstore/verify": "^1.2.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/simple-git": { - "version": "3.33.0", + "version": "3.27.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-3.27.0.tgz", + "integrity": "sha512-ivHoFS9Yi9GY49ogc6/YAi3Fl9ROnF4VyubNylgCkA+RVqLaKWnDSzXOVzya8csELIaWaYNutsEuAhZrtOjozA==", "dev": true, - "license": "MIT", "dependencies": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.4.0" + "debug": "^4.3.5" }, "funding": { "type": "github", "url": "https://github.com/steveukx/git-js?sponsor=1" } }, - "node_modules/sirv": { - "version": "3.0.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/sirv/node_modules/@polka/url": { - "version": "1.0.0-next.29", - "dev": true, - "license": "MIT" - }, "node_modules/sisteransi": { "version": "1.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true }, "node_modules/slash": { "version": "3.0.0", @@ -23559,32 +32518,6 @@ "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "dev": true, @@ -23595,14 +32528,14 @@ } }, "node_modules/socket.io": { - "version": "4.8.3", + "version": "4.8.1", "dev": true, "license": "MIT", "dependencies": { "accepts": "~1.3.4", "base64id": "~2.0.0", "cors": "~2.8.5", - "debug": "~4.4.1", + "debug": "~4.3.2", "engine.io": "~6.6.0", "socket.io-adapter": "~2.5.2", "socket.io-parser": "~4.2.4" @@ -23612,16 +32545,16 @@ } }, "node_modules/socket.io-adapter": { - "version": "2.5.6", + "version": "2.5.5", "dev": true, "license": "MIT", "dependencies": { - "debug": "~4.4.1", - "ws": "~8.18.3" + "debug": "~4.3.4", + "ws": "~8.17.1" } }, "node_modules/socket.io-adapter/node_modules/ws": { - "version": "8.18.3", + "version": "8.17.1", "dev": true, "license": "MIT", "engines": { @@ -23641,12 +32574,12 @@ } }, "node_modules/socket.io-parser": { - "version": "4.2.6", + "version": "4.2.4", "dev": true, "license": "MIT", "dependencies": { "@socket.io/component-emitter": "~3.1.0", - "debug": "~4.4.1" + "debug": "~4.3.1" }, "engines": { "node": ">=10.0.0" @@ -23654,6 +32587,8 @@ }, "node_modules/sockjs": { "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, "license": "MIT", "dependencies": { @@ -23664,6 +32599,8 @@ }, "node_modules/sockjs/node_modules/uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, "license": "MIT", "bin": { @@ -23671,11 +32608,12 @@ } }, "node_modules/socks": { - "version": "2.8.7", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", "dev": true, - "license": "MIT", "dependencies": { - "ip-address": "^10.0.1", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { @@ -23684,11 +32622,13 @@ } }, "node_modules/socks-proxy-agent": { - "version": "8.0.5", + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.2", + "agent-base": "^7.1.1", "debug": "^4.3.4", "socks": "^2.8.3" }, @@ -23699,7 +32639,6 @@ "node_modules/sort-keys": { "version": "1.1.2", "dev": true, - "license": "MIT", "dependencies": { "is-plain-obj": "^1.0.0" }, @@ -23710,7 +32649,6 @@ "node_modules/sort-keys-length": { "version": "1.0.1", "dev": true, - "license": "MIT", "dependencies": { "sort-keys": "^1.0.0" }, @@ -23718,8 +32656,19 @@ "node": ">=0.10.0" } }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -23728,6 +32677,8 @@ }, "node_modules/source-map-js": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -23736,6 +32687,8 @@ }, "node_modules/source-map-loader": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-5.0.0.tgz", + "integrity": "sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==", "dev": true, "license": "MIT", "dependencies": { @@ -23766,7 +32719,6 @@ }, "node_modules/source-map-support": { "version": "0.5.21", - "dev": true, "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -23775,7 +32727,6 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", - "dev": true, "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" @@ -23787,8 +32738,9 @@ }, "node_modules/spdx-correct": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", "dev": true, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -23796,8 +32748,9 @@ }, "node_modules/spdx-exceptions": { "version": "2.5.0", - "dev": true, - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", @@ -23809,12 +32762,15 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.23", - "dev": true, - "license": "CC0-1.0" + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true }, "node_modules/spdy": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, "license": "MIT", "dependencies": { @@ -23830,6 +32786,8 @@ }, "node_modules/spdy-transport": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, "license": "MIT", "dependencies": { @@ -23855,7 +32813,6 @@ "node_modules/split2": { "version": "3.2.2", "dev": true, - "license": "ISC", "dependencies": { "readable-stream": "^3.0.0" } @@ -23868,7 +32825,6 @@ "node_modules/sprintf-kit": { "version": "2.0.2", "dev": true, - "license": "ISC", "dependencies": { "es5-ext": "^0.10.64" }, @@ -23877,14 +32833,16 @@ } }, "node_modules/ssri": { - "version": "12.0.0", + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", "dev": true, "license": "ISC", "dependencies": { "minipass": "^7.0.3" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/stack-chain": { @@ -23940,33 +32898,11 @@ "node": ">= 0.6" } }, - "node_modules/stdin-discarder": { - "version": "0.2.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, "node_modules/stream-buffers": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/stream-buffers/-/stream-buffers-3.0.3.tgz", + "integrity": "sha512-pqMqwQCso0PBJt2PQmDO0cFj0lyqmiwOMiMSkVtRokl7e+ZTRYgDHKnuZNbqjiJXgsg4nuqtD/zxuo9KqTp0Yw==", "dev": true, - "license": "Unlicense", "engines": { "node": ">= 0.10.0" } @@ -23983,7 +32919,6 @@ "node_modules/stream-promise": { "version": "3.2.0", "dev": true, - "license": "ISC", "dependencies": { "2-thenable": "^1.0.0", "es5-ext": "^0.10.49", @@ -23993,13 +32928,14 @@ "node_modules/stream-promise/node_modules/is-stream": { "version": "1.1.0", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/streamroller": { "version": "3.1.5", + "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.5.tgz", + "integrity": "sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==", "dev": true, "license": "MIT", "dependencies": { @@ -24042,13 +32978,16 @@ }, "node_modules/string_decoder": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { "safe-buffer": "~5.2.0" } }, "node_modules/string_decoder/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", @@ -24067,6 +33006,8 @@ }, "node_modules/string-argv": { "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "license": "MIT", "engines": { @@ -24099,11 +33040,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -24120,14 +33056,6 @@ "node": ">=4" } }, - "node_modules/string-width/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/string-width/node_modules/strip-ansi": { "version": "4.0.0", "dev": true, @@ -24141,6 +33069,8 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", "dependencies": { @@ -24161,6 +33091,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -24178,15 +33110,14 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.19.5" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24226,7 +33157,6 @@ "node_modules/strip-dirs": { "version": "2.1.0", "dev": true, - "license": "MIT", "dependencies": { "is-natural-number": "^4.0.1" } @@ -24263,14 +33193,17 @@ }, "node_modules/strip-outer/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, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, "node_modules/strnum": { - "version": "2.2.2", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.1.2.tgz", + "integrity": "sha512-vrN+B7DBIoTTZjnPNewwhx6cBA/H+IS7rfW68n7XxC1y7uoiGQBxaKzqucGUgavX15dJgiGztLJ8vxuEzwqBdA==", "funding": [ { "type": "github", @@ -24281,7 +33214,8 @@ }, "node_modules/strtok3": { "version": "6.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-6.3.0.tgz", + "integrity": "sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw==", "dependencies": { "@tokenizer/token": "^0.3.0", "peek-readable": "^4.1.0" @@ -24296,6 +33230,9 @@ }, "node_modules/superagent": { "version": "7.1.6", + "resolved": "https://registry.npmjs.org/superagent/-/superagent-7.1.6.tgz", + "integrity": "sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==", + "deprecated": "Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net", "dev": true, "license": "MIT", "dependencies": { @@ -24315,16 +33252,10 @@ "node": ">=6.4.0 <13 || >=14" } }, - "node_modules/superagent/node_modules/component-emitter": { - "version": "1.3.1", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "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, "license": "MIT", "dependencies": { @@ -24358,30 +33289,21 @@ } }, "node_modules/tablesort": { - "version": "5.7.0", + "version": "5.3.0", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 22", - "npm": ">= 10" - } + "license": "MIT" }, "node_modules/tapable": { - "version": "2.3.2", + "version": "2.2.1", "dev": true, "license": "MIT", "engines": { "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" } }, "node_modules/tar": { "version": "6.2.1", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -24406,55 +33328,26 @@ "readable-stream": "^3.1.1" }, "engines": { - "node": ">=6" - } - }, - "node_modules/tar/node_modules/fs-minipass": { - "version": "2.1.0", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/tar/node_modules/minizlib": { - "version": "2.1.2", + "node_modules/tar/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, - "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "minipass": "^3.0.0" }, "engines": { "node": ">= 8" } }, - "node_modules/tar/node_modules/minizlib/node_modules/minipass": { + "node_modules/tar/node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -24462,10 +33355,18 @@ "node": ">=8" } }, + "node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/tar/node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -24475,11 +33376,14 @@ }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/terser": { - "version": "5.39.0", + "version": "5.29.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.29.1.tgz", + "integrity": "sha512-lZQ/fyaIGxsbGxApKmoPTODIzELy3++mXhS5hOqaAWZjQtpq/hFHAc+rm29NND1rYRxRWKcjuARNwULNXa5RtQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -24496,14 +33400,17 @@ } }, "node_modules/terser-webpack-plugin": { - "version": "5.4.0", + "version": "5.3.10", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", + "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", + "@jridgewell/trace-mapping": "^0.3.20", "jest-worker": "^27.4.5", - "schema-utils": "^4.3.0", - "terser": "^5.31.1" + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.26.0" }, "engines": { "node": ">= 10.13.0" @@ -24527,11 +33434,119 @@ } } }, + "node_modules/terser-webpack-plugin/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "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/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/terser-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, + "license": "MIT", + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", "dev": true, "license": "MIT" }, + "node_modules/test-exclude": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/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": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/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/text-mask-core": { + "version": "5.1.2", + "license": "Unlicense" + }, "node_modules/text-table": { "version": "0.2.0", "dev": true, @@ -24556,25 +33571,11 @@ "node": ">=0.8" } }, - "node_modules/thingies": { - "version": "2.6.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "^2" - } - }, "node_modules/throat": { "version": "5.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true }, "node_modules/through": { "version": "2.3.8", @@ -24583,13 +33584,14 @@ }, "node_modules/thunky": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", "dev": true, "license": "MIT" }, "node_modules/timers-ext": { "version": "0.1.8", "dev": true, - "license": "ISC", "dependencies": { "es5-ext": "^0.10.64", "next-tick": "^1.1.0" @@ -24600,25 +33602,24 @@ }, "node_modules/tiny-case": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-case/-/tiny-case-1.0.3.tgz", + "integrity": "sha512-Eet/eeMhkO6TX8mnUteS9zgPbUMQa4I6Kkp5ORiBD5476/m+PIRiumP5tmh5ioJpH7k51Kehawy2UDfsnxxY8Q==", "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.15", + "version": "0.2.10", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" + "fdir": "^6.4.2", + "picomatch": "^4.0.2" }, "engines": { "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" } }, "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", + "version": "4.0.2", "dev": true, "license": "MIT", "engines": { @@ -24638,44 +33639,19 @@ } }, "node_modules/tmp": { - "version": "0.2.5", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz", + "integrity": "sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.14" } }, "node_modules/to-buffer": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "isarray": "^2.0.5", - "safe-buffer": "^5.2.1", - "typed-array-buffer": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/to-buffer/node_modules/safe-buffer": { - "version": "5.2.1", - "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" - } - ], - "license": "MIT" + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==", + "dev": true }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -24698,7 +33674,8 @@ }, "node_modules/token-types": { "version": "4.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-4.2.1.tgz", + "integrity": "sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ==", "dependencies": { "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" @@ -24713,29 +33690,25 @@ }, "node_modules/toposort": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-2.0.2.tgz", + "integrity": "sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==", "license": "MIT" }, - "node_modules/totalist": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/tr46": { "version": "0.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true }, "node_modules/traverse": { - "version": "0.6.11", + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.10.tgz", + "integrity": "sha512-hN4uFRxbK+PX56DxYiGHsTn2dME3TVr9vbNqlQGcGcPhJAn+tdP126iA+TArMpI4YSgnTkMWyoLl5bf81Hi5TA==", "dev": true, - "license": "MIT", "dependencies": { - "gopd": "^1.2.0", - "typedarray.prototype.slice": "^1.0.5", - "which-typed-array": "^1.1.18" + "gopd": "^1.0.1", + "typedarray.prototype.slice": "^1.0.3", + "which-typed-array": "^1.1.15" }, "engines": { "node": ">= 0.4" @@ -24744,21 +33717,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tree-dump": { - "version": "1.1.0", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=10.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "dev": true, @@ -24769,6 +33727,8 @@ }, "node_modules/trigram-utils": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/trigram-utils/-/trigram-utils-2.0.1.tgz", + "integrity": "sha512-nfWIXHEaB+HdyslAfMxSqWKDdmqY9I32jS7GnqpdWQnLH89r6A5sdk3fDVYqGAZ0CrT8ovAFSAo6HRiWcWNIGQ==", "license": "MIT", "dependencies": { "collapse-white-space": "^2.0.0", @@ -24792,27 +33752,18 @@ }, "node_modules/trim-repeated/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, - "license": "MIT", "engines": { "node": ">=0.8.0" } }, - "node_modules/trouter": { - "version": "2.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "matchit": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/ts-api-utils": { - "version": "1.4.3", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.4.0.tgz", + "integrity": "sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=16" }, @@ -24838,16 +33789,19 @@ } }, "node_modules/ts-morph": { - "version": "27.0.2", + "version": "24.0.0", "dev": true, "license": "MIT", "dependencies": { - "@ts-morph/common": "~0.28.1", + "@ts-morph/common": "~0.25.0", "code-block-writer": "^13.0.3" } }, "node_modules/ts-node": { "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", + "dev": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -24889,6 +33843,8 @@ }, "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, "license": "MIT", "dependencies": { @@ -24911,7 +33867,8 @@ }, "node_modules/tslib": { "version": "2.8.1", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/tsutils": { "version": "3.21.0", @@ -24929,8 +33886,9 @@ }, "node_modules/tsutils-etc": { "version": "1.4.2", + "resolved": "https://registry.npmjs.org/tsutils-etc/-/tsutils-etc-1.4.2.tgz", + "integrity": "sha512-2Dn5SxTDOu6YWDNKcx1xu2YUy6PUeKrWZB/x2cQ8vY2+iz3JRembKn/iZ0JLT1ZudGNwQQvtFX9AwvRHbXuPUg==", "dev": true, - "license": "MIT", "dependencies": { "@types/yargs": "^17.0.0", "yargs": "^17.0.0" @@ -24950,20 +33908,24 @@ "license": "0BSD" }, "node_modules/tuf-js": { - "version": "3.1.0", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tuf-js/-/tuf-js-2.2.1.tgz", + "integrity": "sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "dependencies": { - "@tufjs/models": "3.0.1", - "debug": "^4.4.1", - "make-fetch-happen": "^14.0.3" + "@tufjs/models": "2.0.1", + "debug": "^4.3.4", + "make-fetch-happen": "^13.0.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^16.14.0 || >=18.0.0" } }, "node_modules/tus-js-client": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/tus-js-client/-/tus-js-client-4.3.1.tgz", + "integrity": "sha512-ZLeYmjrkaU1fUsKbIi8JML52uAocjEZtBx4DKjRrqzrZa0O4MYwT6db+oqePlspV+FxXJAyFBc/L5gwUi2OFsg==", "license": "MIT", "dependencies": { "buffer-from": "^1.1.2", @@ -24988,8 +33950,9 @@ }, "node_modules/type": { "version": "2.7.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", + "integrity": "sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ==", + "dev": true }, "node_modules/type-check": { "version": "0.4.0", @@ -25004,6 +33967,8 @@ }, "node_modules/type-detect": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", "dev": true, "license": "MIT", "engines": { @@ -25011,7 +33976,7 @@ } }, "node_modules/type-fest": { - "version": "0.20.2", + "version": "0.21.3", "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { @@ -25022,13 +33987,12 @@ } }, "node_modules/type-is": { - "version": "2.0.1", + "version": "1.6.18", "dev": true, "license": "MIT", "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" + "media-typer": "0.3.0", + "mime-types": "~2.1.24" }, "engines": { "node": ">= 0.6" @@ -25036,6 +34000,8 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { @@ -25049,6 +34015,8 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, "license": "MIT", "dependencies": { @@ -25067,6 +34035,8 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -25087,6 +34057,8 @@ }, "node_modules/typed-array-length": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, "license": "MIT", "dependencies": { @@ -25110,18 +34082,17 @@ "license": "MIT" }, "node_modules/typedarray.prototype.slice": { - "version": "1.0.5", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.3.tgz", + "integrity": "sha512-8WbVAQAUlENo1q3c3zZYuy5k9VzBQvp8AX9WOtbvyWlLM1v5JaSRmjubLjzHF4JFtptjH/5c/i95yaElvcjC0A==", "dev": true, - "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", + "call-bind": "^1.0.7", "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", + "es-abstract": "^1.23.0", "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "math-intrinsics": "^1.1.0", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-offset": "^1.0.4" + "typed-array-buffer": "^1.0.2", + "typed-array-byte-offset": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -25131,8 +34102,9 @@ } }, "node_modules/typescript": { - "version": "5.6.3", - "license": "Apache-2.0", + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.5.tgz", + "integrity": "sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -25142,7 +34114,7 @@ } }, "node_modules/ua-parser-js": { - "version": "0.7.41", + "version": "0.7.39", "dev": true, "funding": [ { @@ -25180,6 +34152,8 @@ }, "node_modules/unbox-primitive": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { @@ -25198,23 +34172,19 @@ "node_modules/unbzip2-stream": { "version": "1.4.3", "dev": true, - "license": "MIT", "dependencies": { "buffer": "^5.2.1", "through": "^2.3.8" } }, - "node_modules/undici": { - "version": "7.24.5", + "node_modules/undici-types": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "license": "MIT" + "optional": true, + "peer": true }, "node_modules/uni-global": { "version": "1.0.0", @@ -25245,7 +34215,7 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.1", + "version": "2.2.0", "dev": true, "license": "MIT", "engines": { @@ -25253,48 +34223,43 @@ } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.2.0", + "version": "2.1.0", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/unique-filename": { - "version": "4.0.0", + "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, "license": "ISC", "dependencies": { - "unique-slug": "^5.0.0" + "unique-slug": "^4.0.0" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/unique-slug": { - "version": "5.0.0", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "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, "license": "MIT", "engines": { @@ -25323,7 +34288,7 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", + "version": "1.1.1", "dev": true, "funding": [ { @@ -25342,7 +34307,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.1" + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -25357,44 +34322,49 @@ "license": "MIT" }, "node_modules/uppy": { - "version": "5.2.3", - "license": "MIT", - "dependencies": { - "@uppy/audio": "3.1.0", - "@uppy/aws-s3": "5.1.0", - "@uppy/box": "4.1.0", - "@uppy/companion-client": "5.1.1", - "@uppy/compressor": "3.1.0", - "@uppy/core": "5.2.0", - "@uppy/dashboard": "5.1.1", - "@uppy/drag-drop": "5.1.0", - "@uppy/drop-target": "4.1.0", - "@uppy/dropbox": "5.1.0", - "@uppy/facebook": "5.1.0", - "@uppy/form": "5.1.0", - "@uppy/golden-retriever": "5.2.1", - "@uppy/google-drive": "5.1.0", - "@uppy/google-drive-picker": "1.1.1", - "@uppy/google-photos-picker": "1.1.0", - "@uppy/image-editor": "4.2.0", - "@uppy/image-generator": "1.0.0", - "@uppy/instagram": "5.1.0", - "@uppy/locales": "5.1.1", - "@uppy/onedrive": "5.1.0", - "@uppy/provider-views": "5.2.2", - "@uppy/remote-sources": "3.1.0", - "@uppy/screen-capture": "5.1.0", - "@uppy/status-bar": "5.1.0", - "@uppy/store-default": "5.0.0", - "@uppy/thumbnail-generator": "5.1.0", - "@uppy/transloadit": "5.5.0", - "@uppy/tus": "5.1.1", - "@uppy/unsplash": "5.1.0", - "@uppy/url": "5.1.0", - "@uppy/webcam": "5.1.0", - "@uppy/webdav": "1.1.1", - "@uppy/xhr-upload": "5.1.1", - "@uppy/zoom": "4.1.0" + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/uppy/-/uppy-4.14.0.tgz", + "integrity": "sha512-IZcmCIm1Mi6Oz4ZFtvmlLLqcL2WrFLgtiUaMDSjQfkKKcY0s4gtIw7hw0VqqWBfxTnhNv0Td1l/6+lOZ772URA==", + "license": "MIT", + "dependencies": { + "@uppy/audio": "^2.1.2", + "@uppy/aws-s3": "^4.2.3", + "@uppy/box": "^3.2.2", + "@uppy/companion-client": "^4.4.1", + "@uppy/compressor": "^2.2.1", + "@uppy/core": "^4.4.4", + "@uppy/dashboard": "^4.3.3", + "@uppy/drag-drop": "^4.1.2", + "@uppy/drop-target": "^3.1.1", + "@uppy/dropbox": "^4.2.2", + "@uppy/facebook": "^4.2.2", + "@uppy/file-input": "^4.1.2", + "@uppy/form": "^4.1.1", + "@uppy/golden-retriever": "^4.1.1", + "@uppy/google-drive": "^4.3.2", + "@uppy/google-drive-picker": "^0.3.4", + "@uppy/google-photos-picker": "^0.3.4", + "@uppy/image-editor": "^3.3.2", + "@uppy/informer": "^4.2.1", + "@uppy/instagram": "^4.2.2", + "@uppy/onedrive": "^4.2.3", + "@uppy/progress-bar": "^4.2.1", + "@uppy/provider-views": "^4.4.2", + "@uppy/redux-dev-tools": "^4.0.1", + "@uppy/remote-sources": "^2.3.2", + "@uppy/screen-capture": "^4.2.2", + "@uppy/status-bar": "^4.1.3", + "@uppy/store-default": "^4.2.0", + "@uppy/store-redux": "^4.0.2", + "@uppy/thumbnail-generator": "^4.1.1", + "@uppy/transloadit": "^4.2.2", + "@uppy/tus": "^4.2.2", + "@uppy/unsplash": "^4.3.3", + "@uppy/url": "^4.2.3", + "@uppy/webcam": "^4.1.2", + "@uppy/webdav": "^0.3.2", + "@uppy/xhr-upload": "^4.3.3", + "@uppy/zoom": "^3.2.2" } }, "node_modules/uri-js": { @@ -25407,8 +34377,9 @@ }, "node_modules/uri-js/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, - "license": "MIT", "engines": { "node": ">=6" } @@ -25424,6 +34395,8 @@ }, "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==", "license": "MIT", "dependencies": { "querystringify": "^2.1.1", @@ -25431,7 +34404,7 @@ } }, "node_modules/url-polyfill": { - "version": "1.1.14", + "version": "1.1.12", "license": "MIT" }, "node_modules/url/node_modules/punycode": { @@ -25448,6 +34421,8 @@ }, "node_modules/util": { "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, "license": "MIT", "dependencies": { @@ -25465,8 +34440,8 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utils-merge": { "version": "1.0.1", @@ -25477,36 +34452,42 @@ } }, "node_modules/uuid": { - "version": "11.1.0", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", "dev": true, "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", "bin": { - "uuid": "dist/esm/bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "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", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", "dev": true, - "license": "Apache-2.0", + "license": "ISC", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" } }, "node_modules/validate-npm-package-name": { - "version": "6.0.2", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", + "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", "dev": true, - "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/vary": { @@ -25530,169 +34511,16 @@ "node": ">=0.6.0" } }, - "node_modules/vis-data": { - "version": "8.0.3", - "dev": true, - "license": "(Apache-2.0 OR MIT)", - "peer": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/visjs" - }, - "peerDependencies": { - "uuid": "^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^13.0.0", - "vis-util": ">=6.0.0" - } - }, - "node_modules/vis-network": { - "version": "10.0.2", - "dev": true, - "license": "(Apache-2.0 OR MIT)", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/visjs" - }, - "peerDependencies": { - "@egjs/hammerjs": "^2.0.0", - "component-emitter": "^1.3.0 || ^2.0.0", - "keycharm": "^0.2.0 || ^0.3.0 || ^0.4.0", - "uuid": "^3.4.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 || ^10.0.0 || ^11.0.0 || ^13.0.0", - "vis-data": ">=8.0.0", - "vis-util": ">=6.0.0" - } - }, - "node_modules/vis-util": { - "version": "6.0.0", + "node_modules/vis": { + "version": "4.21.0-EOL", "dev": true, "license": "(Apache-2.0 OR MIT)", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/visjs" - }, - "peerDependencies": { - "@egjs/hammerjs": "^2.0.0", - "component-emitter": "^1.3.0 || ^2.0.0" - } - }, - "node_modules/vite": { - "version": "6.4.1", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "jiti": ">=1.21.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/nanoid": { - "version": "3.3.11", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/vite/node_modules/postcss": { - "version": "8.5.8", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" + "emitter-component": "^1.1.1", + "hammerjs": "^2.0.8", + "keycharm": "^0.2.0", + "moment": "^2.18.1", + "propagating-hammerjs": "^1.4.6" } }, "node_modules/void-elements": { @@ -25704,7 +34532,7 @@ } }, "node_modules/watchpack": { - "version": "2.4.2", + "version": "2.4.0", "dev": true, "license": "MIT", "dependencies": { @@ -25717,6 +34545,8 @@ }, "node_modules/wbuf": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, "license": "MIT", "dependencies": { @@ -25731,47 +34561,42 @@ "defaults": "^1.0.3" } }, - "node_modules/weak-lru-cache": { - "version": "1.2.2", - "dev": true, - "license": "MIT", - "optional": true - }, "node_modules/webidl-conversions": { "version": "3.0.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true }, "node_modules/webpack": { - "version": "5.105.0", + "version": "5.94.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.94.0.tgz", + "integrity": "sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint-scope": "^3.7.7", - "@types/estree": "^1.0.8", - "@types/json-schema": "^7.0.15", - "@webassemblyjs/ast": "^1.14.1", - "@webassemblyjs/wasm-edit": "^1.14.1", - "@webassemblyjs/wasm-parser": "^1.14.1", - "acorn": "^8.15.0", - "acorn-import-phases": "^1.0.3", - "browserslist": "^4.28.1", + "@types/estree": "^1.0.5", + "@webassemblyjs/ast": "^1.12.1", + "@webassemblyjs/wasm-edit": "^1.12.1", + "@webassemblyjs/wasm-parser": "^1.12.1", + "acorn": "^8.7.1", + "acorn-import-attributes": "^1.9.5", + "browserslist": "^4.21.10", "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.19.0", - "es-module-lexer": "^2.0.0", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", "eslint-scope": "5.1.1", "events": "^3.2.0", "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.2.11", "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.3.1", + "loader-runner": "^4.2.0", "mime-types": "^2.1.27", "neo-async": "^2.6.2", - "schema-utils": "^4.3.3", - "tapable": "^2.3.0", - "terser-webpack-plugin": "^5.3.16", - "watchpack": "^2.5.1", - "webpack-sources": "^3.3.3" + "schema-utils": "^3.2.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.10", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" }, "bin": { "webpack": "bin/webpack.js" @@ -25789,201 +34614,123 @@ } } }, - "node_modules/webpack-dev-middleware": { - "version": "7.4.2", - "dev": true, - "license": "MIT", - "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/webpack-dev-middleware/node_modules/mime-db": { - "version": "1.52.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-middleware/node_modules/mime-types": { - "version": "2.1.35", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/webpack-dev-server": { - "version": "5.2.2", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/bonjour": "^3.5.13", - "@types/connect-history-api-fallback": "^1.5.4", - "@types/express": "^4.17.21", - "@types/express-serve-static-core": "^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.9", - "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/webpack-dev-server/node_modules/chokidar": { - "version": "3.6.0", - "dev": true, - "license": "MIT", - "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" - } - }, - "node_modules/webpack-dev-server/node_modules/glob-parent": { - "version": "5.1.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/webpack-dev-server/node_modules/http-proxy-middleware": { - "version": "2.0.9", + "node_modules/webpack-dev-middleware": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.2.tgz", + "integrity": "sha512-Wu+EHmX326YPYUpQLKmKbTyZZJIB8/n6R09pTmB03kJmnMsVPTo9COzHZFr01txwaCAuZvfBJE4ZCHRcKs5JaQ==", "dev": true, "license": "MIT", "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" + "colorette": "^2.0.10", + "memfs": "^3.4.12", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=12.0.0" + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@types/express": "^4.17.13" + "webpack": "^5.0.0" }, "peerDependenciesMeta": { - "@types/express": { + "webpack": { "optional": true } } }, - "node_modules/webpack-dev-server/node_modules/is-plain-obj": { - "version": "3.0.0", + "node_modules/webpack-dev-server": { + "version": "4.15.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.1.tgz", + "integrity": "sha512-5hbAst3h3C3L8w6W4P96L5vaV0PxSmJhxZvWKYIdgxOQm8pNZ5dEOmmSLBVpP85ReeyRt6AS1QJNyo/oFFPeVA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/serve-static": "^1.13.10", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.5", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^2.0.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "launch-editor": "^2.6.0", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.1.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.13.0" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/webpack-dev-server/node_modules/picomatch": { - "version": "2.3.2", - "dev": true, - "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">= 12.13.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-cli": { + "optional": true + } } }, - "node_modules/webpack-dev-server/node_modules/readdirp": { - "version": "3.6.0", + "node_modules/webpack-dev-server/node_modules/webpack-dev-middleware": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz", + "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==", "dev": true, "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" }, "engines": { - "node": ">=8.10.0" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" } }, "node_modules/webpack-dev-server/node_modules/ws": { - "version": "8.20.0", + "version": "8.18.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", + "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "dev": true, "license": "MIT", "engines": { @@ -26003,25 +34750,22 @@ } }, "node_modules/webpack-merge": { - "version": "6.0.1", + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", - "wildcard": "^2.0.1" + "wildcard": "^2.0.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=10.0.0" } }, - "node_modules/webpack-merge/node_modules/wildcard": { - "version": "2.0.1", - "dev": true, - "license": "MIT" - }, "node_modules/webpack-sources": { - "version": "3.3.4", + "version": "3.2.3", "dev": true, "license": "MIT", "engines": { @@ -26048,10 +34792,34 @@ } } }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "dev": true, + "license": "MIT", + "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/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, "node_modules/webpack/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, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -26062,8 +34830,9 @@ }, "node_modules/webpack/node_modules/estraverse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "license": "BSD-2-Clause", "engines": { "node": ">=4.0" } @@ -26078,32 +34847,39 @@ }, "node_modules/webpack/node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, - "node_modules/webpack/node_modules/mime-db": { - "version": "1.52.0", + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } + "license": "MIT" }, - "node_modules/webpack/node_modules/mime-types": { - "version": "2.1.35", + "node_modules/webpack/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, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": ">= 0.6" + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, "node_modules/webpack/node_modules/watchpack": { - "version": "2.5.1", + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", "dev": true, - "license": "MIT", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -26131,40 +34907,9 @@ "node": ">=0.8.0" } }, - "node_modules/whatwg-encoding": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "dependencies": { - "iconv-lite": "0.6.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/whatwg-encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/whatwg-mimetype": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, "node_modules/whatwg-url": { "version": "5.0.0", "dev": true, - "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -26186,6 +34931,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, "license": "MIT", "dependencies": { @@ -26204,6 +34951,8 @@ }, "node_modules/which-builtin-type": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -26230,6 +34979,8 @@ }, "node_modules/which-collection": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "license": "MIT", "dependencies": { @@ -26246,7 +34997,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.20", + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "license": "MIT", "dependencies": { @@ -26266,8 +35019,10 @@ } }, "node_modules/wildcard": { - "version": "1.1.2", - "license": "MIT" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true }, "node_modules/windows-release": { "version": "4.0.0", @@ -26283,6 +35038,56 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/windows-release/node_modules/execa": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "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" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/windows-release/node_modules/get-stream": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/human-signals": { + "version": "1.1.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/windows-release/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, "node_modules/word-wrap": { "version": "1.2.5", "dev": true, @@ -26298,6 +35103,8 @@ }, "node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "license": "MIT", "dependencies": { @@ -26326,11 +35133,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -26352,11 +35154,6 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -26386,7 +35183,6 @@ "node_modules/write-file-atomic": { "version": "4.0.2", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -26397,8 +35193,9 @@ }, "node_modules/write-file-atomic/node_modules/signal-exit": { "version": "3.0.7", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/ws": { "version": "7.5.10", @@ -26422,6 +35219,8 @@ }, "node_modules/xml2js": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", "dev": true, "license": "MIT", "dependencies": { @@ -26481,8 +35280,9 @@ }, "node_modules/yallist": { "version": "3.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true }, "node_modules/yaml-ast-parser": { "version": "0.0.43", @@ -26502,16 +35302,10 @@ "yaml2json": "bin/yaml2json" } }, - "node_modules/yamljs/node_modules/argparse": { - "version": "1.0.10", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, "node_modules/yamljs/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -26521,8 +35315,10 @@ }, "node_modules/yamljs/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, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -26539,9 +35335,10 @@ } }, "node_modules/yamljs/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -26568,17 +35365,14 @@ }, "node_modules/yargs-parser": { "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "license": "ISC", "engines": { "node": ">=12" } }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "dev": true, - "license": "MIT" - }, "node_modules/yargs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "dev": true, @@ -26603,7 +35397,6 @@ "node_modules/yauzl": { "version": "2.10.0", "dev": true, - "license": "MIT", "dependencies": { "buffer-crc32": "~0.2.3", "fd-slicer": "~1.1.0" @@ -26627,30 +35420,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yoctocolors": { - "version": "2.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/yup": { - "version": "1.7.1", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/yup/-/yup-1.6.1.tgz", + "integrity": "sha512-JED8pB50qbA4FOkDol0bYF/p60qSEDQqBD0/qeIrUCG1KbPBIQ776fCUNb9ldbPcSTxA69g/47XTo4TqWiuXOA==", "license": "MIT", "dependencies": { "property-expr": "^2.0.5", @@ -26661,6 +35434,8 @@ }, "node_modules/yup/node_modules/type-fest": { "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" @@ -26683,7 +35458,6 @@ "node_modules/zip-stream": { "version": "4.1.1", "dev": true, - "license": "MIT", "dependencies": { "archiver-utils": "^3.0.4", "compress-commons": "^4.1.2", @@ -26696,7 +35470,6 @@ "node_modules/zip-stream/node_modules/archiver-utils": { "version": "3.0.4", "dev": true, - "license": "MIT", "dependencies": { "glob": "^7.2.3", "graceful-fs": "^4.2.0", @@ -26715,6 +35488,8 @@ }, "node_modules/zip-stream/node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -26725,7 +35500,6 @@ "node_modules/zip-stream/node_modules/glob": { "version": "7.2.3", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -26742,9 +35516,8 @@ } }, "node_modules/zip-stream/node_modules/minimatch": { - "version": "3.1.5", + "version": "3.1.2", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -26753,8 +35526,9 @@ } }, "node_modules/zone.js": { - "version": "0.15.1", - "license": "MIT" + "version": "0.14.10", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.14.10.tgz", + "integrity": "sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==" } } } diff --git a/package.json b/package.json index 2117ebc0a..79d14f3c4 100644 --- a/package.json +++ b/package.json @@ -41,22 +41,29 @@ "serve:ms": "ng serve --configuration=development --localize=ms --port=4203" }, "dependencies": { - "@angular/animations": "^19.0.0", - "@angular/common": "^19.0.0", - "@angular/core": "^19.0.0", - "@angular/forms": "^19.0.0", - "@angular/platform-browser": "^19.0.0", - "@angular/platform-browser-dynamic": "^19.0.0", - "@angular/router": "^19.0.0", + "@angular/animations": "^17.3.12", + "@angular/common": "^17.3.12", + "@angular/core": "^17.3.12", + "@angular/forms": "^17.3.12", + "@angular/platform-browser": "^17.3.12", + "@angular/platform-browser-dynamic": "^17.3.12", + "@angular/router": "^17.3.12", "@apollo/client": "^3.10.8", "@ffmpeg/core": "^0.12.10", "@ffmpeg/ffmpeg": "^0.12.15", "@ffmpeg/util": "^0.12.2", - "@ionic/angular": "^8.0.0", - "@uppy/angular": "^1.1.0", - "@uppy/core": "^5.2.0", - "@uppy/dashboard": "^5.1.1", - "apollo-angular": "^8.0.0", + "@ionic/angular": "^7.8.6", + "@ionic/storage": "^4.0.0", + "@uppy/angular": "^0.7.0", + "@uppy/core": "^4.4.4", + "@uppy/dashboard": "^4.3.3", + "@uppy/drag-drop": "^4.1.2", + "@uppy/progress-bar": "^4.2.1", + "@uppy/remote-sources": "^2.3.2", + "@uppy/status-bar": "^4.1.3", + "@uppy/xhr-upload": "^4.3.3", + "angular2-text-mask": "^9.0.0", + "apollo-angular": "^6.0.0", "color-convert": "^2.0.1", "core-js": "^3.21.1", "dayjs": "^1.11.10", @@ -68,7 +75,8 @@ "lodash-es": "^4.17.21", "moment": "^2.29.4", "ng-circle-progress": "~1.7.1", - "ngx-quill": "^27.0.0", + "ng-intercom": "^8.0.2", + "ngx-quill": "^25.3.2", "plyr": "^3.6.12", "pusher-js": "^4.4.0", "quill": "^2.0.2", @@ -77,29 +85,29 @@ "rxjs": "~7.8.0", "ts-md5": "^1.3.1", "tslib": "^2.3.0", - "uppy": "^5.2.3", - "zone.js": "~0.15.0" + "uppy": "^4.14.0", + "zone.js": "~0.14.8" }, "devDependencies": { - "@angular-devkit/architect": "~0.1902.0", - "@angular-devkit/build-angular": "^19.0.0", - "@angular-eslint/builder": "~19.3.0", - "@angular-eslint/eslint-plugin": "~19.3.0", - "@angular-eslint/eslint-plugin-template": "~19.3.0", - "@angular-eslint/schematics": "~19.3.0", - "@angular-eslint/template-parser": "~19.3.0", - "@angular/cli": "^19.0.0", - "@angular/compiler": "^19.0.0", - "@angular/compiler-cli": "^19.0.0", - "@angular/language-service": "^19.0.0", - "@angular/localize": "^19.0.0", + "@angular-devkit/architect": "~0.1703.16", + "@angular-devkit/build-angular": "^17.3.16", + "@angular-eslint/builder": "~17.5.2", + "@angular-eslint/eslint-plugin": "~17.5.2", + "@angular-eslint/eslint-plugin-template": "~17.5.2", + "@angular-eslint/schematics": "~17.5.2", + "@angular-eslint/template-parser": "~17.5.2", + "@angular/cli": "^17.3.16", + "@angular/compiler": "~17.3.12", + "@angular/compiler-cli": "^17.3.12", + "@angular/language-service": "~17.3.12", + "@angular/localize": "^17.3.12", "@compodoc/compodoc": "^1.1.18", - "@ionic/angular-toolkit": "^12.3.0", + "@ionic/angular-toolkit": "^9.0.0", "@types/jasmine": "~4.3.0", "@types/jasminewd2": "~2.0.10", "@types/lodash": "^4.14.178", "@types/new-relic-browser": "^0.1212.1", - "@types/node": "^20.0.0", + "@types/node": "^16.11.35", "@types/pusher-js": "^4.2.2", "@typescript-eslint/eslint-plugin": "^7.2.0", "@typescript-eslint/parser": "^7.2.0", @@ -124,11 +132,11 @@ "karma-junit-reporter": "~2.0.1", "karma-ng-html2js-preprocessor": "^1.0.0", "karma-sonarqube-unit-reporter": "0.0.23", - "ng-packagr": "^19.0.0", + "ng-packagr": "^17.3.0", "serverless": "^3.38.0", "serverless-certificate-creator": "^1.6.0", "ts-node": "~10.9.0", - "typescript": "~5.6.3" + "typescript": "~5.4.5" }, "packageManager": "yarn@1.22.19+sha1.4ba7fc5c6e704fce2066ecbfb0b0d8976fe62447" } diff --git a/projects/request/package.json b/projects/request/package.json index 24f21f136..dfe131ac9 100644 --- a/projects/request/package.json +++ b/projects/request/package.json @@ -2,8 +2,8 @@ "name": "request", "version": "0.0.1", "peerDependencies": { - "@angular/common": "^17.0.0 || ^18.0.0 || ^19.0.0", - "@angular/core": "^17.0.0 || ^18.0.0 || ^19.0.0" + "@angular/common": "^13.2.0", + "@angular/core": "^13.2.0" }, "dependencies": { "lodash-es": "^4.17.21", diff --git a/projects/v3/.browserslistrc b/projects/v3/.browserslistrc index 8d8c3c3ce..4f9ac2698 100644 --- a/projects/v3/.browserslistrc +++ b/projects/v3/.browserslistrc @@ -8,9 +8,9 @@ # You can see what browsers were selected by your queries by running: # npx browserslist -# Ionic 8 minimum browser requirements -Chrome >= 89 -Firefox >= 75 -Edge >= 89 -Safari >= 15 -iOS >= 15 +last 1 Chrome version +last 1 Firefox version +last 2 Edge major versions +last 2 Safari major versions +last 2 iOS major versions +Firefox ESR diff --git a/projects/v3/karma.conf.js b/projects/v3/karma.conf.js index a7003e29d..007a82ab2 100644 --- a/projects/v3/karma.conf.js +++ b/projects/v3/karma.conf.js @@ -18,8 +18,7 @@ module.exports = function (config) { // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html // for example, you can disable the random execution with `random: false` // or set a specific seed with `seed: 4321` - random: false, - timeoutInterval: 10000 + random: false }, clearContext: false // leave Jasmine Spec Runner output visible in browser }, @@ -35,10 +34,7 @@ module.exports = function (config) { ] }, reporters: ['progress', 'kjhtml'], - browsers: ['ChromeHeadless'], - browserNoActivityTimeout: 120000, - browserDisconnectTimeout: 30000, - browserDisconnectTolerance: 3, + browsers: ['Chrome'], restartOnFileChange: true }); }; diff --git a/projects/v3/src/app/app.component.spec.ts b/projects/v3/src/app/app.component.spec.ts index e237827db..678d8de02 100644 --- a/projects/v3/src/app/app.component.spec.ts +++ b/projects/v3/src/app/app.component.spec.ts @@ -59,7 +59,6 @@ describe('AppComponent', () => { 'getConfig', 'setConfig', 'getUser', - 'lastVisited', ]), }, { @@ -74,7 +73,6 @@ describe('AppComponent', () => { provide: AuthService, useValue: jasmine.createSpyObj('AuthService', { getConfig: of({data: []}), - logout: undefined, }), }, { @@ -206,7 +204,7 @@ describe('AppComponent', () => { app.ngOnInit(); tick(); expect(storageSpy.get).toHaveBeenCalled(); - expect(authSpy.logout).toHaveBeenCalled(); + expect(routerSpy.navigate).toHaveBeenCalled(); })); }); }); diff --git a/projects/v3/src/app/app.component.ts b/projects/v3/src/app/app.component.ts index 43e867032..edc45a32c 100644 --- a/projects/v3/src/app/app.component.ts +++ b/projects/v3/src/app/app.component.ts @@ -19,7 +19,6 @@ import { takeUntil } from "rxjs/operators"; import { ComponentCleanupService } from "./services/component-cleanup.service"; @Component({ - standalone: false, selector: "app-root", templateUrl: "./app.component.html", styleUrls: ["./app.component.scss"], @@ -214,7 +213,7 @@ export class AppComponent implements OnInit, OnDestroy { // redirect to the last visited url/assessment if available redirectToLastVisitedUrl(): Promise { if (this.noneCachedUrl.some((url) => window.location?.href?.includes(url))) { - return; // special urls (login, register, etc.) are already handled by the router + return this.navigate(window.location.href); } const lastVisitedUrl = this.storage.lastVisited("url") as string; diff --git a/projects/v3/src/app/components/achievement-pop-up/achievement-pop-up.component.spec.ts b/projects/v3/src/app/components/achievement-pop-up/achievement-pop-up.component.spec.ts index d6b9be666..7bfd18d8f 100644 --- a/projects/v3/src/app/components/achievement-pop-up/achievement-pop-up.component.spec.ts +++ b/projects/v3/src/app/components/achievement-pop-up/achievement-pop-up.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { AchievementPopUpComponent } from './achievement-pop-up.component'; import { ModalController, IonicModule } from '@ionic/angular'; import { UtilsService } from '@v3/services/utils.service'; @@ -27,9 +27,9 @@ describe('AchievementPopUpComponent', () => { let component: AchievementPopUpComponent; let fixture: ComponentFixture; let page: AchievementModalPage; - let modalCtrlSpy: any; + const modalCtrlSpy = jasmine.createSpyObj('ModalController', ['dismiss', 'create']); - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ IonicModule ], declarations: [ AchievementPopUpComponent ], @@ -49,7 +49,6 @@ describe('AchievementPopUpComponent', () => { fixture = TestBed.createComponent(AchievementPopUpComponent); component = fixture.componentInstance; - modalCtrlSpy = TestBed.inject(ModalController); page = new AchievementModalPage(fixture); })); @@ -119,9 +118,7 @@ describe('AchievementPopUpComponent', () => { component.achievement = { id: 1, name: 'achieve', - description: '', - type: 'badge', - badge: 'badge-image' + description: '' }; let keyboardEvent = new KeyboardEvent('keydown', { diff --git a/projects/v3/src/app/components/achievement-pop-up/achievement-pop-up.component.ts b/projects/v3/src/app/components/achievement-pop-up/achievement-pop-up.component.ts index 5396935b1..8319bdbd9 100644 --- a/projects/v3/src/app/components/achievement-pop-up/achievement-pop-up.component.ts +++ b/projects/v3/src/app/components/achievement-pop-up/achievement-pop-up.component.ts @@ -4,7 +4,6 @@ import { Achievement } from '@v3/services/achievement.service'; import { UtilsService } from '@v3/services/utils.service'; @Component({ - standalone: false, selector: 'app-achievement-pop-up', templateUrl: 'achievement-pop-up.component.html', styleUrls: ['achievement-pop-up.component.scss'] diff --git a/projects/v3/src/app/components/activity-complete-pop-up/activity-complete-pop-up.component.spec.ts b/projects/v3/src/app/components/activity-complete-pop-up/activity-complete-pop-up.component.spec.ts index 3f2ec2277..fc02390c9 100644 --- a/projects/v3/src/app/components/activity-complete-pop-up/activity-complete-pop-up.component.spec.ts +++ b/projects/v3/src/app/components/activity-complete-pop-up/activity-complete-pop-up.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { ActivityCompletePopUpComponent } from './activity-complete-pop-up.component'; import { ModalController } from '@ionic/angular'; import { Router } from '@angular/router'; @@ -10,10 +10,10 @@ import { TestUtils } from '@testingv3/utils'; describe('ActivityCompletePopUpComponent', () => { let component: ActivityCompletePopUpComponent; let fixture: ComponentFixture; - let modalCtrlSpy: any; + const modalCtrlSpy = jasmine.createSpyObj('ModalController', ['dismiss', 'create']); // const routerSpy: jasmine.SpyObj; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ActivityCompletePopUpComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], @@ -38,7 +38,6 @@ describe('ActivityCompletePopUpComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(ActivityCompletePopUpComponent); component = fixture.componentInstance; - modalCtrlSpy = TestBed.inject(ModalController); }); it('should create', () => { diff --git a/projects/v3/src/app/components/activity-complete-pop-up/activity-complete-pop-up.component.ts b/projects/v3/src/app/components/activity-complete-pop-up/activity-complete-pop-up.component.ts index b47ecfdfe..dc1be1f4d 100644 --- a/projects/v3/src/app/components/activity-complete-pop-up/activity-complete-pop-up.component.ts +++ b/projects/v3/src/app/components/activity-complete-pop-up/activity-complete-pop-up.component.ts @@ -4,7 +4,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { Router } from '@angular/router'; @Component({ - standalone: false, selector: 'app-activity-complete-pop-up', templateUrl: 'activity-complete-pop-up.component.html', styleUrls: ['activity-complete-pop-up.component.scss'] diff --git a/projects/v3/src/app/components/activity/activity.component.spec.ts b/projects/v3/src/app/components/activity/activity.component.spec.ts index 6804c69c8..c2aad6772 100644 --- a/projects/v3/src/app/components/activity/activity.component.spec.ts +++ b/projects/v3/src/app/components/activity/activity.component.spec.ts @@ -1,13 +1,9 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; -import { of } from 'rxjs'; import { TestUtils } from '@testingv3/utils'; import { NotificationsService } from '@v3/app/services/notifications.service'; import { BrowserStorageService } from '@v3/app/services/storage.service'; import { UtilsService } from '@v3/app/services/utils.service'; -import { SharedService } from '@v3/app/services/shared.service'; -import { ActivityService } from '@v3/services/activity.service'; -import { UnlockIndicatorService } from '@v3/app/services/unlock-indicator.service'; import { ActivityComponent } from './activity.component'; @@ -49,20 +45,6 @@ describe('ActivityComponent', () => { }, }), }, - { - provide: SharedService, - useValue: jasmine.createSpyObj('SharedService', ['stopPlayingVideos', 'getTeamInfo']), - }, - { - provide: ActivityService, - useValue: jasmine.createSpyObj('ActivityService', ['goToNextTask']), - }, - { - provide: UnlockIndicatorService, - useValue: jasmine.createSpyObj('UnlockIndicatorService', ['getUnlockIndicatorForTask'], { - unlockIndicators$: { pipe: () => ({ subscribe: () => {} }) } - }), - }, ], imports: [IonicModule.forRoot()] }).compileComponents(); @@ -71,10 +53,6 @@ describe('ActivityComponent', () => { component = fixture.componentInstance; notificationsSpy = TestBed.inject(NotificationsService) as jasmine.SpyObj; utilsSpy = TestBed.inject(UtilsService) as jasmine.SpyObj; - - // configure shared service mock - const sharedServiceSpy = TestBed.inject(SharedService) as jasmine.SpyObj; - sharedServiceSpy.getTeamInfo.and.returnValue(of({} as any)); })); it('should create', () => { @@ -130,7 +108,7 @@ describe('ActivityComponent', () => { expect(result).toEqual(''); }); - it('should show due date when task is overdue', () => { + it('should empty when task is overdue', () => { const result = component.subtitle({ type: 'Assessment', dueDate: 'dummy/date', @@ -139,8 +117,7 @@ describe('ActivityComponent', () => { name: 'unit tester' }, } as any); - // subtitle shows due date regardless of overdue status - expect(result).toContain('Due Date:'); + expect(result).toEqual(''); }); }); @@ -331,19 +308,19 @@ describe('ActivityComponent', () => { }); describe('goto()', () => { - it('should warn when user not in a team', async () => { + it('should warn when user not in a team', () => { utilsSpy.isEmpty = jasmine.createSpy('isEmpty').and.returnValue(true); - await component.goto({ + component.goto({ isForTeam: true, type: 'Locked', } as any); expect(notificationsSpy.alert).toHaveBeenCalled(); }); - it('should warn activity is locked', async () => { + it('should warn activity is locked', () => { utilsSpy.isEmpty = jasmine.createSpy('isEmpty').and.returnValue(true); const spy = spyOn(component.navigate, 'emit'); - await component.goto({ + component.goto({ isForTeam: false, type: 'Locked', } as any); @@ -351,10 +328,10 @@ describe('ActivityComponent', () => { expect(spy).not.toHaveBeenCalled(); }); - it('should emit "navigate" event', async () => { + it('should emit "navigate" event', () => { utilsSpy.isEmpty = jasmine.createSpy('isEmpty').and.returnValue(true); const spy = spyOn(component.navigate, 'emit'); - await component.goto({ + component.goto({ isForTeam: false, type: 'in progress', } as any); @@ -362,10 +339,10 @@ describe('ActivityComponent', () => { expect(spy).toHaveBeenCalled(); }); - it('should emit "navigate" event through keyboardEvent', async () => { + it('should emit "navigate" event through keyboardEvent', () => { utilsSpy.isEmpty = jasmine.createSpy('isEmpty').and.returnValue(true); const spy = spyOn(component.navigate, 'emit'); - await component.goto({ + component.goto({ isForTeam: false, type: 'in progress', } as any, new KeyboardEvent('keydown', { diff --git a/projects/v3/src/app/components/activity/activity.component.ts b/projects/v3/src/app/components/activity/activity.component.ts index 6c53487dc..8e5fa9942 100644 --- a/projects/v3/src/app/components/activity/activity.component.ts +++ b/projects/v3/src/app/components/activity/activity.component.ts @@ -11,7 +11,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { takeUntil, distinctUntilChanged } from 'rxjs/operators'; @Component({ - standalone: false, selector: 'app-activity', templateUrl: './activity.component.html', styleUrls: ['./activity.component.scss'], diff --git a/projects/v3/src/app/components/assessment/assessment.component.html b/projects/v3/src/app/components/assessment/assessment.component.html index 71aa7697c..f8a358846 100644 --- a/projects/v3/src/app/components/assessment/assessment.component.html +++ b/projects/v3/src/app/components/assessment/assessment.component.html @@ -126,7 +126,8 @@ - {{ label }} +

MockValueAccessorDirective), - multi: true - } - ] -}) -class MockValueAccessorDirective implements ControlValueAccessor { - writeValue(obj: any): void {} - registerOnChange(fn: any): void {} - registerOnTouched(fn: any): void {} -} - class Page { get savingMessage() { return this.query('ion-title.sub-title'); @@ -203,8 +182,8 @@ describe('AssessmentComponent', () => { beforeEach(async () => { TestBed.configureTestingModule({ imports: [ReactiveFormsModule, HttpClientTestingModule], - declarations: [AssessmentComponent, MockValueAccessorDirective], - schemas: [CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA], + declarations: [AssessmentComponent], + schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: ActivatedRoute, @@ -238,7 +217,7 @@ describe('AssessmentComponent', () => { }, { provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', ['alert', 'customToast', 'popUp', 'presentToast', 'modalOnly', 'assessmentSubmittedToast']) + useValue: jasmine.createSpyObj('NotificationsService', ['alert', 'customToast', 'popUp', 'presentToast', 'modalOnly']) }, { provide: ActivityService, @@ -296,10 +275,6 @@ describe('AssessmentComponent', () => { assessmentSpy.saveFeedbackReviewed.and.returnValue(of({ success: true })); // activitySpy.goToNextTask.and.returnValue(Promise.resolve()); storageSpy.getUser.and.returnValue(mockUser); - - // initialize btnDisabled$ as it's an @Input that is normally set by parent - component.btnDisabled$ = new BehaviorSubject(false); - component.savingMessage$ = new BehaviorSubject(''); }); it('should be created', () => { @@ -352,25 +327,22 @@ describe('AssessmentComponent', () => { expect(component.ngOnChanges({})).toBeFalsy(); }); - it('should update assessment with latest data', () => { - component.assessment = mockAssessment; - component.action = 'assessment'; - component.ngOnChanges({ assessment: {} as any }); - - expect(component.doAssessment).toEqual(true); - expect(component.feedbackReviewed).toEqual(false); - // btnDisabled$ is true because required questions are not answered yet - expect(component.btnDisabled$.value).toEqual(true); - expect(component.isNotInATeam).toEqual(false); - expect(component.isPendingReview).toEqual(false); - }); + it('should update assessment with latest data', () => { + component.assessment = mockAssessment; + component.ngOnChanges({}); + + expect(component.doAssessment).toEqual(true); + expect(component.feedbackReviewed).toEqual(false); + expect(component.btnDisabled$.value).toEqual(false); + expect(component.isNotInATeam).toEqual(false); + expect(component.isPendingReview).toEqual(false); + }); it('should not allow submission if locked', () => { component.assessment = mockAssessment; - component.action = 'assessment'; - // Create a copy to avoid test pollution - component.submission = { ...mockSubmission, isLocked: true } as any; - component.ngOnChanges({ submission: {} as any }); + component.submission = mockSubmission as any; + component.submission.isLocked = true; + component.ngOnChanges({}); expect(component.doAssessment).toEqual(false); expect(component.submission.status).toEqual('done'); @@ -380,10 +352,9 @@ describe('AssessmentComponent', () => { it('should not allow submission', () => { component.assessment = mockAssessment; - component.action = 'assessment'; - // Create a copy to avoid test pollution - component.submission = { ...mockSubmission, isLocked: true } as any; - component.ngOnChanges({ submission: {} as any }); + component.submission = mockSubmission as any; + component.submission.isLocked = true; + component.ngOnChanges({}); expect(component.doAssessment).toEqual(false); expect(component.submission.status).toEqual('done'); @@ -393,26 +364,18 @@ describe('AssessmentComponent', () => { it('should save & publish "saving" message', fakeAsync(() => { component.assessment = mockAssessment; - component.action = 'assessment'; - // Create a copy to avoid test pollution - component.submission = { ...mockSubmission, isLocked: false, status: 'in progress' } as any; + component.submission = mockSubmission as any; + component.submission.isLocked = false; + component.submission.status = 'in progress'; component.savingMessage$ = new BehaviorSubject(''); const spy = spyOn(component.savingMessage$, 'next'); - // Pre-create form controls to avoid NG01203 error when change detection runs - mockQuestions.forEach(q => { - component.questionsForm.addControl('q-' + q.id, new FormControl(null)); - }); - component.ngOnChanges({ submission: {} as any }); + component.ngOnChanges({}); - // Flush all pending timers (200ms for initializePageCompletion, 250ms for scrollActivePageIntoView, 300ms for form subscription) - tick(350); + tick(); expect(component.doAssessment).toBeTrue(); const lastSaveMsg = 'Last saved ' + utils.timeFormatter(component.submission.modified); expect(spy).toHaveBeenCalledWith(lastSaveMsg); - // btnDisabled$ is true because required questions are not answered yet - expect(component.btnDisabled$.value).toEqual(true); - // Flush any remaining timers - flush(); + expect(component.btnDisabled$.value).toEqual(false); })); it('should flag assessment as "pending review"', () => { @@ -428,7 +391,7 @@ describe('AssessmentComponent', () => { const spy = spyOn(component.savingMessage$, 'next'); component.action = 'review'; - component.ngOnChanges({ review: {} as any }); + component.ngOnChanges({}); const lastSaveMsg = 'Last saved ' + utils.timeFormatter(component.review.modified); expect(spy).toHaveBeenCalledWith(lastSaveMsg); @@ -443,7 +406,7 @@ describe('AssessmentComponent', () => { component.submission = mockSubmission as any; component.submission.isLocked = false; component.submission.status = 'done'; - component.ngOnChanges({ submission: {} as any }); + component.ngOnChanges({}); expect(component.feedbackReviewed).toEqual(component.submission.completed); }); @@ -452,7 +415,6 @@ describe('AssessmentComponent', () => { it('should list unanswered required questions from compulsoryQuestionsAnswered()', () => { expect(component['_compulsoryQuestionsAnswered']).toBeDefined(); component.assessment = mockAssessment; - component.action = 'assessment'; const answers = [ { 'questionId': 123, @@ -464,17 +426,6 @@ describe('AssessmentComponent', () => { } ]; - // Mock form element - create a mock form object - component.form = { - nativeElement: { - querySelector: jasmine.createSpy('querySelector').and.returnValue({ - classList: { - add: jasmine.createSpy('add') - } - }) - } - } as any; - const unansweredQuestions = component['_compulsoryQuestionsAnswered'](answers); expect(unansweredQuestions).toEqual([mockQuestions[0]]); }); @@ -540,7 +491,6 @@ describe('AssessmentComponent', () => { component.doAssessment = true; component.isPendingReview = false; - component.action = 'assessment'; // Call the method component['_populateQuestionsForm'](); @@ -558,7 +508,7 @@ describe('AssessmentComponent', () => { const optionalControl = component.questionsForm.get('q-2'); expect(optionalControl.validator).toBeFalsy(); - // Check that multi team member selector has plain array initial value in assessment mode + // Check that multi team member selector has array initial value const multiControl = component.questionsForm.get('q-3'); expect(multiControl.value).toEqual([]); }); @@ -796,8 +746,7 @@ describe('AssessmentComponent', () => { groups: [] } as any; - // isEmpty is already spied by TestUtils, just override return value - (utils.isEmpty as jasmine.Spy).and.returnValue(true); + spyOn(utils, 'isEmpty').and.returnValue(true); component['_populateQuestionsForm'](); @@ -830,19 +779,13 @@ describe('AssessmentComponent', () => { spyOn(component, 'initializePageCompletion'); spyOn(component, 'setSubmissionDisabled'); - // isEmpty is already spied by TestUtils, just override return value - (utils.isEmpty as jasmine.Spy).and.returnValue(false); + spyOn(utils, 'isEmpty').and.returnValue(false); component['_populateQuestionsForm'](); - // Wait for the setTimeout(300) that sets up the subscription - tick(300); - // Trigger form value change component.questionsForm.get('q-1').setValue('test value'); - - // Wait for debounceTime(300) - tick(300); + tick(300); // Wait for debounce expect(component.initializePageCompletion).toHaveBeenCalled(); expect(component.setSubmissionDisabled).toHaveBeenCalled(); @@ -1231,10 +1174,9 @@ describe('AssessmentComponent', () => { component.isPendingReview = true; expect(component.btnText).toEqual('submit answers'); - // continueToNextTask pushes to submitActions, which then triggers _submitAnswer via subscription - const spy = spyOn(component.submitActions, 'next'); + const spy = spyOn(component, '_submitAnswer'); component.continueToNextTask(); - expect(spy).toHaveBeenCalledWith({ autoSave: false, goBack: false }); + expect(spy).toHaveBeenCalled(); }); it('should mark feedback as read', () => { @@ -1336,12 +1278,12 @@ describe('AssessmentComponent', () => { expect(component.labelColor).toEqual(''); }); - it('should return danger when status is in progress and is overdue', () => { + it('should return empty when status is unknown', () => { component.submission.status = 'in progress'; component.assessment.isForTeam = false; component.assessment.isOverdue = true; component.submission.isLocked = false; - expect(component.labelColor).toEqual('danger'); + expect(component.labelColor).toEqual(''); }); }); @@ -1424,9 +1366,6 @@ describe('AssessmentComponent', () => { }); it('should return questions that are required but not answered', () => { - // Set action to assessment - component.action = 'assessment'; - // Set up mock assessment with required questions component.assessment = { id: 1, @@ -1461,16 +1400,12 @@ describe('AssessmentComponent', () => { // Question 2 is missing ]; - // Mock form element - create a mock form object - component.form = { - nativeElement: { - querySelector: jasmine.createSpy('querySelector').and.returnValue({ - classList: { - add: jasmine.createSpy('add') - } - }) + // Mock form element + spyOn(component.form.nativeElement, 'querySelector').and.returnValue({ + classList: { + add: jasmine.createSpy('add') } - } as any; + }); // Test the function const missingQuestions = component['_compulsoryQuestionsAnswered'](answers); @@ -1548,16 +1483,12 @@ describe('AssessmentComponent', () => { { questionId: 1, answer: '', file: null } ]; - // Mock form element - create a mock form object - component.form = { - nativeElement: { - querySelector: jasmine.createSpy('querySelector').and.returnValue({ - classList: { - add: jasmine.createSpy('add') - } - }) + // Mock form element + spyOn(component.form.nativeElement, 'querySelector').and.returnValue({ + classList: { + add: jasmine.createSpy('add') } - } as any; + }); // Test the function const missingQuestions = component['_compulsoryQuestionsAnswered'](answers); @@ -1771,12 +1702,9 @@ describe('AssessmentComponent', () => { component.doAssessment = true; component['submitting'] = true; component.btnDisabled$.next(true); - component.assessment = { ...mockAssessment }; component.questionsForm = new FormGroup({ 'q-123': new FormControl(null, Validators.required), }); - // mock the form ViewChild to prevent nativeElement errors - component.form = { nativeElement: document.createElement('div') } as any; }); it('should reset submitting when required questions are missing', async () => { @@ -1823,532 +1751,12 @@ describe('AssessmentComponent', () => { }); }); - describe('areAllRequiredQuestionsAnswered()', () => { - beforeEach(() => { - component.action = 'assessment'; - component.doAssessment = true; - component.isPendingReview = false; - }); - - it('should return true when there are no questions', () => { - const result = component['areAllRequiredQuestionsAnswered']([]); - expect(result).toBeTrue(); - }); - - it('should return true when no questions are required', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('answer'), - }); - const questions = [{ - id: 1, - name: 'Optional', - type: 'text', - isRequired: false, - audience: ['submitter'], - }] as any[]; - - const result = component['areAllRequiredQuestionsAnswered'](questions); - expect(result).toBeTrue(); - }); - - it('should return true when required text question has a value', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('some text'), - }); - const questions = [{ - id: 1, - name: 'Text Q', - type: 'text', - isRequired: true, - audience: ['submitter'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeTrue(); - }); - - it('should return false when required text question is empty', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl(''), - }); - const questions = [{ - id: 1, - name: 'Text Q', - type: 'text', - isRequired: true, - audience: ['submitter'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeFalse(); - }); - - it('should return false when required text question is null', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl(null), - }); - const questions = [{ - id: 1, - name: 'Text Q', - type: 'text', - isRequired: true, - audience: ['submitter'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeFalse(); - }); - - it('should return true when required multi-choice question has selections', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl(['option1', 'option2']), - }); - const questions = [{ - id: 1, - name: 'Multi Q', - type: 'multiple', - isRequired: true, - audience: ['submitter'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeTrue(); - }); - - it('should return false when required multi-choice question has empty array', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl([]), - }); - const questions = [{ - id: 1, - name: 'Multi Q', - type: 'multiple', - isRequired: true, - audience: ['submitter'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeFalse(); - }); - - it('should return true when required review question has answer', () => { - component.action = 'review'; - component.doAssessment = false; - component.isPendingReview = true; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl({ answer: 'review text', comment: 'good', file: null }), - }); - const questions = [{ - id: 1, - name: 'Review Q', - type: 'text', - isRequired: true, - audience: ['reviewer'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeTrue(); - }); - - it('should return false when required review question has empty answer', () => { - component.action = 'review'; - component.doAssessment = false; - component.isPendingReview = true; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl({ answer: '', comment: '', file: null }), - }); - const questions = [{ - id: 1, - name: 'Review Q', - type: 'text', - isRequired: true, - audience: ['reviewer'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeFalse(); - }); - - it('should return false when control does not exist', () => { - component.questionsForm = new FormGroup({}); - const questions = [{ - id: 1, - name: 'Missing Q', - type: 'text', - isRequired: true, - audience: ['submitter'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeFalse(); - }); - - it('should return false when control is invalid', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl(null, Validators.required), - }); - const questions = [{ - id: 1, - name: 'Invalid Q', - type: 'text', - isRequired: true, - audience: ['submitter'], - }] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeFalse(); - }); - - it('should skip questions not in current role audience', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl(''), - }); - // required but only for reviewer, not submitter - const questions = [{ - id: 1, - name: 'Reviewer Only', - type: 'text', - isRequired: true, - audience: ['reviewer'], - }] as any[]; - - // submitter role will not consider this as required - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeTrue(); - }); - - it('should handle mix of answered and unanswered required questions', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('answered'), - 'q-2': new FormControl(''), - }); - const questions = [ - { id: 1, name: 'Q1', type: 'text', isRequired: true, audience: ['submitter'] }, - { id: 2, name: 'Q2', type: 'text', isRequired: true, audience: ['submitter'] }, - ] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeFalse(); - }); - - it('should return true when all mixed required questions are answered', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('text answer'), - 'q-2': new FormControl(['choice1']), - 'q-3': new FormControl('optional'), - }); - const questions = [ - { id: 1, name: 'Q1', type: 'text', isRequired: true, audience: ['submitter'] }, - { id: 2, name: 'Q2', type: 'multiple', isRequired: true, audience: ['submitter'] }, - { id: 3, name: 'Q3', type: 'text', isRequired: false, audience: ['submitter'] }, - ] as any[]; - - expect(component['areAllRequiredQuestionsAnswered'](questions)).toBeTrue(); - }); - }); - - describe('initializePageCompletion()', () => { - beforeEach(() => { - component.assessment = { - ...mockAssessment, - groups: [ - { - name: 'Group 1', - questions: [ - { id: 1, name: 'Q1', type: 'text', isRequired: true, audience: ['submitter'] }, - { id: 2, name: 'Q2', type: 'text', isRequired: false, audience: ['submitter'] }, - ], - }, - ], - } as any; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('answered'), - 'q-2': new FormControl(''), - }); - spyOn(component, 'scrollActivePageIntoView'); - }); - - it('should return early when pagination is disabled', fakeAsync(() => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.pageRequiredCompletion = []; - - component.initializePageCompletion(); - tick(200); - - expect(component.pageRequiredCompletion).toEqual([]); - })); - - it('should set all pages complete in read-only mode', fakeAsync(() => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.doAssessment = false; - component.isPendingReview = false; - component.pagesGroups = [ - [{ name: 'G1', questions: [{ id: 1 }] as any[] }], - [{ name: 'G2', questions: [{ id: 2 }] as any[] }], - ]; - - component.initializePageCompletion(); - tick(200); - - expect(component.pageRequiredCompletion).toEqual([true, true]); - expect(component.scrollActivePageIntoView).toHaveBeenCalled(); - })); - - it('should evaluate each page completion in edit mode', fakeAsync(() => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.doAssessment = true; - component.action = 'assessment'; - component.pagesGroups = [ - [{ name: 'G1', questions: [ - { id: 1, name: 'Q1', type: 'text', isRequired: true, audience: ['submitter'] } as any, - ] }], - [{ name: 'G2', questions: [ - { id: 2, name: 'Q2', type: 'text', isRequired: true, audience: ['submitter'] } as any, - ] }], - ]; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('answered'), - 'q-2': new FormControl(''), - }); - - component.initializePageCompletion(); - tick(200); - - // page 0 has answered required question → true - expect(component.pageRequiredCompletion[0]).toBeTrue(); - // page 1 has unanswered required question → false - expect(component.pageRequiredCompletion[1]).toBeFalse(); - expect(component.scrollActivePageIntoView).toHaveBeenCalled(); - })); - }); - - describe('findAndGoToFirstUnansweredQuestion()', () => { - beforeEach(() => { - component.action = 'assessment'; - component.doAssessment = true; - spyOn(component, 'goToQuestion'); - }); - - it('should return false when all required questions are answered (no pagination)', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.assessment = { - ...mockAssessment, - groups: [{ - name: 'G1', - questions: [ - { id: 1, name: 'Q1', type: 'text', isRequired: true, audience: ['submitter'] }, - ], - }], - } as any; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('answered'), - }); - - const result = component.findAndGoToFirstUnansweredQuestion(); - - expect(result).toBeFalse(); - expect(component.goToQuestion).not.toHaveBeenCalled(); - }); - - it('should find unanswered question and navigate to it (no pagination)', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.assessment = { - ...mockAssessment, - groups: [{ - name: 'G1', - questions: [ - { id: 1, name: 'Q1', type: 'text', isRequired: true, audience: ['submitter'] }, - { id: 2, name: 'Q2', type: 'text', isRequired: true, audience: ['submitter'] }, - ], - }], - } as any; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('answered'), - 'q-2': new FormControl(''), - }); - - const result = component.findAndGoToFirstUnansweredQuestion(); - - expect(result).toBeTrue(); - expect(component.goToQuestion).toHaveBeenCalledWith(1); - }); - - it('should find unanswered question on current page (with pagination)', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.pageIndex = 0; - component.pagesGroups = [ - [{ name: 'G1', questions: [ - { id: 1, name: 'Q1', type: 'text', isRequired: true, audience: ['submitter'] } as any, - { id: 2, name: 'Q2', type: 'text', isRequired: true, audience: ['submitter'] } as any, - ] }], - ]; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('answered'), - 'q-2': new FormControl(''), - }); - - const result = component.findAndGoToFirstUnansweredQuestion(); - - expect(result).toBeTrue(); - expect(component.goToQuestion).toHaveBeenCalledWith(1); - }); - - it('should detect unanswered multi-choice question (empty array)', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.assessment = { - ...mockAssessment, - groups: [{ - name: 'G1', - questions: [ - { id: 1, name: 'Q1', type: 'multiple', isRequired: true, audience: ['submitter'] }, - ], - }], - } as any; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl([]), - }); - - const result = component.findAndGoToFirstUnansweredQuestion(); - - expect(result).toBeTrue(); - expect(component.goToQuestion).toHaveBeenCalledWith(0); - }); - - it('should detect unanswered review question (empty answer in object)', () => { - component.action = 'review'; - component.doAssessment = false; - component.isPendingReview = true; - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.assessment = { - ...mockAssessment, - groups: [{ - name: 'G1', - questions: [ - { id: 1, name: 'Q1', type: 'text', isRequired: true, audience: ['reviewer'] }, - ], - }], - } as any; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl({ answer: '', comment: '', file: null }), - }); - - const result = component.findAndGoToFirstUnansweredQuestion(); - - expect(result).toBeTrue(); - expect(component.goToQuestion).toHaveBeenCalledWith(0); - }); - - it('should return false when no required questions exist', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.assessment = { - ...mockAssessment, - groups: [{ - name: 'G1', - questions: [ - { id: 1, name: 'Q1', type: 'text', isRequired: false, audience: ['submitter'] }, - ], - }], - } as any; - component.questionsForm = new FormGroup({ - 'q-1': new FormControl(''), - }); - - const result = component.findAndGoToFirstUnansweredQuestion(); - - expect(result).toBeFalse(); - expect(component.goToQuestion).not.toHaveBeenCalled(); - }); - }); - - describe('_answerRequiredValidatorForReviewer()', () => { - it('should return required error for null value', () => { - const control = new FormControl(null); - const result = component['_answerRequiredValidatorForReviewer'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return required error when answer and file are both empty', () => { - const control = new FormControl({ answer: '', file: {} }); - const result = component['_answerRequiredValidatorForReviewer'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return null when answer has content', () => { - const control = new FormControl({ answer: 'some review', file: {} }); - const result = component['_answerRequiredValidatorForReviewer'](control); - expect(result).toBeNull(); - }); - - it('should return null when file has content but answer is empty', () => { - const control = new FormControl({ answer: '', file: { url: 'https://cdn/file.pdf', path: '/uploads/file' } }); - const result = component['_answerRequiredValidatorForReviewer'](control); - expect(result).toBeNull(); - }); - - it('should return required error for empty string value', () => { - const control = new FormControl(''); - const result = component['_answerRequiredValidatorForReviewer'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return null for non-empty string value', () => { - const control = new FormControl('some text'); - const result = component['_answerRequiredValidatorForReviewer'](control); - expect(result).toBeNull(); - }); - - it('should return required error when answer is empty array and file is empty', () => { - const control = new FormControl({ answer: [], file: {} }); - const result = component['_answerRequiredValidatorForReviewer'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return null when answer is non-empty array', () => { - const control = new FormControl({ answer: ['choice1'], file: {} }); - const result = component['_answerRequiredValidatorForReviewer'](control); - expect(result).toBeNull(); - }); - }); - - describe('_fileRequiredValidatorForLearner()', () => { - it('should return required error for null value', () => { - const control = new FormControl(null); - const result = component['_fileRequiredValidatorForLearner'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return required error for undefined value', () => { - const control = new FormControl(undefined); - const result = component['_fileRequiredValidatorForLearner'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return required error for empty object', () => { - const control = new FormControl({}); - const result = component['_fileRequiredValidatorForLearner'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return required error when object has no url', () => { - const control = new FormControl({ name: 'file.pdf', path: '/uploads/file' }); - const result = component['_fileRequiredValidatorForLearner'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return required error when url is empty string', () => { - const control = new FormControl({ url: '' }); - const result = component['_fileRequiredValidatorForLearner'](control); - expect(result).toEqual({ required: true }); - }); - - it('should return null when file object has url', () => { - const control = new FormControl({ url: 'https://cdn/file.pdf', name: 'file.pdf', path: '/uploads/file' }); - const result = component['_fileRequiredValidatorForLearner'](control); - expect(result).toBeNull(); - }); - - it('should return required error for string value', () => { - const control = new FormControl('some string'); - const result = component['_fileRequiredValidatorForLearner'](control); - expect(result).toEqual({ required: true }); - }); - }); - describe('CORE-8182: pagination indicator accuracy in review mode', () => { const reviewAssessment: Assessment = { id: 1, name: 'review test', description: '', - type: 'moderated', + type: 'quiz', isForTeam: false, dueDate: '2029-02-02', isOverdue: false, @@ -2438,7 +1846,7 @@ describe('AssessmentComponent', () => { }); it('should use _answerRequiredValidatorForReviewer for multiple type in review mode', () => { - component.ngOnChanges({ assessment: {} as any }); + component.ngOnChanges({}); const control = component.questionsForm.controls['q-3']; expect(control).toBeTruthy(); // empty array answer should be invalid @@ -2450,7 +1858,7 @@ describe('AssessmentComponent', () => { }); it('should use _answerRequiredValidatorForReviewer for multi-team-member-selector type in review mode', () => { - component.ngOnChanges({ assessment: {} as any }); + component.ngOnChanges({}); const control = component.questionsForm.controls['q-6']; expect(control).toBeTruthy(); // empty array answer should be invalid @@ -2462,7 +1870,7 @@ describe('AssessmentComponent', () => { }); it('should use _answerRequiredValidatorForReviewer for oneof type in review mode', () => { - component.ngOnChanges({ assessment: {} as any }); + component.ngOnChanges({}); const control = component.questionsForm.controls['q-2']; expect(control).toBeTruthy(); // empty answer should be invalid @@ -2474,7 +1882,7 @@ describe('AssessmentComponent', () => { }); it('should use _answerRequiredValidatorForReviewer for team-member-selector type in review mode', () => { - component.ngOnChanges({ assessment: {} as any }); + component.ngOnChanges({}); const control = component.questionsForm.controls['q-5']; expect(control).toBeTruthy(); // empty answer should be invalid @@ -2486,360 +1894,4 @@ describe('AssessmentComponent', () => { }); }); }); - - describe('splitGroupsByQuestionCount()', () => { - beforeEach(() => { - component.pageSize = 8; - }); - - it('should fit multiple small groups on one page', () => { - component.assessment = { - ...mockAssessment, - groups: [ - { name: 'G1', questions: Array.from({ length: 3 }, (_, i) => ({ id: i + 1 })) as any[] }, - { name: 'G2', questions: Array.from({ length: 4 }, (_, i) => ({ id: i + 10 })) as any[] }, - ], - } as any; - - const pages = component['splitGroupsByQuestionCount'](); - - expect(pages.length).toBe(1); - expect(pages[0].length).toBe(2); - }); - - it('should push groups to new page when current page is full', () => { - component.assessment = { - ...mockAssessment, - groups: [ - { name: 'G1', questions: Array.from({ length: 8 }, (_, i) => ({ id: i + 1 })) as any[] }, - { name: 'G2', questions: Array.from({ length: 3 }, (_, i) => ({ id: i + 10 })) as any[] }, - ], - } as any; - - const pages = component['splitGroupsByQuestionCount'](); - - expect(pages.length).toBe(2); - expect(pages[0][0].questions.length).toBe(8); - expect(pages[1][0].questions.length).toBe(3); - }); - - it('should slice large groups across multiple pages', () => { - component.assessment = { - ...mockAssessment, - groups: [ - { name: 'Big Group', questions: Array.from({ length: 20 }, (_, i) => ({ id: i + 1 })) as any[] }, - ], - } as any; - - const pages = component['splitGroupsByQuestionCount'](); - - expect(pages.length).toBe(3); - expect(pages[0][0].questions.length).toBe(8); - expect(pages[1][0].questions.length).toBe(8); - expect(pages[2][0].questions.length).toBe(4); - }); - - it('should handle empty groups array', () => { - component.assessment = { ...mockAssessment, groups: [] } as any; - - const pages = component['splitGroupsByQuestionCount'](); - - expect(pages.length).toBe(0); - }); - - it('should flush remaining groups on the last page', () => { - component.assessment = { - ...mockAssessment, - groups: [ - { name: 'G1', questions: Array.from({ length: 5 }, (_, i) => ({ id: i + 1 })) as any[] }, - { name: 'G2', questions: Array.from({ length: 5 }, (_, i) => ({ id: i + 10 })) as any[] }, - { name: 'G3', questions: Array.from({ length: 2 }, (_, i) => ({ id: i + 20 })) as any[] }, - ], - } as any; - - const pages = component['splitGroupsByQuestionCount'](); - - // G1(5) fits on page 0. G2(5) doesn't fit with G1 (5+5>8), flushes G1. - // G2 goes to page 1 (5 <= 8). G3(2) fits with G2 (5+2=7 <= 8). - expect(pages.length).toBe(2); - expect(pages[0][0].name).toBe('G1'); - expect(pages[1][0].name).toBe('G2'); - expect(pages[1][1].name).toBe('G3'); - }); - }); - - describe('isPaginationEnabled', () => { - it('should return true by default', () => { - expect(component.isPaginationEnabled).toBeTrue(); - }); - }); - - describe('pageCount', () => { - it('should return pagesGroups.length when pagination enabled', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.pagesGroups = [[], [], []]; - expect(component.pageCount).toBe(3); - }); - - it('should return 1 when pagination disabled', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - expect(component.pageCount).toBe(1); - }); - }); - - describe('pagedGroups', () => { - it('should return all groups when pagination disabled', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.assessment = mockAssessment; - expect(component.pagedGroups).toEqual(mockAssessment.groups); - }); - - it('should return groups for current page when pagination enabled', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - const page0 = [{ name: 'G1', questions: [] }]; - const page1 = [{ name: 'G2', questions: [] }]; - component.pagesGroups = [page0, page1] as any; - component.pageIndex = 1; - expect(component.pagedGroups).toEqual(page1 as any); - }); - - it('should return empty array for out-of-range page index', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.pagesGroups = []; - component.pageIndex = 5; - expect(component.pagedGroups).toEqual([]); - }); - }); - - describe('prevPage() / nextPage()', () => { - beforeEach(() => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.pagesGroups = [[], [], []]; - component.pageIndex = 1; - spyOn(component, 'scrollActivePageIntoView'); - }); - - it('prevPage should decrement pageIndex', () => { - component.prevPage(); - expect(component.pageIndex).toBe(0); - expect(component.scrollActivePageIntoView).toHaveBeenCalled(); - }); - - it('prevPage should not go below 0', () => { - component.pageIndex = 0; - component.prevPage(); - expect(component.pageIndex).toBe(0); - expect(component.scrollActivePageIntoView).not.toHaveBeenCalled(); - }); - - it('nextPage should increment pageIndex', () => { - component.nextPage(); - expect(component.pageIndex).toBe(2); - expect(component.scrollActivePageIntoView).toHaveBeenCalled(); - }); - - it('nextPage should not exceed last page', () => { - component.pageIndex = 2; - component.nextPage(); - expect(component.pageIndex).toBe(2); - expect(component.scrollActivePageIntoView).not.toHaveBeenCalled(); - }); - }); - - describe('prevPage() / nextPage() when pagination disabled', () => { - it('prevPage should do nothing', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.pageIndex = 1; - component.prevPage(); - expect(component.pageIndex).toBe(1); - }); - - it('nextPage should do nothing', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.pageIndex = 0; - component.nextPage(); - expect(component.pageIndex).toBe(0); - }); - }); - - describe('goToPage()', () => { - beforeEach(() => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.pagesGroups = [[], [], [], []]; - spyOn(component, 'scrollActivePageIntoView'); - }); - - it('should navigate to valid page index', () => { - component.goToPage(2); - expect(component.pageIndex).toBe(2); - expect(component.scrollActivePageIntoView).toHaveBeenCalled(); - }); - - it('should reject negative page index', () => { - component.pageIndex = 1; - component.goToPage(-1); - expect(component.pageIndex).toBe(1); - expect(component.scrollActivePageIntoView).not.toHaveBeenCalled(); - }); - - it('should reject out-of-range page index', () => { - component.pageIndex = 0; - component.goToPage(10); - expect(component.pageIndex).toBe(0); - expect(component.scrollActivePageIntoView).not.toHaveBeenCalled(); - }); - - it('should not navigate when pagination disabled', () => { - component.pageIndex = 0; - component.pagesGroups = [[], [], []]; - // goToPage checks isPaginationEnabled at the start - // We can't spyOnProperty twice, so test via prevPage/nextPage instead - expect(component.pageIndex).toBe(0); - }); - }); - - describe('getAllQuestionsForPage()', () => { - it('should return all questions when pagination disabled', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.assessment = { - ...mockAssessment, - groups: [ - { name: 'G1', questions: [{ id: 1 }, { id: 2 }] as any[] }, - { name: 'G2', questions: [{ id: 3 }] as any[] }, - ], - } as any; - - const result = component['getAllQuestionsForPage'](0); - - expect(result.length).toBe(3); - expect(result.map(q => q.id)).toEqual([1, 2, 3]); - }); - - it('should return questions for specific page when pagination enabled', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.pagesGroups = [ - [{ name: 'G1', questions: [{ id: 1 }, { id: 2 }] as any[] }], - [{ name: 'G2', questions: [{ id: 3 }] as any[] }], - ]; - - const result = component['getAllQuestionsForPage'](1); - - expect(result.length).toBe(1); - expect(result[0].id).toBe(3); - }); - - it('should return empty array for invalid page index', () => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(true); - component.pagesGroups = []; - - const result = component['getAllQuestionsForPage'](5); - - expect(result).toEqual([]); - }); - }); - - describe('shouldShowRequiredIndicator()', () => { - it('should return true when required and doing assessment', () => { - component.doAssessment = true; - component.isPendingReview = false; - const q = { id: 1, name: 'Q', type: 'text', isRequired: true, audience: ['submitter'] } as any; - - expect(component.shouldShowRequiredIndicator(q)).toBeTrue(); - }); - - it('should return true when required and pending review', () => { - component.doAssessment = false; - component.isPendingReview = true; - component.action = 'review'; - const q = { id: 1, name: 'Q', type: 'text', isRequired: true, audience: ['reviewer'] } as any; - - expect(component.shouldShowRequiredIndicator(q)).toBeTrue(); - }); - - it('should return false when not required', () => { - component.doAssessment = true; - const q = { id: 1, name: 'Q', type: 'text', isRequired: false, audience: ['submitter'] } as any; - - expect(component.shouldShowRequiredIndicator(q)).toBeFalse(); - }); - - it('should return false in read-only mode', () => { - component.doAssessment = false; - component.isPendingReview = false; - const q = { id: 1, name: 'Q', type: 'text', isRequired: true, audience: ['submitter'] } as any; - - expect(component.shouldShowRequiredIndicator(q)).toBeFalse(); - }); - }); - - describe('setSubmissionDisabled()', () => { - it('should not change button state in read-only mode', () => { - component.doAssessment = false; - component.isPendingReview = false; - component.btnDisabled$ = new BehaviorSubject(true); - const spy = spyOn(component.btnDisabled$, 'next'); - - component.setSubmissionDisabled(); - - expect(spy).not.toHaveBeenCalled(); - }); - - it('should disable button when form is invalid', () => { - component.doAssessment = true; - component['submitting'] = false; - component.btnDisabled$ = new BehaviorSubject(false); - component.questionsForm = new FormGroup({ - 'q-1': new FormControl(null, Validators.required), - }); - - component.setSubmissionDisabled(); - - expect(component.btnDisabled$.getValue()).toBeTrue(); - }); - - it('should enable button when form is valid', () => { - component.doAssessment = true; - component['submitting'] = false; - component.btnDisabled$ = new BehaviorSubject(true); - component.questionsForm = new FormGroup({ - 'q-1': new FormControl('answered'), - }); - - component.setSubmissionDisabled(); - - expect(component.btnDisabled$.getValue()).toBeFalse(); - }); - }); - - describe('_prefillForm() with locked submission', () => { - it('should keep button disabled when submission is locked', () => { - component.questionsForm = new FormGroup({ - 'q-1': new FormControl(''), - }); - component.btnDisabled$ = new BehaviorSubject(true); - component.action = 'assessment'; - component.doAssessment = false; // locked means doAssessment is false - component.isPendingReview = false; - component.submission = { - id: 1, - status: 'done', - isLocked: true, - answers: { 1: { answer: 'locked answer' } }, - } as any; - - component['_prefillForm'](); - - // locked submission should keep button disabled (not reset to false) - expect(component.btnDisabled$.getValue()).toBeTrue(); - }); - }); - - describe('scrollActivePageIntoView()', () => { - it('should do nothing when pagination disabled', fakeAsync(() => { - spyOnProperty(component, 'isPaginationEnabled').and.returnValue(false); - component.scrollActivePageIntoView(); - tick(100); - // no error thrown - })); - }); }); diff --git a/projects/v3/src/app/components/assessment/assessment.component.ts b/projects/v3/src/app/components/assessment/assessment.component.ts index dcb2249c5..fdec6ee9a 100644 --- a/projects/v3/src/app/components/assessment/assessment.component.ts +++ b/projects/v3/src/app/components/assessment/assessment.component.ts @@ -33,7 +33,6 @@ const MAX_QUESTIONS_PER_PAGE = 8; // maximum number of questions to display per * When enabled, questions are split across multiple pages based on pageSize */ @Component({ - standalone: false, selector: 'app-assessment', templateUrl: './assessment.component.html', styleUrls: ['./assessment.component.scss'], @@ -1312,8 +1311,8 @@ Best regards`; if (this.doAssessment || this.isPendingReview) { // in edit mode, check form validation this.setSubmissionDisabled(); - } else if (!this.submission?.isLocked) { - // in read-only mode (not locked), ensure button is enabled + } else { + // in read-only mode, ensure button is enabled this.btnDisabled$.next(false); } } diff --git a/projects/v3/src/app/components/bottom-action-bar/bottom-action-bar.component.spec.ts b/projects/v3/src/app/components/bottom-action-bar/bottom-action-bar.component.spec.ts index bf00ea4d0..781076b68 100644 --- a/projects/v3/src/app/components/bottom-action-bar/bottom-action-bar.component.spec.ts +++ b/projects/v3/src/app/components/bottom-action-bar/bottom-action-bar.component.spec.ts @@ -1,6 +1,5 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; import { By } from '@angular/platform-browser'; -import { BehaviorSubject } from 'rxjs'; import { BottomActionBarComponent } from './bottom-action-bar.component'; @@ -24,20 +23,9 @@ describe('BottomActionBarComponent', () => { expect(component).toBeTruthy(); }); - describe('default input values', () => { - it('should have correct defaults', () => { - expect(component.showResubmit).toBe(false); - expect(component.color).toBe('primary'); - expect(component.buttonType).toBe(''); - expect(component.hasCustomContent).toBe(false); - expect(component.disabled$).toBeUndefined(); - }); - }); - it('should set the input properties', () => { component.text = 'Click me'; component.color = 'secondary'; - component.disabled$ = new BehaviorSubject(false); component.disabled$.next(true); component.buttonType = 'submit'; fixture.detectChanges(); @@ -48,59 +36,6 @@ describe('BottomActionBarComponent', () => { expect(component.buttonType).toEqual('submit'); }); - describe('onClick()', () => { - it('should emit handleClick for a click event when not disabled', () => { - component.disabled$ = new BehaviorSubject(false); - spyOn(component.handleClick, 'emit'); - - const clickEvent = new MouseEvent('click'); - component.onClick(clickEvent); - - expect(component.handleClick.emit).toHaveBeenCalledWith(clickEvent); - }); - - it('should not emit handleClick when disabled$ is true', () => { - component.disabled$ = new BehaviorSubject(true); - spyOn(component.handleClick, 'emit'); - - const clickEvent = new MouseEvent('click'); - component.onClick(clickEvent); - - expect(component.handleClick.emit).not.toHaveBeenCalled(); - }); - - it('should not emit handleClick for non-click event types', () => { - component.disabled$ = new BehaviorSubject(false); - spyOn(component.handleClick, 'emit'); - - const keyEvent = new KeyboardEvent('keydown'); - component.onClick(keyEvent); - - expect(component.handleClick.emit).not.toHaveBeenCalled(); - }); - - it('should handle missing disabled$ (optional input)', () => { - component.disabled$ = undefined; - spyOn(component.handleClick, 'emit'); - - const clickEvent = new MouseEvent('click'); - component.onClick(clickEvent); - - expect(component.handleClick.emit).toHaveBeenCalledWith(clickEvent); - }); - }); - - describe('onResubmit()', () => { - it('should emit handleResubmit event', () => { - spyOn(component.handleResubmit, 'emit'); - - const clickEvent = new MouseEvent('click'); - component.onResubmit(clickEvent); - - expect(component.handleResubmit.emit).toHaveBeenCalledWith(clickEvent); - }); - }); - it('should emit event when handleClick is called', () => { spyOn(component.handleClick, 'emit'); diff --git a/projects/v3/src/app/components/bottom-action-bar/bottom-action-bar.component.ts b/projects/v3/src/app/components/bottom-action-bar/bottom-action-bar.component.ts index e1b8df616..abc58f5b6 100644 --- a/projects/v3/src/app/components/bottom-action-bar/bottom-action-bar.component.ts +++ b/projects/v3/src/app/components/bottom-action-bar/bottom-action-bar.component.ts @@ -2,7 +2,6 @@ import { Component, Input, Output, EventEmitter, OnChanges } from '@angular/core import { BehaviorSubject } from 'rxjs'; @Component({ - standalone: false, selector: 'app-bottom-action-bar', templateUrl: 'bottom-action-bar.component.html', styleUrls: ['./bottom-action-bar.component.scss'], diff --git a/projects/v3/src/app/components/branding-logo/branding-logo.component.ts b/projects/v3/src/app/components/branding-logo/branding-logo.component.ts index 3bfa0271a..b9df6abe8 100644 --- a/projects/v3/src/app/components/branding-logo/branding-logo.component.ts +++ b/projects/v3/src/app/components/branding-logo/branding-logo.component.ts @@ -2,7 +2,6 @@ import { Component, Input } from '@angular/core'; import { BrowserStorageService } from '@v3/services/storage.service'; @Component({ - standalone: false, selector: 'app-branding-logo', templateUrl: './branding-logo.component.html', }) diff --git a/projects/v3/src/app/components/circle-progress/circle-progress.component.spec.ts b/projects/v3/src/app/components/circle-progress/circle-progress.component.spec.ts index 6a966b334..93e5b9091 100644 --- a/projects/v3/src/app/components/circle-progress/circle-progress.component.spec.ts +++ b/projects/v3/src/app/components/circle-progress/circle-progress.component.spec.ts @@ -97,8 +97,10 @@ describe('CircleProgressComponent', () => { describe('isMobile()', () => { it('should return utils.isMobile value', () => { - // isMobile is set during ngOnInit which runs during fixture.detectChanges() - // The TestUtils mock's isMobile returns false by default, so component.isMobile should be false + utilsSpy.isMobile = jasmine.createSpy('isMobile').and.returnValue(true); + expect(component.isMobile).toEqual(true); + + utilsSpy.isMobile = jasmine.createSpy('isMobile').and.returnValue(false); expect(component.isMobile).toEqual(false); }); }); diff --git a/projects/v3/src/app/components/circle-progress/circle-progress.component.ts b/projects/v3/src/app/components/circle-progress/circle-progress.component.ts index 267e04c69..a1375f931 100644 --- a/projects/v3/src/app/components/circle-progress/circle-progress.component.ts +++ b/projects/v3/src/app/components/circle-progress/circle-progress.component.ts @@ -3,7 +3,6 @@ import { CircleProgressOptionsInterface } from 'ng-circle-progress'; import { UtilsService } from '@v3/services/utils.service'; @Component({ - standalone: false, selector: 'app-circle-progress', templateUrl: './circle-progress.component.html', styleUrls: ['./circle-progress.component.scss'], diff --git a/projects/v3/src/app/components/clickable-item/clickable-item.component.ts b/projects/v3/src/app/components/clickable-item/clickable-item.component.ts index ed9728843..7e742c710 100644 --- a/projects/v3/src/app/components/clickable-item/clickable-item.component.ts +++ b/projects/v3/src/app/components/clickable-item/clickable-item.component.ts @@ -1,7 +1,6 @@ import { Component, Input } from '@angular/core'; @Component({ - standalone: false, selector: 'app-clickable-item', templateUrl: './clickable-item.component.html', styleUrls: ['./clickable-item.component.scss'] diff --git a/projects/v3/src/app/components/components.module.ts b/projects/v3/src/app/components/components.module.ts index 884ff1ffe..427e3be85 100644 --- a/projects/v3/src/app/components/components.module.ts +++ b/projects/v3/src/app/components/components.module.ts @@ -1,4 +1,4 @@ -import { DashboardModalComponent, DashboardComponent } from '@uppy/angular'; +import { UppyAngularDashboardModalModule, UppyAngularDashboardModule } from '@uppy/angular'; import { TrafficLightComponent } from './traffic-light/traffic-light.component'; import { NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; @@ -71,8 +71,8 @@ const largeCircleDefaultConfig = { FormsModule, ReactiveFormsModule, ToggleLabelDirective, - DashboardModalComponent, - DashboardComponent, + UppyAngularDashboardModalModule, + UppyAngularDashboardModule, NgCircleProgressModule.forRoot(largeCircleDefaultConfig), ], declarations: [ diff --git a/projects/v3/src/app/components/contact-number-form/contact-number-form.component.spec.ts b/projects/v3/src/app/components/contact-number-form/contact-number-form.component.spec.ts index a3249a3a0..155f9c445 100644 --- a/projects/v3/src/app/components/contact-number-form/contact-number-form.component.spec.ts +++ b/projects/v3/src/app/components/contact-number-form/contact-number-form.component.spec.ts @@ -181,7 +181,7 @@ describe('ContactNumberFormComponent', () => { [cancelBtn, submitBtn] = res.buttons; submitBtn.handler(); - expect(submitBtn.text).toEqual('OK'); + expect(submitBtn.text).toEqual('Okay'); }); component.countryModel = COUNTRIES['US']; @@ -197,7 +197,7 @@ describe('ContactNumberFormComponent', () => { [cancelBtn, submitBtn] = res.buttons; submitBtn.handler(); - expect(submitBtn.text).toEqual('OK'); + expect(submitBtn.text).toEqual('Okay'); }); component.countryModel = COUNTRIES['AUS']; diff --git a/projects/v3/src/app/components/contact-number-form/contact-number-form.component.ts b/projects/v3/src/app/components/contact-number-form/contact-number-form.component.ts index 1ccbb348d..67f7cd1a8 100644 --- a/projects/v3/src/app/components/contact-number-form/contact-number-form.component.ts +++ b/projects/v3/src/app/components/contact-number-form/contact-number-form.component.ts @@ -16,7 +16,6 @@ export enum COUNTRIES { }; @Component({ - standalone: false, selector: 'app-contact-number-form', templateUrl: './contact-number-form.component.html', styleUrls: ['./contact-number-form.component.scss'] diff --git a/projects/v3/src/app/components/description/description.component.spec.ts b/projects/v3/src/app/components/description/description.component.spec.ts index 44668f180..e1a6ed412 100644 --- a/projects/v3/src/app/components/description/description.component.spec.ts +++ b/projects/v3/src/app/components/description/description.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { DescriptionComponent } from './description.component'; @@ -7,7 +7,7 @@ describe('DescriptionComponent', () => { // let component: DescriptionComponent; // let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { // TestBed.configureTestingModule({ // declarations: [ DescriptionComponent ], // schemas: [ CUSTOM_ELEMENTS_SCHEMA ], diff --git a/projects/v3/src/app/components/description/description.component.ts b/projects/v3/src/app/components/description/description.component.ts index 45463198f..9f9cfe6d4 100644 --- a/projects/v3/src/app/components/description/description.component.ts +++ b/projects/v3/src/app/components/description/description.component.ts @@ -3,7 +3,6 @@ import { SafeHtml } from '@angular/platform-browser'; import { BrowserStorageService } from '@v3/services/storage.service'; @Component({ - standalone: false, selector: 'app-description', templateUrl: 'description.component.html', styleUrls: ['./description.component.scss'], diff --git a/projects/v3/src/app/components/fast-feedback/fast-feedback.component.spec.ts b/projects/v3/src/app/components/fast-feedback/fast-feedback.component.spec.ts index 79c881e1f..d31da9165 100644 --- a/projects/v3/src/app/components/fast-feedback/fast-feedback.component.spec.ts +++ b/projects/v3/src/app/components/fast-feedback/fast-feedback.component.spec.ts @@ -5,14 +5,11 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms'; import { UtilsService } from '@v3/services/utils.service'; import { BrowserStorageService } from '@v3/services/storage.service'; import { NotificationsService } from '@v3/services/notifications.service'; -import { ModalController, NavParams } from '@ionic/angular'; +import { ModalController } from '@ionic/angular'; import { FastFeedbackComponent } from './fast-feedback.component'; import { FormGroup, FormControl, Validators } from '@angular/forms'; import { TestUtils } from '@testingv3/utils'; import { FastFeedbackService } from '@v3/services/fast-feedback.service'; -import { HomeService } from '@v3/app/services/home.service'; -import { RequestService } from 'request'; -import { DemoService } from '@v3/app/services/demo.service'; class Page { get questions() { @@ -57,46 +54,7 @@ describe('FastFeedbackComponent', () => { }, { provide: BrowserStorageService, - useValue: jasmine.createSpyObj('BrowserStorageService', { - set: null, - getUser: { teamId: 1 } - }) - }, - { - provide: FastFeedbackService, - useValue: jasmine.createSpyObj('FastFeedbackService', ['submit', 'pullFastFeedback']) - }, - { - provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', ['alert', 'presentToast']) - }, - { - provide: NavParams, - useValue: { - get: jasmine.createSpy('get').and.callFake((key: string) => { - if (key === 'modal') { - return { closable: true, componentProps: {} }; - } - return null; - }) - } - }, - { - provide: HomeService, - useValue: jasmine.createSpyObj('HomeService', { - getProgress: of({}), - getActivities: of([]), - getPulseCheckStatuses: of({}), - getPulseCheckSkills: of({}) - }) - }, - { - provide: RequestService, - useValue: jasmine.createSpyObj('RequestService', ['post', 'get']) - }, - { - provide: DemoService, - useValue: jasmine.createSpyObj('DemoService', ['isDemoApp']) + useValue: jasmine.createSpyObj('BrowserStorageService', ['set']) }, ], }) @@ -161,29 +119,24 @@ describe('FastFeedbackComponent', () => { team_name: 'team', assessment_name: 'asmt' }; - // Set up fastfeedbackSpy.submit to return an Observable - fastfeedbackSpy.submit.and.returnValue(of({})); + spyOn(component, 'submitData').and.returnValue(of({})); }); afterEach(() => { - expect(fastfeedbackSpy.submit).toHaveBeenCalledTimes(1); + expect(component.submitData).toBe(1); expect(modalSpy.dismiss.calls.count()).toBe(1); }); describe('should submit correct data', () => { beforeEach(() => { - // set closable to false to test the meta.team_id path - // Note: ngOnInit() is already called in the outer beforeEach, so we can override closable after component.ngOnInit(); - component.closable = false; }); it('when submission answer is provided in full', fakeAsync(() => { component.submit(); tick(2500); - expect(fastfeedbackSpy.submit.calls.first().args[1]).toEqual({ - contextId: 1, - teamId: 2, - targetUserId: null + expect(component.submitData).toEqual({ + context_id: 1, + team_id: 2 }); })); @@ -192,10 +145,9 @@ describe('FastFeedbackComponent', () => { component.submit(); tick(2500); - expect(fastfeedbackSpy.submit.calls.first().args[1]).toEqual({ - contextId: 1, - teamId: null, - targetUserId: 3 + expect(component.submitData).toEqual({ + context_id: 1, + target_user_id: 3 }); })); @@ -204,10 +156,8 @@ describe('FastFeedbackComponent', () => { component.meta.target_user_id = null; component.submit(); tick(2500); - expect(fastfeedbackSpy.submit.calls.first().args[1]).toEqual({ - contextId: 1, - teamId: null, - targetUserId: null + expect(component.submitData).toEqual({ + context_id: 1 }); })); }); @@ -220,8 +170,7 @@ describe('FastFeedbackComponent', () => { component.ngOnInit(); component.submit(); - // flush all pending timers (2000ms delay + 500ms in dismiss) - tick(2500); + flushMicrotasks(); expect(component.submissionCompleted).toBeTruthy(); expect(modalSpy.dismiss).toHaveBeenCalled(); })); diff --git a/projects/v3/src/app/components/fast-feedback/fast-feedback.component.ts b/projects/v3/src/app/components/fast-feedback/fast-feedback.component.ts index cbae22c75..f9f710089 100644 --- a/projects/v3/src/app/components/fast-feedback/fast-feedback.component.ts +++ b/projects/v3/src/app/components/fast-feedback/fast-feedback.component.ts @@ -21,7 +21,6 @@ export interface Meta { } @Component({ - standalone: false, selector: "app-fast-feedback", templateUrl: "./fast-feedback.component.html", styleUrls: ["./fast-feedback.component.scss"], diff --git a/projects/v3/src/app/components/file-display/file-display.component.spec.ts b/projects/v3/src/app/components/file-display/file-display.component.spec.ts index 611fd6ebb..1b040dab5 100644 --- a/projects/v3/src/app/components/file-display/file-display.component.spec.ts +++ b/projects/v3/src/app/components/file-display/file-display.component.spec.ts @@ -1,14 +1,12 @@ /* eslint-disable no-console */ import { CUSTOM_ELEMENTS_SCHEMA, SimpleChange, DebugElement } from '@angular/core'; -import { ComponentFixture, TestBed, fakeAsync, flushMicrotasks, waitForAsync, tick } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, fakeAsync, flushMicrotasks, waitForAsync, tick } from '@angular/core/testing'; import { FileDisplayComponent } from './file-display.component'; import { FilestackService } from '@v3/services/filestack.service'; import { ReactiveFormsModule, FormControl } from '@angular/forms'; import { UtilsService } from '@v3/services/utils.service'; import { TestUtils } from '@testingv3/utils'; import { environment } from '@v3/environments/environment'; -import { FileInput, TusFileResponse } from '../types/assessment'; -import { ModalController } from '@ionic/angular'; class OnChangedValues extends SimpleChange { constructor(older, latest) { @@ -40,13 +38,6 @@ describe('FileDisplayComponent', () => { 'metadata' ]) }, - { - provide: ModalController, - useValue: jasmine.createSpyObj('ModalController', { - create: Promise.resolve({ present: jasmine.createSpy('present').and.returnValue(Promise.resolve()) }), - dismiss: Promise.resolve() - }) - }, ], }) .compileComponents(); @@ -63,62 +54,26 @@ describe('FileDisplayComponent', () => { expect(component).toBeDefined(); }); - it('should preview file with modal', async () => { - const modalControllerSpy = TestBed.inject(ModalController) as jasmine.SpyObj; - await component.previewFile({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', - url: 'DUMMY_URL', - extension: 'jpg', - type: 'image/jpeg', - size: 1000 - }); - expect(modalControllerSpy.create).toHaveBeenCalled(); + it('should preview file', () => { + component.previewFile({url: 'DUMMY_URL'}); + expect(filestackSpy.previewFile.calls.count()).toBe(1); }); - it('should open application files in new window', async () => { - spyOn(window, 'open'); - component.file = { - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file.pdf', - filename: 'test-file.pdf', - url: 'DUMMY_URL', - extension: 'pdf', - type: 'application/pdf', - mimetype: 'application/pdf', - size: 1000, - directUrl: 'DUMMY_URL', - cdnUrl: 'DUMMY_URL', - }; - await component.previewFile({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file.pdf', - url: 'DUMMY_URL', - extension: 'pdf', - type: 'application/pdf', - size: 1000 + it('should fail, if preview file api is faulty', fakeAsync(() => { + const error = 'PREVIEW FILE SAMPLE ERROR'; + // filestackSpy.metadata.and.rejectWith(error); + filestackSpy.previewFile.and.rejectWith(error); + component.previewFile('file').then(res => { + console.info('afterPreview', res); }); - expect(window.open).toHaveBeenCalledWith('DUMMY_URL', '_system'); - }); + flushMicrotasks(); + })); describe('UI logic', () => { const url = 'test.com/uilogic'; beforeEach(() => { component.file = { - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', - filename: 'test-file', - url: url, - extension: 'jpg', - type: 'image/jpeg', - mimetype: 'image/jpeg', - size: 1000, - directUrl: url, - cdnUrl: url, + url }; }); it('should display image element based on filetype', () => { @@ -127,8 +82,10 @@ describe('FileDisplayComponent', () => { const imageEle: HTMLElement = fixture.nativeElement.querySelector('app-img'); const videoEle: HTMLElement = fixture.nativeElement.querySelector('video'); + const anyEle: HTMLElement = fixture.nativeElement.querySelector('div'); expect(imageEle).toBeTruthy(); expect(videoEle).toBeFalsy(); + expect(anyEle).toBeFalsy(); }); it('should display video element based on filetype', () => { @@ -137,20 +94,140 @@ describe('FileDisplayComponent', () => { const imageEle: HTMLElement = fixture.nativeElement.querySelector('app-img'); const videoEle: HTMLElement = fixture.nativeElement.querySelector('video'); + const anyEle: HTMLElement = fixture.nativeElement.querySelector('div'); expect(imageEle).toBeFalsy(); expect(videoEle).toBeTruthy(); + expect(anyEle).toBeFalsy(); }); - it('should display list-item element for "any" filetype', () => { + it('should display "any" element based on filetype', () => { component.fileType = 'any'; fixture.detectChanges(); const imageEle: HTMLElement = fixture.nativeElement.querySelector('app-img'); const videoEle: HTMLElement = fixture.nativeElement.querySelector('video'); - const listItemEle: HTMLElement = fixture.nativeElement.querySelector('app-list-item'); + const anyEle: HTMLElement = fixture.nativeElement.querySelector('div'); expect(imageEle).toBeFalsy(); expect(videoEle).toBeFalsy(); - expect(listItemEle).toBeTruthy(); + expect(anyEle).toBeTruthy(); + }); + }); + + describe('ngOnInit()', () => { + beforeEach(() => { + component.updateWorkflowStatus = jasmine.createSpy('updateWorkflowStatus'); + }); + + it('should check workflow status if workflow object is available', () => { + component.file = { + workflows: 'isAvailable' + }; + component.ngOnInit(); + expect(component.updateWorkflowStatus).toHaveBeenCalled(); + }); + + it('should not update workflow status if file not available', () => { + component.file = undefined; + component.ngOnInit(); + expect(component.updateWorkflowStatus).not.toHaveBeenCalled(); + }); + }); + + describe('ngOnChanges', () => { + it('should track fileupload json changes', () => { + component.updateWorkflowStatus = jasmine.createSpy('updateWorkflowStatus'); + const jsonData = { just: 'first test' }; + const newJsonData = { + jsonData, ...{ + and: 'second test', + without: 'workflow', + } + }; + + component.ngOnChanges({ + file: new OnChangedValues(jsonData, newJsonData), + }); + + expect(component.updateWorkflowStatus).not.toHaveBeenCalled(); + }); + + it('should not track fileupload changes if workflow is not available', () => { + component.updateWorkflowStatus = jasmine.createSpy('updateWorkflowStatus'); + const jsonData = { just: 'first test' }; + const newJsonData = { + jsonData, ...{ + and: 'second test', + without: 'workflows', + } + }; + + component.ngOnChanges({ + file: new OnChangedValues(jsonData, newJsonData), + }); + + expect(component.updateWorkflowStatus).not.toHaveBeenCalled(); + }); + + it('should track fileupload changes if workflow is available', fakeAsync(() => { + const virus_detection = { + data: 'virus_detection_test_data', + }; + const quarantine = { + data: 'quarantine_test_data', + }; + filestackSpy.getWorkflowStatus.and.returnValue(Promise.resolve([ + { + results: { + virus_detection, + quarantine, + }, + status: 'FINISHED', + } + ])); + component.updateWorkflowStatus = jasmine.createSpy('updateWorkflowStatus'); + + const jsonData = { just: 'first test' }; + const newJsonData = { + ...jsonData, ...{ + and: 'second test', + workflows: true, + } + }; + component.videoEle = { + nativeElement: { + load: () => jasmine.createSpy() + } + }; + component.ngOnChanges({ + file: new OnChangedValues(jsonData, newJsonData), + }); + + flushMicrotasks(); + expect(component.updateWorkflowStatus).toHaveBeenCalled(); + return; + // can't test the following in development + expect(filestackSpy.getWorkflowStatus).toHaveBeenCalledWith(newJsonData.workflows); + expect(component['virusDetection']).toEqual(virus_detection.data); + expect(component['quarantine']).toEqual(quarantine.data); + })); + }); + + describe('updateWorkflowStatus()', () => { + it('should update workflow status', () => { + utilsSpy.isEmpty.and.returnValue(true); + filestackSpy.getWorkflowStatus.and.returnValue(Promise.resolve([{ + results: { + virus_detection: { data: {} }, + quarantine: { data: {} }, + }, + status: 'finished' + }])); + + environment.production = true; + component.updateWorkflowStatus(); + expect(filestackSpy.getWorkflowStatus).toHaveBeenCalled(); + expect(component.virusDetection).toEqual({}); + expect(component['quarantine']).toEqual({}); }); }); @@ -159,34 +236,43 @@ describe('FileDisplayComponent', () => { component.removeFile.emit = spyOn(component.removeFile, 'emit'); }); - it('should download file when index is 0', () => { + it('should remove uploaded file', () => { + component.fileType = 'not any'; component.actionBtnClick({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', - url: 'http://dummy.com', - directUrl: 'http://dummy.com/direct', - extension: 'jpg', - type: 'image/jpeg', - size: 1000 - } as TusFileResponse, 0); + handle: '1234567abc', + url: 'http://dummy.com' + }, 999); - expect(utilsSpy.downloadFile).toHaveBeenCalled(); + expect(component.removeFile.emit).toHaveBeenCalled(); }); - it('should remove uploaded file when index is 1', () => { + it('should execute based on index code', fakeAsync(() => { + component.fileType = 'any'; + + component.actionBtnClick({ + handle: '1234567abc', + url: 'http://dummy.com' + }, 0); + + // expect(component.removeFile.emit).toHaveBeenCalled(); + expect(utilsSpy.downloadFile).toHaveBeenCalled(); + + component.actionBtnClick({ + handle: '1234567abc', + url: 'http://dummy.com' + }, 1); + + tick(); + expect(filestackSpy.previewFile).toHaveBeenCalled(); + component.actionBtnClick({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', - url: 'http://dummy.com', - extension: 'jpg', - type: 'image/jpeg', - size: 1000 - } as TusFileResponse, 1); + handle: '1234567abc', + url: 'http://dummy.com' + }, 2); + tick(); expect(component.removeFile.emit).toHaveBeenCalled(); - }); + })); }); }); diff --git a/projects/v3/src/app/components/file-display/file-display.component.ts b/projects/v3/src/app/components/file-display/file-display.component.ts index 79f9a9155..90a4e5fb9 100644 --- a/projects/v3/src/app/components/file-display/file-display.component.ts +++ b/projects/v3/src/app/components/file-display/file-display.component.ts @@ -19,7 +19,6 @@ interface FileStackCompatible extends TusFileResponse { } @Component({ - standalone: false, selector: 'app-file-display', templateUrl: 'file-display.component.html', styleUrls: ['file-display.component.scss'], diff --git a/projects/v3/src/app/components/file-popup/file-popup.component.spec.ts b/projects/v3/src/app/components/file-popup/file-popup.component.spec.ts deleted file mode 100644 index 8ed78485f..000000000 --- a/projects/v3/src/app/components/file-popup/file-popup.component.spec.ts +++ /dev/null @@ -1,78 +0,0 @@ -import { DomSanitizer } from '@angular/platform-browser'; -import { ModalController } from '@ionic/angular'; -import { FilePopupComponent } from './file-popup.component'; - -describe('FilePopupComponent', () => { - let component: FilePopupComponent; - let modalController: jasmine.SpyObj; - - beforeEach(() => { - modalController = jasmine.createSpyObj('ModalController', ['dismiss']); - component = new FilePopupComponent(modalController, {} as DomSanitizer); - component.file = { url: 'https://example.com/file.pdf' }; - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should open file on download without keyboard event', () => { - spyOn(window, 'open'); - - component.download(); - - expect(window.open).toHaveBeenCalledWith('https://example.com/file.pdf', '_system'); - }); - - it('should prevent default and download on keyboard Space', () => { - spyOn(window, 'open'); - const keyboardEvent = jasmine.createSpyObj('KeyboardEvent', ['preventDefault'], { - code: 'Space' - }); - - component.download(keyboardEvent); - - expect(keyboardEvent.preventDefault).toHaveBeenCalled(); - expect(window.open).toHaveBeenCalledWith('https://example.com/file.pdf', '_system'); - }); - - it('should not download for unsupported keyboard key', () => { - spyOn(window, 'open'); - const keyboardEvent = jasmine.createSpyObj('KeyboardEvent', ['preventDefault'], { - code: 'Escape' - }); - - component.download(keyboardEvent); - - expect(keyboardEvent.preventDefault).not.toHaveBeenCalled(); - expect(window.open).not.toHaveBeenCalled(); - }); - - it('should close modal without keyboard event', () => { - component.close(); - - expect(modalController.dismiss).toHaveBeenCalled(); - }); - - it('should prevent default and close modal on keyboard Enter', () => { - const keyboardEvent = jasmine.createSpyObj('KeyboardEvent', ['preventDefault'], { - code: 'Enter' - }); - - component.close(keyboardEvent); - - expect(keyboardEvent.preventDefault).toHaveBeenCalled(); - expect(modalController.dismiss).toHaveBeenCalled(); - }); - - it('should not close modal for unsupported keyboard key', () => { - const keyboardEvent = jasmine.createSpyObj('KeyboardEvent', ['preventDefault'], { - code: 'Tab' - }); - - component.close(keyboardEvent); - - expect(keyboardEvent.preventDefault).not.toHaveBeenCalled(); - expect(modalController.dismiss).not.toHaveBeenCalled(); - }); -}); diff --git a/projects/v3/src/app/components/file-popup/file-popup.component.ts b/projects/v3/src/app/components/file-popup/file-popup.component.ts index 98f29e3ca..8ff1faa54 100644 --- a/projects/v3/src/app/components/file-popup/file-popup.component.ts +++ b/projects/v3/src/app/components/file-popup/file-popup.component.ts @@ -3,7 +3,6 @@ import { ModalController } from '@ionic/angular'; import { DomSanitizer } from '@angular/platform-browser'; @Component({ - standalone: false, selector: 'app-file-popup', templateUrl: 'file-popup.component.html', styleUrls: ['file-popup.component.scss'] diff --git a/projects/v3/src/app/components/file-upload/file-upload.component.html b/projects/v3/src/app/components/file-upload/file-upload.component.html index 6ca3a6fc3..703b0c5ba 100644 --- a/projects/v3/src/app/components/file-upload/file-upload.component.html +++ b/projects/v3/src/app/components/file-upload/file-upload.component.html @@ -3,7 +3,7 @@ -

Learner's Answer

+

Learner's answer

diff --git a/projects/v3/src/app/components/file-upload/file-upload.component.spec.ts b/projects/v3/src/app/components/file-upload/file-upload.component.spec.ts index 165263004..6d4902cac 100644 --- a/projects/v3/src/app/components/file-upload/file-upload.component.spec.ts +++ b/projects/v3/src/app/components/file-upload/file-upload.component.spec.ts @@ -1,534 +1,23 @@ -import { FormControl } from '@angular/forms'; -import { Subject } from 'rxjs'; -import { UppyUploaderService } from '../uppy-uploader/uppy-uploader.service'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; import { FileUploadComponent } from './file-upload.component'; describe('FileUploadComponent', () => { let component: FileUploadComponent; - let uppyUploaderService: jasmine.SpyObj; + let fixture: ComponentFixture; - beforeEach(() => { - uppyUploaderService = jasmine.createSpyObj('UppyUploaderService', ['createUppyInstance']); - component = new FileUploadComponent(uppyUploaderService); - component.control = new FormControl(''); - component.submitActions$ = new Subject(); - component.question = { - id: 11, - name: 'Test Question', - description: '', - isRequired: false, - fileType: 'any', - audience: ['participant'], - canAnswer: true, - canComment: true, - } as any; - component.submissionId = 123; - component.reviewId = 456; - component.review = { answer: null, comment: 'old comment', file: {} }; - component.submission = { answer: null }; - component.uppy = jasmine.createSpyObj('Uppy', ['removeFile', 'clear', 'destroy']) as any; + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [FileUploadComponent] + }) + .compileComponents(); + + fixture = TestBed.createComponent(FileUploadComponent); + component = fixture.componentInstance; + fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); - - it('should return video note message for video fileType', () => { - component.question.fileType = 'video'; - - expect(component.noteMessage()).toContain('Videos only'); - }); - - it('should return image note message for image fileType', () => { - component.question.fileType = 'image'; - - expect(component.noteMessage()).toContain('Images only'); - }); - - it('should return default note message for any fileType', () => { - component.question.fileType = 'any'; - - expect(component.noteMessage()).toContain('Docs, images and videos only'); - }); - - it('should parse tus response body in onAfterResponse', () => { - const response = { - getBody: () => JSON.stringify({ path: '/uploads/a', bucket: 'b', cdnUrl: 'c', directUrl: 'd' }) - }; - - component.onAfterResponse({}, response); - - expect(component.tusResponse).toEqual({ path: '/uploads/a', bucket: 'b', cdnUrl: 'c', directUrl: 'd' }); - }); - - it('should return empty object from fileRequestFormat when uploadedFile is empty', () => { - component.uploadedFile = null as any; - - expect(component.fileRequestFormat()).toEqual({} as any); - }); - - it('should map uploadedFile in fileRequestFormat', () => { - component.uploadedFile = { - name: 'a.png', - type: 'image/png', - size: 10, - extension: 'png', - bucket: 'bucket', - path: '/uploads/a', - cdnUrl: 'https://cdn/a.png', - } as any; - - expect(component.fileRequestFormat()).toEqual({ - name: 'a.png', - type: 'image/png', - size: 10, - extension: 'png', - bucket: 'bucket', - path: '/uploads/a', - url: 'https://cdn/a.png', - }); - }); - - it('should set review answer and trigger save in onChange with type', () => { - component.doReview = true; - component.uploadedFile = { - name: 'a.pdf', - type: 'application/pdf', - size: 10, - extension: 'pdf', - bucket: 'bucket', - path: '/uploads/a', - cdnUrl: 'https://cdn/a.pdf', - } as any; - spyOn(component, 'triggerSave'); - - component.onChange('new comment', 'comment'); - - expect(component.innerValue.comment).toBe('new comment'); - expect(component.innerValue.file.url).toBe('https://cdn/a.pdf'); - expect(component.triggerSave).toHaveBeenCalled(); - }); - - it('should set assessment value and trigger save in onChange without type', () => { - component.doAssessment = true; - component.uploadedFile = { - name: 'a.pdf', - type: 'application/pdf', - size: 10, - extension: 'pdf', - bucket: 'bucket', - path: '/uploads/a', - cdnUrl: 'https://cdn/a.pdf', - } as any; - spyOn(component, 'triggerSave'); - - component.onChange(''); - - expect(component.innerValue.url).toBe('https://cdn/a.pdf'); - expect(component.triggerSave).toHaveBeenCalled(); - }); - - it('should create and emit review save action in triggerSave', () => { - component.doReview = true; - component.innerValue = { - file: { path: '/uploads/a' }, - comment: 'review comment' - }; - const submitNextSpy = spyOn(component.submitActions$, 'next'); - - component.triggerSave(); - - expect(submitNextSpy).toHaveBeenCalled(); - expect((submitNextSpy.calls.mostRecent().args[0] as any).reviewSave).toEqual({ - reviewId: 456, - submissionId: 123, - questionId: 11, - file: { path: '/uploads/a' }, - comment: 'review comment', - }); - }); - - it('should create and emit assessment save action in triggerSave', () => { - component.doAssessment = true; - component.innerValue = { path: '/uploads/a' }; - const submitNextSpy = spyOn(component.submitActions$, 'next'); - - component.triggerSave(); - - expect(submitNextSpy).toHaveBeenCalled(); - expect((submitNextSpy.calls.mostRecent().args[0] as any).questionSave).toEqual({ - submissionId: 123, - questionId: 11, - file: { path: '/uploads/a' }, - }); - }); - - it('should add error when upload response status is not 200', () => { - component.tusResponse = { - bucket: 'bucket', - path: '/uploads/a', - cdnUrl: 'https://cdn/a', - directUrl: 'https://direct/a', - }; - component.doReview = true; - spyOn(component, 'onChange'); - - component.onFileUploadCompleted({ - name: 'a.pdf', - type: 'application/pdf', - size: 10, - extension: 'pdf' - } as any, { - body: {} as XMLHttpRequest, - status: 500, - uploadURL: '' - }); - - expect(component.uploadedFile.name).toBe('a.pdf'); - expect(component.errors.length).toBe(1); - expect(component.onChange).toHaveBeenCalledWith('', 'answer'); - }); - - it('should remove submission answer and clear uppy in removeSubmitFile for assessment', () => { - component.doAssessment = true; - component.submission = { answer: { path: '/uploads/a' } }; - spyOn(component, 'onChange'); - - component.removeSubmitFile({ handle: 'file-1' }); - - expect(component.submission.answer).toBeNull(); - expect(component.onChange).toHaveBeenCalledWith(''); - expect((component.uppy.removeFile as any)).toHaveBeenCalledWith('file-1'); - expect((component.uppy.clear as any)).toHaveBeenCalled(); - }); - - it('should remove review answer and clear uppy in removeSubmitFile for review', () => { - component.doReview = true; - component.review = { answer: { path: '/uploads/a' } } as any; - spyOn(component, 'onChange'); - - component.removeSubmitFile({ handle: 'file-2' }); - - expect(component.review.answer).toBeNull(); - expect(component.onChange).toHaveBeenCalledWith('', 'answer'); - expect((component.uppy.removeFile as any)).toHaveBeenCalledWith('file-2'); - expect((component.uppy.clear as any)).toHaveBeenCalled(); - }); - - it('should return true when audience contains reviewer and has more than one role', () => { - component.question.audience = ['participant', 'reviewer']; - - expect(component.audienceContainReviewer()).toBeTrue(); - }); - - it('should return false when reviewer is not in audience', () => { - component.question.audience = ['participant']; - - expect(component.audienceContainReviewer()).toBeFalse(); - }); - - it('should extract filename from upload URL', () => { - const filename = component.extractFilenameFromUrl('https://file.practera.com/uploads/test-file+abc123'); - - expect(filename).toBe('test-file'); - }); - - it('should return null when filename pattern does not match', () => { - const filename = component.extractFilenameFromUrl('https://example.com/other-path/test-file'); - - expect(filename).toBeNull(); - }); - - it('should call uppy.removeFile in sendDeleteRequestForFile', () => { - component.sendDeleteRequestForFile({ id: 'id-1' }); - - expect((component.uppy.removeFile as any)).toHaveBeenCalledWith('id-1'); - }); - - it('should destroy uppy in ngOnDestroy', () => { - component.ngOnDestroy(); - - expect((component.uppy.destroy as any)).toHaveBeenCalled(); - }); - - describe('onChange() - markAsDirty behavior', () => { - it('should mark control as dirty in review mode (with type)', () => { - component.doReview = true; - component.uploadedFile = { - name: 'test.pdf', - type: 'application/pdf', - size: 100, - extension: 'pdf', - bucket: 'bucket', - path: '/uploads/test', - cdnUrl: 'https://cdn/test.pdf', - } as any; - spyOn(component, 'triggerSave'); - - component.onChange('review comment', 'comment'); - - expect(component.control.dirty).toBeTrue(); - expect(component.control.touched).toBeTrue(); - }); - - it('should mark control as dirty in assessment mode (without type)', () => { - component.doAssessment = true; - component.uploadedFile = { - name: 'test.pdf', - type: 'application/pdf', - size: 100, - extension: 'pdf', - bucket: 'bucket', - path: '/uploads/test', - cdnUrl: 'https://cdn/test.pdf', - } as any; - spyOn(component, 'triggerSave'); - - component.onChange(''); - - expect(component.control.dirty).toBeTrue(); - expect(component.control.touched).toBeTrue(); - }); - - it('should set innerValue with file and type property in review mode', () => { - component.doReview = true; - component.uploadedFile = { - name: 'doc.pdf', - type: 'application/pdf', - size: 50, - extension: 'pdf', - bucket: 'b', - path: '/uploads/doc', - cdnUrl: 'https://cdn/doc.pdf', - } as any; - spyOn(component, 'triggerSave'); - - component.onChange('new answer', 'answer'); - - expect(component.innerValue.answer).toBe('new answer'); - expect(component.innerValue.file).toBeDefined(); - expect(component.innerValue.file.url).toBe('https://cdn/doc.pdf'); - }); - - it('should initialize innerValue if not set in review mode', () => { - component.doReview = true; - component.innerValue = null; - component.uploadedFile = { - name: 'a.pdf', - type: 'application/pdf', - size: 10, - extension: 'pdf', - bucket: 'b', - path: '/uploads/a', - cdnUrl: 'https://cdn/a.pdf', - } as any; - spyOn(component, 'triggerSave'); - - component.onChange('comment text', 'comment'); - - expect(component.innerValue.comment).toBe('comment text'); - expect(component.innerValue.file).toBeDefined(); - }); - }); - - describe('_showSavedAnswers() - pristine check and uploadedFile restoration', () => { - describe('review mode', () => { - beforeEach(() => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { - answer: { url: 'https://cdn/saved.pdf', name: 'saved.pdf' }, - comment: 'saved comment', - file: { url: 'https://cdn/saved.pdf', name: 'saved.pdf', path: '/uploads/saved' }, - }; - }); - - it('should use saved review data when control is pristine', () => { - component.control = new FormControl(''); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ - answer: component.review.answer, - comment: component.review.comment, - file: component.review.file, - }); - expect(component.comment).toBe('saved comment'); - }); - - it('should preserve control value when control is dirty', () => { - const dirtyValue = { - answer: 'user edited', - comment: 'user comment', - file: { url: 'https://cdn/edited.pdf', name: 'edited.pdf', path: '/uploads/edited' }, - }; - component.control = new FormControl(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(dirtyValue); - expect(component.comment).toBe('user comment'); - }); - - it('should restore uploadedFile from file.url when control is dirty with file data', () => { - const dirtyValue = { - answer: 'edited', - comment: 'edited comment', - file: { url: 'https://cdn/dirty-file.pdf', name: 'dirty-file.pdf', path: '/uploads/dirty' }, - }; - component.control = new FormControl(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.uploadedFile).toBeDefined(); - expect(component.uploadedFile.cdnUrl).toBe('https://cdn/dirty-file.pdf'); - }); - - it('should not set uploadedFile when dirty control has no file url', () => { - const dirtyValue = { - answer: 'edited', - comment: 'edited comment', - file: null, - }; - component.control = new FormControl(dirtyValue); - component.control.markAsDirty(); - component.uploadedFile = null as any; - - component['_showSavedAnswers'](); - - // uploadedFile should remain null since file has no url - expect(component.uploadedFile).toBeNull(); - }); - - it('should fallback to review comment when dirty control has no comment', () => { - const dirtyValue = { answer: 'edited', file: null }; - component.control = new FormControl(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.comment).toBe('saved comment'); - }); - }); - - describe('assessment mode', () => { - beforeEach(() => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { - answer: { url: 'https://cdn/submission.pdf', name: 'submission.pdf', path: '/uploads/sub' }, - }; - component.reviewStatus = ''; - component.doReview = false; - }); - - it('should use saved submission answer when control is pristine', () => { - component.control = new FormControl(''); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(component.submission.answer); - }); - - it('should preserve control value when control is dirty', () => { - const dirtyValue = { url: 'https://cdn/user-edit.pdf', name: 'user-edit.pdf', path: '/uploads/user' }; - component.control = new FormControl(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(dirtyValue); - }); - - it('should restore uploadedFile from innerValue.url when control is dirty', () => { - const dirtyValue = { url: 'https://cdn/dirty.pdf', name: 'dirty.pdf', path: '/uploads/dirty' }; - component.control = new FormControl(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.uploadedFile).toBeDefined(); - expect(component.uploadedFile.cdnUrl).toBe('https://cdn/dirty.pdf'); - }); - - it('should not restore uploadedFile when dirty control has no url', () => { - component.control = new FormControl({}); - component.control.markAsDirty(); - component.uploadedFile = null as any; - - component['_showSavedAnswers'](); - - expect(component.uploadedFile).toBeNull(); - }); - }); - - it('should set control value at the end', () => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: { url: 'https://cdn/test.pdf' } }; - component.control = new FormControl(''); - - component['_showSavedAnswers'](); - - expect(component.control.value).toEqual(component.submission.answer); - }); - - describe('review mode with "not start" status', () => { - it('should load review data when reviewStatus is "not start"', () => { - component.reviewStatus = 'not start'; - component.doReview = true; - component.review = { - answer: { url: 'https://cdn/r.pdf' }, - comment: 'review comment', - file: { url: 'https://cdn/r.pdf', name: 'r.pdf' }, - }; - component.control = new FormControl(''); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ - answer: component.review.answer, - comment: component.review.comment, - file: component.review.file, - }); - }); - }); - }); - - describe('isDisplayOnly behavior via ngOnInit paths', () => { - it('should restore saved file from submission answer URL when control is dirty in assessment mode', () => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - const savedFile = { url: 'https://cdn/sub-file.pdf', name: 'sub-file.pdf', path: '/uploads/sub' }; - component.submission = { answer: savedFile }; - component.control = new FormControl(savedFile); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.uploadedFile).toBeDefined(); - expect(component.uploadedFile.cdnUrl).toBe('https://cdn/sub-file.pdf'); - }); - - it('should restore saved file from review file URL when control is dirty in review mode', () => { - component.reviewStatus = 'in progress'; - component.doReview = true; - const savedReview = { - answer: null, - comment: 'test', - file: { url: 'https://cdn/rev-file.pdf', name: 'rev-file.pdf', path: '/uploads/rev' }, - }; - component.review = savedReview; - component.control = new FormControl(savedReview); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.uploadedFile).toBeDefined(); - expect(component.uploadedFile.cdnUrl).toBe('https://cdn/rev-file.pdf'); - }); - }); }); diff --git a/projects/v3/src/app/components/file-upload/file-upload.component.ts b/projects/v3/src/app/components/file-upload/file-upload.component.ts index 64873b627..4508b7831 100644 --- a/projects/v3/src/app/components/file-upload/file-upload.component.ts +++ b/projects/v3/src/app/components/file-upload/file-upload.component.ts @@ -25,7 +25,6 @@ const UPPY_PROPS: DashboardOptions = { }; @Component({ - standalone: false, selector: 'app-file-upload', templateUrl: './file-upload.component.html', styleUrls: [ diff --git a/projects/v3/src/app/components/filestack-preview/filestack-preview.component.spec.ts b/projects/v3/src/app/components/filestack-preview/filestack-preview.component.spec.ts index 5fd60f4e2..dcd6e9920 100644 --- a/projects/v3/src/app/components/filestack-preview/filestack-preview.component.spec.ts +++ b/projects/v3/src/app/components/filestack-preview/filestack-preview.component.spec.ts @@ -46,6 +46,7 @@ describe('FilestackPreviewComponent', () => { it('should has toolbar to control modal content', () => { spyOn(window, 'open'); + spyOn(modalSpy, 'dismiss'); component.file = { url: TEST_URL }; component.url = TEST_URL; @@ -76,6 +77,7 @@ describe('FilestackPreviewComponent', () => { describe('close()', () => { it('should close opened modal', () => { + spyOn(modalSpy, 'dismiss'); component.close(); expect(modalSpy.dismiss).toHaveBeenCalled(); }); diff --git a/projects/v3/src/app/components/filestack-preview/filestack-preview.component.ts b/projects/v3/src/app/components/filestack-preview/filestack-preview.component.ts index b4bdfd6bf..bb8df35e3 100644 --- a/projects/v3/src/app/components/filestack-preview/filestack-preview.component.ts +++ b/projects/v3/src/app/components/filestack-preview/filestack-preview.component.ts @@ -3,7 +3,6 @@ import { ModalController } from '@ionic/angular'; import { DomSanitizer } from '@angular/platform-browser'; @Component({ - standalone: false, selector: 'app-filestack-preview', templateUrl: './filestack-preview.component.html', styleUrls: ['filestack-preview.component.scss'] diff --git a/projects/v3/src/app/components/filestack/filestack.component.ts b/projects/v3/src/app/components/filestack/filestack.component.ts index b5f78b76b..97db0c4b2 100644 --- a/projects/v3/src/app/components/filestack/filestack.component.ts +++ b/projects/v3/src/app/components/filestack/filestack.component.ts @@ -22,7 +22,6 @@ export interface FilestackUploaded { } @Component({ - standalone: false, selector: 'app-file-stack', templateUrl: 'filestack.component.html', styleUrls: ['filestack.component.scss'] diff --git a/projects/v3/src/app/components/img/img.component.spec.ts b/projects/v3/src/app/components/img/img.component.spec.ts index 319341948..d1c7530e9 100644 --- a/projects/v3/src/app/components/img/img.component.spec.ts +++ b/projects/v3/src/app/components/img/img.component.spec.ts @@ -1,5 +1,4 @@ -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; -import exif from 'exif-js'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { ImgComponent } from './img.component'; @@ -7,7 +6,7 @@ describe('ImgComponent', () => { let component: ImgComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ ImgComponent ] }) @@ -42,66 +41,4 @@ describe('ImgComponent', () => { }); }); }); - - it('should set proxied image src for practera file URL on localhost', () => { - const isLocalhost = /(^localhost$)|(^127\.)|(^::1$)/.test(window.location.hostname); - if (!isLocalhost) { - pending('requires localhost-like hostname'); - } - component.imgSrc = 'https://file.practera.com/uploads/test-image.png'; - - component.ngOnChanges(); - - expect(component.proxiedImgSrc).toBe('/practera-proxy/uploads/test-image.png'); - }); - - it('should not set proxied image src for non-practera URL', () => { - component.imgSrc = 'https://example.com/uploads/test-image.png'; - - component.ngOnChanges(); - - expect(component.proxiedImgSrc).toBeUndefined(); - }); - - it('should apply EXIF orientation class and swap dimensions for orientation >= 5', () => { - const imageElement = { - classList: jasmine.createSpyObj('classList', ['add']), - height: 100, - width: 200, - } as any; - const event = { target: imageElement }; - - spyOn(exif, 'getData').and.callFake((image, callback: Function) => { - callback.call(image); - return undefined; - }); - spyOn(exif, 'getAllTags').and.returnValue({ Orientation: 6 } as any); - - component.imageLoaded(event); - - expect(imageElement.classList.add).toHaveBeenCalledWith('rotate-90'); - expect(imageElement.height).toBe(200); - expect(imageElement.width).toBe(100); - }); - - it('should not add class for unknown orientation', () => { - const imageElement = { - classList: jasmine.createSpyObj('classList', ['add']), - height: 100, - width: 200, - } as any; - const event = { target: imageElement }; - - spyOn(exif, 'getData').and.callFake((image, callback: Function) => { - callback.call(image); - return undefined; - }); - spyOn(exif, 'getAllTags').and.returnValue({ Orientation: 1 } as any); - - component.imageLoaded(event); - - expect(imageElement.classList.add).not.toHaveBeenCalled(); - expect(imageElement.height).toBe(100); - expect(imageElement.width).toBe(200); - }); }); diff --git a/projects/v3/src/app/components/img/img.component.ts b/projects/v3/src/app/components/img/img.component.ts index 500ac0772..2c31331b9 100644 --- a/projects/v3/src/app/components/img/img.component.ts +++ b/projects/v3/src/app/components/img/img.component.ts @@ -28,7 +28,6 @@ const swapWidthAndHeight = img => { }; @Component({ - standalone: false, selector: 'app-img', templateUrl: './img.component.html', styleUrls: ['./img.component.scss'] diff --git a/projects/v3/src/app/components/list-item/list-item.component.html b/projects/v3/src/app/components/list-item/list-item.component.html index 20baa4436..8604d62fe 100644 --- a/projects/v3/src/app/components/list-item/list-item.component.html +++ b/projects/v3/src/app/components/list-item/list-item.component.html @@ -88,7 +88,7 @@
- +
diff --git a/projects/v3/src/app/components/list-item/list-item.component.spec.ts b/projects/v3/src/app/components/list-item/list-item.component.spec.ts index 1292bc29a..d340dd212 100644 --- a/projects/v3/src/app/components/list-item/list-item.component.spec.ts +++ b/projects/v3/src/app/components/list-item/list-item.component.spec.ts @@ -6,7 +6,6 @@ import { IonicModule } from '@ionic/angular'; import { ListItemComponent } from './list-item.component'; @Component({ - standalone: false, template: ` { it('should display the title', () => { listItemComponent.isEventItem = true; listItemComponent.loading = false; - listItemComponent.title = testHost.title; fixture.detectChanges(); - const listItemDe: DebugElement = fixture.debugElement.query(By.css('[role="heading"]')); + const listItemDe: DebugElement = fixture.debugElement.query(By.css('.item-title')); const listItemEl: HTMLElement = listItemDe.nativeElement; + // eslint-disable-next-line no-console + console.log(listItemEl); - // the title is rendered via innerHTML and may have extra whitespace - expect(listItemEl.textContent.trim()).toEqual(testHost.title); + expect(listItemEl.textContent).toEqual(testHost.title); }); it('should return correct description', () => { diff --git a/projects/v3/src/app/components/list-item/list-item.component.ts b/projects/v3/src/app/components/list-item/list-item.component.ts index 375a4a335..c645b24d5 100644 --- a/projects/v3/src/app/components/list-item/list-item.component.ts +++ b/projects/v3/src/app/components/list-item/list-item.component.ts @@ -5,7 +5,6 @@ interface CTABtnType { } @Component({ - standalone: false, selector: 'app-list-item', templateUrl: './list-item.component.html', styleUrls: ['./list-item.component.scss'], diff --git a/projects/v3/src/app/components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component.spec.ts b/projects/v3/src/app/components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component.spec.ts index 8c7947d9e..db5a2d2fd 100644 --- a/projects/v3/src/app/components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component.spec.ts +++ b/projects/v3/src/app/components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { LockTeamAssessmentPopUpComponent } from './lock-team-assessment-pop-up.component'; import { ModalController } from '@ionic/angular'; import { UtilsService } from '@v3/services/utils.service'; @@ -8,9 +8,9 @@ import { TestUtils } from '@testingv3/utils'; describe('LockTeamAssessmentPopUpComponent', () => { let component: LockTeamAssessmentPopUpComponent; let fixture: ComponentFixture; - let modalCtrlSpy: any; + const modalCtrlSpy = jasmine.createSpyObj('ModalController', ['dismiss', 'create']); - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [LockTeamAssessmentPopUpComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], @@ -31,7 +31,6 @@ describe('LockTeamAssessmentPopUpComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(LockTeamAssessmentPopUpComponent); component = fixture.componentInstance; - modalCtrlSpy = TestBed.inject(ModalController); }); it('should create', () => { diff --git a/projects/v3/src/app/components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component.ts b/projects/v3/src/app/components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component.ts index c4076effc..bcf261f0f 100644 --- a/projects/v3/src/app/components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component.ts +++ b/projects/v3/src/app/components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component.ts @@ -3,7 +3,6 @@ import { ModalController } from '@ionic/angular'; import { UtilsService } from '@v3/services/utils.service'; @Component({ - standalone: false, selector: 'app-lock-team-assessment-pop-up', templateUrl: 'lock-team-assessment-pop-up.component.html', styleUrls: ['lock-team-assessment-pop-up.component.scss'] diff --git a/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.html b/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.html index 030be8d8b..1f6a3e6b8 100644 --- a/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.html +++ b/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.html @@ -7,13 +7,13 @@

- Learner's Answer + Learner's answer

- Reviewer's Answer + Expert's answer

@@ -42,25 +42,23 @@

+ + + -
- - -
@@ -97,7 +95,7 @@

- Learner's Answer + Learner's answer

diff --git a/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.spec.ts b/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.spec.ts index 5a1ee65d5..dc7dc9db7 100644 --- a/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.spec.ts +++ b/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.spec.ts @@ -32,7 +32,7 @@ describe('MultiTeamMemberSelectorComponent', () => { component.control = new FormControl(); component.submitActions$ = new Subject(); - component.question = { audience: [] } as any; + component.question = { audience: [] }; component.submission = {}; component.review = {}; }); @@ -105,17 +105,15 @@ describe('MultiTeamMemberSelectorComponent', () => { it('should set errors and call submitActions$.next()', () => { spyOn(component.submitActions$, 'next'); - component.control = new FormControl('', Validators.required) as any; + component.control = new FormControl('', Validators.required); component.onChange('value1'); expect(component.errors).toContain('This question is required'); - expect(component.submitActions$.next).toHaveBeenCalledWith( - jasmine.objectContaining({ - autoSave: true, - goBack: false, - }) - ); + expect(component.submitActions$.next).toHaveBeenCalledWith({ + saveInProgress: true, + goBack: false, + }); }); }); @@ -127,8 +125,7 @@ describe('MultiTeamMemberSelectorComponent', () => { }; component.writeValue(value); - // writeValue sets innerValue directly without stringify - expect(component.innerValue).toEqual(value); + expect(component.innerValue).toEqual(JSON.stringify(value)); }); it('should not update innerValue when the value is undefined or null', () => { @@ -140,47 +137,6 @@ describe('MultiTeamMemberSelectorComponent', () => { component.writeValue(null); expect(component.innerValue).toEqual('initialValue'); }); - - it('should normalize non-array answer in review mode', () => { - component.doReview = true; - component.writeValue({ answer: 'not-array', comment: 'test' }); - - expect(Array.isArray(component.innerValue.answer)).toBeTrue(); - expect(component.innerValue.answer).toEqual([]); - }); - - it('should keep array answer in review mode', () => { - component.doReview = true; - component.writeValue({ answer: ['member1'], comment: 'test' }); - - expect(component.innerValue.answer).toEqual(['member1']); - }); - - it('should normalize non-array value to plain array in assessment mode', () => { - component.doAssessment = true; - component.doReview = false; - component.writeValue({ answer: ['member1'], comment: 'test' }); - - // in assessment mode, innerValue should be a plain array - expect(Array.isArray(component.innerValue)).toBeTrue(); - expect(component.innerValue).toEqual(['member1']); - }); - - it('should normalize non-array value to empty array in assessment mode', () => { - component.doAssessment = true; - component.doReview = false; - component.writeValue('not-an-array'); - - expect(Array.isArray(component.innerValue)).toBeTrue(); - expect(component.innerValue).toEqual([]); - }); - - it('should set comment from value when present', () => { - component.doReview = true; - component.writeValue({ answer: [], comment: 'new comment' }); - - expect(component.comment).toBe('new comment'); - }); }); describe('_showSavedAnswers()', () => { @@ -189,7 +145,6 @@ describe('MultiTeamMemberSelectorComponent', () => { component.doReview = true; component.review.answer = ['answer1']; component.review.comment = 'comment1'; - component.control = new FormControl('') as any; component['_showSavedAnswers'](); @@ -197,99 +152,21 @@ describe('MultiTeamMemberSelectorComponent', () => { answer: ['answer1'], comment: 'comment1', }); - // propagateChange doesn't update control.value, so we only check innerValue + expect(component.control.value).toEqual({ + answer: ['answer1'], + comment: 'comment1', + }); }); it('should set innerValue and propagate changes for in-progress submission', () => { component.submissionStatus = 'in progress'; component.doAssessment = true; component.submission.answer = ['answer1']; - component.control = new FormControl('') as any; component['_showSavedAnswers'](); - // in assessment mode, innerValue is a plain array (not an object) expect(component.innerValue).toEqual(['answer1']); - }); - - it('should preserve control value when control is dirty in review mode', () => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { answer: ['saved'], comment: 'saved comment' }; - const dirtyValue = { answer: ['user-edited'], comment: 'user comment' }; - component.control = new FormControl(dirtyValue) as any; - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(dirtyValue); - expect(component.comment).toBe('user comment'); - }); - - it('should normalize non-array answer when control is dirty in review mode', () => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { answer: ['saved'], comment: 'saved comment' }; - const dirtyValue = { answer: 'not-an-array', comment: 'user comment' }; - component.control = new FormControl(dirtyValue) as any; - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(Array.isArray(component.innerValue.answer)).toBeTrue(); - expect(component.innerValue.answer).toEqual([]); - }); - - it('should normalize non-array answer to empty array when review data is pristine', () => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { answer: 'not-an-array', comment: 'comment' }; - component.control = new FormControl('') as any; - - component['_showSavedAnswers'](); - - expect(component.innerValue.answer).toEqual([]); - }); - - it('should fallback to review comment when dirty value has no comment', () => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { answer: ['saved'], comment: 'saved comment' }; - const dirtyValue = { answer: ['user-edited'] }; - component.control = new FormControl(dirtyValue) as any; - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.comment).toBe('saved comment'); - }); - - it('should preserve control value when control is dirty in assessment mode', () => { - component.reviewStatus = ''; - component.doReview = false; - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: ['saved'] }; - const dirtyValue = ['user-edited']; - component.control = new FormControl(dirtyValue) as any; - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(['user-edited']); - }); - - it('should default to empty array when submission answer is null in assessment mode', () => { - component.reviewStatus = ''; - component.doReview = false; - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: null }; - component.control = new FormControl('') as any; - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual([]); + expect(component.control.value).toEqual(['answer1']); }); }); @@ -370,226 +247,4 @@ describe('MultiTeamMemberSelectorComponent', () => { expect(component.isSelectedInReview(teamMember)).toBeFalse(); }); }); - - describe('isSelected()', () => { - const teamMember = { key: JSON.stringify({ name: 'User1', recipientId: 1, recipientEmail: 'u1@test.com', userId: 10 }), userName: 'User1' }; - - it('should return false when innerValue is null', () => { - component.innerValue = null; - expect(component.isSelected(teamMember)).toBeFalse(); - }); - - it('should return true in assessment mode when member is in innerValue', () => { - component.doAssessment = true; - component.doReview = false; - component.innerValue = [JSON.stringify({ name: 'User1', recipientId: 1, recipientEmail: 'u1@test.com', userId: 10 })]; - expect(component.isSelected(teamMember)).toBeTrue(); - }); - - it('should return false in assessment mode when member is not in innerValue', () => { - component.doAssessment = true; - component.doReview = false; - component.innerValue = [JSON.stringify({ name: 'Other', recipientId: 2, recipientEmail: 'o@test.com', userId: 99 })]; - expect(component.isSelected(teamMember)).toBeFalse(); - }); - - it('should return true in review mode when member is in innerValue.answer', () => { - component.doReview = true; - component.doAssessment = false; - component.innerValue = { - answer: [JSON.stringify({ name: 'User1', recipientId: 1, recipientEmail: 'u1@test.com', userId: 10 })], - comment: '', - }; - expect(component.isSelected(teamMember)).toBeTrue(); - }); - - it('should return false in review mode when innerValue.answer is undefined', () => { - component.doReview = true; - component.doAssessment = false; - component.innerValue = { comment: '' }; - expect(component.isSelected(teamMember)).toBeFalse(); - }); - }); - - describe('triggerSave()', () => { - beforeEach(() => { - component.question = { id: 20, audience: [] } as any; - component.submissionId = 50; - component.reviewId = 60; - component.submitActions$ = jasmine.createSpyObj('Subject', ['next']); - }); - - it('should emit review save action when doReview is true', () => { - component.doReview = true; - component.doAssessment = false; - component.innerValue = { answer: ['member-1'], comment: 'review comment' }; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - reviewSave: { - reviewId: 60, - submissionId: 50, - questionId: 20, - answer: ['member-1'], - comment: 'review comment', - }, - })); - }); - - it('should emit question save action when doAssessment is true', () => { - component.doAssessment = true; - component.doReview = false; - component.innerValue = ['member-a', 'member-b']; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - questionSave: { - submissionId: 50, - questionId: 20, - answer: ['member-a', 'member-b'], - }, - })); - }); - }); - - describe('onLabelToggle / onLabelToggleReview', () => { - beforeEach(() => { - component.control = new FormControl('') as any; - component.submitActions$ = new Subject(); - spyOn(component, 'onChange'); - }); - - it('onLabelToggle should call onChange without type', () => { - component.onLabelToggle('member-1'); - expect(component.onChange).toHaveBeenCalledWith('member-1'); - }); - - it('onLabelToggleReview should call onChange with answer type', () => { - component.onLabelToggleReview('member-1'); - expect(component.onChange).toHaveBeenCalledWith('member-1', 'answer'); - }); - }); - - describe('registerOnChange() / registerOnTouched()', () => { - it('registerOnChange should set propagateChange', () => { - const fn = jasmine.createSpy('onChange'); - component.registerOnChange(fn); - component.propagateChange('test'); - expect(fn).toHaveBeenCalledWith('test'); - }); - - it('registerOnTouched should not throw', () => { - expect(() => component.registerOnTouched(() => {})).not.toThrow(); - }); - }); - - describe('isDisplayOnly', () => { - it('should be true when reviewer has canAnswer false', () => { - component.doReview = true; - component.doAssessment = false; - component.question = { canAnswer: false, audience: [] } as any; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be truthy when feedback available with submission answer', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'feedback available'; - component.submission = { answer: ['member-1'] }; - expect(component.isDisplayOnly).toBeTruthy(); - }); - - it('should be truthy when pending review with submission answer', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'pending review'; - component.submission = { answer: ['member-1'] }; - expect(component.isDisplayOnly).toBeTruthy(); - }); - - it('should be truthy when done with empty review status', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'done'; - component.reviewStatus = ''; - component.submission = { answer: ['member-1'] }; - expect(component.isDisplayOnly).toBeTruthy(); - }); - - it('should be false when doing assessment', () => { - component.doAssessment = true; - component.doReview = false; - expect(component.isDisplayOnly).toBeFalse(); - }); - - it('should be false when doing review with canAnswer true', () => { - component.doAssessment = false; - component.doReview = true; - component.question = { canAnswer: true, audience: [] } as any; - expect(component.isDisplayOnly).toBeFalse(); - }); - }); - - describe('_showSavedAnswers() - "not start" review status', () => { - it('should load review data when reviewStatus is "not start"', () => { - component.reviewStatus = 'not start'; - component.doReview = true; - component.review = { answer: ['member-x'], comment: 'test' }; - component.control = new FormControl(null) as any; - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ - answer: ['member-x'], - comment: 'test', - }); - }); - }); - - describe('_showSavedAnswers() - propagateChange call', () => { - it('should call propagateChange with innerValue', () => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: ['member-1'] }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(null) as any; - spyOn(component, 'propagateChange'); - - component['_showSavedAnswers'](); - - expect(component.propagateChange).toHaveBeenCalledWith(['member-1']); - }); - }); - - describe('onChange() - initializes innerValue for review mode', () => { - it('should initialize innerValue with answer array and empty comment when innerValue is null', () => { - component.innerValue = null; - component.control = new FormControl('') as any; - utilsSpy.addOrRemove = jasmine.createSpy('addOrRemove').and.returnValue(['member-1']); - spyOn(component, 'propagateChange'); - - component.onChange('member-1', 'answer'); - - expect(component.innerValue.answer).toEqual(['member-1']); - expect(component.innerValue.comment).toBe(''); - }); - - it('should normalize non-array answer to empty array before toggling', () => { - component.innerValue = { answer: 'not-array', comment: '' }; - component.control = new FormControl('') as any; - utilsSpy.addOrRemove = jasmine.createSpy('addOrRemove').and.returnValue(['member-1']); - spyOn(component, 'propagateChange'); - - component.onChange('member-1', 'answer'); - - expect(utilsSpy.addOrRemove).toHaveBeenCalledWith([], 'member-1'); - }); - }); }); diff --git a/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.ts b/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.ts index 5597b283d..772d5357a 100644 --- a/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.ts +++ b/projects/v3/src/app/components/multi-team-member-selector/multi-team-member-selector.component.ts @@ -5,7 +5,6 @@ import { Subject } from 'rxjs'; import { Question } from '../types/assessment'; @Component({ - standalone: false, selector: 'app-multi-team-member-selector', templateUrl: 'multi-team-member-selector.component.html', styleUrls: ['multi-team-member-selector.component.scss'], @@ -239,7 +238,7 @@ export class MultiTeamMemberSelectorComponent implements ControlValueAccessor, O /** * checks if a team member was selected in the learner's original submission. * reads from @Input submission.answer (api data, never modified locally). - * used only for displaying the "Learner's Answer" badge in review mode. + * used only for displaying the "Learner's answer" badge in review mode. */ isSelectedInSubmission(teamMember: any): boolean { if (!this.submission?.answer) return false; @@ -261,7 +260,7 @@ export class MultiTeamMemberSelectorComponent implements ControlValueAccessor, O /** * checks if a team member was selected in the reviewer's original review. * reads from @Input review.answer (api data, never modified locally). - * used only in isDisplayOnly (read-only) mode for the "Reviewer's Answer" badge. + * used only in isDisplayOnly (read-only) mode for the "Expert's answer" badge. * not used for checkbox [checked] binding — use isSelected() instead to * preserve local edits across pagination. */ diff --git a/projects/v3/src/app/components/multiple/multiple.component.html b/projects/v3/src/app/components/multiple/multiple.component.html index 3411334b4..ff1536593 100644 --- a/projects/v3/src/app/components/multiple/multiple.component.html +++ b/projects/v3/src/app/components/multiple/multiple.component.html @@ -9,17 +9,17 @@

{ Learner's Answer + >Learner's answer Reviewer's Answer + >Expert's answer - + @@ -73,7 +73,7 @@

{ *ngIf="control.disabled && choice.explanation && choice.explanation.changingThisBreaksApplicationSecurity && checkInnerValue(choice.id)"> - + @@ -118,7 +118,7 @@

{

Learner's Answer + >Learner's answer

diff --git a/projects/v3/src/app/components/multiple/multiple.component.spec.ts b/projects/v3/src/app/components/multiple/multiple.component.spec.ts index ee2a0deec..29ef0d2ae 100644 --- a/projects/v3/src/app/components/multiple/multiple.component.spec.ts +++ b/projects/v3/src/app/components/multiple/multiple.component.spec.ts @@ -1,33 +1,24 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { MultipleComponent } from './multiple.component'; import { ReactiveFormsModule, FormControl } from '@angular/forms'; import { UtilsService } from '@v3/services/utils.service'; import { TestUtils } from '@testingv3/utils'; -import { LanguageDetectionPipe } from '@v3/app/pipes/language.pipe'; -import { DomSanitizer } from '@angular/platform-browser'; -import { ToggleLabelDirective } from '@v3/app/directives/toggle-label/toggle-label.directive'; describe('MultipleComponent', () => { let component: MultipleComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, ToggleLabelDirective], - declarations: [MultipleComponent, LanguageDetectionPipe], + imports: [ReactiveFormsModule], + declarations: [MultipleComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: UtilsService, useClass: TestUtils, }, - { - provide: DomSanitizer, - useValue: { - bypassSecurityTrustHtml: (html: string) => html - } - } ], }) .compileComponents(); @@ -59,8 +50,8 @@ describe('MultipleComponent', () => { component.review = {}; component.control = new FormControl(''); fixture.detectChanges(); - // component sets innerValue from submission.answer when control is pristine expect(component.innerValue).toEqual(component.submission.answer); + expect(component.control.value).toEqual(component.submission.answer); }); it('should get correct data for in progress review', () => { @@ -78,16 +69,13 @@ describe('MultipleComponent', () => { component.doReview = true; component.review = { comment: 'asdf', - answer: ['abc'] + answer: { name: 'abc' } }; component.control = new FormControl(''); fixture.detectChanges(); - // component sets innerValue to review data - expect(component.innerValue).toEqual({ - answer: ['abc'], - comment: component.review.comment - }); + expect(component.innerValue).toEqual(component.review); expect(component.comment).toEqual(component.review.comment); + expect(component.control.value).toEqual(component.review); }); }); @@ -100,30 +88,30 @@ describe('MultipleComponent', () => { component.control.setErrors({ key: 'error' }); - component.onChange(4); + component.onChange(4, null); expect(component.errors.length).toBe(1); }); it('should return error if required not filled', () => { component.control.setErrors({ required: true }); - component.onChange(4); + component.onChange(4, null); expect(component.errors.length).toBe(1); expect(component.errors[0]).toContain('is required'); }); it('should get correct data when writing submission answer', () => { - component.onChange(4); + component.onChange(4, null); expect(component.errors.length).toBe(0); expect(component.innerValue).toEqual([4]); }); - it('should get correct data when appending submission answer', () => { + it('should get correct data when writing submission answer', () => { component.innerValue = [1, 2, 3]; - component.onChange(4); + component.onChange(4, null); expect(component.errors.length).toBe(0); expect(component.innerValue).toEqual([1, 2, 3, 4]); }); it('should get correct data when writing review answer', () => { - component.innerValue = { answer: [1, 2, 3], comment: '' }; + component.innerValue = JSON.stringify({ answer: [1, 2, 3], comment: '' }); component.onChange(2, 'answer'); expect(component.errors.length).toBe(0); expect(component.innerValue).toEqual({ answer: [1, 3], comment: '' }); @@ -135,10 +123,9 @@ describe('MultipleComponent', () => { }); }); - it('when testing writeValue(), it should call the method correctly', () => { - // writeValue is empty in the component - it doesn't set innerValue + it('when testing writeValue(), it should pass data correctly', () => { component.writeValue({ data: 'data' }); - // no assertion needed since writeValue does nothing + expect(component.innerValue).toEqual(JSON.stringify({ data: 'data' })); component.writeValue(null); }); it('when testing registerOnChange()', () => { @@ -147,297 +134,5 @@ describe('MultipleComponent', () => { component.registerOnTouched(() => true); }); - describe('_showSavedAnswers() - pristine check and array normalization', () => { - describe('review mode', () => { - beforeEach(() => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { - answer: ['choice1', 'choice2'], - comment: 'saved comment', - }; - component.control = new FormControl(''); - component.submissionStatus = ''; - component.doAssessment = false; - }); - - it('should use saved review data when control is pristine', () => { - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ - answer: ['choice1', 'choice2'], - comment: 'saved comment', - }); - expect(component.comment).toBe('saved comment'); - }); - - it('should normalize non-array answer to empty array when pristine', () => { - component.review = { answer: 'not-an-array', comment: 'comment' }; - - component['_showSavedAnswers'](); - - expect(component.innerValue.answer).toEqual([]); - }); - - it('should preserve control value when control is dirty', () => { - const dirtyValue = { answer: ['user-choice'], comment: 'user comment' }; - component.control.setValue(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(dirtyValue); - }); - - it('should normalize non-array answer in dirty control value', () => { - const dirtyValue = { answer: 'not-an-array', comment: 'user comment' }; - component.control.setValue(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(Array.isArray(component.innerValue.answer)).toBeTrue(); - expect(component.innerValue.answer).toEqual([]); - }); - - it('should fallback to review comment when dirty value has no comment', () => { - const dirtyValue = { answer: ['choice'] }; - component.control.setValue(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.comment).toBe('saved comment'); - }); - }); - - describe('assessment mode', () => { - beforeEach(() => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: ['saved-choice1', 'saved-choice2'] }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(''); - }); - - it('should use saved submission answer when control is pristine', () => { - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(['saved-choice1', 'saved-choice2']); - }); - - it('should preserve control value when control is dirty', () => { - component.control.setValue(['user-choice']); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(['user-choice']); - }); - }); - }); - - describe('writeValue() - array normalization in review mode', () => { - it('should normalize non-array answer to empty array in review mode', () => { - component.doReview = true; - component.writeValue({ answer: 'not-array', comment: 'test' }); - - expect(Array.isArray(component.innerValue.answer)).toBeTrue(); - expect(component.innerValue.answer).toEqual([]); - }); - - it('should keep array answer as-is in review mode', () => { - component.doReview = true; - component.writeValue({ answer: ['choice1'], comment: 'test' }); - - expect(component.innerValue.answer).toEqual(['choice1']); - }); - - it('should set comment from value', () => { - component.doReview = true; - component.writeValue({ answer: [], comment: 'new comment' }); - - expect(component.comment).toBe('new comment'); - }); - - it('should not update innerValue for null', () => { - component.innerValue = 'existing'; - component.writeValue(null); - - // writeValue does nothing for null based on the code - }); - }); - - describe('triggerSave()', () => { - beforeEach(() => { - component.question = { id: 7, audience: [] }; - component.submissionId = 30; - component.reviewId = 40; - component.submitActions$ = jasmine.createSpyObj('Subject', ['next']); - }); - - it('should emit review save action when doReview is true', () => { - component.doReview = true; - component.doAssessment = false; - component.innerValue = { answer: [1, 3], comment: 'nice work' }; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - reviewSave: { - reviewId: 40, - submissionId: 30, - questionId: 7, - answer: [1, 3], - comment: 'nice work', - }, - })); - }); - - it('should emit question save action when doAssessment is true', () => { - component.doAssessment = true; - component.doReview = false; - component.innerValue = [2, 4]; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - questionSave: { - submissionId: 30, - questionId: 7, - answer: [2, 4], - }, - })); - }); - }); - - describe('onLabelToggle()', () => { - beforeEach(() => { - component.control = new FormControl(''); - spyOn(component, 'onChange'); - }); - - it('should call onChange with answer type when doReview', () => { - component.doReview = true; - component.onLabelToggle('5'); - expect(component.onChange).toHaveBeenCalledWith('5', 'answer'); - }); - - it('should call onChange without type when not doReview', () => { - component.doReview = false; - component.onLabelToggle('5'); - expect(component.onChange).toHaveBeenCalledWith('5'); - }); - }); - - describe('ngOnDestroy()', () => { - it('should unsubscribe all subscriptions', () => { - const sub1 = jasmine.createSpyObj('Subscription', ['unsubscribe']); - const sub2 = jasmine.createSpyObj('Subscription', ['unsubscribe']); - component.subscriptions = [sub1, sub2]; - - component.ngOnDestroy(); - - expect(sub1.unsubscribe).toHaveBeenCalled(); - expect(sub2.unsubscribe).toHaveBeenCalled(); - }); - }); - - describe('isDisplayOnly()', () => { - it('should be true when reviewer has canAnswer false', () => { - component.doReview = true; - component.doAssessment = false; - component.question = { canAnswer: false, audience: [] }; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be true when status is feedback available', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'feedback available'; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be false when doing assessment', () => { - component.doAssessment = true; - component.doReview = false; - expect(component.isDisplayOnly).toBeFalse(); - }); - - it('should be true when done with empty review status', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'done'; - component.reviewStatus = ''; - expect(component.isDisplayOnly).toBeTrue(); - }); - }); - - describe('audienceContainReviewer()', () => { - it('should return true when multiple audiences include reviewer', () => { - component.question = { audience: ['submitter', 'reviewer'] }; - expect(component.audienceContainReviewer()).toBeTrue(); - }); - - it('should return false for single audience', () => { - component.question = { audience: ['submitter'] }; - expect(component.audienceContainReviewer()).toBeFalse(); - }); - }); - - describe('_showSavedAnswers() - propagateChange call', () => { - it('should call propagateChange with innerValue', () => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: [1, 2] }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(''); - spyOn(component, 'propagateChange'); - - component['_showSavedAnswers'](); - - expect(component.propagateChange).toHaveBeenCalledWith([1, 2]); - }); - }); - - describe('_showSavedAnswers() - "not start" review status', () => { - it('should load review data when reviewStatus is "not start"', () => { - component.reviewStatus = 'not start'; - component.doReview = true; - component.review = { answer: ['a', 'b'], comment: 'test' }; - component.control = new FormControl(''); - component.submissionStatus = ''; - component.doAssessment = false; - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ - answer: ['a', 'b'], - comment: 'test', - }); - }); - }); - - describe('checkInnerValue()', () => { - it('should return true when choiceId is in innerValue array', () => { - component.innerValue = [1, 2, 3]; - expect(component.checkInnerValue(2)).toBeTrue(); - }); - - it('should return undefined when choiceId is not in array', () => { - component.innerValue = [1, 2, 3]; - expect(component.checkInnerValue(5)).toBeUndefined(); - }); - - it('should return undefined for falsy choiceId', () => { - component.innerValue = [1, 2]; - expect(component.checkInnerValue(null)).toBeUndefined(); - }); - }); }); + diff --git a/projects/v3/src/app/components/multiple/multiple.component.ts b/projects/v3/src/app/components/multiple/multiple.component.ts index 0a25c971e..3df558f0e 100644 --- a/projects/v3/src/app/components/multiple/multiple.component.ts +++ b/projects/v3/src/app/components/multiple/multiple.component.ts @@ -6,7 +6,6 @@ import { from, fromEvent, merge, Subject, Subscription } from 'rxjs'; import { debounceTime, map, switchMap } from 'rxjs/operators'; @Component({ - standalone: false, selector: 'app-multiple', templateUrl: 'multiple.component.html', styleUrls: ['multiple.component.scss'], diff --git a/projects/v3/src/app/components/oneof/oneof.component.html b/projects/v3/src/app/components/oneof/oneof.component.html index 54139e9f3..f24bba6ae 100644 --- a/projects/v3/src/app/components/oneof/oneof.component.html +++ b/projects/v3/src/app/components/oneof/oneof.component.html @@ -7,16 +7,16 @@
Learner's Answer + >Learner's answer Reviewer's Answer + >Expert's answer - + @@ -57,23 +57,25 @@ [value]="choice.id" [disabled]="control.disabled" slot="start" - mode="md"> -
- - -
+ justify="start" + labelPlacement="end" + mode="md" + > + + - + @@ -117,7 +119,9 @@ tabindex="0">

- Learner's Answer + + Learner's answer +

diff --git a/projects/v3/src/app/components/oneof/oneof.component.spec.ts b/projects/v3/src/app/components/oneof/oneof.component.spec.ts index 4d63ed46e..36daf011a 100644 --- a/projects/v3/src/app/components/oneof/oneof.component.spec.ts +++ b/projects/v3/src/app/components/oneof/oneof.component.spec.ts @@ -1,33 +1,24 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { OneofComponent } from './oneof.component'; import { ReactiveFormsModule, FormControl } from '@angular/forms'; import { UtilsService } from '@v3/services/utils.service'; import { TestUtils } from '@testingv3/utils'; -import { LanguageDetectionPipe } from '@v3/app/pipes/language.pipe'; -import { DomSanitizer } from '@angular/platform-browser'; -import { ToggleLabelDirective } from '@v3/app/directives/toggle-label/toggle-label.directive'; describe('OneofComponent', () => { let component: OneofComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ - imports: [ReactiveFormsModule, ToggleLabelDirective], - declarations: [OneofComponent, LanguageDetectionPipe], + imports: [ReactiveFormsModule], + declarations: [OneofComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: UtilsService, useClass: TestUtils, }, - { - provide: DomSanitizer, - useValue: { - bypassSecurityTrustHtml: (html: string) => html - } - } ], }) .compileComponents(); @@ -59,8 +50,8 @@ describe('OneofComponent', () => { component.review = {}; component.control = new FormControl(''); fixture.detectChanges(); - // component sets innerValue from submission.answer when control is pristine expect(component.innerValue).toEqual(component.submission.answer); + expect(component.control.value).toEqual(component.submission.answer); }); it('should get correct data for in progress review', () => { @@ -82,12 +73,9 @@ describe('OneofComponent', () => { }; component.control = new FormControl(''); fixture.detectChanges(); - // component sets innerValue to review data - expect(component.innerValue).toEqual({ - answer: component.review.answer, - comment: component.review.comment - }); + expect(component.innerValue).toEqual(component.review); expect(component.comment).toEqual(component.review.comment); + expect(component.control.value).toEqual(component.review); }); }); @@ -100,25 +88,25 @@ describe('OneofComponent', () => { component.control.setErrors({ key: 'error' }); - component.onChange(4); + component.onChange(4, null); expect(component.errors.length).toBe(1); }); it('should return error if required not filled', () => { component.control.setErrors({ required: true }); - component.onChange(4); + component.onChange(4, null); expect(component.errors.length).toBe(1); expect(component.errors[0]).toContain('is required'); }); it('should get correct data when writing submission answer', () => { - component.onChange(4); + component.onChange(4, null); expect(component.errors.length).toBe(0); expect(component.innerValue).toEqual(4); }); - it('should get correct data when replacing submission answer', () => { + it('should get correct data when writing submission answer', () => { component.innerValue = 1; - component.onChange(4); + component.onChange(4, null); expect(component.errors.length).toBe(0); expect(component.innerValue).toEqual(4); }); @@ -175,243 +163,5 @@ describe('OneofComponent', () => { expect(component.isDisplayOnly).toBeFalse(); }); }); - - describe('triggerSave()', () => { - beforeEach(() => { - component.question = { id: 42, audience: [] }; - component.submissionId = 100; - component.reviewId = 200; - component.submitActions$ = jasmine.createSpyObj('Subject', ['next']); - }); - - it('should emit review save action when doReview is true', () => { - component.doReview = true; - component.doAssessment = false; - component.innerValue = { answer: 'choice1', comment: 'good' }; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - reviewSave: { - reviewId: 200, - submissionId: 100, - questionId: 42, - answer: 'choice1', - comment: 'good', - }, - })); - }); - - it('should emit question save action when doAssessment is true', () => { - component.doAssessment = true; - component.doReview = false; - component.innerValue = 'choice2'; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - questionSave: { - submissionId: 100, - questionId: 42, - answer: 'choice2', - }, - })); - }); - }); - - describe('onLabelToggle / onLabelToggleReview', () => { - beforeEach(() => { - component.control = new FormControl(''); - spyOn(component, 'onChange'); - }); - - it('onLabelToggle should call onChange with id', () => { - component.onLabelToggle('5'); - expect(component.onChange).toHaveBeenCalledWith('5'); - }); - - it('onLabelToggleReview should call onChange with id and answer type', () => { - component.onLabelToggleReview('5'); - expect(component.onChange).toHaveBeenCalledWith('5', 'answer'); - }); - }); - - describe('checkInnerValue()', () => { - it('should return true when choiceId matches innerValue', () => { - component.innerValue = 3; - expect(component.checkInnerValue(3)).toBeTrue(); - }); - - it('should return undefined when choiceId does not match', () => { - component.innerValue = 3; - expect(component.checkInnerValue(5)).toBeUndefined(); - }); - - it('should return undefined for falsy choiceId', () => { - component.innerValue = 3; - expect(component.checkInnerValue(null)).toBeUndefined(); - }); - }); - - describe('audienceContainReviewer()', () => { - it('should return true when audience has multiple entries including reviewer', () => { - component.question = { audience: ['submitter', 'reviewer'] }; - expect(component.audienceContainReviewer()).toBeTrue(); - }); - - it('should return false when audience has only one entry', () => { - component.question = { audience: ['submitter'] }; - expect(component.audienceContainReviewer()).toBeFalse(); - }); - - it('should return false when audience does not include reviewer', () => { - component.question = { audience: ['submitter', 'admin'] }; - expect(component.audienceContainReviewer()).toBeFalse(); - }); - }); - - describe('_showSavedAnswers() - pristine check for pagination persistence', () => { - describe('review mode', () => { - beforeEach(() => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { - answer: 'saved review answer', - comment: 'saved review comment', - }; - component.control = new FormControl(''); - }); - - it('should use saved review data when control is pristine', () => { - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ - answer: 'saved review answer', - comment: 'saved review comment', - }); - expect(component.comment).toBe('saved review comment'); - }); - - it('should preserve control value when control is dirty', () => { - const dirtyValue = { answer: 'user edited', comment: 'user comment' }; - component.control.setValue(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual(dirtyValue); - expect(component.comment).toBe('user comment'); - }); - - it('should fallback to review comment when dirty value has no comment', () => { - const dirtyValue = { answer: 'user edited' }; - component.control.setValue(dirtyValue); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.comment).toBe('saved review comment'); - }); - }); - - describe('assessment mode', () => { - beforeEach(() => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: 'saved submission answer' }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(''); - }); - - it('should use saved submission answer when control is pristine', () => { - component['_showSavedAnswers'](); - - expect(component.innerValue).toBe('saved submission answer'); - }); - - it('should preserve control value when control is dirty', () => { - component.control.setValue('user edited answer'); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toBe('user edited answer'); - }); - - it('should use submission answer when control is null', () => { - component.control = null; - - component['_showSavedAnswers'](); - - expect(component.innerValue).toBe('saved submission answer'); - }); - }); - - describe('review mode with "not start" status', () => { - it('should load review data when reviewStatus is "not start"', () => { - component.reviewStatus = 'not start'; - component.doReview = true; - component.review = { answer: 'review answer', comment: 'review comment' }; - component.control = new FormControl(''); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ - answer: 'review answer', - comment: 'review comment', - }); - }); - }); - - it('should call propagateChange with innerValue', () => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: 'test' }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(''); - spyOn(component, 'propagateChange'); - - component['_showSavedAnswers'](); - - expect(component.propagateChange).toHaveBeenCalledWith('test'); - }); - }); - - describe('isDisplayOnly() - additional cases', () => { - it('should be true when reviewer has canAnswer false', () => { - component.doReview = true; - component.doAssessment = false; - component.question = { canAnswer: false }; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be true when status is done with empty reviewStatus', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'done'; - component.reviewStatus = ''; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be true when submission status is feedback available', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'feedback available'; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be false when done but reviewStatus is non-empty', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'done'; - component.reviewStatus = 'in progress'; - expect(component.isDisplayOnly).toBeFalse(); - }); - }); }); + diff --git a/projects/v3/src/app/components/oneof/oneof.component.ts b/projects/v3/src/app/components/oneof/oneof.component.ts index 4e4b73f3a..84e654517 100644 --- a/projects/v3/src/app/components/oneof/oneof.component.ts +++ b/projects/v3/src/app/components/oneof/oneof.component.ts @@ -4,7 +4,6 @@ import { Subject } from 'rxjs'; import { debounceTime } from 'rxjs/operators'; @Component({ - standalone: false, selector: 'app-oneof', templateUrl: 'oneof.component.html', styleUrls: ['./oneof.component.scss'], diff --git a/projects/v3/src/app/components/pop-up/pop-up.component.spec.ts b/projects/v3/src/app/components/pop-up/pop-up.component.spec.ts index 58d300363..a50638d60 100644 --- a/projects/v3/src/app/components/pop-up/pop-up.component.spec.ts +++ b/projects/v3/src/app/components/pop-up/pop-up.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { PopUpComponent } from './pop-up.component'; import { Observable, of, pipe } from 'rxjs'; import { ModalController } from '@ionic/angular'; @@ -8,9 +8,9 @@ import { Router } from '@angular/router'; describe('PopUpComponent', () => { let component: PopUpComponent; let fixture: ComponentFixture; - let modalCtrlSpy: any; + const modalCtrlSpy = jasmine.createSpyObj('ModalController', ['dismiss', 'create']); - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ PopUpComponent ], schemas: [ CUSTOM_ELEMENTS_SCHEMA ], @@ -34,7 +34,6 @@ describe('PopUpComponent', () => { beforeEach(() => { fixture = TestBed.createComponent(PopUpComponent); component = fixture.componentInstance; - modalCtrlSpy = TestBed.inject(ModalController); }); it('should create', () => { diff --git a/projects/v3/src/app/components/pop-up/pop-up.component.ts b/projects/v3/src/app/components/pop-up/pop-up.component.ts index 142c2330d..59da20a2d 100644 --- a/projects/v3/src/app/components/pop-up/pop-up.component.ts +++ b/projects/v3/src/app/components/pop-up/pop-up.component.ts @@ -10,7 +10,6 @@ export interface PopUpData { } @Component({ - standalone: false, selector: 'app-pop-up', templateUrl: 'pop-up.component.html', styleUrls: ['pop-up.component.scss'] diff --git a/projects/v3/src/app/components/project-brief-modal/project-brief-modal.component.spec.ts b/projects/v3/src/app/components/project-brief-modal/project-brief-modal.component.spec.ts index b9bc1b544..8fc024d6a 100644 --- a/projects/v3/src/app/components/project-brief-modal/project-brief-modal.component.spec.ts +++ b/projects/v3/src/app/components/project-brief-modal/project-brief-modal.component.spec.ts @@ -29,9 +29,8 @@ describe('ProjectBriefModalComponent', () => { describe('close()', () => { it('should dismiss the modal', () => { - const injectedCtrl = TestBed.inject(ModalController) as jasmine.SpyObj; component.close(); - expect(injectedCtrl.dismiss).toHaveBeenCalled(); + expect(modalControllerSpy.dismiss).toHaveBeenCalled(); }); }); diff --git a/projects/v3/src/app/components/project-brief-modal/project-brief-modal.component.ts b/projects/v3/src/app/components/project-brief-modal/project-brief-modal.component.ts index 0f017c7fb..a7c0e1907 100644 --- a/projects/v3/src/app/components/project-brief-modal/project-brief-modal.component.ts +++ b/projects/v3/src/app/components/project-brief-modal/project-brief-modal.component.ts @@ -21,7 +21,6 @@ export interface ProjectBrief { * empty fields show "none specified" */ @Component({ - standalone: false, selector: 'app-project-brief-modal', templateUrl: './project-brief-modal.component.html', styleUrls: ['./project-brief-modal.component.scss'] diff --git a/projects/v3/src/app/components/review-list/review-list.component.spec.ts b/projects/v3/src/app/components/review-list/review-list.component.spec.ts index 734fa8bb5..1a4217a26 100644 --- a/projects/v3/src/app/components/review-list/review-list.component.spec.ts +++ b/projects/v3/src/app/components/review-list/review-list.component.spec.ts @@ -79,12 +79,10 @@ describe('ReviewListComponent', () => { }); describe('noReviews()', () => { - it('should be empty string when reviews is null', () => { + it('should be null', () => { component.reviews = null; expect(component.noReviews).toEqual(''); - }); - it('should be empty string when matching reviews exist', () => { component.showDone = true; component.reviews = [{ isDone: true, @@ -93,7 +91,7 @@ describe('ReviewListComponent', () => { expect(component.noReviews).toEqual(''); }); - it('should return "completed" when showDone but no completed reviews', () => { + it('should return "completed"', () => { component.reviews = [ { isDone: false } as any ]; @@ -102,7 +100,7 @@ describe('ReviewListComponent', () => { expect(component.noReviews).toEqual('completed'); }); - it('should return "pending" when not showDone but no pending reviews', () => { + it('should return "pending"', () => { component.reviews = [ { isDone: true } as any ]; diff --git a/projects/v3/src/app/components/review-list/review-list.component.ts b/projects/v3/src/app/components/review-list/review-list.component.ts index 5633ae0aa..ae5f2e9f4 100644 --- a/projects/v3/src/app/components/review-list/review-list.component.ts +++ b/projects/v3/src/app/components/review-list/review-list.component.ts @@ -15,7 +15,6 @@ import { Review } from '@v3/app/services/review.service'; import { SegmentChangeEventDetail, SegmentValue } from '@ionic/angular'; @Component({ - standalone: false, selector: 'app-review-list', templateUrl: './review-list.component.html', styleUrls: ['./review-list.component.scss'], diff --git a/projects/v3/src/app/components/review-rating/review-rating.component.spec.ts b/projects/v3/src/app/components/review-rating/review-rating.component.spec.ts index 3c0ec65c5..3ac116f6d 100644 --- a/projects/v3/src/app/components/review-rating/review-rating.component.spec.ts +++ b/projects/v3/src/app/components/review-rating/review-rating.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { Observable, of, pipe } from 'rxjs'; import { HttpClientModule } from '@angular/common/http'; import { Router } from '@angular/router'; @@ -18,7 +18,7 @@ describe('ReviewRatingComponent', () => { let routerSpy: jasmine.SpyObj; let fastfeedbackSpy: jasmine.SpyObj; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ imports: [HttpClientModule], declarations: [ReviewRatingComponent], @@ -30,10 +30,7 @@ describe('ReviewRatingComponent', () => { }, { provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', { - alert: Promise.resolve(), - dismiss: Promise.resolve() - }), + useValue: jasmine.createSpyObj('NotificationsService', ['alert']), }, { provide: ReviewRatingService, @@ -76,51 +73,38 @@ describe('ReviewRatingComponent', () => { }); describe('when testing submitReviewRating()', () => { - beforeEach(() => { - serviceSpy.submitRating.calls.reset(); - routerSpy.navigate.calls.reset(); - }); - - it('should submit rating without navigation when redirect is null', async () => { - component.redirect = null; - component.moodSelected = 0; + afterEach(() => { component.ratingData = { assessment_review_id: 1, rating: 0.123, comment: '', tags: [] }; - serviceSpy.submitRating.and.returnValue(of('')); - await component.submitReviewRating(); - + component.submitReviewRating(); expect(serviceSpy.submitRating.calls.count()).toBe(1); expect(serviceSpy.submitRating.calls.first().args[0].rating).toEqual(0.12); expect(component.isSubmitting).toBe(false); - expect(routerSpy.navigate.calls.count()).toBe(0); + if (component.redirect) { + expect(routerSpy.navigate.calls.first().args[0]).toEqual(component.redirect); + } else { + expect(routerSpy.navigate.calls.count()).toBe(0); + } }); - - it('should submit rating and navigate when redirect is provided', async () => { - component.redirect = ['home']; + it('should submit rating', () => { + component.redirect = null; + component.moodSelected = 0; + component.ratingData.rating = 1; + }); + it('should submit rating and navigate', () => { + component.ratingData.rating = 1; component.moodSelected = 1; - component.ratingData = { - assessment_review_id: 1, - rating: 0.123, - comment: '', - tags: [] - }; - - serviceSpy.submitRating.and.returnValue(of('')); - await component.submitReviewRating(); - - expect(serviceSpy.submitRating.calls.count()).toBe(1); - expect(serviceSpy.submitRating.calls.first().args[0].rating).toEqual(0.12); - expect(component.isSubmitting).toBe(false); + component.redirect = ['home']; }); }); describe('submitReviewRating() - straightforward test', () => { - it('should submit rating and set ratingSessionEnd to true', async () => { + it('should trigger pulse check API when stay on same view', () => { component.redirect = null; component.ratingData = { @@ -133,19 +117,11 @@ describe('ReviewRatingComponent', () => { component.moodSelected = 0; serviceSpy.submitRating.and.returnValue(of('')); - await component.submitReviewRating(); + component.submitReviewRating(); expect(serviceSpy.submitRating.calls.count()).toBe(1); expect(serviceSpy.submitRating.calls.first().args[0].rating).toEqual(0.12); expect(component.isSubmitting).toBe(false); - expect(component.ratingSessionEnd).toBe(true); - }); - - it('should trigger pulse check API when dismissModal is called', async () => { - component.redirect = null; - component.reviewId = 1; - - fastfeedbackSpy.pullFastFeedback.calls.reset(); - await component.dismissModal(); + expect(routerSpy.navigate.calls.count()).toBe(0); expect(fastfeedbackSpy.pullFastFeedback).toHaveBeenCalledTimes(1); }); }); diff --git a/projects/v3/src/app/components/review-rating/review-rating.component.ts b/projects/v3/src/app/components/review-rating/review-rating.component.ts index d40ae7e07..0887b7398 100644 --- a/projects/v3/src/app/components/review-rating/review-rating.component.ts +++ b/projects/v3/src/app/components/review-rating/review-rating.component.ts @@ -1,5 +1,5 @@ import { firstValueFrom } from 'rxjs'; -import { Component, Inject, Input, OnInit, forwardRef } from '@angular/core'; +import { Component, Input, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { AlertController, ModalController } from '@ionic/angular'; import { ReviewRatingService, ReviewRating } from '@v3/services/review-rating.service'; @@ -8,7 +8,6 @@ import { FastFeedbackService } from '@v3/services/fast-feedback.service'; import { NotificationsService } from '../../services/notifications.service'; @Component({ - standalone: false, selector: 'app-review-rating', templateUrl: './review-rating.component.html', styleUrls: ['./review-rating.component.scss'] @@ -64,9 +63,8 @@ export class ReviewRatingComponent implements OnInit { private modalController: ModalController, private router: Router, private utils: UtilsService, - // types are 'any' to prevent design:paramtypes metadata from triggering circular dependency TDZ error - @Inject(forwardRef(() => FastFeedbackService)) private fastFeedbackService: any, - @Inject(forwardRef(() => NotificationsService)) private notificationsService: any, + private fastFeedbackService: FastFeedbackService, + private notificationsService: NotificationsService, ) {} ngOnInit(): void { diff --git a/projects/v3/src/app/components/slider/slider.component.html b/projects/v3/src/app/components/slider/slider.component.html index 2499a66eb..dfc53aeb2 100644 --- a/projects/v3/src/app/components/slider/slider.component.html +++ b/projects/v3/src/app/components/slider/slider.component.html @@ -42,12 +42,12 @@

{{question
- Learner's Answer: {{ getChoiceNameById(submission.answer) }} + Learner answer: {{ getChoiceNameById(submission.answer) }} - Reviewer's Answer: {{ getChoiceNameById(review.answer) }} + Expert answer: {{ getChoiceNameById(review.answer) }}
diff --git a/projects/v3/src/app/components/slider/slider.component.spec.ts b/projects/v3/src/app/components/slider/slider.component.spec.ts index b6b79a00f..0a58da6e8 100644 --- a/projects/v3/src/app/components/slider/slider.component.spec.ts +++ b/projects/v3/src/app/components/slider/slider.component.spec.ts @@ -114,7 +114,7 @@ describe('SliderComponent', () => { it('should get selected choice label with parameter', () => { expect(component.getSelectedChoiceLabel(2)).toBe('2'); - expect(component.getSelectedChoiceLabel()).toBe(component.innerValue?.toString() || ''); + expect(component.getSelectedChoiceLabel()).toBe(''); }); describe('Review functionality', () => { @@ -160,23 +160,13 @@ describe('SliderComponent', () => { describe('Edge cases', () => { it('should handle missing min/max gracefully', () => { - // reset the slider values to defaults before testing - component.sliderMin = 0; - component.sliderMax = 100; - component.generatedChoices = []; - component.question.min = undefined; component.question.max = undefined; component.ngOnInit(); - // when both min and max are undefined, the condition - // (this.question.min !== undefined || this.question.max !== undefined) is false - // so sliderMin and sliderMax remain at their initial/reset values expect(component.sliderMin).toBe(0); expect(component.sliderMax).toBe(100); - // Since the condition requires at least one of min/max to be defined, - // and both are undefined, generatedChoices won't be populated expect(component.generatedChoices.length).toBe(0); }); @@ -198,197 +188,4 @@ describe('SliderComponent', () => { expect(component.getReviewSliderValue()).toBe(3); }); }); - - describe('triggerSave()', () => { - beforeEach(() => { - component.question = { id: 10, type: 'slider', min: 1, max: 5, audience: ['submitter'], name: 'q', description: '', isRequired: false, canAnswer: true, canComment: false }; - component.submissionId = 50; - component.reviewId = 60; - component.submitActions$ = jasmine.createSpyObj('Subject', ['next']); - }); - - it('should emit review save action when doReview is true', () => { - component.doReview = true; - component.doAssessment = false; - component.innerValue = { answer: 3, comment: 'nice' }; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - reviewSave: { - reviewId: 60, - submissionId: 50, - questionId: 10, - answer: 3, - comment: 'nice', - }, - })); - }); - - it('should emit question save action when doAssessment is true', () => { - component.doAssessment = true; - component.doReview = false; - component.innerValue = 4; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - questionSave: { - submissionId: 50, - questionId: 10, - answer: 4, - }, - })); - }); - }); - - describe('_showSavedAnswers()', () => { - it('should call propagateChange with innerValue', () => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: 3 }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(''); - spyOn(component, 'propagateChange'); - - component['_showSavedAnswers'](); - - expect(component.propagateChange).toHaveBeenCalledWith(3); - }); - - it('should load review data when reviewStatus is "not start"', () => { - component.reviewStatus = 'not start'; - component.doReview = true; - component.review = { answer: 2, comment: 'a comment' }; - component.control = new FormControl(''); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ answer: 2, comment: 'a comment' }); - }); - - it('should preserve dirty control value in review mode', () => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { answer: 2, comment: 'saved' }; - component.control = new FormControl({ answer: 5, comment: 'edited' }); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ answer: 5, comment: 'edited' }); - }); - }); - - describe('isDisplayOnly()', () => { - it('should be true when reviewer has canAnswer false', () => { - component.doReview = true; - component.doAssessment = false; - component.question = { ...component.question, canAnswer: false }; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be true when status is feedback available', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'feedback available'; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be false when doing assessment', () => { - component.doAssessment = true; - component.doReview = false; - expect(component.isDisplayOnly).toBeFalse(); - }); - }); - - describe('hasSubmissionAnswer / hasReviewAnswer / hasAnyAnswer', () => { - it('hasSubmissionAnswer returns true when answer exists', () => { - component.submission = { answer: 3 }; - expect(component.hasSubmissionAnswer()).toBeTrue(); - }); - - it('hasSubmissionAnswer returns false when answer is null', () => { - component.submission = { answer: null }; - expect(component.hasSubmissionAnswer()).toBeFalse(); - }); - - it('hasReviewAnswer returns true when review answer exists', () => { - component.review = { answer: 4 }; - expect(component.hasReviewAnswer()).toBeTrue(); - }); - - it('hasReviewAnswer returns false when review answer is null', () => { - component.review = { answer: null }; - expect(component.hasReviewAnswer()).toBeFalse(); - }); - - it('hasAnyAnswer returns true when either exists', () => { - component.submission = { answer: 3 }; - component.review = { answer: null }; - expect(component.hasAnyAnswer()).toBeTrue(); - }); - - it('hasAnyAnswer returns false when neither exists', () => { - component.submission = { answer: null }; - component.review = { answer: null }; - expect(component.hasAnyAnswer()).toBeFalse(); - }); - }); - - describe('onLabelClick guard', () => { - it('should not call onChange when control is disabled', () => { - component.ngOnInit(); - component.control.disable(); - spyOn(component, 'onChange'); - - component.onLabelClick(0); - - expect(component.onChange).not.toHaveBeenCalled(); - }); - }); - - describe('writeValue()', () => { - it('should set innerValue from value', () => { - component.writeValue({ answer: 3, comment: 'test' }); - expect(component.innerValue).toEqual({ answer: 3, comment: 'test' }); - expect(component.comment).toBe('test'); - }); - - it('should not crash on null', () => { - const prevValue = component.innerValue; - component.writeValue(null); - expect(component.innerValue).toEqual(prevValue); - }); - }); - - describe('registerOnChange / registerOnTouched', () => { - it('should store propagateChange function', () => { - const fn = jasmine.createSpy(); - component.registerOnChange(fn); - component.propagateChange('test'); - expect(fn).toHaveBeenCalledWith('test'); - }); - - it('registerOnTouched should not throw', () => { - expect(() => component.registerOnTouched(() => {})).not.toThrow(); - }); - }); - - describe('audienceContainReviewer()', () => { - it('should return true when multiple audiences include reviewer', () => { - component.question = { ...component.question, audience: ['submitter', 'reviewer'] }; - expect(component.audienceContainReviewer()).toBeTrue(); - }); - - it('should return false for single audience', () => { - component.question = { ...component.question, audience: ['submitter'] }; - expect(component.audienceContainReviewer()).toBeFalse(); - }); - }); }); diff --git a/projects/v3/src/app/components/slider/slider.component.ts b/projects/v3/src/app/components/slider/slider.component.ts index 80298a2d2..0eec6c4b5 100644 --- a/projects/v3/src/app/components/slider/slider.component.ts +++ b/projects/v3/src/app/components/slider/slider.component.ts @@ -5,7 +5,6 @@ import { debounceTime } from 'rxjs/operators'; import { Question } from '../types/assessment'; @Component({ - standalone: false, selector: 'app-slider', templateUrl: 'slider.component.html', styleUrls: ['./slider.component.scss'], @@ -260,7 +259,7 @@ export class SliderComponent implements AfterViewInit, ControlValueAccessor, OnI return choiceId.toString(); } - // Get slider value for submission (Learner's Answer) + // Get slider value for submission (Learner's answer) getSubmissionSliderValue(): number { if (!this.submission?.answer) return this.sliderMin; diff --git a/projects/v3/src/app/components/support-popup/support-popup.component.html b/projects/v3/src/app/components/support-popup/support-popup.component.html index b1c1887b0..efff2de71 100644 --- a/projects/v3/src/app/components/support-popup/support-popup.component.html +++ b/projects/v3/src/app/components/support-popup/support-popup.component.html @@ -16,7 +16,7 @@ - +
diff --git a/projects/v3/src/app/components/support-popup/support-popup.component.spec.ts b/projects/v3/src/app/components/support-popup/support-popup.component.spec.ts index f97813dbd..f9bad00d8 100644 --- a/projects/v3/src/app/components/support-popup/support-popup.component.spec.ts +++ b/projects/v3/src/app/components/support-popup/support-popup.component.spec.ts @@ -103,15 +103,7 @@ describe('SupportPopupComponent', () => { it('should return false when selectedFile is truthy', () => { component.problemSubject = ''; component.problemContent = ''; - component.selectedFile = { - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', - url: 'http://example.com/test.jpg', - extension: 'jpg', - type: 'image/jpeg', - size: 1000 - }; + component.selectedFile = { handle: 'abc123' }; const result = component.isPristine(); @@ -194,16 +186,7 @@ describe('SupportPopupComponent', () => { it('should remove the selected file and call deleteFile with the file handle', fakeAsync(() => { filestackSpy.deleteFile = jasmine.createSpy().and.returnValue(of({})); - component.selectedFile = { - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', - url: 'http://example.com/test.jpg', - extension: 'jpg', - type: 'image/jpeg', - size: 1000, - handle: 'abc123' - }; + component.selectedFile = { handle: 'abc123' }; component.removeSelectedFile(); flushMicrotasks(); @@ -214,17 +197,7 @@ describe('SupportPopupComponent', () => { describe('uploadFile', () => { it('should call FilestackService open method and set the selectedFile on upload finished', fakeAsync(() => { - const mockResponse = { - bucket: 'test-bucket', - path: 'test-path', - name: 'test.jpg', - url: 'http://example.com/test.jpg', - extension: 'jpg', - type: 'image/jpeg', - size: 1000, - handle: 'abc123', - filename: 'test.jpg' - }; + const mockResponse = { filename: 'test.jpg', handle: 'abc123', url: 'http://example.com/test.jpg' }; filestackSpy.open = jasmine.createSpy().and.callFake(options => { return options.onFileUploadFinished(mockResponse); @@ -307,9 +280,9 @@ describe('SupportPopupComponent', () => { file: undefined, consentToProcess: true, }); - // on error, form is NOT cleared - only cleared on success - expect(component.problemContent).toBe('Test Content'); - expect(component.problemSubject).toBe('Test Subject'); + expect(component.selectedFile).toBeUndefined(); + expect(component.problemContent).toBe(''); + expect(component.problemSubject).toBe(''); expect(component.isShowSuccess).toBeFalse(); expect(component.isShowError).toBeTrue(); }); diff --git a/projects/v3/src/app/components/support-popup/support-popup.component.ts b/projects/v3/src/app/components/support-popup/support-popup.component.ts index 71238ef00..b0e275daf 100644 --- a/projects/v3/src/app/components/support-popup/support-popup.component.ts +++ b/projects/v3/src/app/components/support-popup/support-popup.component.ts @@ -8,7 +8,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { NotificationsService } from '@v3/app/services/notifications.service'; @Component({ - standalone: false, selector: 'app-support-popup', templateUrl: './support-popup.component.html', styleUrls: ['./support-popup.component.scss'], diff --git a/projects/v3/src/app/components/team-member-selector/team-member-selector.component.html b/projects/v3/src/app/components/team-member-selector/team-member-selector.component.html index 993d120af..46530122c 100644 --- a/projects/v3/src/app/components/team-member-selector/team-member-selector.component.html +++ b/projects/v3/src/app/components/team-member-selector/team-member-selector.component.html @@ -8,8 +8,8 @@

- Learner's Answer - Reviewer's Answer + Learner's answer + Expert's answer

@@ -46,21 +46,18 @@

-
- - -
- + [disabled]="control?.disabled" + > + @@ -87,7 +84,7 @@

-
+ - Learner's Answer + Learner's answer

-
+ diff --git a/projects/v3/src/app/components/team-member-selector/team-member-selector.component.spec.ts b/projects/v3/src/app/components/team-member-selector/team-member-selector.component.spec.ts index aa8a2d3a4..b56b900a8 100644 --- a/projects/v3/src/app/components/team-member-selector/team-member-selector.component.spec.ts +++ b/projects/v3/src/app/components/team-member-selector/team-member-selector.component.spec.ts @@ -51,8 +51,8 @@ describe('TeamMemberSelectorComponent', () => { component.review = {}; component.control = new FormControl(''); fixture.detectChanges(); - // component sets innerValue from submission.answer when control is pristine expect(component.innerValue).toEqual(component.submission.answer); + expect(component.control.value).toEqual(component.submission.answer); }); it('should get correct data for in progress review', () => { @@ -74,12 +74,9 @@ describe('TeamMemberSelectorComponent', () => { }; component.control = new FormControl(''); fixture.detectChanges(); - // component sets innerValue to review data - expect(component.innerValue).toEqual({ - answer: component.review.answer, - comment: component.review.comment - }); + expect(component.innerValue).toEqual(component.review); expect(component.comment).toEqual(component.review.comment); + expect(component.control.value).toEqual(component.review); }); }); @@ -166,7 +163,6 @@ describe('TeamMemberSelectorComponent', () => { component.submission = { answer: 'Test submission answer', }; - component.control = new FormControl(''); component['_showSavedAnswers'](); @@ -183,51 +179,6 @@ describe('TeamMemberSelectorComponent', () => { expect(component.innerValue).toBeUndefined(); }); - - it('should preserve control value when control is dirty in review mode', () => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { - comment: 'saved comment', - answer: 'saved answer', - }; - component.control = new FormControl({ answer: 'user edited', comment: 'user comment' }); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ answer: 'user edited', comment: 'user comment' }); - expect(component.comment).toBe('user comment'); - }); - - it('should fallback to review comment when dirty value has no comment', () => { - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { - comment: 'saved comment', - answer: 'saved answer', - }; - component.control = new FormControl({ answer: 'user edited' }); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.comment).toBe('saved comment'); - }); - - it('should preserve control value when control is dirty in assessment mode', () => { - component.reviewStatus = ''; - component.doReview = false; - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: 'saved' }; - component.control = new FormControl('user edited'); - component.control.markAsDirty(); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toBe('user edited'); - }); }); describe('audienceContainReviewer()', () => { @@ -255,148 +206,5 @@ describe('TeamMemberSelectorComponent', () => { expect(component.audienceContainReviewer()).toBe(false); }); }); - - describe('triggerSave()', () => { - beforeEach(() => { - component.question = { id: 15, audience: [] }; - component.submissionId = 70; - component.reviewId = 80; - component.submitActions$ = jasmine.createSpyObj('Subject', ['next']); - }); - - it('should emit review save action when doReview is true', () => { - component.doReview = true; - component.doAssessment = false; - component.innerValue = { answer: 'member-1', comment: 'good choice' }; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - reviewSave: { - reviewId: 80, - submissionId: 70, - questionId: 15, - answer: 'member-1', - comment: 'good choice', - }, - })); - }); - - it('should emit question save action when doAssessment is true', () => { - component.doAssessment = true; - component.doReview = false; - component.innerValue = 'member-2'; - - component.triggerSave(); - - expect(component.submitActions$.next).toHaveBeenCalledWith(jasmine.objectContaining({ - autoSave: true, - goBack: false, - questionSave: { - submissionId: 70, - questionId: 15, - answer: 'member-2', - }, - })); - }); - }); - - describe('onLabelToggle / onLabelToggleReview', () => { - beforeEach(() => { - component.control = new FormControl(''); - component.submitActions$ = new Subject(); - spyOn(component, 'onChange'); - }); - - it('onLabelToggle should call onChange with id', () => { - component.onLabelToggle('member-1'); - expect(component.onChange).toHaveBeenCalledWith('member-1'); - }); - - it('onLabelToggleReview should call onChange with id and answer type', () => { - component.onLabelToggleReview('member-1'); - expect(component.onChange).toHaveBeenCalledWith('member-1', 'answer'); - }); - }); - - describe('isDisplayOnly()', () => { - it('should be true when reviewer has canAnswer false', () => { - component.doReview = true; - component.doAssessment = false; - component.question = { canAnswer: false, audience: [] }; - expect(component.isDisplayOnly).toBeTrue(); - }); - - it('should be true when status is feedback available', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'feedback available'; - component.submission = { answer: 'member-1' }; - expect(component.isDisplayOnly).toBeTruthy(); - }); - - it('should be true when status is pending review', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'pending review'; - component.submission = { answer: 'member-1' }; - expect(component.isDisplayOnly).toBeTruthy(); - }); - - it('should be true when done with empty review status', () => { - component.doAssessment = false; - component.doReview = false; - component.submissionStatus = 'done'; - component.reviewStatus = ''; - component.submission = { answer: 'member-1' }; - expect(component.isDisplayOnly).toBeTruthy(); - }); - - it('should be false when doing assessment', () => { - component.doAssessment = true; - component.doReview = false; - expect(component.isDisplayOnly).toBeFalse(); - }); - - it('should be false when doing review with canAnswer true', () => { - component.doAssessment = false; - component.doReview = true; - component.question = { canAnswer: true, audience: [] }; - expect(component.isDisplayOnly).toBeFalse(); - }); - }); - - describe('_showSavedAnswers() - "not start" review status', () => { - it('should load review data when reviewStatus is "not start"', () => { - component.reviewStatus = 'not start'; - component.doReview = true; - component.review = { answer: 'member-x', comment: 'test' }; - component.control = new FormControl(''); - - component['_showSavedAnswers'](); - - expect(component.innerValue).toEqual({ - answer: 'member-x', - comment: 'test', - }); - }); - }); - - describe('_showSavedAnswers() - propagateChange call', () => { - it('should call propagateChange with innerValue', () => { - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: 'member-1' }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(''); - spyOn(component, 'propagateChange'); - - component['_showSavedAnswers'](); - - expect(component.propagateChange).toHaveBeenCalledWith('member-1'); - }); - }); }); + diff --git a/projects/v3/src/app/components/team-member-selector/team-member-selector.component.ts b/projects/v3/src/app/components/team-member-selector/team-member-selector.component.ts index 1f27b232f..f0f83c6d7 100644 --- a/projects/v3/src/app/components/team-member-selector/team-member-selector.component.ts +++ b/projects/v3/src/app/components/team-member-selector/team-member-selector.component.ts @@ -3,7 +3,6 @@ import { NG_VALUE_ACCESSOR, ControlValueAccessor, FormControl, AbstractControl } import { Subject } from 'rxjs'; @Component({ - standalone: false, selector: 'app-team-member-selector', templateUrl: 'team-member-selector.component.html', styleUrls: ['team-member-selector.component.scss'], diff --git a/projects/v3/src/app/components/text/text.component.html b/projects/v3/src/app/components/text/text.component.html index 6b6138606..f9f39e864 100644 --- a/projects/v3/src/app/components/text/text.component.html +++ b/projects/v3/src/app/components/text/text.component.html @@ -2,7 +2,7 @@

{{question.n
-

Learner's Answer

+

Learner's answer

@@ -10,7 +10,7 @@

{{question.n -

Reviewer's Answer

+

Expert's answer

@@ -64,8 +64,8 @@

{{question.n
-

Learner's Answer

- +

Learner's answer

+

@@ -78,7 +78,7 @@

Learner's Answer

{ let component: TextComponent; @@ -17,18 +13,8 @@ describe('TextComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [IonicModule.forRoot(), FormsModule], - declarations: [TextComponent, LanguageDetectionPipe], + declarations: [TextComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], - providers: [ - { provide: UtilsService, useClass: TestUtils }, - { - provide: DomSanitizer, - useValue: { - bypassSecurityTrustHtml: (val: string) => val, - sanitize: (ctx: any, val: string) => val, - }, - }, - ], }) .compileComponents(); })); @@ -110,20 +96,16 @@ describe('TextComponent', () => { }); it('should get correct data when writing submission answer', () => { component.onChange(); - expect(component.innerValue).toBe(component.answer); + expect(component.innerValue).toEqual(component.answer); }); it('should get correct data when writing review answer', () => { component.innerValue = { answer: '', comment: '' }; - component.doReview = true; component.onChange('answer'); - expect(component.innerValue.answer).toBe(component.answer); - expect(component.innerValue.comment).toEqual(''); + expect(component.innerValue).toEqual({ answer: component.answer, comment: '' }); }); it('should get correct data when writing review comment', () => { - component.innerValue = { answer: '', comment: '' }; - component.doReview = true; component.onChange('comment'); - expect(component.innerValue.comment).toBe(component.comment); + expect(component.innerValue).toEqual({ answer: '', comment: component.comment }); }); }); @@ -245,10 +227,13 @@ describe('TextComponent', () => { describe('when testing ngAfterViewInit()', () => { it('should set up auto-save subscription when answerRef is available', fakeAsync(() => { - // create a mock input event with a proper target value - const mockInputEvent = { target: { value: 'test' } }; + const mockIonInput = { + pipe: jasmine.createSpy('pipe').and.returnValue({ + subscribe: jasmine.createSpy('subscribe').and.returnValue({ closed: false, unsubscribe: () => {} }) + }) + }; - component.answerRef = { ionInput: of(mockInputEvent) } as any; + component.answerRef = { ionInput: of('test') } as any; spyOn(component, 'triggerSave'); component.ngAfterViewInit(); @@ -288,8 +273,7 @@ describe('TextComponent', () => { target: { firstChild: mockTextarea } }; - // use proper Edge userAgent format that matches the regex /edge\//i - spyOnProperty(window.navigator, 'userAgent', 'get').and.returnValue('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Edge/91.0.864.59'); + spyOnProperty(window.navigator, 'userAgent', 'get').and.returnValue('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.59'); component.onFocus(mockEvent); @@ -305,8 +289,7 @@ describe('TextComponent', () => { target: { firstChild: mockTextarea } }; - // use proper Edge userAgent format that matches the regex /edge\//i - spyOnProperty(window.navigator, 'userAgent', 'get').and.returnValue('Mozilla/5.0 (Windows NT 10.0; Win64; x64) Edge/91.0.864.59'); + spyOnProperty(window.navigator, 'userAgent', 'get').and.returnValue('Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0 Edge/91.0.864.59'); component.onFocus(mockEvent); @@ -409,9 +392,8 @@ describe('TextComponent', () => { expect(component.innerValue.comment).toEqual('test comment'); expect(component.innerValue.answer).toEqual('test answer'); - // note: component.comment and component.answer become strings after _showSavedAnswers - expect(component.comment as any).toEqual('test comment'); - expect(component.answer as any).toEqual('test answer'); + expect(component.comment).toEqual('test comment'); + expect(component.answer).toEqual('test answer'); }); it('should not set values when conditions are not met', () => { @@ -421,12 +403,10 @@ describe('TextComponent', () => { component.reviewStatus = 'completed'; component.doReview = false; component.control = new FormControl('test'); - component.innerValue = 'original'; component.ngOnInit(); - // innerValue remains unchanged since no conditions were met - expect(component.innerValue).toBe('original'); + expect(component.control.value).toBe('test'); }); it('should handle missing review data gracefully', () => { @@ -438,7 +418,7 @@ describe('TextComponent', () => { component.ngOnInit(); - expect(component.innerValue).toEqual({ answer: undefined, comment: undefined }); + expect(component.innerValue).toEqual({ answer: [], comment: '' }); }); it('should handle missing submission data gracefully', () => { @@ -457,20 +437,15 @@ describe('TextComponent', () => { describe('when testing onChange() edge cases', () => { it('should handle onChange when innerValue is not initialized for review', () => { component.innerValue = null; - component.doReview = true; - const answerControl = new FormControl('new answer'); - component.answer = answerControl as any; + component.answer = new FormControl('new answer'); component.onChange('answer'); - // component stores the FormControl reference, not its value - expect(component.innerValue.answer).toBe(answerControl); - expect(component.innerValue.comment).toEqual(''); + expect(component.innerValue).toEqual({ answer: 'new answer', comment: '' }); }); it('should propagate changes correctly', () => { spyOn(component, 'propagateChange'); - component.answer = new FormControl('test') as any; - component.doReview = false; + component.answer = new FormControl('test'); component.onChange(); @@ -498,82 +473,5 @@ describe('TextComponent', () => { }); }); - describe('_showSavedAnswers() - pristine check for pagination persistence', () => { - const dummyQuestion = { - id: 1, name: '', type: 'text', description: '', - isRequired: true, canComment: false, canAnswer: true, choices: [], audience: [] - }; - - describe('review mode', () => { - beforeEach(() => { - component.question = dummyQuestion; - component.reviewStatus = 'in progress'; - component.doReview = true; - component.review = { answer: 'saved answer', comment: 'saved comment' }; - component.control = new FormControl(''); - component.submissionStatus = ''; - component.doAssessment = false; - }); - - it('should use saved review data when control is pristine', () => { - component.ngOnInit(); - - expect(component.innerValue).toEqual(component.review); - }); - - it('should preserve control value when control is dirty', () => { - const dirtyValue = { answer: 'user edited', comment: 'user comment' }; - component.control.setValue(dirtyValue); - component.control.markAsDirty(); - - component.ngOnInit(); - - expect(component.innerValue).toEqual(dirtyValue); - }); - }); - - describe('assessment mode', () => { - beforeEach(() => { - component.question = dummyQuestion; - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: 'saved submission answer' }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(''); - }); - - it('should use saved submission answer when control is pristine', () => { - component.ngOnInit(); - - expect(component.innerValue).toBe('saved submission answer'); - }); - - it('should preserve control value when control is dirty', () => { - component.control.setValue('user edited'); - component.control.markAsDirty(); - - component.ngOnInit(); - - expect(component.innerValue).toBe('user edited'); - }); - }); - - it('should call propagateChange with innerValue', () => { - component.question = dummyQuestion; - component.submissionStatus = 'in progress'; - component.doAssessment = true; - component.submission = { answer: 'test' }; - component.reviewStatus = ''; - component.doReview = false; - component.control = new FormControl(''); - spyOn(component, 'propagateChange'); - - component.ngOnInit(); - - expect(component.propagateChange).toHaveBeenCalled(); - }); - }); - }); diff --git a/projects/v3/src/app/components/text/text.component.ts b/projects/v3/src/app/components/text/text.component.ts index b3c7cac3c..1bb46cb1e 100644 --- a/projects/v3/src/app/components/text/text.component.ts +++ b/projects/v3/src/app/components/text/text.component.ts @@ -6,7 +6,6 @@ import { debounceTime, distinctUntilChanged, filter, map } from 'rxjs/operators' import { Question } from '../types/assessment'; @Component({ - standalone: false, selector: 'app-text', templateUrl: 'text.component.html', styleUrls: ['text.component.scss'], diff --git a/projects/v3/src/app/components/todo-card/todo-card.component.spec.ts b/projects/v3/src/app/components/todo-card/todo-card.component.spec.ts index 5fd23f1d4..ff2295bae 100644 --- a/projects/v3/src/app/components/todo-card/todo-card.component.spec.ts +++ b/projects/v3/src/app/components/todo-card/todo-card.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { TodoCardComponent } from './todo-card.component'; @@ -33,7 +33,7 @@ describe('TodoCardComponent', () => { let fixture: ComponentFixture; let page: Page; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ schemas: [ CUSTOM_ELEMENTS_SCHEMA ], declarations: [ TodoCardComponent ], diff --git a/projects/v3/src/app/components/todo-card/todo-card.component.ts b/projects/v3/src/app/components/todo-card/todo-card.component.ts index 11c42f27f..6d50ad66e 100644 --- a/projects/v3/src/app/components/todo-card/todo-card.component.ts +++ b/projects/v3/src/app/components/todo-card/todo-card.component.ts @@ -2,7 +2,6 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { TodoItem } from '@v3/app/services/notifications.service'; @Component({ - standalone: false, selector: 'app-todo-card', templateUrl: './todo-card.component.html', styleUrls: ['./todo-card.component.scss'] diff --git a/projects/v3/src/app/components/topic/topic.component.spec.ts b/projects/v3/src/app/components/topic/topic.component.spec.ts index 88df682f3..64fd29e2c 100644 --- a/projects/v3/src/app/components/topic/topic.component.spec.ts +++ b/projects/v3/src/app/components/topic/topic.component.spec.ts @@ -15,7 +15,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { TestUtils } from '@testingv3/utils'; import { ActivityService } from '@v3/services/activity.service'; import { EmbedVideoService } from '@v3/services/ngx-embed-video.service'; -import { ModalController } from '@ionic/angular'; describe('TopicComponent', () => { let component: TopicComponent; @@ -31,12 +30,12 @@ describe('TopicComponent', () => { let activitySpy: jasmine.SpyObj; beforeEach(async () => { - topicSpy = jasmine.createSpyObj('TopicService', ['getTopic', 'getTopicProgress', 'updateTopicProgress', 'clearTopic']); + topicSpy = jasmine.createSpyObj('TopicService', ['getTopic', 'getTopicProgress', 'updateTopicProgress']); filestackSpy = jasmine.createSpyObj('FilestackService', ['previewFile']); embedSpy = jasmine.createSpyObj('EmbedVideoService', ['embed']); - embedSpy.embed.and.returnValue(''); // return valid embed html sharedSpy = jasmine.createSpyObj('SharedService', ['stopPlayingVideos']); routerSpy = jasmine.createSpyObj('Router', ['navigate']); + utilsSpy = jasmine.createSpyObj('UtilsService', ['downloadFile']); notificationSpy = jasmine.createSpyObj('NotificationsService', ['alert', 'presentToast']); storageSpy = jasmine.createSpyObj('BrowserStorageService', ['getUser', 'get', 'remove']); activitySpy = jasmine.createSpyObj('ActivityService', ['gotoNextTask']); @@ -53,16 +52,14 @@ describe('TopicComponent', () => { { provide: NotificationsService, useValue: notificationSpy }, { provide: SharedService, useValue: sharedSpy }, { provide: BrowserStorageService, useValue: storageSpy }, - { provide: UtilsService, useClass: TestUtils }, + { provide: UtilsService, useValue: utilsSpy }, { provide: ActivityService, useValue: activitySpy }, { provide: ActivatedRouteStub, useValue: new ActivatedRouteStub({ activityId: 1, id: 2 }) }, - { provide: ModalController, useValue: jasmine.createSpyObj('ModalController', ['create', 'dismiss']) }, ] }).compileComponents(); fixture = TestBed.createComponent(TopicComponent); component = fixture.componentInstance; - utilsSpy = TestBed.inject(UtilsService) as jasmine.SpyObj; storageSpy.getUser.and.returnValue({ teamId: 1, projectId: 2 }); storageSpy.get.and.returnValue({}); @@ -73,46 +70,27 @@ describe('TopicComponent', () => { }); it('should call stopPlayingVideos on ionViewWillLeave', () => { - sharedSpy.stopPlayingVideos.and.returnValue(undefined); + sharedSpy.stopPlayingVideos.and.returnValue(''); component.ionViewWillLeave(); expect(sharedSpy.stopPlayingVideos).toHaveBeenCalledTimes(1); }); describe('ngOnChanges', () => { it('should embed video when video element found', fakeAsync(() => { - const originalQSA = component['document'].querySelectorAll.bind(component['document']); - spyOn(component['document'], 'querySelectorAll').and.callFake((selector: string) => { - if (selector === 'audio' || selector === 'video' || selector === '.plyr__video-embed') { - return [] as any; - } - if (selector === '.video-embed') { - return [{ - classList: { - add: () => true, - remove: () => true, - contains: jasmine.createSpy('contains').and.returnValue(true), - }, - nodeName: 'VIDEO', - setAttribute: jasmine.createSpy('setAttribute'), - removeAttribute: jasmine.createSpy('removeAttribute'), - innerHTML: '', - }] as any; + spyOn(component['document'], 'querySelectorAll').and.returnValue([ + { + classList: { + add: () => true, + remove: () => true, + contains: jasmine.createSpy('contains').and.returnValue(true), + }, + nodeName: 'VIDEO', } - return originalQSA(selector); - }); + ] as any); - component.topic = { - videolink: 'test.com/vimeo', - } as any; - component.ngOnChanges({ - topic: { - currentValue: component.topic, - firstChange: true, - previousValue: undefined, - isFirstChange: () => true - } - }); - expect(component.continuing).toEqual(false); + component.topic = { videolink: 'test.com/vimeo' } as any; + component.ngOnChanges(); + expect(component.continuing).toBe(false); tick(500); @@ -120,38 +98,20 @@ describe('TopicComponent', () => { })); it('should not embed video when no video element found', fakeAsync(() => { - const originalQSA = component['document'].querySelectorAll.bind(component['document']); - spyOn(component['document'], 'querySelectorAll').and.callFake((selector: string) => { - if (selector === 'audio' || selector === 'video' || selector === '.plyr__video-embed') { - return [] as any; - } - if (selector === '.video-embed') { - return [{ - classList: { - add: () => true, - remove: () => true, - contains: jasmine.createSpy('contains').and.returnValue(false), - }, - nodeName: 'NON_VIDEO', - setAttribute: jasmine.createSpy('setAttribute'), - removeAttribute: jasmine.createSpy('removeAttribute'), - }] as any; + spyOn(component['document'], 'querySelectorAll').and.returnValue([ + { + classList: { + add: () => true, + remove: () => true, + contains: jasmine.createSpy('contains').and.returnValue(false), + }, + nodeName: 'NON_VIDEO', } - return originalQSA(selector); - }); + ] as any); - component.topic = { - videolink: 'test.com', - } as any; - component.ngOnChanges({ - topic: { - currentValue: component.topic, - firstChange: true, - previousValue: undefined, - isFirstChange: () => true - } - }); - expect(component.continuing).toEqual(false); + component.topic = { videolink: 'test.com' } as any; + component.ngOnChanges(); + expect(component.continuing).toBe(false); tick(500); @@ -177,7 +137,7 @@ describe('TopicComponent', () => { it('should handle preview file failure', fakeAsync(() => { const SAMPLE_RESULT = 'FAILED_SAMPLE'; let result: any; - notificationSpy.alert.and.returnValue(Promise.resolve(SAMPLE_RESULT as any)); + notificationSpy.alert.and.returnValue(Promise.resolve(SAMPLE_RESULT)); filestackSpy.previewFile.and.rejectWith(new Error('File preview test error')); component.isLoadingPreview = false; @@ -237,6 +197,7 @@ describe('TopicComponent', () => { const file = { url: 'https://example.com/document.pdf', name: 'document.pdf' }; component.actionBtnClick(file, 1); expect(window.open).toHaveBeenCalledWith(file.url, '_blank'); + expect(notificationSpy.presentToast).toHaveBeenCalled(); }); it('should open new tab for non-filestack url even without extension', () => { @@ -307,7 +268,7 @@ describe('TopicComponent', () => { describe('previewVideoFile', () => { it('should open video modal with mp4 mime type', async () => { const modalSpy = jasmine.createSpyObj('Modal', ['present']); - (component['modalController'].create as jasmine.Spy).and.returnValue(Promise.resolve(modalSpy)); + spyOn(component['modalController'], 'create').and.returnValue(Promise.resolve(modalSpy)); const file = { url: 'https://example.com/video.mp4', name: 'test.mp4' }; await component.previewVideoFile(file); @@ -327,7 +288,7 @@ describe('TopicComponent', () => { it('should open video modal with webm mime type', async () => { const modalSpy = jasmine.createSpyObj('Modal', ['present']); - (component['modalController'].create as jasmine.Spy).and.returnValue(Promise.resolve(modalSpy)); + spyOn(component['modalController'], 'create').and.returnValue(Promise.resolve(modalSpy)); const file = { url: 'https://example.com/video.webm', name: 'test.webm' }; await component.previewVideoFile(file); @@ -347,7 +308,7 @@ describe('TopicComponent', () => { it('should open video modal with ogg mime type', async () => { const modalSpy = jasmine.createSpyObj('Modal', ['present']); - (component['modalController'].create as jasmine.Spy).and.returnValue(Promise.resolve(modalSpy)); + spyOn(component['modalController'], 'create').and.returnValue(Promise.resolve(modalSpy)); const file = { url: 'https://example.com/video.ogg', name: 'test.ogg' }; await component.previewVideoFile(file); diff --git a/projects/v3/src/app/components/topic/topic.component.ts b/projects/v3/src/app/components/topic/topic.component.ts index 7c70b67e5..1f58c77e0 100644 --- a/projects/v3/src/app/components/topic/topic.component.ts +++ b/projects/v3/src/app/components/topic/topic.component.ts @@ -3,7 +3,7 @@ import { Component, Input, Output, EventEmitter, Inject, OnChanges, SimpleChange import { DOCUMENT } from '@angular/common'; import { UtilsService } from '@v3/services/utils.service'; import { SharedService } from '@v3/services/shared.service'; -import Plyr from 'plyr'; +import * as Plyr from 'plyr'; import { EmbedVideoService } from '@v3/services/ngx-embed-video.service'; import { SafeHtml, DomSanitizer } from '@angular/platform-browser'; import { FilestackService } from '@v3/app/services/filestack.service'; @@ -15,7 +15,6 @@ import { ModalController } from '@ionic/angular'; import { FilePopupComponent } from '../file-popup/file-popup.component'; @Component({ - standalone: false, selector: 'app-topic', templateUrl: './topic.component.html', styleUrls: ['./topic.component.scss'] diff --git a/projects/v3/src/app/components/traffic-light-group/traffic-light-group.component.spec.ts b/projects/v3/src/app/components/traffic-light-group/traffic-light-group.component.spec.ts deleted file mode 100644 index d123b0d1c..000000000 --- a/projects/v3/src/app/components/traffic-light-group/traffic-light-group.component.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -import { FastFeedbackService } from '@v3/services/fast-feedback.service'; -import { BrowserStorageService } from '@v3/app/services/storage.service'; -import { NotificationsService } from '@v3/services/notifications.service'; -import { of } from 'rxjs'; -import { TrafficLightGroupComponent } from './traffic-light-group.component'; - -describe('TrafficLightGroupComponent', () => { - let component: TrafficLightGroupComponent; - let fastFeedbackService: jasmine.SpyObj; - let storageService: jasmine.SpyObj; - let notificationsService: jasmine.SpyObj; - - beforeEach(() => { - fastFeedbackService = jasmine.createSpyObj('FastFeedbackService', [ - 'pullFastFeedback', - ]); - fastFeedbackService.pullFastFeedback.and.returnValue(of(null) as any); - - notificationsService = jasmine.createSpyObj('NotificationsService', [ - 'showTeamCheckInAlert', - ]); - notificationsService.showTeamCheckInAlert.and.returnValue(Promise.resolve() as any); - - storageService = jasmine.createSpyObj('BrowserStorageService', ['getUser', 'set']); - storageService.getUser.and.returnValue({ role: 'participant' } as any); - - component = new TrafficLightGroupComponent( - fastFeedbackService, - storageService, - notificationsService - ); - component.lights = { - self: 0.2, - expert: 0.6, - team: 0.7, - teams: [{ teamName: 'Team A', average: 0.4 }] - } as any; - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should identify mentor role', () => { - storageService.getUser.and.returnValue({ role: 'mentor' } as any); - - expect(component.isMentor).toBeTrue(); - }); - - it('should expose learner groups', () => { - expect(component.learnerGroups).toEqual(['self', 'team', 'expert']); - }); - - it('should expose team groups from lights', () => { - expect(component.teamGroups).toEqual([{ teamName: 'Team A', average: 0.4 }]); - }); - - it('should return empty team groups when lights undefined', () => { - component.lights = undefined; - - expect(component.teamGroups).toEqual([]); - }); - - it('should not navigate when displayOnly is true', async () => { - component.displayOnly = true; - - await component.navigateToPulseCheck('self'); - - expect(fastFeedbackService.pullFastFeedback).not.toHaveBeenCalled(); - expect(storageService.set).not.toHaveBeenCalled(); - }); - - it('should navigate to pulse check and reset loading state', async () => { - await component.navigateToPulseCheck('self'); - - expect(component.loading.self).toBeFalse(); - expect(fastFeedbackService.pullFastFeedback).toHaveBeenCalledWith({ - skipChecking: true, - closable: true - }); - expect(storageService.set).toHaveBeenCalledWith('fastFeedbackOpening', false); - }); - - it('should route self click to pulse check', async () => { - spyOn(component, 'navigateToPulseCheck').and.returnValue(Promise.resolve()); - - await component.handleTrafficLightClick('self', 0.2); - - expect(component.navigateToPulseCheck).toHaveBeenCalledWith('self'); - expect(notificationsService.showTeamCheckInAlert).not.toHaveBeenCalled(); - }); - - it('should skip alert when value is undefined', async () => { - await component.handleTrafficLightClick('team', undefined as any); - - expect(notificationsService.showTeamCheckInAlert).not.toHaveBeenCalled(); - }); - - it('should skip alert when value is above threshold', async () => { - await component.handleTrafficLightClick('team', 0.8); - - expect(notificationsService.showTeamCheckInAlert).not.toHaveBeenCalled(); - }); - - it('should show alert when value is at or below threshold', async () => { - await component.handleTrafficLightClick('team', 0.65); - - expect(notificationsService.showTeamCheckInAlert).toHaveBeenCalled(); - }); -}); diff --git a/projects/v3/src/app/components/traffic-light-group/traffic-light-group.component.ts b/projects/v3/src/app/components/traffic-light-group/traffic-light-group.component.ts index 0ef1dfe41..799aee3bb 100644 --- a/projects/v3/src/app/components/traffic-light-group/traffic-light-group.component.ts +++ b/projects/v3/src/app/components/traffic-light-group/traffic-light-group.component.ts @@ -4,7 +4,6 @@ import { BrowserStorageService } from "@v3/app/services/storage.service"; import { NotificationsService } from '@v3/services/notifications.service'; @Component({ - standalone: false, selector: "app-traffic-light-group", templateUrl: "./traffic-light-group.component.html", styleUrls: ["./traffic-light-group.component.scss"], diff --git a/projects/v3/src/app/components/traffic-light/traffic-light.component.spec.ts b/projects/v3/src/app/components/traffic-light/traffic-light.component.spec.ts deleted file mode 100644 index 943b34d10..000000000 --- a/projects/v3/src/app/components/traffic-light/traffic-light.component.spec.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { TrafficLightComponent } from './traffic-light.component'; - -describe('TrafficLightComponent', () => { - let component: TrafficLightComponent; - - beforeEach(() => { - component = new TrafficLightComponent(); - }); - - it('should create', () => { - expect(component).toBeTruthy(); - }); - - it('should return grey when value is null', () => { - component.value = null; - - expect(component.color).toBe('grey'); - }); - - it('should return grey when value is undefined', () => { - component.value = undefined as any; - - expect(component.color).toBe('grey'); - }); - - it('should return red when value is less than 0.32', () => { - component.value = 0.31; - - expect(component.color).toBe('red'); - }); - - it('should return green when value is greater than 0.65', () => { - component.value = 0.66; - - expect(component.color).toBe('green'); - }); - - it('should return orange when value is in threshold range', () => { - component.value = 0.5; - - expect(component.color).toBe('orange'); - }); - - it('should return orange at exact lower and upper thresholds', () => { - component.value = 0.32; - expect(component.color).toBe('orange'); - - component.value = 0.65; - expect(component.color).toBe('orange'); - }); -}); diff --git a/projects/v3/src/app/components/traffic-light/traffic-light.component.ts b/projects/v3/src/app/components/traffic-light/traffic-light.component.ts index 0b3f4ab63..0088fdc6c 100644 --- a/projects/v3/src/app/components/traffic-light/traffic-light.component.ts +++ b/projects/v3/src/app/components/traffic-light/traffic-light.component.ts @@ -1,7 +1,6 @@ import { Component, Input } from '@angular/core'; @Component({ - standalone: false, selector: 'app-traffic-light', templateUrl: './traffic-light.component.html', styleUrls: ['./traffic-light.component.scss'] diff --git a/projects/v3/src/app/components/uppy-uploader/uppy-uploader.component.ts b/projects/v3/src/app/components/uppy-uploader/uppy-uploader.component.ts index 3be19ae40..e6ca39d98 100644 --- a/projects/v3/src/app/components/uppy-uploader/uppy-uploader.component.ts +++ b/projects/v3/src/app/components/uppy-uploader/uppy-uploader.component.ts @@ -10,7 +10,6 @@ type FileMetadata = { [key: string]: any }; type FileBody = { [key: string]: any }; @Component({ - standalone: false, selector: "app-uppy-uploader", templateUrl: "./uppy-uploader.component.html", styleUrls: ["./uppy-uploader.component.scss"], @@ -24,7 +23,7 @@ export class UppyUploaderComponent implements OnInit, OnDestroy { uppy: Uppy; // Uppy UI - uppyProps: any; + uppyProps = this.uppyUploaderService.uppyProps; s3Info: { path: string; @@ -38,7 +37,6 @@ export class UppyUploaderComponent implements OnInit, OnDestroy { private storageService: BrowserStorageService, private uppyUploaderService: UppyUploaderService, ) { - this.uppyProps = this.uppyUploaderService.uppyProps; this.uppyProps.height = '500px'; this.uppyProps.note = "Upload a file here"; } diff --git a/projects/v3/src/app/components/uppy-uploader/uppy-uploader.service.spec.ts b/projects/v3/src/app/components/uppy-uploader/uppy-uploader.service.spec.ts deleted file mode 100644 index 4c43d8f7a..000000000 --- a/projects/v3/src/app/components/uppy-uploader/uppy-uploader.service.spec.ts +++ /dev/null @@ -1,145 +0,0 @@ -import { TestBed } from '@angular/core/testing'; -import { ModalController } from '@ionic/angular'; -import { UppyUploaderService } from './uppy-uploader.service'; -import { BrowserStorageService } from '../../services/storage.service'; -import { Uppy, UppyFile } from '@uppy/core'; -import { environment } from '../../../environments/environment'; - -describe('UppyUploaderService', () => { - let service: UppyUploaderService; - let modalControllerSpy: jasmine.SpyObj; - let storageServiceSpy: jasmine.SpyObj; - let uppyInstanceSpy: jasmine.SpyObj>; - let modalSpy: any; - - beforeEach(() => { - modalSpy = jasmine.createSpyObj('HTMLIonModalElement', ['present']); - modalControllerSpy = jasmine.createSpyObj('ModalController', ['create']); - modalControllerSpy.create.and.returnValue(Promise.resolve(modalSpy)); - - storageServiceSpy = jasmine.createSpyObj('BrowserStorageService', ['getUser', 'clearByName']); - storageServiceSpy.getUser.and.returnValue({ apikey: 'test-api-key' }); - storageServiceSpy.clearByName.and.returnValue({}); - - uppyInstanceSpy = jasmine.createSpyObj('Uppy', ['use', 'on']); - uppyInstanceSpy.on.and.returnValue(uppyInstanceSpy); // To allow method chaining - - // Mock environment config - environment.uppyConfig = { - tusUrl: 'https://example.com/uploads', - uploadPreset: 'test-preset', - restrictions: { - minFileSize: 0, - maxFileSize: 1000000, - minNumberOfFiles: 1, - maxNumberOfFiles: 10, - maxTotalFileSize: 10000000, - requiredMetaFields: [] - } - }; - environment.stackName = 'test-stack'; - - TestBed.configureTestingModule({ - providers: [ - UppyUploaderService, - { provide: ModalController, useValue: modalControllerSpy }, - { provide: BrowserStorageService, useValue: storageServiceSpy } - ] - }); - - service = TestBed.inject(UppyUploaderService); - }); - - it('should be created', () => { - expect(service).toBeTruthy(); - }); - - describe('createUppyInstance', () => { - it('should create an Uppy instance with correct options', () => { - const events = { - onAfterResponse: jasmine.createSpy('onAfterResponse'), - onUploadSuccess: jasmine.createSpy('onUploadSuccess') - }; - - const options = { - allowedFileTypes: ['image/*'] - }; - - const result = service.createUppyInstance('chat', 'https://upload.example.com', events, options); - - // verify the result is an Uppy instance by checking it has expected methods - expect(result).toBeTruthy(); - expect(typeof result.use).toBe('function'); - expect(typeof result.on).toBe('function'); - }); - - it('should log error if environment config is missing', () => { - const originalConfig = environment.uppyConfig; - const originalStackName = environment.stackName; - environment.uppyConfig = null; - environment.stackName = ''; - - const consoleSpy = spyOn(console, 'error'); - const events = { - onAfterResponse: jasmine.createSpy('onAfterResponse'), - onUploadSuccess: jasmine.createSpy('onUploadSuccess') - }; - - // this will log error but not throw since the config check just logs - try { - service.createUppyInstance('chat', 'https://upload.example.com', events); - } catch (e) { - // expected - uppyConfig is null so restrictions will throw - } - - expect(consoleSpy).toHaveBeenCalledWith('Uppy configuration is missing or incomplete.'); - - // restore config - environment.uppyConfig = originalConfig; - environment.stackName = originalStackName; - }); - }); - - describe('initializeEventHandlers', () => { - it('should set up event handlers on the Uppy instance', () => { - const onUploadSuccessSpy = jasmine.createSpy('onUploadSuccess'); - const file = { id: 'file-123' } as UppyFile; - const response = { status: 200 }; - - (service as any).initializeEventHandlers(uppyInstanceSpy, onUploadSuccessSpy); - - // Skip directly calling the handler as it has type issues - // Instead, simulate the behavior that would happen when the handler is called - onUploadSuccessSpy(file, response); - - expect(onUploadSuccessSpy).toHaveBeenCalledWith(file, response); - }); - - it('should clear cache when upload completes successfully', () => { - const onUploadSuccessSpy = jasmine.createSpy('onUploadSuccess'); - const result = { - successful: [{ id: 'file-123' }], - failed: [] - }; - - (service as any).initializeEventHandlers(uppyInstanceSpy, onUploadSuccessSpy); - - // Instead of invoking the handler directly, we'll test the behavior - // by calling the method that the handler would trigger - service['storageService'].clearByName('file-123'); - - expect(storageServiceSpy.clearByName).toHaveBeenCalledWith('file-123'); - }); - }); - - describe('getPatchValue', () => { - it('should return the correct patch value for a given id', () => { - const testId = 'test-id'; - const testValue = { path: 'test-path', bucket: 'test-bucket' }; - - service['patchValue'] = { [testId]: testValue }; - - expect(service.getPatchValue(testId)).toEqual(testValue); - }); - }); -}); diff --git a/projects/v3/src/app/components/uppy-uploader/uppy-uploader.service.ts b/projects/v3/src/app/components/uppy-uploader/uppy-uploader.service.ts index 6fdcea158..3f6ac9e71 100644 --- a/projects/v3/src/app/components/uppy-uploader/uppy-uploader.service.ts +++ b/projects/v3/src/app/components/uppy-uploader/uppy-uploader.service.ts @@ -4,6 +4,7 @@ import { ModalController } from '@ionic/angular'; import { Injectable } from '@angular/core'; import { UploadResult, Uppy, UppyFile, UppyOptions } from '@uppy/core'; import Tus from '@uppy/tus'; +import { UppyUploaderComponent } from './uppy-uploader.component'; import { BrowserStorageService } from '../../services/storage.service'; import { Dashboard } from 'uppy'; import { environment } from '../../../environments/environment'; @@ -200,8 +201,6 @@ export class UppyUploaderService { * @return {Promise} */ async open(source: 'chat' | 'user-profile' | 'assessment' | 'media-manager' | 'static' | null): Promise { - // dynamic import to break circular dependency with UppyUploaderComponent - const { UppyUploaderComponent } = await import('./uppy-uploader.component'); const modal = await this.modalController.create({ component: UppyUploaderComponent, componentProps: { diff --git a/projects/v3/src/app/components/video-conversion/video-conversion.component.spec.ts b/projects/v3/src/app/components/video-conversion/video-conversion.component.spec.ts index 4e1221291..859416096 100644 --- a/projects/v3/src/app/components/video-conversion/video-conversion.component.spec.ts +++ b/projects/v3/src/app/components/video-conversion/video-conversion.component.spec.ts @@ -60,15 +60,7 @@ describe('VideoConversionComponent', () => { describe('convertVideo()', () => { it('should perform filestack video conversion and wait', fakeAsync(() => { component.stop$ = new Subject(); - component.convertVideo({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-video', - url: 'http://test.com/video.mp4', - extension: 'mp4', - type: 'video/mp4', - size: 1000 - }); + component.convertVideo({ handle: 'abcdefg'}); tick(10000); expect(component.result).toEqual({ status: 'completed' }); })); diff --git a/projects/v3/src/app/components/video-conversion/video-conversion.component.ts b/projects/v3/src/app/components/video-conversion/video-conversion.component.ts index 7fdf80614..4aee4a07b 100644 --- a/projects/v3/src/app/components/video-conversion/video-conversion.component.ts +++ b/projects/v3/src/app/components/video-conversion/video-conversion.component.ts @@ -11,7 +11,6 @@ interface FilestackConversionResponse { } @Component({ - standalone: false, selector: 'app-video-conversion', templateUrl: 'video-conversion.component.html', styleUrls: ['video-conversion.component.scss'], diff --git a/projects/v3/src/app/directives/autoresize/autoresize.directive.spec.ts b/projects/v3/src/app/directives/autoresize/autoresize.directive.spec.ts deleted file mode 100644 index 273acf762..000000000 --- a/projects/v3/src/app/directives/autoresize/autoresize.directive.spec.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { ElementRef } from '@angular/core'; -import { AutoresizeDirective } from './autoresize.directive'; - -describe('AutoresizeDirective', () => { - const createDirective = (textArea?: Partial) => { - const querySelector = jasmine.createSpy('querySelector').and.returnValue(textArea || null); - const elementRef = { - nativeElement: { - querySelector - } - } as ElementRef; - const directive = new AutoresizeDirective(elementRef); - - return { directive, querySelector }; - }; - - it('should create', () => { - const { directive } = createDirective(); - - expect(directive).toBeTruthy(); - }); - - it('should resize using scrollHeight when maxHeight is not set', () => { - const textArea = { - style: { overflow: '', height: '' }, - scrollHeight: 160 - } as unknown as HTMLTextAreaElement; - const { directive } = createDirective(textArea); - - directive.adjust(); - - expect(textArea.style.overflow).toBe('auto'); - expect(textArea.style.height).toBe('160px'); - }); - - it('should cap resize to numeric maxHeight', () => { - const textArea = { - style: { overflow: '', height: '' }, - scrollHeight: 300 - } as unknown as HTMLTextAreaElement; - const { directive } = createDirective(textArea); - directive.maxHeight = '200'; - - directive.adjust(); - - expect(directive.maxHeight).toBe(200); - expect(textArea.style.height).toBe('200px'); - }); - - it('should call adjust on init', () => { - const textArea = { - style: { overflow: '', height: '' }, - scrollHeight: 120 - } as unknown as HTMLTextAreaElement; - const { directive } = createDirective(textArea); - spyOn(directive, 'adjust'); - - directive.ngOnInit(); - - expect(directive.adjust).toHaveBeenCalled(); - }); - - it('should call adjust on input host listener', () => { - const { directive } = createDirective(); - spyOn(directive, 'adjust'); - - directive.onInput({} as HTMLTextAreaElement); - - expect(directive.adjust).toHaveBeenCalled(); - }); - - it('should do nothing when textarea is not found', () => { - const { directive, querySelector } = createDirective(); - - directive.adjust(); - - expect(querySelector).toHaveBeenCalledWith('textarea'); - }); -}); diff --git a/projects/v3/src/app/directives/autoresize/autoresize.directive.ts b/projects/v3/src/app/directives/autoresize/autoresize.directive.ts index d28c0d710..6c7849132 100644 --- a/projects/v3/src/app/directives/autoresize/autoresize.directive.ts +++ b/projects/v3/src/app/directives/autoresize/autoresize.directive.ts @@ -1,7 +1,6 @@ import { Directive, ElementRef, Input, HostListener, OnInit } from '@angular/core'; @Directive({ - standalone: false, selector: '[appAutoresize]' }) export class AutoresizeDirective implements OnInit { diff --git a/projects/v3/src/app/directives/background-image/background-image.directive.ts b/projects/v3/src/app/directives/background-image/background-image.directive.ts index e5f342c43..8ce081593 100644 --- a/projects/v3/src/app/directives/background-image/background-image.directive.ts +++ b/projects/v3/src/app/directives/background-image/background-image.directive.ts @@ -2,7 +2,6 @@ import { Directive, ElementRef, Input, OnDestroy, OnInit, Renderer2 } from '@ang import { BrowserStorageService } from '@v3/app/services/storage.service'; @Directive({ - standalone: false, selector: '[appBackgroundImage]' }) export class BackgroundImageDirective implements OnInit, OnDestroy { diff --git a/projects/v3/src/app/directives/drag-and-drop/drag-and-drop.directive.spec.ts b/projects/v3/src/app/directives/drag-and-drop/drag-and-drop.directive.spec.ts index e5cc74e97..60cf3d6ee 100644 --- a/projects/v3/src/app/directives/drag-and-drop/drag-and-drop.directive.spec.ts +++ b/projects/v3/src/app/directives/drag-and-drop/drag-and-drop.directive.spec.ts @@ -1,119 +1,8 @@ import { DragAndDropDirective } from './drag-and-drop.directive'; describe('DragAndDropDirective', () => { - let directive: DragAndDropDirective; - - const createEvent = (files: any[] = []) => { - const preventDefault = jasmine.createSpy('preventDefault'); - const stopPropagation = jasmine.createSpy('stopPropagation'); - return { - preventDefault, - stopPropagation, - dataTransfer: { - files - } - } as any; - }; - - beforeEach(() => { - directive = new DragAndDropDirective(); - }); - it('should create an instance', () => { + const directive = new DragAndDropDirective(); expect(directive).toBeTruthy(); }); - - it('should set fileOver on dragover when enabled', () => { - const event = createEvent(); - directive.disabled = false; - - directive.ondragover(event); - - expect(event.preventDefault).toHaveBeenCalled(); - expect(event.stopPropagation).toHaveBeenCalled(); - expect(directive.fileOver).toBeTrue(); - }); - - it('should not set fileOver on dragover when disabled', () => { - const event = createEvent(); - directive.disabled = true; - - directive.ondragover(event); - - expect(directive.fileOver).not.toBeTrue(); - }); - - it('should unset fileOver on dragleave', () => { - const event = createEvent(); - directive.fileOver = true; - - directive.ondragleave(event); - - expect(directive.fileOver).toBeFalse(); - expect(event.preventDefault).toHaveBeenCalled(); - expect(event.stopPropagation).toHaveBeenCalled(); - }); - - it('should return early on drop when disabled', () => { - const event = createEvent([{ type: 'text/plain' }]); - directive.disabled = true; - spyOn(directive.fileDropped, 'emit'); - - directive.ondrop(event); - - expect(directive.fileDropped.emit).not.toHaveBeenCalled(); - }); - - it('should emit error when more than one file is dropped', () => { - const event = createEvent([{ type: 'text/plain' }, { type: 'text/plain' }]); - spyOn(directive.fileDropped, 'emit'); - - directive.ondrop(event); - - expect(directive.fileDropped.emit).toHaveBeenCalledWith({ - success: false, - message: 'More than one file droped' - }); - }); - - it('should emit error when file type does not match acceptFileType', () => { - const event = createEvent([{ type: 'image/png' }]); - directive.acceptFileType = 'application/pdf'; - spyOn(directive.fileDropped, 'emit'); - - directive.ondrop(event); - - expect(directive.fileDropped.emit).toHaveBeenCalledWith({ - success: false, - message: 'Not a matching file type' - }); - }); - - it('should emit success when acceptFileType is any', () => { - const file = { type: 'image/png' } as any; - const event = createEvent([file]); - directive.acceptFileType = 'any'; - spyOn(directive.fileDropped, 'emit'); - - directive.ondrop(event); - - expect(directive.fileDropped.emit).toHaveBeenCalledWith({ - success: true, - file - }); - }); - - it('should emit success when file type matches acceptFileType', () => { - const file = { type: 'image/png' } as any; - const event = createEvent([file]); - directive.acceptFileType = 'image'; - spyOn(directive.fileDropped, 'emit'); - - directive.ondrop(event); - - expect(directive.fileDropped.emit).toHaveBeenCalledWith({ - success: true, - file - }); - }); }); diff --git a/projects/v3/src/app/directives/drag-and-drop/drag-and-drop.directive.ts b/projects/v3/src/app/directives/drag-and-drop/drag-and-drop.directive.ts index 617a379cc..830c57ee5 100644 --- a/projects/v3/src/app/directives/drag-and-drop/drag-and-drop.directive.ts +++ b/projects/v3/src/app/directives/drag-and-drop/drag-and-drop.directive.ts @@ -1,7 +1,6 @@ import { Directive, HostListener, HostBinding, Output, EventEmitter, Input } from '@angular/core'; @Directive({ - standalone: false, selector: '[appDragAndDrop]' }) export class DragAndDropDirective { diff --git a/projects/v3/src/app/directives/fallback-image/fallback-image.directive.ts b/projects/v3/src/app/directives/fallback-image/fallback-image.directive.ts index 4cd8849a7..dab32aa47 100644 --- a/projects/v3/src/app/directives/fallback-image/fallback-image.directive.ts +++ b/projects/v3/src/app/directives/fallback-image/fallback-image.directive.ts @@ -1,7 +1,6 @@ import { Directive, ElementRef, HostListener, Input } from '@angular/core'; @Directive({ - standalone: false, selector: '[appFallbackImage]' }) export class FallbackImageDirective { diff --git a/projects/v3/src/app/directives/toggle-label/toggle-label.directive.spec.ts b/projects/v3/src/app/directives/toggle-label/toggle-label.directive.spec.ts index bc6ba54ed..afdb14361 100644 --- a/projects/v3/src/app/directives/toggle-label/toggle-label.directive.spec.ts +++ b/projects/v3/src/app/directives/toggle-label/toggle-label.directive.spec.ts @@ -6,7 +6,7 @@ import { ToggleLabelDirective } from './toggle-label.directive'; @Component({ template: ` Test Label diff --git a/projects/v3/src/app/directives/tooltip/tooltip.directive.ts b/projects/v3/src/app/directives/tooltip/tooltip.directive.ts index 23296caa3..dc02027a5 100644 --- a/projects/v3/src/app/directives/tooltip/tooltip.directive.ts +++ b/projects/v3/src/app/directives/tooltip/tooltip.directive.ts @@ -1,7 +1,6 @@ import { Directive, ElementRef, HostListener, Input, OnDestroy, Renderer2 } from '@angular/core'; @Directive({ - standalone: false, selector: '[appTooltip]' }) export class TooltipDirective implements OnDestroy { diff --git a/projects/v3/src/app/guards/single-page-deactivate.guard.spec.ts b/projects/v3/src/app/guards/single-page-deactivate.guard.spec.ts index 27dcfd750..9b9e65313 100644 --- a/projects/v3/src/app/guards/single-page-deactivate.guard.spec.ts +++ b/projects/v3/src/app/guards/single-page-deactivate.guard.spec.ts @@ -1,4 +1,4 @@ -import { TestBed, waitForAsync, inject } from '@angular/core/testing'; +import { TestBed, async, inject } from '@angular/core/testing'; import { BrowserStorageService } from '@v3/services/storage.service'; import { SinglePageDeactivateGuard } from './single-page-deactivate.guard'; diff --git a/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.spec.ts b/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.spec.ts index b63ea50a0..8ce69dee5 100644 --- a/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.spec.ts +++ b/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.spec.ts @@ -5,15 +5,12 @@ import { AssessmentService } from '@v3/services/assessment.service'; import { BrowserStorageService } from '@v3/services/storage.service'; import { UtilsService } from '@v3/services/utils.service'; import { TopicService } from '@v3/services/topic.service'; -import { ReviewService } from '@v3/services/review.service'; import { IonicModule } from '@ionic/angular'; import { ActivatedRouteStub } from '@testingv3/activated-route-stub'; import { MockRouter } from '@testingv3/mocked.service'; import { TestUtils } from '@testingv3/utils'; import { NotificationsService } from '@v3/services/notifications.service'; import { of } from 'rxjs'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ActivityDesktopPage } from './activity-desktop.page'; import { NormalisedTaskFixture, TaskFixture } from '@testingv3/fixtures/tasks'; @@ -61,24 +58,21 @@ describe('ActivityDesktopPage', () => { provide: TopicService, useValue: jasmine.createSpyObj('TopicService', { updateTopicProgress: of(true), - clearTopic: undefined, }, { topic$: of(true) }), }, { provide: AssessmentService, - useValue: jasmine.createSpyObj('AssessmentService', { - saveAnswers: of(true), - getAssessment: of(null), - saveFeedbackReviewed: of(true), - fetchAssessment: of({ submission: { status: 'in progress' } }), - submitAssessment: of({ data: { submitAssessment: { success: true } } }), - }, { + useValue: jasmine.createSpyObj('AssessmentService', [ + 'saveAnswers', + 'getAssessment', + 'saveFeedbackReviewed', + 'popUpReviewRating', + ], { 'assessment$': of(true), - 'assessment': null, 'submission$': of(true), - 'review$': of({ id: 1, status: 'done' }), + 'review$': of(true), }), }, { @@ -86,34 +80,22 @@ describe('ActivityDesktopPage', () => { useValue: jasmine.createSpyObj('NotificationsService', [ 'assessmentSubmittedToast', 'alert', - 'getTodoItems', - 'getCurrentTodoItems', - 'markTodoItemAsDone', - 'markMultipleTodoItemsAsDone', ]), }, { provide: BrowserStorageService, useValue: jasmine.createSpyObj('BrowserStorageService', { - 'getUser': { hasReviewRating: true }, - 'lastVisited': null, - 'get': null, - 'getFeature': null, + 'getUser': { + hasReviewRating: true + } }), }, { provide: UtilsService, useClass: TestUtils }, - { - provide: ReviewService, - useValue: jasmine.createSpyObj('ReviewService', { - 'popUpReviewRating': Promise.resolve(), - }), - }, ], - imports: [IonicModule.forRoot(), HttpClientTestingModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA], + imports: [IonicModule.forRoot()] }).compileComponents(); fixture = TestBed.createComponent(ActivityDesktopPage); @@ -156,7 +138,6 @@ describe('ActivityDesktopPage', () => { id: 1, name: 'test', tasks: [NormalisedTaskFixture], - unlockConditions: [] }; component.ionViewDidEnter(); @@ -175,11 +156,6 @@ describe('ActivityDesktopPage', () => { }); describe('topicComplete()', () => { - beforeEach(() => { - // set required activity object for all tests in this block - component.activity = { id: 1, name: 'Test Activity' } as any; - }); - it('should request to update progress', fakeAsync(() => { component.topicComplete(NormalisedTaskFixture); activitySpy.getActivity = jasmine.createSpy().and.callFake((id, anything, task, cb) => { @@ -193,7 +169,7 @@ describe('ActivityDesktopPage', () => { it('should go to next task when task is done', () => { const task = NormalisedTaskFixture; - task.status = 'done'; + task.status = 'done';2 component.topicComplete(task); expect(topicSpy.updateTopicProgress).not.toHaveBeenCalled(); expect(activitySpy.goToNextTask).toHaveBeenCalled(); @@ -201,69 +177,61 @@ describe('ActivityDesktopPage', () => { }); describe('saveAssessment()', () => { - beforeEach(() => { - // set required activity object for all tests in this block - component.activity = { id: 1, name: 'Test Activity' } as any; - }); - it('should save answers', fakeAsync(() => { - assessmentSpy.fetchAssessment = jasmine.createSpy().and.returnValue(of({ submission: { status: 'in progress' } })); - assessmentSpy.submitAssessment = jasmine.createSpy().and.returnValue(of({ data: { submitAssessment: { success: true } } })); + assessmentSpy.saveAnswers = jasmine.createSpy().and.returnValue({ + toPromise: jasmine.createSpy() + }); const saveTextSpy = spyOn(component.savingText$, 'next'); const btnDisabledSpy = spyOn(component.btnDisabled$, 'next'); component.saveAssessment({ - assessmentId: 1, - submissionId: 1, - contextId: 1, + assessment: { id: 1, inProgress: true, submssionId: 1, contextId: 1 }, answers: {}, - autoSave: true, + action: '', }, NormalisedTaskFixture); tick(); - expect(assessmentSpy.fetchAssessment).toHaveBeenCalled(); - expect(assessmentSpy.submitAssessment).toHaveBeenCalled(); + expect(assessmentSpy.saveAnswers).toHaveBeenCalled(); expect(saveTextSpy).toHaveBeenCalled(); expect(btnDisabledSpy).toHaveBeenCalled(); - tick(10000); // wait for SAVE_PROGRESS_TIMEOUT (10 seconds) expect(component.loading).toBeFalse(); })); it('should save answers (when not in progress)', fakeAsync(() => { - assessmentSpy.fetchAssessment = jasmine.createSpy().and.returnValue(of({ submission: { status: 'done' } })); - notificationsSpy.assessmentSubmittedToast = jasmine.createSpy(); + assessmentSpy.saveAnswers = jasmine.createSpy().and.returnValue({ + toPromise: jasmine.createSpy() + }); activitySpy.getActivity = jasmine.createSpy().and.callFake((id, anything, task, cb) => { - if (cb) cb(); + cb(); }); const saveTextSpy = spyOn(component.savingText$, 'next'); const btnDisabledSpy = spyOn(component.btnDisabled$, 'next'); component.saveAssessment({ - assessmentId: 1, - submissionId: 1, - contextId: 1, + assessment: { + id: 1, + inProgress: false, + submssionId: 1, + contextId: 1, + }, answers: {}, - autoSave: false, + action: '', }, NormalisedTaskFixture); tick(); - expect(assessmentSpy.fetchAssessment).toHaveBeenCalled(); + expect(assessmentSpy.saveAnswers).toHaveBeenCalled(); expect(notificationsSpy.assessmentSubmittedToast).toHaveBeenCalled(); expect(saveTextSpy).toHaveBeenCalled(); expect(btnDisabledSpy).toHaveBeenCalled(); - tick(1000); expect(component.loading).toBeFalse(); })); }); describe('readFeedback()', () => { it('should mark feedback as read', fakeAsync(() => { - assessmentSpy.saveFeedbackReviewed = jasmine.createSpy().and.returnValue(of(true)); - notificationsSpy.getTodoItems = jasmine.createSpy().and.returnValue(of([])); - // set required activity object - component.activity = { id: 1, name: 'Test Activity' } as any; + assessmentSpy.saveFeedbackReviewed = jasmine.createSpy().and.returnValue({ toPromise: jasmine.createSpy() }); component.readFeedback(1, NormalisedTaskFixture); // const spy = spyOn(assessmentSpy.saveFeedbackReviewed); @@ -271,7 +239,7 @@ describe('ActivityDesktopPage', () => { expect(assessmentSpy.saveFeedbackReviewed).toHaveBeenCalled(); // expect(activitySpy.getActivity).toHaveBeenCalled(); tick(1000); - // expect(assessmentSpy.popUpReviewRating).toHaveBeenCalled(); // Removed as popUpReviewRating does not exist on AssessmentService + expect(notificationsSpy.popUpReviewRating).toHaveBeenCalled(); })); }); @@ -296,7 +264,7 @@ describe('ActivityDesktopPage', () => { }); component.reviewRatingPopUp(); tick(); - // expect(assessmentSpy.popUpReviewRating).not.toHaveBeenCalled(); // Removed as popUpReviewRating does not exist on AssessmentService + expect(notificationsSpy.popUpReviewRating).not.toHaveBeenCalled(); })); }); }); diff --git a/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.ts b/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.ts index fe24bf120..691ff2652 100644 --- a/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.ts +++ b/projects/v3/src/app/pages/activity-desktop/activity-desktop.page.ts @@ -4,12 +4,12 @@ import { DOCUMENT } from '@angular/common'; import { Component, Inject, ViewChild } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; import { ActivityService, Task, Activity } from '@v3/app/services/activity.service'; -import { Assessment, AssessmentReview, AssessmentService, Submission } from '@v3/app/services/assessment.service'; +import { AssessmentReview, AssessmentService, Submission } from '@v3/app/services/assessment.service'; import { NotificationsService } from '@v3/app/services/notifications.service'; import { BrowserStorageService } from '@v3/app/services/storage.service'; import { Topic, TopicService } from '@v3/app/services/topic.service'; import { UtilsService } from '@v3/app/services/utils.service'; -import { BehaviorSubject, Observable, firstValueFrom } from 'rxjs'; +import { BehaviorSubject, firstValueFrom } from 'rxjs'; import { delay, filter, tap, distinctUntilChanged, takeUntil, debounceTime } from 'rxjs/operators'; import { TopicComponent } from '@v3/app/components/topic/topic.component'; import { ComponentCleanupService } from '@v3/app/services/component-cleanup.service'; @@ -17,7 +17,6 @@ import { ComponentCleanupService } from '@v3/app/services/component-cleanup.serv const SAVE_PROGRESS_TIMEOUT = 10000; @Component({ - standalone: false, selector: 'app-activity-desktop', templateUrl: './activity-desktop.page.html', styleUrls: ['./activity-desktop.page.scss'], @@ -25,7 +24,7 @@ const SAVE_PROGRESS_TIMEOUT = 10000; export class ActivityDesktopPage { activity: Activity; currentTask: Task; - assessment: Observable; + assessment = this.assessmentService.assessment$; submission: Submission; review: AssessmentReview; topic: Topic; @@ -72,7 +71,6 @@ export class ActivityDesktopPage { private componentCleanupService: ComponentCleanupService, @Inject(DOCUMENT) private readonly document: Document, ) { - this.assessment = this.assessmentService.assessment$; // slow down the scroll event trigger this.scrolSubject .pipe(debounceTime(300)) diff --git a/projects/v3/src/app/pages/activity-mobile/activity-mobile.page.spec.ts b/projects/v3/src/app/pages/activity-mobile/activity-mobile.page.spec.ts index 655a2a0f6..482433144 100644 --- a/projects/v3/src/app/pages/activity-mobile/activity-mobile.page.spec.ts +++ b/projects/v3/src/app/pages/activity-mobile/activity-mobile.page.spec.ts @@ -2,66 +2,47 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ActivatedRoute, Router } from '@angular/router'; import { ActivityService } from '@v3/services/activity.service'; import { AssessmentService } from '@v3/services/assessment.service'; -import { UtilsService } from '@v3/services/utils.service'; import { IonicModule } from '@ionic/angular'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { ActivityMobilePage } from './activity-mobile.page'; -import { of, Subject } from 'rxjs'; +import { of } from 'rxjs'; +import { ActivatedRouteStub } from '@testingv3/activated-route-stub'; +import { MockRouter } from '@testingv3/mocked.service'; describe('ActivityMobilePage', () => { let component: ActivityMobilePage; let fixture: ComponentFixture; - let routeParams$: Subject; - let activity$: Subject; - let submission$: Subject; - let routerSpy: jasmine.SpyObj; - let activityServiceSpy: jasmine.SpyObj; - let utilsSpy: jasmine.SpyObj; beforeEach(waitForAsync(() => { - routeParams$ = new Subject(); - activity$ = new Subject(); - submission$ = new Subject(); - TestBed.configureTestingModule({ declarations: [ ActivityMobilePage ], - imports: [IonicModule.forRoot(), HttpClientTestingModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA], + imports: [IonicModule.forRoot()], providers: [ { provide: ActivatedRoute, - useValue: { - snapshot: { - paramMap: { - get: (_key: string) => '1', - }, - }, - params: routeParams$.asObservable(), - }, + // useClass: ActivatedRouteStub, + useValue: jasmine.createSpyObj('ActivatedRoute', [], { + params: of(true), + }), }, { provide: Router, - useValue: jasmine.createSpyObj('Router', ['navigate']), + useClass: MockRouter, + // useValue: jasmine.createSpyObj('Router', ['navigate']), }, { provide: ActivityService, - useValue: jasmine.createSpyObj('ActivityService', ['getActivity', 'goToTask'], { - activity$: activity$.asObservable(), + useValue: jasmine.createSpyObj('ActivityService', { + 'getActivity': of(), + 'goToTask': of(), + }, { + 'activity$': of(), }), }, { provide: AssessmentService, useValue: jasmine.createSpyObj('AssessmentService', [], { - submission$: submission$.asObservable(), - }), - }, - { - provide: UtilsService, - useValue: jasmine.createSpyObj('UtilsService', { - setPageTitle: undefined, - getEvent: new Subject(), + 'submission$': of(), }), }, ], @@ -69,55 +50,10 @@ describe('ActivityMobilePage', () => { fixture = TestBed.createComponent(ActivityMobilePage); component = fixture.componentInstance; - routerSpy = TestBed.inject(Router) as jasmine.SpyObj; - activityServiceSpy = TestBed.inject(ActivityService) as jasmine.SpyObj; - utilsSpy = TestBed.inject(UtilsService) as jasmine.SpyObj; - fixture.detectChanges(); })); it('should create', () => { expect(component).toBeTruthy(); }); - - it('should load activity and submission data on init', () => { - routeParams$.next({ id: 1 }); - submission$.next({ id: 10, status: 'in progress' } as any); - activity$.next({ id: 1, name: 'Activity A' } as any); - - expect(activityServiceSpy.getActivity).toHaveBeenCalledWith(1, false); - expect(component.submission).toEqual(jasmine.objectContaining({ id: 10 })); - expect(component.activity).toEqual(jasmine.objectContaining({ id: 1, name: 'Activity A' })); - expect(utilsSpy.setPageTitle).toHaveBeenCalledWith('Activity A - Practera'); - }); - - it('should ignore activity events with non-matching id', () => { - activity$.next({ id: 999, name: 'Other Activity' } as any); - - expect(component.activity).toBeUndefined(); - expect(utilsSpy.setPageTitle).not.toHaveBeenCalled(); - }); - - it('should navigate to assessment task route', () => { - component.activity = { id: 55 } as any; - - component.goToTask({ id: 9, contextId: 77, type: 'Assessment' } as any); - - expect(activityServiceSpy.goToTask).toHaveBeenCalledWith(jasmine.objectContaining({ id: 9 }), false); - expect(routerSpy.navigate).toHaveBeenCalledWith(['assessment-mobile', 'assessment', 55, 77, 9]); - }); - - it('should navigate to topic task route', () => { - component.activity = { id: 66 } as any; - - component.goToTask({ id: 3, type: 'Topic' } as any); - - expect(routerSpy.navigate).toHaveBeenCalledWith(['topic-mobile', 66, 3]); - }); - - it('should go back to home', () => { - component.goBack(); - - expect(routerSpy.navigate).toHaveBeenCalledWith(['v3', 'home']); - }); }); diff --git a/projects/v3/src/app/pages/activity-mobile/activity-mobile.page.ts b/projects/v3/src/app/pages/activity-mobile/activity-mobile.page.ts index 6ec457126..ff0cf419b 100644 --- a/projects/v3/src/app/pages/activity-mobile/activity-mobile.page.ts +++ b/projects/v3/src/app/pages/activity-mobile/activity-mobile.page.ts @@ -8,7 +8,6 @@ import { UnlockIndicatorService } from '@v3/app/services/unlock-indicator.servic import { NotificationsService } from '@v3/app/services/notifications.service'; @Component({ - standalone: false, selector: 'app-activity-mobile', templateUrl: './activity-mobile.page.html', styleUrls: ['./activity-mobile.page.scss'], diff --git a/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.spec.ts b/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.spec.ts index 6b4218174..59270c872 100644 --- a/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.spec.ts +++ b/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.spec.ts @@ -1,7 +1,7 @@ import { ComponentFixture, fakeAsync, flushMicrotasks, TestBed, tick, waitForAsync } from '@angular/core/testing'; import { ActivatedRoute, Router } from '@angular/router'; -import { ActivityService, Task } from '@v3/services/activity.service'; -import { AssessmentService, Assessment, Submission, AssessmentReview } from '@v3/services/assessment.service'; +import { ActivityService } from '@v3/services/activity.service'; +import { AssessmentService } from '@v3/services/assessment.service'; import { BrowserStorageService } from '@v3/services/storage.service'; import { UtilsService } from '@v3/services/utils.service'; import { IonicModule } from '@ionic/angular'; @@ -9,11 +9,7 @@ import { ActivatedRouteStub } from '@testingv3/activated-route-stub'; import { MockRouter } from '@testingv3/mocked.service'; import { TestUtils } from '@testingv3/utils'; import { NotificationsService } from '@v3/services/notifications.service'; -import { of, Subscription } from 'rxjs'; -import { ReviewService } from '@v3/app/services/review.service'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; - -const SAVE_PROGRESS_TIMEOUT = 10000; +import { of } from 'rxjs'; import { AssessmentMobilePage } from './assessment-mobile.page'; import { ElementRef } from '@angular/core'; @@ -29,13 +25,12 @@ describe('AssessmentMobilePage', () => { let activitySpy: jasmine.SpyObj; let notificationSpy: jasmine.SpyObj; let storageSpy: jasmine.SpyObj; - let reviewSpy: jasmine.SpyObj; + let elespy: jasmine.SpyObj; beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ AssessmentMobilePage ], imports: [IonicModule.forRoot()], - schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: ActivatedRoute, @@ -50,17 +45,14 @@ describe('AssessmentMobilePage', () => { }, { provide: AssessmentService, - useValue: jasmine.createSpyObj('AssessmentService', { - getAssessment: of(true), - fetchAssessment: of(true), - submitAssessment: of(true), - submitReview: of(true), - pullFastFeedback: Promise.resolve(), - saveFeedbackReviewed: of({}), - }, { + useValue: jasmine.createSpyObj('AssessmentService', [ + 'getAssessment', + 'saveAnswers', + 'saveFeedbackReviewed', + ], { assessment$: of(true), submission$: of(true), - review$: of({ id: 1, status: 'done' }), + review$: of(true), }), }, { @@ -68,10 +60,7 @@ describe('AssessmentMobilePage', () => { useValue: jasmine.createSpyObj('ActivityService', [ 'goToNextTask', 'getActivity', - ], { - currentTask$: of(null), - activity$: of(null), - }), + ]), }, { provide: BrowserStorageService, @@ -83,17 +72,12 @@ describe('AssessmentMobilePage', () => { 'assessmentSubmittedToast', 'alert', 'popUpReviewRating', - 'getTodoItems', ]), }, { provide: UtilsService, useClass: TestUtils }, - { - provide: ReviewService, - useValue: jasmine.createSpyObj('ReviewService', ['popUpReviewRating', 'getReviews']), - }, ] }).compileComponents(); @@ -104,16 +88,15 @@ describe('AssessmentMobilePage', () => { activitySpy = TestBed.inject(ActivityService) as jasmine.SpyObj; storageSpy = TestBed.inject(BrowserStorageService) as jasmine.SpyObj; notificationSpy = TestBed.inject(NotificationsService) as jasmine.SpyObj; - reviewSpy = TestBed.inject(ReviewService) as jasmine.SpyObj; })); it('should create', () => { expect(component).toBeTruthy(); }); - it('should call goToNextTask when continuing', () => { + it('should call continue()', () => { component.currentTask = { id: 1, type: 'Assessment', name: 'Test', status: 'done' }; - component['activityService'].goToNextTask(); + component.nextTask(); expect(activitySpy.goToNextTask).toHaveBeenCalled(); }); @@ -123,172 +106,66 @@ describe('AssessmentMobilePage', () => { expect(component['router'].navigate).toHaveBeenCalled(); }); - it('should call saveAssessment() when action is assessment and autoSave is true', fakeAsync(() => { - assessmentSpy.fetchAssessment.and.returnValue(of({ - assessment: {} as Assessment, - submission: { status: 'in progress' } as Submission, - review: {} as AssessmentReview - })); - assessmentSpy.submitAssessment.and.returnValue(of({ data: { submitAssessment: { success: true } } })); - const event = { - assessmentId: 1, - contextId: 1, - submissionId: 1, - answers: [], - autoSave: true, - }; - component.action = 'assessment'; - component.saving = false; - component.assessment = { pulseCheck: false, id: 1, name: 'Test Assessment', type: 'quiz', description: '' } as Assessment; - component.activityId = 1; - - component.saveAssessment(event); - tick(); - - expect(assessmentSpy.fetchAssessment).toHaveBeenCalledWith(event.assessmentId, 'assessment', 1, event.contextId, event.submissionId); - expect(assessmentSpy.submitAssessment).toHaveBeenCalledWith(event.submissionId, event.assessmentId, event.contextId, event.answers); - expect(notificationSpy.assessmentSubmittedToast).not.toHaveBeenCalled(); - expect(activitySpy.getActivity).not.toHaveBeenCalled(); - expect(component.savingText$.getValue()).toContain('Last saved'); - tick(SAVE_PROGRESS_TIMEOUT); - expect(component.btnDisabled$.getValue()).toBe(false); - expect(component.saving).toBe(false); - })); - - it('should call saveAssessment() when action is assessment and autoSave is false', fakeAsync(() => { - assessmentSpy.fetchAssessment.and.returnValue(of({ - assessment: {} as Assessment, - submission: { status: 'in progress' } as Submission, - review: {} as AssessmentReview - })); - assessmentSpy.submitAssessment.and.returnValue(of({ data: { submitAssessment: { success: true } } })); - activitySpy.getActivity.and.callFake((activityId, navigate, task, callback) => { - if (callback) { - callback(); - } - return new Subscription(); // Return a Subscription + it('should call saveAssessment() with inProgress as true', fakeAsync(() => { + assessmentSpy.saveAnswers = jasmine.createSpy().and.returnValue({ + toPromise: jasmine.createSpy() }); - const event = { - assessmentId: 1, - contextId: 1, - submissionId: 1, - answers: [], - autoSave: false, + assessment: { id: 1, inProgress: true }, + answers: 'test answers', + action: 'save', }; - component.action = 'assessment'; component.saving = false; - component.assessment = { pulseCheck: true, id: 1, name: 'Test Assessment', type: 'quiz', description: '' } as Assessment; - component.activityId = 1; - component.contextId = 1; - component.submissionId = 1; - - - component.saveAssessment(event); - tick(); - flushMicrotasks(); + component.saveAssessment(event).then(() => { + expect(assessmentSpy.saveAnswers).toHaveBeenCalledWith(event.assessment, event.answers as any, event.action, undefined); + expect(notificationSpy.assessmentSubmittedToast).not.toHaveBeenCalled(); + expect(activitySpy.getActivity).not.toHaveBeenCalled(); + expect(assessmentSpy.getAssessment).not.toHaveBeenCalledTimes(2); // ngOnInit x 1, saveAssessment x 0 + }); - expect(assessmentSpy.fetchAssessment).toHaveBeenCalledWith(event.assessmentId, 'assessment', 1, event.contextId, event.submissionId); - expect(assessmentSpy.submitAssessment).toHaveBeenCalledWith(event.submissionId, event.assessmentId, event.contextId, event.answers); - expect(assessmentSpy.pullFastFeedback).toHaveBeenCalled(); - expect(notificationSpy.assessmentSubmittedToast).toHaveBeenCalledWith({ isReview: false }); - expect(assessmentSpy.fetchAssessment).toHaveBeenCalledWith(1, 'assessment', 1, 1, 1); - expect(activitySpy.getActivity).toHaveBeenCalled(); - expect(component.savingText$.getValue()).toContain('Last saved'); - expect(component.btnDisabled$.getValue()).toBe(false); - expect(component.saving).toBe(false); + tick(10000); // SAVE_PROGRESS_TIMEOUT = 10000 })); - it('should call saveAssessment() when action is review and autoSave is false', fakeAsync(() => { - assessmentSpy.fetchAssessment.and.returnValue(of({ - assessment: {} as Assessment, - submission: { status: 'pending review' } as Submission, - review: {} as AssessmentReview - })); - assessmentSpy.submitReview.and.returnValue(of({ data: { submitReview: { success: true } } })); - component.review = { id: 1, reviewerId: 1, status: 'pending', answers: [], submitted: '', modified: '' } as AssessmentReview; - + it('should call saveAssessment() with inProgress as false', fakeAsync(() => { + assessmentSpy.saveAnswers = jasmine.createSpy().and.returnValue(of({})); + activitySpy.getActivity = jasmine.createSpy(); + assessmentSpy.getAssessment = jasmine.createSpy(); const event = { - assessmentId: 1, - contextId: 1, - submissionId: 1, - answers: [], - autoSave: false, + assessment: { id: 1, inProgress: false }, + answers: 'test answers', + action: 'save', }; - component.action = 'review'; - component.saving = false; - component.assessment = { pulseCheck: true, id: 1, name: 'Test Assessment', type: 'quiz', description: '' } as Assessment; - component.activityId = 1; - component.contextId = 1; - component.submissionId = 1; - - component.saveAssessment(event); - tick(); - - expect(assessmentSpy.fetchAssessment).toHaveBeenCalledWith(event.assessmentId, 'review', 1, event.contextId, event.submissionId); - expect(assessmentSpy.submitReview).toHaveBeenCalledWith(event.assessmentId, component.review.id, event.submissionId, event.answers); - expect(reviewSpy.getReviews).toHaveBeenCalled(); - expect(assessmentSpy.pullFastFeedback).toHaveBeenCalled(); - expect(notificationSpy.assessmentSubmittedToast).toHaveBeenCalledWith({ isReview: true }); - expect(assessmentSpy.fetchAssessment).toHaveBeenCalledWith(1, 'review', 1, 1, 1); - expect(component.savingText$.getValue()).toContain('Last saved'); - expect(component.btnDisabled$.getValue()).toBe(false); - expect(component.saving).toBe(false); - })); - - it('should handle error in saveAssessment()', fakeAsync(() => { - assessmentSpy.fetchAssessment.and.returnValue(of({ - assessment: {} as Assessment, - submission: { status: 'in progress' } as Submission, - review: {} as AssessmentReview - })); - assessmentSpy.submitAssessment.and.throwError('submit error'); - const event = { - assessmentId: 1, - contextId: 1, - submissionId: 1, - answers: [], - autoSave: false, - }; - component.action = 'assessment'; component.saving = false; - component.assessment = { pulseCheck: false, id: 1, name: 'Test Assessment', type: 'quiz', description: '' } as Assessment; - component.saveAssessment(event); + tick(); - expect(notificationSpy.assessmentSubmittedToast).toHaveBeenCalledWith({ isFail: true }); - expect(component.btnDisabled$.getValue()).toBe(false); - expect(component.saving).toBe(false); + expect(assessmentSpy.saveAnswers).toHaveBeenCalledWith(event.assessment, event.answers as any, event.action, undefined); + expect(notificationSpy.assessmentSubmittedToast).toHaveBeenCalled(); + expect(activitySpy.getActivity).toHaveBeenCalled(); + expect(assessmentSpy.getAssessment).toHaveBeenCalled(); })); - it('should call readFeedback()', async () => { storageSpy.getUser.and.returnValue({ hasReviewRating: true }); - assessmentSpy.saveFeedbackReviewed.and.returnValue(of({})); - notificationSpy.getTodoItems.and.returnValue(of({})); - notificationSpy.popUpReviewRating.and.resolveTo(); - activitySpy.getActivity.and.returnValue(new Subscription()); - - const submissionId = 1; - component.review = { id: 1 } as AssessmentReview; - await component.readFeedback(submissionId); - expect(assessmentSpy.saveFeedbackReviewed).toHaveBeenCalledWith(submissionId); + assessmentSpy.saveFeedbackReviewed = jasmine.createSpy().and.returnValue({ + toPromise: jasmine.createSpy() + }); + const event = { id: 1, data: 'test data' }; + await component.readFeedback(event); + expect(assessmentSpy.saveFeedbackReviewed).toHaveBeenCalledWith(event); expect(notificationSpy.popUpReviewRating).toHaveBeenCalled(); - expect(notificationSpy.getTodoItems).toHaveBeenCalled(); expect(activitySpy.getActivity).toHaveBeenCalled(); }); it('should call nextTask()', () => { - component.activityId = 1; component.nextTask(); - expect(activitySpy.getActivity).toHaveBeenCalledWith(1, true, jasmine.anything()); + expect(activitySpy.goToNextTask).toHaveBeenCalled(); }); it('should call reviewRatingPopUp() with hasReviewRating as true', async () => { storageSpy.getUser.and.returnValue({ hasReviewRating: true }); - notificationSpy.popUpReviewRating.and.resolveTo(); await component.reviewRatingPopUp(); expect(notificationSpy.popUpReviewRating).toHaveBeenCalled(); diff --git a/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.ts b/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.ts index 5ee4db11e..c50cc2437 100644 --- a/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.ts +++ b/projects/v3/src/app/pages/assessment-mobile/assessment-mobile.page.ts @@ -14,7 +14,6 @@ import { debounceTime } from 'rxjs/operators'; const SAVE_PROGRESS_TIMEOUT = 10000; @Component({ - standalone: false, selector: 'app-assessment-mobile', templateUrl: './assessment-mobile.page.html', styleUrls: ['./assessment-mobile.page.scss'], @@ -218,7 +217,6 @@ export class AssessmentMobilePage implements OnInit, OnDestroy { // get the latest activity tasks and refresh the assessment submission data this.activityService.getActivity(this.activityId, false, null, () => { this.btnDisabled$.next(false); - this.saving = false; }); } else { this.btnDisabled$.next(false); diff --git a/projects/v3/src/app/pages/auth/auth-direct-login/auth-direct-login.component.spec.ts b/projects/v3/src/app/pages/auth/auth-direct-login/auth-direct-login.component.spec.ts index a4a91ad73..3314a24a1 100644 --- a/projects/v3/src/app/pages/auth/auth-direct-login/auth-direct-login.component.spec.ts +++ b/projects/v3/src/app/pages/auth/auth-direct-login/auth-direct-login.component.spec.ts @@ -1,8 +1,8 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed, fakeAsync, tick, flushMicrotasks } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, fakeAsync, tick, flushMicrotasks } from '@angular/core/testing'; import { AuthDirectLoginComponent } from './auth-direct-login.component'; import { AuthService } from '@v3/services/auth.service'; -import { of, throwError } from 'rxjs'; +import { of } from 'rxjs'; import { Router, ActivatedRoute, convertToParamMap } from '@angular/router'; import { UtilsService } from '@v3/services/utils.service'; import { NotificationsService } from '@v3/services/notifications.service'; @@ -25,7 +25,7 @@ describe('AuthDirectLoginComponent', () => { let storageSpy: jasmine.SpyObj; let sharedSpy: jasmine.SpyObj; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ imports: [], declarations: [AuthDirectLoginComponent], @@ -46,32 +46,13 @@ describe('AuthDirectLoginComponent', () => { { provide: AuthService, useValue: jasmine.createSpyObj('AuthService', { - 'directLogin': of(true), - 'authenticate': of({}), - 'autologin': of({ experience: { timelineId: 1 } }), - 'clearCache': Promise.resolve(), - 'logout': Promise.resolve(), - 'getMyInfo': of({ - data: { - user: { - id: 1, - uuid: 'test-uuid', - name: 'Test User', - firstName: 'Test', - lastName: 'User', - email: 'test@example.com', - image: 'test-image.jpg', - role: 'participant', - contactNumber: '123456789', - userHash: 'test-hash' - } - } - }) + 'directLogin': of(true) }) }, { provide: ExperienceService, useValue: jasmine.createSpyObj('ExperienceService', { + 'getMyInfo': of(true), 'switchProgram': of(true) }) }, @@ -114,43 +95,30 @@ describe('AuthDirectLoginComponent', () => { }); beforeEach(() => { - authServiceSpy.autologin.and.returnValue(of({ experience: { timelineId: 1 } })); - authServiceSpy.getMyInfo.and.returnValue(of({ - data: { - user: { - id: 1, - uuid: 'test-uuid', - name: 'Test User', - firstName: 'Test', - lastName: 'User', - email: 'test@example.com', - image: 'test-image.jpg', - role: 'participant', - contactNumber: '123456789', - userHash: 'test-hash' - } - } - })); + authServiceSpy.authenticate.and.returnValue(of({} as any)); + authServiceSpy.getMyInfo.and.returnValue(of({} as any)); switcherSpy.switchProgram.and.returnValue(Promise.resolve(of({}))); storageSpy.get.and.returnValue([{ timeline: { id: 1 } }]); storageSpy.getConfig.and.returnValue({ logo: null }); }); describe('when testing ngOnInit()', () => { - it('should pop up alert if auth token is not provided', async () => { + it('should pop up alert if auth token is not provided', fakeAsync(() => { const params = { authToken: null }; routeSpy.snapshot.paramMap.get = jasmine.createSpy().and.callFake(key => params[key]); - notificationSpy.alert.and.returnValue(Promise.resolve() as any); - - await component.ngOnInit(); + utils.isEmpty = jasmine.createSpy('isEmpty').and.returnValue(true); - expect(notificationSpy.alert.calls.count()).toBe(1); - }); + tick(50); + fixture.detectChanges(); + fixture.whenStable().then(() => { + expect(notificationSpy.alert.calls.count()).toBe(1); + }); + })); it('should pop up alert if direct login service throw error', fakeAsync(() => { const params = { authToken: 'abc' }; routeSpy.snapshot.paramMap.get = jasmine.createSpy().and.callFake(key => params[key]); - authServiceSpy.autologin.and.returnValue(throwError(() => new Error('Login failed'))); + authServiceSpy.authenticate.and.throwError(''); fixture.detectChanges(); tick(50); fixture.detectChanges(); @@ -159,7 +127,7 @@ describe('AuthDirectLoginComponent', () => { const button = notificationSpy.alert.calls.first().args[0].buttons[0]; (typeof button === 'string') ? button : button.handler(true); - expect(authServiceSpy.logout).toHaveBeenCalled(); + expect(routerSpy.navigate.calls.first().args[0]).toEqual(['login']); })); describe('should navigate to', () => { @@ -198,10 +166,10 @@ describe('AuthDirectLoginComponent', () => { fixture.detectChanges(); if (doAuthentication) { - expect(authServiceSpy.autologin.calls.count()).toBe(1); + expect(authServiceSpy.authenticate.calls.count()).toBe(1); expect(authServiceSpy.getMyInfo.calls.count()).toBe(1); } else { - expect(authServiceSpy.autologin.calls.count()).toBe(0); + expect(authServiceSpy.authenticate.calls.count()).toBe(0); expect(authServiceSpy.getMyInfo.calls.count()).toBe(0); } @@ -218,11 +186,10 @@ describe('AuthDirectLoginComponent', () => { })); it('skip authentication if auth token match', () => { - // note: component always calls autologin when token is provided switchProgram = false; redirect = ['experiences']; storageSpy.get.and.returnValue('abc'); - doAuthentication = true; + doAuthentication = false; }); it('program switcher page if timeline id is not passed in', () => { @@ -298,8 +265,8 @@ describe('AuthDirectLoginComponent', () => { tmpParams.act, { task: 'assessment', - contextId: tmpParams.ctxt, - assessmentId: tmpParams.asmt, + task_id: tmpParams.asmt, + context_id: tmpParams.ctxt } ]; // redirect = ['assessment', 'assessment', tmpParams.act, tmpParams.ctxt, tmpParams.asmt]; @@ -359,8 +326,8 @@ describe('AuthDirectLoginComponent', () => { tmpParams.act, { task: 'assessment', - contextId: tmpParams.ctxt, - assessmentId: tmpParams.asmt, + task_id: tmpParams.asmt, + context_id: tmpParams.ctxt } ]; setReferrerCalled = true; diff --git a/projects/v3/src/app/pages/auth/auth-direct-login/auth-direct-login.component.ts b/projects/v3/src/app/pages/auth/auth-direct-login/auth-direct-login.component.ts index 2e54fb94e..d5dcf2475 100644 --- a/projects/v3/src/app/pages/auth/auth-direct-login/auth-direct-login.component.ts +++ b/projects/v3/src/app/pages/auth/auth-direct-login/auth-direct-login.component.ts @@ -9,7 +9,6 @@ import { SharedService } from '@v3/services/shared.service'; import { environment } from '@v3/environments/environment'; @Component({ - standalone: false, selector: 'app-auth-direct-login', templateUrl: 'auth-direct-login.component.html', }) @@ -245,7 +244,7 @@ export class AuthDirectLoginComponent implements OnInit { return this.navigate(['auth', 'registration', res.data.user.email, res.data.user.key]); } - const errorMessage = res?.message?.includes('User not enrolled') ? res.message : $localize`Your link is invalid or expired.`; + const errorMessage = res.message.includes('User not enrolled') ? res.message : $localize`Your link is invalid or expired.`; return this.notificationsService.alert({ message: errorMessage, diff --git a/projects/v3/src/app/pages/auth/auth-forgot-password/auth-forgot-password.component.spec.ts b/projects/v3/src/app/pages/auth/auth-forgot-password/auth-forgot-password.component.spec.ts index ef21ed262..e4359d55d 100644 --- a/projects/v3/src/app/pages/auth/auth-forgot-password/auth-forgot-password.component.spec.ts +++ b/projects/v3/src/app/pages/auth/auth-forgot-password/auth-forgot-password.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { AuthForgotPasswordComponent } from './auth-forgot-password.component'; import { AuthService } from '@v3/services/auth.service'; @@ -18,7 +18,7 @@ describe('AuthForgotPasswordComponent', () => { let notificationSpy: jasmine.SpyObj; let storageSpy: jasmine.SpyObj; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule, HttpClientTestingModule], declarations: [AuthForgotPasswordComponent], diff --git a/projects/v3/src/app/pages/auth/auth-forgot-password/auth-forgot-password.component.ts b/projects/v3/src/app/pages/auth/auth-forgot-password/auth-forgot-password.component.ts index 6c553cca0..81189a742 100644 --- a/projects/v3/src/app/pages/auth/auth-forgot-password/auth-forgot-password.component.ts +++ b/projects/v3/src/app/pages/auth/auth-forgot-password/auth-forgot-password.component.ts @@ -4,7 +4,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { AuthService } from '@v3/services/auth.service'; @Component({ - standalone: false, selector: 'app-auth-forgot-password', templateUrl: 'auth-forgot-password.component.html', styleUrls: ['auth-forgot-password.component.scss'] diff --git a/projects/v3/src/app/pages/auth/auth-global-login/auth-global-login.component.spec.ts b/projects/v3/src/app/pages/auth/auth-global-login/auth-global-login.component.spec.ts index ac86adfce..5fcc89209 100644 --- a/projects/v3/src/app/pages/auth/auth-global-login/auth-global-login.component.spec.ts +++ b/projects/v3/src/app/pages/auth/auth-global-login/auth-global-login.component.spec.ts @@ -1,5 +1,5 @@ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { ReactiveFormsModule } from '@angular/forms'; import { RouterTestingModule } from '@angular/router/testing'; import { of, throwError } from 'rxjs'; import { UtilsService } from '@v3/services/utils.service'; @@ -7,158 +7,68 @@ import { AuthService } from '@v3/services/auth.service'; import { BrowserStorageService } from '@v3/services/storage.service'; import { NotificationsService } from '@v3/services/notifications.service'; import { ExperienceService } from '@v3/services/experience.service'; -import { AuthGlobalLoginComponent } from './auth-global-login.component'; -import { ActivatedRoute, Router } from '@angular/router'; - -describe('AuthGlobalLoginComponent', () => { - let component: AuthGlobalLoginComponent; - let fixture: ComponentFixture; - let mockAuthService: jasmine.SpyObj; - let mockUtilsService: jasmine.SpyObj; - let mockStorageService: jasmine.SpyObj; - let mockNotificationService: jasmine.SpyObj; - let mockExperienceService: jasmine.SpyObj; - let mockRouter: jasmine.SpyObj; - let activatedRoute: any; - - beforeEach(waitForAsync(() => { - mockAuthService = jasmine.createSpyObj('AuthService', ['autologin', 'getMyInfo', 'logout']); - mockUtilsService = jasmine.createSpyObj('UtilsService', ['redirectToUrl']); - mockStorageService = jasmine.createSpyObj('BrowserStorageService', ['get', 'set', 'remove']); - mockNotificationService = jasmine.createSpyObj('NotificationsService', ['alert']); - mockExperienceService = jasmine.createSpyObj('ExperienceService', ['switchProgram']); - mockRouter = jasmine.createSpyObj('Router', ['navigate']); - - activatedRoute = { - snapshot: { - paramMap: { - get: jasmine.createSpy('get').and.callFake((key: string) => { - if (key === 'apikey') return 'test-apikey'; - if (key === 'multiple') return null; - return null; - }) - } - } - }; - - TestBed.configureTestingModule({ - declarations: [AuthGlobalLoginComponent], - imports: [RouterTestingModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA], +import { AuthRegistrationComponent } from '../auth-registration/auth-registration.component'; + +describe('AuthRegistrationComponent', () => { + let component: AuthRegistrationComponent; + let fixture: ComponentFixture; + let mockAuthService, mockUtilsService, mockStorageService, mockNotificationService, mockExperienceService; + + beforeEach(async () => { + mockAuthService = jasmine.createSpyObj(['verifyRegistration', 'checkDomain', 'saveRegistration', 'authenticate']); + mockUtilsService = jasmine.createSpyObj(['find']); + mockStorageService = jasmine.createSpyObj(['get', 'set', 'remove', 'setUser']); + mockNotificationService = jasmine.createSpyObj(['popUp', 'alert']); + mockExperienceService = jasmine.createSpyObj(['switchProgram']); + + await TestBed.configureTestingModule({ + declarations: [AuthRegistrationComponent], + imports: [ + ReactiveFormsModule, + RouterTestingModule + ], providers: [ { provide: AuthService, useValue: mockAuthService }, { provide: UtilsService, useValue: mockUtilsService }, { provide: BrowserStorageService, useValue: mockStorageService }, { provide: NotificationsService, useValue: mockNotificationService }, - { provide: ExperienceService, useValue: mockExperienceService }, - { provide: Router, useValue: mockRouter }, - { provide: ActivatedRoute, useValue: activatedRoute } + { provide: ExperienceService, useValue: mockExperienceService } ] - }).compileComponents(); - })); + }) + .compileComponents(); - beforeEach(() => { - fixture = TestBed.createComponent(AuthGlobalLoginComponent); + fixture = TestBed.createComponent(AuthRegistrationComponent); component = fixture.componentInstance; + fixture.detectChanges(); }); it('should create', () => { expect(component).toBeTruthy(); }); - it('should handle missing apikey on init', async () => { - activatedRoute.snapshot.paramMap.get.and.returnValue(null); - mockNotificationService.alert.and.returnValue(Promise.resolve()); - - await component.ngOnInit(); - - expect(mockNotificationService.alert).toHaveBeenCalled(); - }); - - it('should login and navigate on valid apikey', async () => { - const mockExperience = { - id: 1, - locale: 'en-US' - }; - mockAuthService.autologin.and.returnValue(of({ experience: mockExperience })); - mockAuthService.getMyInfo.and.returnValue(of({ - data: { - user: { - id: 1, - uuid: 'test-uuid', - name: 'Test User', - firstName: 'Test', - lastName: 'User', - email: 'test@example.com', - image: 'test.jpg', - role: 'participant', - contactNumber: '+1234567890', - userHash: 'hash123' - } - } - })); - mockExperienceService.switchProgram.and.returnValue(Promise.resolve()); - mockRouter.navigate.and.returnValue(Promise.resolve(true)); - - await component.ngOnInit(); - - expect(mockAuthService.autologin).toHaveBeenCalledWith({ apikey: 'test-apikey' }); - expect(mockAuthService.getMyInfo).toHaveBeenCalled(); - expect(mockExperienceService.switchProgram).toHaveBeenCalledWith({ experience: mockExperience }); - }); - - it('should set hasMultipleStacks when multiple param is true', async () => { - activatedRoute.snapshot.paramMap.get.and.callFake((key: string) => { - if (key === 'apikey') return 'test-apikey'; - if (key === 'multiple') return 'true'; - return null; - }); - const mockExperience = { - id: 1, - locale: 'en-US' - }; - mockAuthService.autologin.and.returnValue(of({ experience: mockExperience })); - mockAuthService.getMyInfo.and.returnValue(of({ - data: { - user: { - id: 1, - uuid: 'test-uuid', - name: 'Test User', - firstName: 'Test', - lastName: 'User', - email: 'test@example.com', - image: 'test.jpg', - role: 'participant', - contactNumber: '+1234567890', - userHash: 'hash123' - } - } - })); - mockExperienceService.switchProgram.and.returnValue(Promise.resolve()); - mockRouter.navigate.and.returnValue(Promise.resolve(true)); - - await component.ngOnInit(); - - expect(mockStorageService.set).toHaveBeenCalledWith('hasMultipleStacks', true); + it('should initialize the form', () => { + component.initForm(); + expect(component.registerationForm).toBeDefined(); + expect(component.registerationForm.get('email').value).toEqual(''); }); - it('should show error alert on login failure', async () => { - mockAuthService.autologin.and.returnValue(throwError(() => ({ message: 'Login failed' }))); - mockNotificationService.alert.and.returnValue(Promise.resolve()); + it('should validate query parameters', () => { + mockAuthService.verifyRegistration.and.returnValue(of(true)); + mockAuthService.checkDomain.and.returnValue(of(true)); - await component.ngOnInit(); + component.validateQueryParams(); - expect(mockNotificationService.alert).toHaveBeenCalled(); + expect(mockAuthService.verifyRegistration).toHaveBeenCalled(); + expect(mockAuthService.checkDomain).toHaveBeenCalled(); }); - it('should show specific error for user not enrolled', async () => { - mockAuthService.autologin.and.returnValue(throwError(() => ({ message: 'User not enrolled in program' }))); - mockNotificationService.alert.and.returnValue(Promise.resolve()); + it('should register the user', () => { + mockAuthService.saveRegistration.and.returnValue(of(true)); + mockAuthService.authenticate.and.returnValue(of(true)); - await component.ngOnInit(); + component.register(); - expect(mockNotificationService.alert).toHaveBeenCalledWith(jasmine.objectContaining({ - message: jasmine.stringContaining('User not enrolled') - })); + expect(mockAuthService.saveRegistration).toHaveBeenCalled(); + expect(mockAuthService.authenticate).toHaveBeenCalled(); }); }); diff --git a/projects/v3/src/app/pages/auth/auth-global-login/auth-global-login.component.ts b/projects/v3/src/app/pages/auth/auth-global-login/auth-global-login.component.ts index af7e3ace5..b3be208ce 100644 --- a/projects/v3/src/app/pages/auth/auth-global-login/auth-global-login.component.ts +++ b/projects/v3/src/app/pages/auth/auth-global-login/auth-global-login.component.ts @@ -8,7 +8,6 @@ import { environment } from '@v3/environments/environment'; import { UtilsService } from '@v3/app/services/utils.service'; @Component({ - standalone: false, selector: 'app-auth-global-login', templateUrl: 'auth-global-login.component.html' }) @@ -81,7 +80,7 @@ export class AuthGlobalLoginComponent implements OnInit { } private _error(res?): Promise { - const errorMessage = res?.message?.includes('User not enrolled') ? res.message : $localize`Your link is invalid or expired.`; + const errorMessage = res.message.includes('User not enrolled') ? res.message : $localize`Your link is invalid or expired.`; return this.notificationsService.alert({ message: errorMessage, diff --git a/projects/v3/src/app/pages/auth/auth-login/auth-login.component.spec.ts b/projects/v3/src/app/pages/auth/auth-login/auth-login.component.spec.ts index da3dfb76c..14a34ca31 100644 --- a/projects/v3/src/app/pages/auth/auth-login/auth-login.component.spec.ts +++ b/projects/v3/src/app/pages/auth/auth-login/auth-login.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { AuthLoginComponent } from './auth-login.component'; import { AuthService } from '@v3/services/auth.service'; diff --git a/projects/v3/src/app/pages/auth/auth-login/auth-login.component.ts b/projects/v3/src/app/pages/auth/auth-login/auth-login.component.ts index 847d8299d..987a6b573 100644 --- a/projects/v3/src/app/pages/auth/auth-login/auth-login.component.ts +++ b/projects/v3/src/app/pages/auth/auth-login/auth-login.component.ts @@ -7,7 +7,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { ExperienceService } from '@v3/services/experience.service'; @Component({ - standalone: false, selector: 'app-auth-login', templateUrl: 'auth-login.component.html', styleUrls: ['auth-login.component.scss'] diff --git a/projects/v3/src/app/pages/auth/auth-logout/auth-logout.component.spec.ts b/projects/v3/src/app/pages/auth/auth-logout/auth-logout.component.spec.ts index 41e13f4e3..839f39f6f 100644 --- a/projects/v3/src/app/pages/auth/auth-logout/auth-logout.component.spec.ts +++ b/projects/v3/src/app/pages/auth/auth-logout/auth-logout.component.spec.ts @@ -1,5 +1,5 @@ import { AuthLogoutComponent } from './auth-logout.component'; -import { waitForAsync, ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, fakeAsync } from '@angular/core/testing'; import { AuthService } from '@v3/services/auth.service'; import { Router, ActivatedRoute } from '@angular/router'; // import { NewRelicService } from '@v3/services/new-relic.service'; @@ -17,7 +17,7 @@ describe('AuthLogoutComponent', () => { // let newRelicSpy: jasmine.SpyObj; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [AuthLogoutComponent], imports: [RouterTestingModule], diff --git a/projects/v3/src/app/pages/auth/auth-logout/auth-logout.component.ts b/projects/v3/src/app/pages/auth/auth-logout/auth-logout.component.ts index 311e1f9f0..a5218f2b2 100644 --- a/projects/v3/src/app/pages/auth/auth-logout/auth-logout.component.ts +++ b/projects/v3/src/app/pages/auth/auth-logout/auth-logout.component.ts @@ -3,7 +3,6 @@ import { ActivatedRoute } from '@angular/router'; import { AuthService } from '@v3/services/auth.service'; @Component({ - standalone: false, selector: 'app-auth-logout', template: '', }) diff --git a/projects/v3/src/app/pages/auth/auth-registration/auth-registration.component.spec.ts b/projects/v3/src/app/pages/auth/auth-registration/auth-registration.component.spec.ts index c8352e25a..fbd0df7a5 100644 --- a/projects/v3/src/app/pages/auth/auth-registration/auth-registration.component.spec.ts +++ b/projects/v3/src/app/pages/auth/auth-registration/auth-registration.component.spec.ts @@ -1,5 +1,4 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { HttpClientTestingModule } from '@angular/common/http/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { AuthRegistrationComponent } from './auth-registration.component'; @@ -60,7 +59,6 @@ describe('AuthRegistrationComponent', () => { ReactiveFormsModule ], declarations: [AuthRegistrationComponent], - schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: AuthService, useValue: authServiceSpy }, { provide: BrowserStorageService, useValue: storageSpy }, @@ -89,76 +87,6 @@ describe('AuthRegistrationComponent', () => { storageService.get.and.returnValue(false); }); - it('should authenticate user and switch program on successful registration', async () => { - // set up component state for registration - component.unRegisteredDirectLink = true; // use direct link mode for simpler validation - component.user = { - id: 123, - key: 'test-key', - email: 'test@example.com', - contact: null - }; - component.password = 'TestPassword123!'; - component.confirmPassword = 'TestPassword123!'; - component.isAgreed = true; - - authService.saveRegistration.and.returnValue(of({ - data: { apikey: 'test-api-key' } - })); - authService.authenticate.and.returnValue(of({ - data: { - auth: { - apikey: 'test-api-key', - experience: { - id: 1, - uuid: 'test-uuid', - timelineId: 1, - projectId: 1, - name: 'Test Experience', - description: 'Test Description', - type: 'Test Type', - leadImage: 'test-image.jpg', - status: null, - setupStep: null, - color: '#000000', - secondaryColor: '#FFFFFF', - role: 'participant', - isLast: false, - locale: 'en-US', - supportName: 'Support', - supportEmail: 'support@example.com', - cardUrl: 'card-url', - bannerUrl: 'banner-url', - logoUrl: 'logo-url', - iconUrl: 'icon-url', - reviewRating: false, - truncateDescription: false, - team: { - id: 1 - }, - featureToggle: { - pulseCheckIndicator: false, - showProjectHub: false, - } - } - } - } - })); - storageService.set.and.stub(); - storageService.remove.and.stub(); - experienceService.switchProgram.and.returnValue(Promise.resolve()); - - component.register(); - - await fixture.whenStable(); - - expect(authService.saveRegistration).toHaveBeenCalledWith({ - user_id: 123, - key: 'test-key', - password: jasmine.any(String), // password is auto-generated or set via confirmPassword - }); - }); - describe('unRegisteredDirectLink === true scenarios', () => { beforeEach(() => { component.unRegisteredDirectLink = true; @@ -408,7 +336,7 @@ describe('AuthRegistrationComponent', () => { expect(notificationsService.popUp).toHaveBeenCalledWith( 'shortMessage', { message: jasmine.stringContaining('Registration not complete') }, - false as any + false ); }); @@ -496,7 +424,7 @@ describe('AuthRegistrationComponent', () => { expect(notificationsService.popUp).toHaveBeenCalledWith( 'shortMessage', { message: jasmine.stringContaining('Registration not complete') }, - false as any + false ); }); diff --git a/projects/v3/src/app/pages/auth/auth-registration/auth-registration.component.ts b/projects/v3/src/app/pages/auth/auth-registration/auth-registration.component.ts index f6c0cc666..11cb4e4eb 100644 --- a/projects/v3/src/app/pages/auth/auth-registration/auth-registration.component.ts +++ b/projects/v3/src/app/pages/auth/auth-registration/auth-registration.component.ts @@ -19,7 +19,6 @@ import { environment } from '@v3/environments/environment'; import { HttpErrorResponse } from '@angular/common/http'; @Component({ - standalone: false, selector: 'app-auth-registration', templateUrl: './auth-registration.component.html', styleUrls: ['./auth-registration.component.scss'] diff --git a/projects/v3/src/app/pages/auth/auth-reset-password/auth-reset-password.component.spec.ts b/projects/v3/src/app/pages/auth/auth-reset-password/auth-reset-password.component.spec.ts index 67691ae4e..600c38e8e 100644 --- a/projects/v3/src/app/pages/auth/auth-reset-password/auth-reset-password.component.spec.ts +++ b/projects/v3/src/app/pages/auth/auth-reset-password/auth-reset-password.component.spec.ts @@ -1,6 +1,6 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { APP_BASE_HREF, Location, LocationStrategy, PathLocationStrategy } from '@angular/common'; -import { waitForAsync, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { AuthResetPasswordComponent } from './auth-reset-password.component'; import { AuthService } from '@v3/services/auth.service'; import { Observable, of, pipe, throwError } from 'rxjs'; diff --git a/projects/v3/src/app/pages/auth/auth-reset-password/auth-reset-password.component.ts b/projects/v3/src/app/pages/auth/auth-reset-password/auth-reset-password.component.ts index 37d02bc84..34c3dbb98 100644 --- a/projects/v3/src/app/pages/auth/auth-reset-password/auth-reset-password.component.ts +++ b/projects/v3/src/app/pages/auth/auth-reset-password/auth-reset-password.component.ts @@ -6,7 +6,6 @@ import { AuthService } from '@v3/services/auth.service'; import { UtilsService } from '@v3/services/utils.service'; @Component({ - standalone: false, selector: 'app-auth-reset-password', templateUrl: './auth-reset-password.component.html', styleUrls: ['./auth-reset-password.component.scss'] diff --git a/projects/v3/src/app/pages/auth/auth.component.ts b/projects/v3/src/app/pages/auth/auth.component.ts index 662296dc1..540a38c80 100644 --- a/projects/v3/src/app/pages/auth/auth.component.ts +++ b/projects/v3/src/app/pages/auth/auth.component.ts @@ -1,7 +1,6 @@ import { Component } from '@angular/core'; @Component({ - standalone: false, selector: 'app-auth', template: '' }) diff --git a/projects/v3/src/app/pages/auth/terms-conditions-preview/terms-conditions-preview.component.spec.ts b/projects/v3/src/app/pages/auth/terms-conditions-preview/terms-conditions-preview.component.spec.ts index 2fc57131a..801ece7aa 100644 --- a/projects/v3/src/app/pages/auth/terms-conditions-preview/terms-conditions-preview.component.spec.ts +++ b/projects/v3/src/app/pages/auth/terms-conditions-preview/terms-conditions-preview.component.spec.ts @@ -1,4 +1,4 @@ -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { ModalController } from '@ionic/angular'; import { TermsConditionsPreviewComponent } from './terms-conditions-preview.component'; @@ -8,7 +8,7 @@ describe('TermsConditionsPreviewComponent', () => { let fixture: ComponentFixture; let ModalControllerSpy: jasmine.SpyObj; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ TermsConditionsPreviewComponent ], providers: [ diff --git a/projects/v3/src/app/pages/auth/terms-conditions-preview/terms-conditions-preview.component.ts b/projects/v3/src/app/pages/auth/terms-conditions-preview/terms-conditions-preview.component.ts index df1e45472..6c6122695 100644 --- a/projects/v3/src/app/pages/auth/terms-conditions-preview/terms-conditions-preview.component.ts +++ b/projects/v3/src/app/pages/auth/terms-conditions-preview/terms-conditions-preview.component.ts @@ -3,7 +3,6 @@ import { ModalController } from '@ionic/angular'; import { DomSanitizer } from '@angular/platform-browser'; @Component({ - standalone: false, selector: 'app-terms-conditions-preview', templateUrl: './terms-conditions-preview.component.html', styleUrls: ['./terms-conditions-preview.component.scss'] diff --git a/projects/v3/src/app/pages/chat/attachment-popover/attachment-popover.component.spec.ts b/projects/v3/src/app/pages/chat/attachment-popover/attachment-popover.component.spec.ts index f514b6eed..337a567d6 100644 --- a/projects/v3/src/app/pages/chat/attachment-popover/attachment-popover.component.spec.ts +++ b/projects/v3/src/app/pages/chat/attachment-popover/attachment-popover.component.spec.ts @@ -1,39 +1,16 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; -import { PopoverController } from '@ionic/angular'; -import { of } from 'rxjs'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { AttachmentPopoverComponent } from './attachment-popover.component'; -import { FilestackService } from '@v3/services/filestack.service'; -import { NotificationsService } from '@v3/services/notifications.service'; -import { ModalService } from '@v3/services/modal.service'; describe('AttachmentPopoverComponent', () => { let component: AttachmentPopoverComponent; let fixture: ComponentFixture; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ AttachmentPopoverComponent ], schemas: [CUSTOM_ELEMENTS_SCHEMA], - providers: [ - { - provide: PopoverController, - useValue: jasmine.createSpyObj('PopoverController', ['dismiss', 'create']) - }, - { - provide: FilestackService, - useValue: jasmine.createSpyObj('FilestackService', ['getFileTypes', 'getS3Config', 'open']) - }, - { - provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', ['alert', 'presentToast']) - }, - { - provide: ModalService, - useValue: jasmine.createSpyObj('ModalService', ['openUppyModal']) - } - ] }) .compileComponents(); })); diff --git a/projects/v3/src/app/pages/chat/attachment-popover/attachment-popover.component.ts b/projects/v3/src/app/pages/chat/attachment-popover/attachment-popover.component.ts index 51448b729..fdf23fd3b 100644 --- a/projects/v3/src/app/pages/chat/attachment-popover/attachment-popover.component.ts +++ b/projects/v3/src/app/pages/chat/attachment-popover/attachment-popover.component.ts @@ -6,7 +6,6 @@ import { FilestackService } from '@v3/services/filestack.service'; import { NotificationsService } from '../../../services/notifications.service'; @Component({ - standalone: false, selector: 'app-attachment-popover', templateUrl: './attachment-popover.component.html', styleUrls: ['./attachment-popover.component.scss'], diff --git a/projects/v3/src/app/pages/chat/chat-info/chat-info.component.html b/projects/v3/src/app/pages/chat/chat-info/chat-info.component.html index 0714155db..daa110af1 100644 --- a/projects/v3/src/app/pages/chat/chat-info/chat-info.component.html +++ b/projects/v3/src/app/pages/chat/chat-info/chat-info.component.html @@ -21,7 +21,7 @@
- +
Who is in this chat diff --git a/projects/v3/src/app/pages/chat/chat-info/chat-info.component.spec.ts b/projects/v3/src/app/pages/chat/chat-info/chat-info.component.spec.ts index ecc17ada1..a949455ed 100644 --- a/projects/v3/src/app/pages/chat/chat-info/chat-info.component.spec.ts +++ b/projects/v3/src/app/pages/chat/chat-info/chat-info.component.spec.ts @@ -1,4 +1,4 @@ -import { waitForAsync, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, fakeAsync, tick } from '@angular/core/testing'; import { CUSTOM_ELEMENTS_SCHEMA, Directive } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; @@ -25,7 +25,7 @@ describe('ChatInfoComponent', () => { const modalCtrlSpy = jasmine.createSpyObj('ModalController', ['dismiss', 'create']); modalCtrlSpy.create.and.returnValue(modalSpy); - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ declarations: [ChatInfoComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], diff --git a/projects/v3/src/app/pages/chat/chat-info/chat-info.component.ts b/projects/v3/src/app/pages/chat/chat-info/chat-info.component.ts index 86ee5d0b7..c6bd9b5fb 100644 --- a/projects/v3/src/app/pages/chat/chat-info/chat-info.component.ts +++ b/projects/v3/src/app/pages/chat/chat-info/chat-info.component.ts @@ -6,7 +6,6 @@ import { ChatService, ChatChannel, ChannelMembers } from '@v3/services/chat.serv import { ModalController } from '@ionic/angular'; @Component({ - standalone: false, selector: 'app-chat-info', templateUrl: 'chat-info.component.html', styleUrls: ['chat-info.component.scss'] diff --git a/projects/v3/src/app/pages/chat/chat-list/chat-list.component.spec.ts b/projects/v3/src/app/pages/chat/chat-list/chat-list.component.spec.ts index 0c2f7028d..2fee824cc 100644 --- a/projects/v3/src/app/pages/chat/chat-list/chat-list.component.spec.ts +++ b/projects/v3/src/app/pages/chat/chat-list/chat-list.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA, EventEmitter } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; import { ChatListComponent } from './chat-list.component'; import { ChatChannel, ChatService } from '@v3/services/chat.service'; @@ -38,7 +38,7 @@ describe('ChatListComponent', () => { let routeStub: Partial; let fastFeedbackSpy: jasmine.SpyObj; - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ imports: [RouterTestingModule], declarations: [ChatListComponent], @@ -124,8 +124,6 @@ describe('ChatListComponent', () => { expect(component.chatList).toBeDefined(); expect(chatSeviceSpy.getChatList.calls.count()).toBe(1); expect(chatSeviceSpy.getPusherChannels.calls.count()).toBe(1); - expect(pusherSpy.subscribeChannel).toHaveBeenCalledWith('chat', 'sdb746-93r7dc-5f44eb4f'); - expect(pusherSpy.subscribeChannel).toHaveBeenCalledWith('chat', 'kb5gt-9nfbj-5f45eb4g'); }); }); @@ -155,50 +153,6 @@ describe('ChatListComponent', () => { ); expect(component.navigate.emit).toHaveBeenCalled(); }); - - it('should ignore unsupported keyboard input', () => { - spyOn(component.navigate, 'emit'); - - component.goToChatRoom(mockChats.data.channels[0] as any, { - code: 'KeyA', - preventDefault: jasmine.createSpy('preventDefault'), - } as any); - - expect(component.navigate.emit).not.toHaveBeenCalled(); - expect(storageSpy.setCurrentChatChannel).not.toHaveBeenCalled(); - }); - - it('should navigate to room on mobile and set current channel', () => { - component.isMobile = true; - - component.goToChatRoom(mockChats.data.channels[0] as any); - - expect(storageSpy.setCurrentChatChannel).toHaveBeenCalledWith(mockChats.data.channels[0] as any); - expect(routerSpy.navigate).toHaveBeenCalledWith(['v3', 'messages', 'chat-room']); - }); - - it('should prevent default for keyboard enter action', () => { - const preventDefault = jasmine.createSpy('preventDefault'); - spyOn(component.navigate, 'emit'); - - component.goToChatRoom(mockChats.data.channels[0] as any, { - code: 'Enter', - preventDefault, - } as any); - - expect(preventDefault).toHaveBeenCalled(); - expect(component.navigate.emit).toHaveBeenCalled(); - }); - }); - - describe('when testing getChatDate()', () => { - it('should format date through utils service', () => { - const testDate = '2026-02-23T00:00:00.000Z'; - - component.getChatDate(testDate); - - expect(utils.timeFormatter).toHaveBeenCalledWith(testDate); - }); }); }); diff --git a/projects/v3/src/app/pages/chat/chat-list/chat-list.component.ts b/projects/v3/src/app/pages/chat/chat-list/chat-list.component.ts index 853dfe35c..48a66dc7a 100644 --- a/projects/v3/src/app/pages/chat/chat-list/chat-list.component.ts +++ b/projects/v3/src/app/pages/chat/chat-list/chat-list.component.ts @@ -9,7 +9,6 @@ import { PusherService } from '@v3/services/pusher.service'; * this is an app chat list component */ @Component({ - standalone: false, selector: 'app-chat-list', templateUrl: 'chat-list.component.html', styleUrls: ['chat-list.component.scss'] diff --git a/projects/v3/src/app/pages/chat/chat-preview/chat-preview.component.spec.ts b/projects/v3/src/app/pages/chat/chat-preview/chat-preview.component.spec.ts index f621e7b64..403a1a60b 100644 --- a/projects/v3/src/app/pages/chat/chat-preview/chat-preview.component.spec.ts +++ b/projects/v3/src/app/pages/chat/chat-preview/chat-preview.component.spec.ts @@ -1,25 +1,28 @@ -import { TestBed, waitForAsync, ComponentFixture } from '@angular/core/testing'; +import { By } from '@angular/platform-browser'; +import { DebugElement } from '@angular/core'; +import { TestBed, async, ComponentFixture } from '@angular/core/testing'; import { ChatPreviewComponent } from './chat-preview.component'; import { IonicModule, ModalController } from '@ionic/angular'; import { DomSanitizer } from '@angular/platform-browser'; import { CommonModule } from '@angular/common'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; +import { + HttpTestingController, + HttpClientTestingModule +} from '@angular/common/http/testing'; describe('ChatPreviewComponent', () => { const TEST_URL = 'https://www.practera.com'; let component: ChatPreviewComponent; let fixture: ComponentFixture; - let modalSpy: jasmine.SpyObj; + let modalSpy: ModalController; + let domSanitizerSpy: DomSanitizer; - beforeEach(waitForAsync(() => { + beforeEach(async () => { TestBed.configureTestingModule({ imports: [ IonicModule, CommonModule, HttpClientTestingModule ], declarations: [ ChatPreviewComponent ], providers: [ - { - provide: ModalController, - useValue: jasmine.createSpyObj('ModalController', ['dismiss']), - }, + ModalController, { provide: DomSanitizer, useValue: { @@ -33,17 +36,21 @@ describe('ChatPreviewComponent', () => { fixture = TestBed.createComponent(ChatPreviewComponent); component = fixture.componentInstance; - modalSpy = TestBed.inject(ModalController) as jasmine.SpyObj; - })); + modalSpy = TestBed.inject(ModalController); + domSanitizerSpy = TestBed.inject(DomSanitizer); + + // fixture.detectChanges(); + }); it('should created', () => { expect(component).toBeTruthy(); }); - it('should hold file input data', () => { - component.file = { url: TEST_URL }; + it('should has toolbar to control modal content', () => { + spyOn(window, 'open'); + spyOn(modalSpy, 'dismiss'); - expect(component.file.url).toBe(TEST_URL); + component.file = { url: TEST_URL }; }); describe('download()', () => { @@ -56,65 +63,14 @@ describe('ChatPreviewComponent', () => { component.download(); expect(window.open).toHaveBeenCalledWith(TEST_URL, '_system'); }); - - it('should open and prevent default for enter/space keyboard actions', () => { - spyOn(window, 'open'); - const keyboardEvent = { - code: 'Enter', - preventDefault: jasmine.createSpy('preventDefault'), - } as any; - component.file = { url: TEST_URL }; - - component.download(keyboardEvent); - - expect(keyboardEvent.preventDefault).toHaveBeenCalled(); - expect(window.open).toHaveBeenCalledWith(TEST_URL, '_system'); - }); - - it('should ignore unsupported keyboard key in download', () => { - spyOn(window, 'open'); - const keyboardEvent = { - code: 'KeyA', - preventDefault: jasmine.createSpy('preventDefault'), - } as any; - - component.download(keyboardEvent); - - expect(keyboardEvent.preventDefault).not.toHaveBeenCalled(); - expect(window.open).not.toHaveBeenCalled(); - }); }); describe('close()', () => { it('should close opened modal', () => { + spyOn(modalSpy, 'dismiss'); component.close(); - expect(modalSpy.dismiss).toHaveBeenCalled(); }); - - it('should close and prevent default for keyboard enter/space', () => { - const keyboardEvent = { - code: 'Space', - preventDefault: jasmine.createSpy('preventDefault'), - } as any; - - component.close(keyboardEvent); - - expect(keyboardEvent.preventDefault).toHaveBeenCalled(); - expect(modalSpy.dismiss).toHaveBeenCalled(); - }); - - it('should ignore unsupported keyboard key in close', () => { - const keyboardEvent = { - code: 'Escape', - preventDefault: jasmine.createSpy('preventDefault'), - } as any; - - component.close(keyboardEvent); - - expect(keyboardEvent.preventDefault).not.toHaveBeenCalled(); - expect(modalSpy.dismiss).not.toHaveBeenCalled(); - }); }); describe('isBrowserSupportedVideo', () => { diff --git a/projects/v3/src/app/pages/chat/chat-preview/chat-preview.component.ts b/projects/v3/src/app/pages/chat/chat-preview/chat-preview.component.ts index 9609a2bd1..b87790a1c 100644 --- a/projects/v3/src/app/pages/chat/chat-preview/chat-preview.component.ts +++ b/projects/v3/src/app/pages/chat/chat-preview/chat-preview.component.ts @@ -3,7 +3,6 @@ import { ModalController } from '@ionic/angular'; import { DomSanitizer } from '@angular/platform-browser'; @Component({ - standalone: false, selector: 'app-chat-preview', templateUrl: 'chat-preview.component.html', styleUrls: ['chat-preview.component.scss'] @@ -41,7 +40,7 @@ export class ChatPreviewComponent { */ isBrowserSupportedVideo(): boolean { const supportedTypes = ['video/mp4', 'video/webm', 'video/ogg']; - return !!(this.file?.type && supportedTypes.includes(this.file.type)); + return this.file?.type && supportedTypes.includes(this.file.type); } /** diff --git a/projects/v3/src/app/pages/chat/chat-room/chat-room.component.spec.ts b/projects/v3/src/app/pages/chat/chat-room/chat-room.component.spec.ts index 78c497064..884b2c963 100644 --- a/projects/v3/src/app/pages/chat/chat-room/chat-room.component.spec.ts +++ b/projects/v3/src/app/pages/chat/chat-room/chat-room.component.spec.ts @@ -1,19 +1,17 @@ import { CUSTOM_ELEMENTS_SCHEMA, ElementRef } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing'; import { RouterTestingModule } from '@angular/router/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ChatRoomComponent } from './chat-room.component'; -import { ChannelMembers, ChatService, Message } from '@v3/services/chat.service'; -import { of, Subject } from 'rxjs'; +import { ChannelMembers, ChatService } from '@v3/services/chat.service'; +import { NotificationsService } from '@v3/services/notifications.service'; +import { of } from 'rxjs'; import { BrowserStorageService } from '@v3/services/storage.service'; import { UtilsService } from '@v3/services/utils.service'; import { PusherService } from '@v3/services/pusher.service'; import { FilestackService } from '@v3/services/filestack.service'; -import { NotificationsService } from '@v3/services/notifications.service'; -import { ModalService } from '@v3/services/modal.service'; import { MockRouter } from '@testingv3/mocked.service'; import { Router, ActivatedRoute, convertToParamMap } from '@angular/router'; -import { IonContent, ModalController, PopoverController } from '@ionic/angular'; +import { IonContent, ModalController } from '@ionic/angular'; import { TestUtils } from '@testingv3/utils'; import { mockMembers } from '@testingv3/fixtures'; @@ -35,11 +33,12 @@ describe('ChatRoomComponent', () => { let MockIoncontent: IonContent; const modalSpy = jasmine.createSpyObj('Modal', ['present', 'onDidDismiss']); modalSpy.onDidDismiss.and.returnValue(new Promise(() => { })); - let modalCtrlSpy: any; + const modalCtrlSpy = jasmine.createSpyObj('ModalController', ['dismiss', 'create']); + modalCtrlSpy.create.and.returnValue(modalSpy); - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ - imports: [RouterTestingModule, HttpClientTestingModule], + imports: [RouterTestingModule], declarations: [ChatRoomComponent], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ @@ -53,16 +52,13 @@ describe('ChatRoomComponent', () => { }, { provide: IonContent, - useValue: { - scrollToBottom: jasmine.createSpy('scrollToBottom'), - ionScrollEnd: new Subject(), - } + useValue: jasmine.createSpyObj('IonContent', ['scrollToBottom']) }, { provide: ChatService, useValue: jasmine.createSpyObj('ChatService', { - 'getChatMembers': of({ data: { channelMembers: [] } }), - 'getMessageList': of({ messages: [], cursor: null }), + 'getChatMembers': of(true), + 'getMessageList': of(true), 'postNewMessage': of(true), 'markMessagesAsSeen': of(true), 'postAttachmentMessage': of(true), @@ -82,18 +78,6 @@ describe('ChatRoomComponent', () => { provide: FilestackService, useValue: jasmine.createSpyObj('FilestackService', ['getFileTypes', 'getS3Config', 'open', 'previewFile']) }, - { - provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', ['alert', 'presentToast', 'loading', 'dismiss']) - }, - { - provide: ModalService, - useValue: jasmine.createSpyObj('ModalService', ['addModal', 'openUppyModal']) - }, - { - provide: PopoverController, - useValue: jasmine.createSpyObj('PopoverController', ['create', 'dismiss']) - }, { provide: Router, useClass: MockRouter, @@ -125,8 +109,6 @@ describe('ChatRoomComponent', () => { })); beforeEach(() => { - // override ngAfterViewInit before creating component to prevent ionScrollEnd error - spyOn(ChatRoomComponent.prototype, 'ngAfterViewInit').and.callFake(() => {}); fixture = TestBed.createComponent(ChatRoomComponent); component = fixture.componentInstance; routeStub = TestBed.inject(ActivatedRoute); @@ -137,11 +119,8 @@ describe('ChatRoomComponent', () => { pusherSpy = TestBed.inject(PusherService) as jasmine.SpyObj; filestackSpy = TestBed.inject(FilestackService) as jasmine.SpyObj; MockIoncontent = TestBed.inject(IonContent) as jasmine.SpyObj; - modalCtrlSpy = TestBed.inject(ModalController); - modalCtrlSpy.create.and.returnValue(Promise.resolve(modalSpy)); - // assign content for tests that need it - component.content = MockIoncontent; fixture.detectChanges(); + component.content = MockIoncontent; }); const mockChatMessages = { @@ -155,13 +134,6 @@ describe('ChatRoomComponent', () => { file: null, created: '2020-08-28 05:45:52', sentAt: '2020-08-28 05:45:52', - sender: { - id: 1, - uuid: '8bee29d0-bf45', - name: 'Test User 1', - email: 'test1@example.com' - }, - scheduled: null }, { uuid: '0403b4d9', @@ -171,13 +143,6 @@ describe('ChatRoomComponent', () => { file: null, created: '2020-08-28 05:45:50', sentAt: '2020-08-28 05:45:50', - sender: { - id: 1, - uuid: '8bee29d0-bf45', - name: 'Test User 1', - email: 'test1@example.com' - }, - scheduled: null } ] }; @@ -286,27 +251,22 @@ describe('ChatRoomComponent', () => { senderUuid: '8bee29d0-bf45', senderName: 'user01', senderRole: 'participants', - senderAvatar: 'http://www.example.com/image.png', - sender: undefined, - scheduled: undefined, - sentAt: undefined + senderAvatar: 'http://www.example.com/image.png' }; const receivedMessage = component.getMessageFromEvent(pusherData); tick(); expect(receivedMessage).toEqual({ uuid: pusherData.uuid, - sender: undefined, senderName: pusherData.senderName, senderRole: pusherData.senderRole, senderAvatar: pusherData.senderAvatar, - isSender: false, + isSender: pusherData.isSender, message: pusherData.message, created: pusherData.created, file: pusherData.file, channelUuid: pusherData.channelUuid, senderUuid: '8bee29d0-bf45', - sentAt: undefined, - scheduled: undefined + sentAt: undefined }); })); }); @@ -324,18 +284,7 @@ describe('ChatRoomComponent', () => { senderUuid: '8bee29d0-bf45', senderName: 'user01', senderRole: 'participants', - senderAvatar: 'http://www.example.com/image.png', - sender: { - id: 1, - uuid: '8bee29d0-bf45', - name: 'user01', - role: 'participants', - avatar: 'http://www.example.com/image.png', - email: 'test@example.com' - }, - channelUuid: 'c43vwsvc', - sentAt: undefined, - scheduled: undefined, + senderAvatar: 'http://www.example.com/image.png' }; chatServiceSpy.postNewMessage.and.returnValue(of(saveMessageRes)); chatServiceSpy.getMessageList.and.returnValue(of(mockChatMessages)); @@ -347,18 +296,16 @@ describe('ChatRoomComponent', () => { component.sendMessage(); expect(component.messageList[2]).toEqual({ uuid: saveMessageRes.uuid, - sender: saveMessageRes.sender, + senderName: saveMessageRes.senderName, + senderRole: saveMessageRes.senderRole, + senderAvatar: saveMessageRes.senderAvatar, isSender: saveMessageRes.isSender, message: saveMessageRes.message, created: saveMessageRes.created, file: saveMessageRes.file, - scheduled: undefined, senderUuid: saveMessageRes.senderUuid, - senderName: saveMessageRes.senderName, - senderRole: saveMessageRes.senderRole, - senderAvatar: saveMessageRes.senderAvatar, - sentAt: undefined, - preview: undefined + sentAt: undefined + // sentAt: saveMessageRes.sentAt, }); }); }); @@ -435,29 +382,25 @@ describe('ChatRoomComponent', () => { }); describe('when testing preview()', () => { - beforeEach(() => { - modalCtrlSpy.create.calls.reset(); - }); - - it(`should call modal controller when previewing file without mimetype`, async () => { + it(`should call file stack previewFile if file didn't have mimetype`, () => { const file = { filename: 'unnamed.jpg', mimetype: null, url: 'https://cdn.filestackcontent.com/X8Cj0Y4QS2AmDUZX6LSq', status: 'Stored' }; - await component.preview(file); - expect(modalCtrlSpy.create.calls.count()).toBe(1); + filestackSpy.previewFile.and.returnValue(Promise.resolve({})); + component.preview(file); + expect(filestackSpy.previewFile.calls.count()).toBe(1); }); - - it(`should call modal controller when previewing file with mimetype`, async () => { + it(`should call modal controller if file have mimetype`, () => { const file = { filename: 'unnamed.jpg', mimetype: 'image/jpeg', url: 'https://cdn.filestackcontent.com/X8Cj0Y4QS2AmDUZX6LSq', status: 'Stored' }; - await component.preview(file); + component.preview(file); expect(modalCtrlSpy.create.calls.count()).toBe(1); }); }); @@ -549,11 +492,10 @@ describe('ChatRoomComponent', () => { }); describe('when testing openChatInfo()', () => { - it(`should call modal controller if app in mobile view`, async () => { - modalCtrlSpy.create.calls.reset(); - component.isMobile = true; - await component.openChatInfo(); - expect(modalCtrlSpy.create.calls.count()).toBe(1); + it(`should call modal controller if app in mobile view`, () => { + utils.isMobile = jasmine.createSpy('utils.isMobile').and.returnValue(true); + component.openChatInfo(); + expect(modalCtrlSpy.create.calls.count()).toBe(2); }); }); @@ -609,7 +551,7 @@ describe('ChatRoomComponent', () => { describe('when testing isLastMessage()', () => { it(`should assign correct value for 'noAvatar' variable`, () => { - component.messageList = mockChatMessages.messages as Message[]; + component.messageList = mockChatMessages.messages; component.isLastMessage(mockChatMessages.messages[1]); expect(component.messageList[1].noAvatar).toEqual(false); }); @@ -633,7 +575,6 @@ describe('ChatRoomComponent', () => { it('should return false for a message with only empty html tags', () => { const message: any = { uuid: '1', message: '

' }; - (utils as any).isQuillContentEmpty.and.returnValue(true); expect(component.hasEditableText(message)).toBeFalse(); }); }); @@ -688,6 +629,7 @@ describe('ChatRoomComponent', () => { }); it('should call notificationsService.alert for confirmation', () => { + spyOn(notificationsService, 'alert'); component.deleteMessage('msg-1'); expect(notificationsService.alert).toHaveBeenCalled(); }); diff --git a/projects/v3/src/app/pages/chat/chat-room/chat-room.component.ts b/projects/v3/src/app/pages/chat/chat-room/chat-room.component.ts index 3d4bf1acd..a779a5a21 100644 --- a/projects/v3/src/app/pages/chat/chat-room/chat-room.component.ts +++ b/projects/v3/src/app/pages/chat/chat-room/chat-room.component.ts @@ -34,7 +34,6 @@ interface selectedAttachment { } @Component({ - standalone: false, selector: "app-chat-room", templateUrl: "./chat-room.component.html", styleUrls: ["./chat-room.component.scss"], diff --git a/projects/v3/src/app/pages/chat/chat-view/chat-view.component.spec.ts b/projects/v3/src/app/pages/chat/chat-view/chat-view.component.spec.ts index 9fce1822b..4a8be47a1 100644 --- a/projects/v3/src/app/pages/chat/chat-view/chat-view.component.spec.ts +++ b/projects/v3/src/app/pages/chat/chat-view/chat-view.component.spec.ts @@ -1,15 +1,12 @@ -import { ComponentFixture, TestBed, fakeAsync, tick, waitForAsync } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, fakeAsync, tick, waitForAsync } from '@angular/core/testing'; import { CUSTOM_ELEMENTS_SCHEMA, Directive } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { of } from 'rxjs'; import { ChatViewComponent } from './chat-view.component'; import { UtilsService } from '@v3/services/utils.service'; import { TestUtils } from '@testingv3/utils'; import { ActivatedRouteStub } from '@testingv3/activated-route-stub'; import { MockRouter } from '@testingv3/mocked.service'; -import { AuthService } from '@v3/app/services/auth.service'; describe('ChatViewComponent', () => { let component: ChatViewComponent; @@ -20,7 +17,6 @@ describe('ChatViewComponent', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ChatViewComponent], - imports: [HttpClientTestingModule], schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { @@ -34,15 +30,7 @@ describe('ChatViewComponent', () => { { provide: ActivatedRoute, useValue: new ActivatedRouteStub({}) - }, - { - provide: AuthService, - useValue: jasmine.createSpyObj('AuthService', { - 'isAuthenticated': true, - 'logout': of(true), - 'authenticate': of({}) - }), - }, + } ] }) .compileComponents(); diff --git a/projects/v3/src/app/pages/chat/chat-view/chat-view.component.ts b/projects/v3/src/app/pages/chat/chat-view/chat-view.component.ts index 205cf675c..47c902e3d 100644 --- a/projects/v3/src/app/pages/chat/chat-view/chat-view.component.ts +++ b/projects/v3/src/app/pages/chat/chat-view/chat-view.component.ts @@ -6,7 +6,6 @@ import { DOCUMENT } from '@angular/common'; import { AuthService } from '@v3/app/services/auth.service'; @Component({ - standalone: false, selector: 'app-chat-view', templateUrl: './chat-view.component.html', styleUrls: ['./chat-view.component.scss'] diff --git a/projects/v3/src/app/pages/chat/chat.page.ts b/projects/v3/src/app/pages/chat/chat.page.ts index 919aa565e..80f0a2860 100644 --- a/projects/v3/src/app/pages/chat/chat.page.ts +++ b/projects/v3/src/app/pages/chat/chat.page.ts @@ -1,7 +1,6 @@ import { Component } from '@angular/core'; @Component({ - standalone: false, template: '', }) export class ChatPage {} diff --git a/projects/v3/src/app/pages/chat/edit-message-popup/edit-message-popup.component.ts b/projects/v3/src/app/pages/chat/edit-message-popup/edit-message-popup.component.ts index ca7b834a3..7560a0f81 100644 --- a/projects/v3/src/app/pages/chat/edit-message-popup/edit-message-popup.component.ts +++ b/projects/v3/src/app/pages/chat/edit-message-popup/edit-message-popup.component.ts @@ -8,7 +8,6 @@ import { QuillModules } from 'ngx-quill'; * displays a quill editor pre-populated with the message text. */ @Component({ - standalone: false, selector: 'app-edit-message-popup', templateUrl: './edit-message-popup.component.html', styleUrls: ['./edit-message-popup.component.scss'], diff --git a/projects/v3/src/app/pages/devtool/devtool.page.ts b/projects/v3/src/app/pages/devtool/devtool.page.ts index e6fe857a2..face09a45 100644 --- a/projects/v3/src/app/pages/devtool/devtool.page.ts +++ b/projects/v3/src/app/pages/devtool/devtool.page.ts @@ -12,7 +12,6 @@ import { environment } from '../../../environments/environment'; import { FfmpegService } from '../../services/ffmpeg.service'; @Component({ - standalone: false, selector: 'app-devtool', templateUrl: './devtool.page.html', styleUrls: ['./devtool.page.scss'], diff --git a/projects/v3/src/app/pages/due-dates/due-dates.component.spec.ts b/projects/v3/src/app/pages/due-dates/due-dates.component.spec.ts index c0dae7b6e..12decf234 100644 --- a/projects/v3/src/app/pages/due-dates/due-dates.component.spec.ts +++ b/projects/v3/src/app/pages/due-dates/due-dates.component.spec.ts @@ -1,216 +1,24 @@ -import { ComponentFixture, TestBed, waitForAsync, fakeAsync, tick } from '@angular/core/testing'; +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { IonicModule } from '@ionic/angular'; -import { Router } from '@angular/router'; -import { of, Subject, throwError } from 'rxjs'; import { DueDatesComponent } from './due-dates.component'; -import { DueDatesService } from './due-dates.service'; -import { NotificationsService } from '@v3/app/services/notifications.service'; -import { AssessmentService } from '@v3/app/services/assessment.service'; -import { UtilsService } from '@v3/services/utils.service'; -import { TestUtils } from '@testingv3/utils'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; describe('DueDatesComponent', () => { let component: DueDatesComponent; let fixture: ComponentFixture; - let dueDatesService: jasmine.SpyObj; - let assessmentService: jasmine.SpyObj; - let notificationsService: jasmine.SpyObj; - let router: jasmine.SpyObj; - - const dueAssessments = [ - { - id: 1, - name: 'Assessment A', - description: 'Description A', - dueDate: '2026-03-01 10:30:00', - contextId: 10, - activityId: 20, - }, - { - id: 2, - name: 'Assessment B', - description: 'Description B', - dueDate: null, - contextId: 11, - activityId: 21, - }, - ] as any; beforeEach(waitForAsync(() => { - const dueStatusSubject = new Subject(); - TestBed.configureTestingModule({ declarations: [ DueDatesComponent ], - imports: [IonicModule.forRoot()], - schemas: [CUSTOM_ELEMENTS_SCHEMA], - providers: [ - { provide: UtilsService, useClass: TestUtils }, - { - provide: DueDatesService, - useValue: jasmine.createSpyObj('DueDatesService', ['createCalendarEvent', 'generateGoogleCalendarUrl']), - }, - { - provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', ['alert']), - }, - { - provide: AssessmentService, - useValue: jasmine.createSpyObj('AssessmentService', ['dueStatusAssessments']), - }, - { - provide: Router, - useValue: jasmine.createSpyObj('Router', ['navigate']), - }, - ], + imports: [IonicModule.forRoot()] }).compileComponents(); fixture = TestBed.createComponent(DueDatesComponent); component = fixture.componentInstance; - dueDatesService = TestBed.inject(DueDatesService) as jasmine.SpyObj; - assessmentService = TestBed.inject(AssessmentService) as jasmine.SpyObj; - notificationsService = TestBed.inject(NotificationsService) as jasmine.SpyObj; - router = TestBed.inject(Router) as jasmine.SpyObj; - - (assessmentService.dueStatusAssessments as jasmine.Spy).and.returnValue(dueStatusSubject.asObservable()); - dueStatusSubject.next([]); - dueStatusSubject.complete(); - - dueDatesService.generateGoogleCalendarUrl.and.returnValue('https://calendar.google.com/test-url'); fixture.detectChanges(); })); it('should create', () => { expect(component).toBeTruthy(); }); - - it('should initialize filteredAssessments$ in ngOnInit', fakeAsync(() => { - component.ngOnInit(); - component.assessments$.next(component.groupByDate([dueAssessments[0]])); - component.searchText$.next({ target: { value: 'assessment a' } }); - let result: any; - - component.filteredAssessments$.subscribe(res => result = res); - tick(250); - - expect(result.length).toBe(1); - expect(result[0].assessments.length).toBe(1); - })); - - it('should keep all groups when search query is whitespace', fakeAsync(() => { - component.ngOnInit(); - const groups = component.groupByDate(dueAssessments); - component.assessments$.next(groups); - component.searchText$.next({ target: { value: ' ' } }); - let result: any; - - component.filteredAssessments$.subscribe(res => result = res); - tick(250); - - expect(result).toEqual(groups); - })); - - it('should group assessments by month and place no due date last', () => { - const grouped = component.groupByDate(dueAssessments); - - expect(grouped.length).toBe(2); - expect(grouped[grouped.length - 1].month).toBe('No due date'); - }); - - it('should convert datetime string to tuple array', () => { - expect(component.convertDateTimeString('2026-03-01 10:30:00')).toEqual([2026, 3, 1, 10, 30]); - }); - - it('should load grouped assessments in ionViewDidEnter when data exists', () => { - const subject = new Subject(); - (assessmentService.dueStatusAssessments as jasmine.Spy).and.returnValue(subject.asObservable()); - - component.ionViewDidEnter(); - subject.next([dueAssessments[0]]); - subject.complete(); - - expect(component.isLoading).toBeFalse(); - expect(component.assessments$.value.length).toBe(1); - }); - - it('should set empty assessments when due list is empty', () => { - (assessmentService.dueStatusAssessments as jasmine.Spy).and.returnValue(of([])); - - component.ionViewDidEnter(); - - expect(component.assessments$.value).toEqual([]); - expect(component.isLoading).toBeFalse(); - }); - - it('should handle dueStatusAssessments error in ionViewDidEnter', () => { - (assessmentService.dueStatusAssessments as jasmine.Spy).and.returnValue(throwError(() => new Error('boom')) as any); - - component.ionViewDidEnter(); - - expect(component.isLoading).toBeFalse(); - }); - - it('should call createCalendarEvent in downloadiCal success path', () => { - component.downloadiCal(dueAssessments[0]); - - expect(dueDatesService.createCalendarEvent).toHaveBeenCalled(); - }); - - it('should alert on downloadiCal failure', () => { - dueDatesService.createCalendarEvent.and.callFake(() => { - throw new Error('ical error'); - }); - - component.downloadiCal(dueAssessments[0]); - - expect(notificationsService.alert).toHaveBeenCalled(); - }); - - it('should open google calendar URL in new tab', () => { - spyOn(window, 'open').and.returnValue({} as Window); - - component.downloadGoogleCalendar(dueAssessments[0]); - - expect(dueDatesService.generateGoogleCalendarUrl).toHaveBeenCalled(); - expect(window.open).toHaveBeenCalledWith('https://calendar.google.com/test-url', '_blank'); - }); - - it('should alert when google calendar popup is blocked', () => { - spyOn(window, 'open').and.returnValue(null); - - component.downloadGoogleCalendar(dueAssessments[0]); - - expect(notificationsService.alert).toHaveBeenCalledWith({ - message: 'Please allow pop-ups for this website', - }); - }); - - it('should alert when google calendar URL generation throws', () => { - dueDatesService.generateGoogleCalendarUrl.and.callFake(() => { - throw new Error('url error'); - }); - - component.downloadGoogleCalendar(dueAssessments[0]); - - expect(notificationsService.alert).toHaveBeenCalledWith({ - message: 'Failed to generate Google calendar URL', - }); - }); - - it('should navigate to activity desktop route in goTo', () => { - component.goTo(dueAssessments[0]); - - expect(router.navigate).toHaveBeenCalledWith(['v3', 'activity-desktop', 10, 20, 1]); - }); - - it('should complete unsubscribe subject on destroy', () => { - const nextSpy = spyOn(component.unsubscribe$, 'next'); - const completeSpy = spyOn(component.unsubscribe$, 'complete'); - - component.ngOnDestroy(); - - expect(nextSpy).toHaveBeenCalled(); - expect(completeSpy).toHaveBeenCalled(); - }); }); diff --git a/projects/v3/src/app/pages/due-dates/due-dates.component.ts b/projects/v3/src/app/pages/due-dates/due-dates.component.ts index f49b24c8f..902271396 100644 --- a/projects/v3/src/app/pages/due-dates/due-dates.component.ts +++ b/projects/v3/src/app/pages/due-dates/due-dates.component.ts @@ -14,7 +14,6 @@ interface GroupedAssessments { } @Component({ - standalone: false, selector: 'app-due-dates', templateUrl: './due-dates.component.html', styleUrls: ['./due-dates.component.scss'], diff --git a/projects/v3/src/app/pages/due-dates/due-dates.service.spec.ts b/projects/v3/src/app/pages/due-dates/due-dates.service.spec.ts index 90a5906cd..7974b34c9 100644 --- a/projects/v3/src/app/pages/due-dates/due-dates.service.spec.ts +++ b/projects/v3/src/app/pages/due-dates/due-dates.service.spec.ts @@ -13,65 +13,4 @@ describe('DueDatesService', () => { it('should be created', () => { expect(service).toBeTruthy(); }); - - it('should format date to compact google/ics style', () => { - const date = new Date('2026-03-01T10:30:45.000Z'); - const formatted = service.formatDate(date); - - expect(formatted).toBe('20260301T103045Z'); - }); - - it('should build google calendar URL with provided end date and location/reminder', () => { - const url = service.generateGoogleCalendarUrl({ - start: new Date('2026-03-01T10:00:00'), - end: new Date('2026-03-01T11:00:00'), - title: 'Due Date', - description: 'Assessment description', - location: 'Online', - reminder: 60, - }); - - expect(url).toContain('https://calendar.google.com/calendar/render?action=TEMPLATE'); - expect(url).toContain('text=Due%20Date'); - expect(url).toContain('location=Online'); - expect(url).toContain('reminders=reminder_60_minutes'); - }); - - it('should default google calendar end time to +1 hour when no end date', () => { - const url = service.generateGoogleCalendarUrl({ - start: new Date('2026-03-01T10:00:00'), - title: 'Due Date', - description: 'Assessment description', - }); - - expect(url).toContain('dates='); - expect(url).toContain('/'); - }); - - it('should call downloadCalendarEvent when createEvent succeeds', () => { - const downloadSpy = spyOn(service, 'downloadCalendarEvent'); - service.icsCreateEvent = ((event: any, callback: any) => { - callback(null, 'BEGIN:VCALENDAR...'); - return undefined as any; - }) as any; - - service.createCalendarEvent({ - title: 'Assessment', - start: [2026, 3, 1, 10, 0], - } as any); - - expect(downloadSpy).toHaveBeenCalledWith('BEGIN:VCALENDAR...', 'Assessment'); - }); - - it('should throw error when createEvent callback receives error', () => { - service.icsCreateEvent = ((event: any, callback: any) => { - callback({ message: 'failed' }, null); - return undefined as any; - }) as any; - - expect(() => service.createCalendarEvent({ - title: 'Assessment', - start: [2026, 3, 1, 10, 0], - } as any)).toThrowError('Failed to create event: failed'); - }); }); diff --git a/projects/v3/src/app/pages/due-dates/due-dates.service.ts b/projects/v3/src/app/pages/due-dates/due-dates.service.ts index e16340071..5bf82419f 100644 --- a/projects/v3/src/app/pages/due-dates/due-dates.service.ts +++ b/projects/v3/src/app/pages/due-dates/due-dates.service.ts @@ -18,13 +18,10 @@ export interface GoogleCalendarParams { providedIn: 'root' }) export class DueDatesService { - // wrapped for testability (esbuild freezes module namespaces) - icsCreateEvent = createEvent; - constructor() { } createCalendarEvent(eventData: EventAttributes): void { - return this.icsCreateEvent(eventData, (error, value) => { + return createEvent(eventData, (error, value) => { if (error) { throw new Error('Failed to create event: ' + error.message); } diff --git a/projects/v3/src/app/pages/events/event-detail/event-detail.component.spec.ts b/projects/v3/src/app/pages/events/event-detail/event-detail.component.spec.ts index 85027c561..41cf3f296 100644 --- a/projects/v3/src/app/pages/events/event-detail/event-detail.component.spec.ts +++ b/projects/v3/src/app/pages/events/event-detail/event-detail.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed } from '@angular/core/testing'; import { EventDetailComponent } from './event-detail.component'; import { of } from 'rxjs'; import { Router } from '@angular/router'; @@ -62,7 +62,7 @@ describe('EventDetailComponent', () => { let modalSpy: jasmine.SpyObj; const testUtils = new TestUtils(); - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ComponentsModule, BrowserAnimationsModule], declarations: [EventDetailComponent], @@ -159,18 +159,17 @@ describe('EventDetailComponent', () => { fixture.detectChanges(); component.event = tmpEvent; expect(component.buttonText.label).toEqual(expected); - expect(page.eventName.innerHTML.trim()).toEqual(tmpEvent.name); - expect(page.activityName.innerHTML.trim()).toEqual(tmpEvent.activityName); + expect(page.eventName.innerHTML).toEqual(tmpEvent.name); + expect(page.activityName.innerHTML).toEqual(tmpEvent.activityName); if (expected === 'Expired') { expect(page.expired).toBeTruthy(); } else { expect(page.expired).toBeFalsy(); } - expect(page.date.innerHTML.trim()).toEqual(`${utils.utcToLocal(tmpEvent.startTime, 'date')}, ${utils.utcToLocal(tmpEvent.startTime, 'time')} - ${utils.utcToLocal(tmpEvent.endTime, 'time')}`); + expect(page.date.innerHTML).toEqual(`${utils.utcToLocal(tmpEvent.startTime, 'date')}, ${utils.utcToLocal(tmpEvent.startTime, 'time')} - ${utils.utcToLocal(tmpEvent.endTime, 'time')}`); // expect(page.time.innerHTML).toEqual(`${utils.utcToLocal(tmpEvent.startTime, 'time')} - ${utils.utcToLocal(tmpEvent.endTime, 'time')}`); - expect(page.location.innerHTML.trim()).toEqual(tmpEvent.location); - // normalize whitespace - template interpolation may add extra spaces - expect(page.capacity.textContent.trim().replace(/\s+/g, ' ')).toEqual(`${tmpEvent.remainingCapacity} Seats Available Out of ${tmpEvent.capacity}`); + expect(page.location.innerHTML).toEqual(tmpEvent.location); + expect(page.capacity.innerHTML).toEqual(`${tmpEvent.remainingCapacity} Seats Available Out of ${tmpEvent.capacity}`); if (expected) { expect(page.button.innerHTML.trim()).toEqual(expected); } @@ -266,7 +265,7 @@ describe('EventDetailComponent', () => { tmpEvent.isBooked = true; tmpEvent.isPast = true; tmpEvent.assessment = null; - expected = undefined; + expected = false; }); it(`should return 'View Check In' if the event's check in assessment is done`, () => { diff --git a/projects/v3/src/app/pages/events/event-detail/event-detail.component.ts b/projects/v3/src/app/pages/events/event-detail/event-detail.component.ts index 55eebb97f..a16020a0b 100644 --- a/projects/v3/src/app/pages/events/event-detail/event-detail.component.ts +++ b/projects/v3/src/app/pages/events/event-detail/event-detail.component.ts @@ -7,7 +7,6 @@ import { NotificationsService } from '@v3/services/notifications.service'; import { BrowserStorageService } from '@v3/services/storage.service'; @Component({ - standalone: false, selector: 'app-event-detail', templateUrl: 'event-detail.component.html', styleUrls: ['event-detail.component.scss'] diff --git a/projects/v3/src/app/pages/events/event-list/event-list.component.html b/projects/v3/src/app/pages/events/event-list/event-list.component.html index 727c292c8..80c86c7e1 100644 --- a/projects/v3/src/app/pages/events/event-list/event-list.component.html +++ b/projects/v3/src/app/pages/events/event-list/event-list.component.html @@ -23,7 +23,7 @@

Event categories

[value]="selectedActivities" (ionChange)="onSelect(filterEle.value)" #filterEle> - {{ activity.name }} + diff --git a/projects/v3/src/app/pages/events/event-list/event-list.component.spec.ts b/projects/v3/src/app/pages/events/event-list/event-list.component.spec.ts index 4d993df7c..5da0d9e3d 100644 --- a/projects/v3/src/app/pages/events/event-list/event-list.component.spec.ts +++ b/projects/v3/src/app/pages/events/event-list/event-list.component.spec.ts @@ -1,5 +1,5 @@ import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { waitForAsync, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing'; +import { async, ComponentFixture, TestBed, tick, fakeAsync } from '@angular/core/testing'; import { EventListComponent } from './event-list.component'; import { EventService, Event } from '@v3/services/event.service'; import { Observable, of, pipe } from 'rxjs'; @@ -37,7 +37,7 @@ describe('EventListComponent', () => { let utils: UtilsService; const testUtils = new TestUtils(); - beforeEach(waitForAsync(() => { + beforeEach(async(() => { TestBed.configureTestingModule({ imports: [ComponentsModule], declarations: [EventListComponent], diff --git a/projects/v3/src/app/pages/events/event-list/event-list.component.ts b/projects/v3/src/app/pages/events/event-list/event-list.component.ts index 6e247aa9f..84a8a0410 100644 --- a/projects/v3/src/app/pages/events/event-list/event-list.component.ts +++ b/projects/v3/src/app/pages/events/event-list/event-list.component.ts @@ -6,7 +6,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { EventDetailComponent } from '../event-detail/event-detail.component'; @Component({ - standalone: false, selector: 'app-event-list', templateUrl: 'event-list.component.html', styleUrls: ['event-list.component.scss'] diff --git a/projects/v3/src/app/pages/events/events-routing.component.ts b/projects/v3/src/app/pages/events/events-routing.component.ts index 3138ef25c..0b055e796 100644 --- a/projects/v3/src/app/pages/events/events-routing.component.ts +++ b/projects/v3/src/app/pages/events/events-routing.component.ts @@ -1,7 +1,6 @@ import { Component } from '@angular/core'; @Component({ - standalone: false, template: '' }) export class EventsRoutingComponent {} diff --git a/projects/v3/src/app/pages/events/events.page.spec.ts b/projects/v3/src/app/pages/events/events.page.spec.ts index 2afbfc299..c22f6fcb4 100644 --- a/projects/v3/src/app/pages/events/events.page.spec.ts +++ b/projects/v3/src/app/pages/events/events.page.spec.ts @@ -2,7 +2,6 @@ import { ComponentFixture, fakeAsync, TestBed, tick, waitForAsync } from '@angul import { ActivatedRoute } from '@angular/router'; import { UtilsService } from '@v3/services/utils.service'; import { IonicModule } from '@ionic/angular'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { EventsPage } from './events.page'; import { ActivatedRouteStub } from '@testingv3/activated-route-stub'; @@ -16,7 +15,6 @@ describe('EventsPage', () => { TestBed.configureTestingModule({ declarations: [ EventsPage ], imports: [IonicModule.forRoot()], - schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: ActivatedRoute, diff --git a/projects/v3/src/app/pages/events/events.page.ts b/projects/v3/src/app/pages/events/events.page.ts index b73386cfd..333353802 100644 --- a/projects/v3/src/app/pages/events/events.page.ts +++ b/projects/v3/src/app/pages/events/events.page.ts @@ -5,7 +5,6 @@ import { Event } from '@v3/services/event.service'; import { DOCUMENT } from '@angular/common'; @Component({ - standalone: false, selector: 'app-events', templateUrl: './events.page.html', styleUrls: ['./events.page.scss'], diff --git a/projects/v3/src/app/pages/experiences/experiences.page.spec.ts b/projects/v3/src/app/pages/experiences/experiences.page.spec.ts index fa9206329..fce9bc637 100644 --- a/projects/v3/src/app/pages/experiences/experiences.page.spec.ts +++ b/projects/v3/src/app/pages/experiences/experiences.page.spec.ts @@ -5,8 +5,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { IonicModule, LoadingController } from '@ionic/angular'; import { ExperienceService } from '@v3/app/services/experience.service'; import { NotificationsService } from '@v3/app/services/notifications.service'; -import { UnlockIndicatorService } from '@v3/app/services/unlock-indicator.service'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { ExperiencesPage } from './experiences.page'; import { MockRouter } from '@testingv3/mocked.service'; @@ -26,7 +24,6 @@ describe('ExperiencesPage', () => { TestBed.configureTestingModule({ declarations: [ ExperiencesPage ], imports: [IonicModule.forRoot()], - schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: Router, @@ -38,14 +35,11 @@ describe('ExperiencesPage', () => { }, { provide: ExperienceService, - useValue: jasmine.createSpyObj('ExperienceService', { - 'getPrograms': undefined, - 'getExperiences': undefined, - 'switchProgramAndNavigate': Promise.resolve(true), - 'getProgresses': of([]), - }, { - 'programsWithProgress$': of([]), - 'experiences$': of(null), + useValue: jasmine.createSpyObj('ExperienceService', [ + 'getPrograms', + 'switchProgramAndNavigate', + ], { + 'programsWithProgress$': of(), }), }, { @@ -64,16 +58,7 @@ describe('ExperiencesPage', () => { }, { provide: BrowserStorageService, - useValue: jasmine.createSpyObj('BrowserStorageService', { - 'getConfig': {}, - 'get': null, - }), - }, - { - provide: UnlockIndicatorService, - useValue: jasmine.createSpyObj('UnlockIndicatorService', ['clearAllTasks'], { - 'unlockedTasks$': of([]) - }) + useValue: jasmine.createSpyObj('BrowserStorageService', ['getConfig']), }, ], }).compileComponents(); diff --git a/projects/v3/src/app/pages/experiences/experiences.page.ts b/projects/v3/src/app/pages/experiences/experiences.page.ts index 2d5c3e29f..9108492ab 100644 --- a/projects/v3/src/app/pages/experiences/experiences.page.ts +++ b/projects/v3/src/app/pages/experiences/experiences.page.ts @@ -11,7 +11,6 @@ import { UnlockIndicatorService } from '@v3/app/services/unlock-indicator.servic import { Subject, Observable } from 'rxjs'; @Component({ - standalone: false, selector: 'app-experiences', templateUrl: './experiences.page.html', styleUrls: ['./experiences.page.scss'], diff --git a/projects/v3/src/app/pages/home/home.page.spec.ts b/projects/v3/src/app/pages/home/home.page.spec.ts index cbe4d57b5..e5fd6a3dd 100644 --- a/projects/v3/src/app/pages/home/home.page.spec.ts +++ b/projects/v3/src/app/pages/home/home.page.spec.ts @@ -3,7 +3,7 @@ import { ActivatedRoute, Router } from '@angular/router'; import { ActivityService } from '@v3/services/activity.service'; import { AssessmentService } from '@v3/services/assessment.service'; import { UtilsService } from '@v3/services/utils.service'; -import { AlertController, IonicModule, ModalController } from '@ionic/angular'; +import { IonicModule } from '@ionic/angular'; import { AchievementService } from '@v3/app/services/achievement.service'; import { HomeService } from '@v3/app/services/home.service'; import { NotificationsService } from '@v3/app/services/notifications.service'; @@ -11,9 +11,6 @@ import { SharedService } from '@v3/app/services/shared.service'; import { BrowserStorageService } from '@v3/app/services/storage.service'; import { FastFeedbackService } from '@v3/app/services/fast-feedback.service'; import { UnlockIndicatorService } from '@v3/app/services/unlock-indicator.service'; -import { PulsecheckService } from '@v3/app/services/pulsecheck.service'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { HomePage } from './home.page'; import { of } from 'rxjs'; @@ -32,19 +29,19 @@ describe('HomePage', () => { let utilsService: jasmine.SpyObj; beforeEach(waitForAsync(() => { - const homeServiceSpy = jasmine.createSpyObj('HomeService', { - 'getExperience': undefined, - 'getMilestones': undefined, - 'getProjectProgress': undefined, - 'getPulseCheckStatuses': of({ data: { pulseCheckStatus: {} } }), - 'getPulseCheckSkills': of({ data: { pulseCheckSkills: [] } }), - }, { - 'experience$': of({ id: 1, name: 'Test Experience', cardUrl: 'test-card-url' }), - 'experienceProgress$': of(0), - 'activityCount$': of(0), - 'milestonesWithProgress$': of([]), - 'milestones$': of([]), - 'projectProgress$': of(0), + const homeServiceSpy = jasmine.createSpyObj('HomeService', [ + 'getExperience', + 'getMilestones', + 'getProjectProgress', + 'getPulseCheckStatuses', + 'getPulseCheckSkills', + ], { + 'experience$': of(), + 'experienceProgress$': of(), + 'activityCount$': of(), + 'milestonesWithProgress$': of(), + 'milestones$': of(), + 'projectProgress$': of(), }); const achievementServiceSpy = jasmine.createSpyObj('AchievementService', [ @@ -55,38 +52,19 @@ describe('HomePage', () => { 'achievements$': of(), }); - const sharedServiceSpy = jasmine.createSpyObj('SharedService', ['refreshJWT'], { - 'team$': of(null), - }); + const sharedServiceSpy = jasmine.createSpyObj('SharedService', ['refreshJWT']); const storageServiceSpy = jasmine.createSpyObj('BrowserStorageService', [ 'get', 'lastVisited', 'getUser', 'getFeature', ]); - // set up default return values for storage service - storageServiceSpy.getUser.and.returnValue({ - role: 'participant', - apikey: 'test-key', - projectId: 1, - teamId: 1, - }); - storageServiceSpy.get.and.callFake((key: string) => { - if (key === 'experience') { - return { id: 1, name: 'Test Experience', cardUrl: 'test-card-url' }; - } - return null; - }); - storageServiceSpy.getFeature.and.returnValue(false); - const fastFeedbackServiceSpy = jasmine.createSpyObj('FastFeedbackService', { - 'pullFastFeedback': of(null), - }); + const fastFeedbackServiceSpy = jasmine.createSpyObj('FastFeedbackService', ['pullFastFeedback']); const utilsServiceSpy = jasmine.createSpyObj('UtilsService', ['setPageTitle', 'isMobile']); TestBed.configureTestingModule({ declarations: [ HomePage ], - imports: [IonicModule.forRoot(), HttpClientTestingModule], - schemas: [CUSTOM_ELEMENTS_SCHEMA], + imports: [IonicModule.forRoot()], providers: [ { provide: ActivatedRoute, @@ -134,27 +112,7 @@ describe('HomePage', () => { 'unlockedTasks$': of([]) }) }, - { - provide: AlertController, - useValue: jasmine.createSpyObj('AlertController', ['create']) - }, - { - provide: PulsecheckService, - useValue: jasmine.createSpyObj('PulsecheckService', ['getPulsecheckStatuses']) - }, - { - provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', [ - 'alert', - 'popUp', - 'getTodoItems', - ]) - }, - { - provide: ModalController, - useValue: jasmine.createSpyObj('ModalController', ['create', 'dismiss']) - }, - ], + ] }).compileComponents(); fixture = TestBed.createComponent(HomePage); @@ -205,12 +163,7 @@ describe('HomePage', () => { it('should get experience from storage', async () => { await component.updateDashboard(); expect(storageService.get).toHaveBeenCalledWith('experience'); - expect(component.experience).toEqual({ name: 'Test Experience', cardUrl: 'test-url' } as any); - }); - - it('should set project hub visibility from feature toggle', async () => { - await component.updateDashboard(); - expect(storageService.getFeature).toHaveBeenCalledWith('pulseCheckIndicator'); + expect(component.experience).toEqual({ name: 'Test Experience', cardUrl: 'test-url' }); }); it('should set project hub visibility from feature toggle', async () => { @@ -244,7 +197,7 @@ describe('HomePage', () => { component.pulseCheckIndicatorEnabled = true; await component.updateDashboard(); expect(homeService.getPulseCheckStatuses).toHaveBeenCalled(); - expect(component.pulseCheckStatus).toEqual({ red: 1, orange: 2, green: 3 } as any); + expect(component.pulseCheckStatus).toEqual({ red: 1, orange: 2, green: 3 }); }); it('should not get pulse check statuses when pulse check indicator is disabled', async () => { @@ -316,9 +269,7 @@ describe('HomePage', () => { data: { pulseCheckSkills: null } })); await component.updateDashboard(); - // component defaults to [] when pulseCheckSkills is null or empty (see line 243: || []) - // and only updates when newSkills.length > 0, so it stays as initial [] - expect(component.pulseCheckSkills).toEqual([]); + expect(component.pulseCheckSkills).toBeNull(); }); it('should handle empty pulse check skills response', async () => { @@ -659,5 +610,3 @@ describe('HomePage', () => { expect(component.getFilteredActivityCount()).toBe(0); }); - }); -}); diff --git a/projects/v3/src/app/pages/home/home.page.ts b/projects/v3/src/app/pages/home/home.page.ts index 213cabd36..8cfce4201 100644 --- a/projects/v3/src/app/pages/home/home.page.ts +++ b/projects/v3/src/app/pages/home/home.page.ts @@ -22,7 +22,6 @@ import { PulsecheckService } from '@v3/app/services/pulsecheck.service'; import { ProjectBriefModalComponent, ProjectBrief } from '@v3/app/components/project-brief-modal/project-brief-modal.component'; @Component({ - standalone: false, selector: "app-home", templateUrl: "./home.page.html", styleUrls: ["./home.page.scss"], diff --git a/projects/v3/src/app/pages/notifications/notifications.page.spec.ts b/projects/v3/src/app/pages/notifications/notifications.page.spec.ts index c821dc4fd..6c936279a 100644 --- a/projects/v3/src/app/pages/notifications/notifications.page.spec.ts +++ b/projects/v3/src/app/pages/notifications/notifications.page.spec.ts @@ -4,8 +4,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { IonicModule, ModalController } from '@ionic/angular'; import { TestUtils } from '@testingv3/utils'; import { NotificationsService } from '@v3/services/notifications.service'; -import { HomeService } from '@v3/services/home.service'; -import { UnlockIndicatorService } from '@v3/services/unlock-indicator.service'; import { NotificationsPage } from './notifications.page'; import { of } from 'rxjs'; @@ -34,12 +32,6 @@ describe('NotificationsPage', () => { provide: NotificationsService, useValue: jasmine.createSpyObj('NotificationsService', [ 'modal', - 'alert', - 'presentToast', - 'getCurrentTodoItems', - 'getTodoItems', - 'markTodoItemAsDone', - 'markMultipleTodoItemsAsDone', ], { 'notification$': of(true), 'eventReminder$': of(true), @@ -51,22 +43,7 @@ describe('NotificationsPage', () => { }, { provide: ModalController, - useValue: jasmine.createSpyObj('ModalController', { - 'dismiss': Promise.resolve(), - 'getTop': Promise.resolve(true), - }), - }, - { - provide: HomeService, - useValue: jasmine.createSpyObj('HomeService', ['getMilestones'], { - 'milestones$': of([]), - }), - }, - { - provide: UnlockIndicatorService, - useValue: jasmine.createSpyObj('UnlockIndicatorService', ['clearAllTasks'], { - 'unlockedTasks$': of([]), - }), + useValue: jasmine.createSpyObj('ModalController', ['dismiss']), }, ] }).compileComponents(); @@ -77,10 +54,6 @@ describe('NotificationsPage', () => { utilsSpy = TestBed.inject(UtilsService); modalSpy = TestBed.inject(ModalController); notificationSpy = TestBed.inject(NotificationsService); - - // reconfigure getTop to return truthy (global test.ts override sets it to null) - (modalSpy.getTop as jasmine.Spy).and.returnValue(Promise.resolve(true)); - fixture.detectChanges(); })); @@ -91,12 +64,12 @@ describe('NotificationsPage', () => { describe('ngOnInit()', () => { it('should initiate subscriptions', () => { utilsSpy.isEmpty = jasmine.createSpy('isEmpty').and.returnValue(false); + component['_addChatTodoItem'] = jasmine.createSpy('_addChatTodoItem'); component.ngOnInit(); - // notification$ emits true, which sets todoItems expect(component.todoItems).toEqual(true as any); - // eventReminder$ emits true, isEmpty returns false, so it gets pushed expect(component.eventReminders).toContain(true); + expect(component['_addChatTodoItem']).toHaveBeenCalledWith(true); }); }); @@ -306,7 +279,7 @@ describe('NotificationsPage', () => { flushMicrotasks(); expect(showEventDetail).toBeUndefined(); - expect(keyboardEvent.preventDefault).toHaveBeenCalledTimes(3); + expect(keyboardEvent.preventDefault).toHaveBeenCalledTimes(4); })); }); }); diff --git a/projects/v3/src/app/pages/notifications/notifications.page.ts b/projects/v3/src/app/pages/notifications/notifications.page.ts index cef85317b..352ee4d37 100644 --- a/projects/v3/src/app/pages/notifications/notifications.page.ts +++ b/projects/v3/src/app/pages/notifications/notifications.page.ts @@ -13,7 +13,6 @@ import { takeUntil } from 'rxjs/operators'; import { Subject } from 'rxjs'; @Component({ - standalone: false, selector: 'app-notifications', templateUrl: './notifications.page.html', styleUrls: ['./notifications.page.scss'], diff --git a/projects/v3/src/app/pages/page-not-found/page-not-found.page.ts b/projects/v3/src/app/pages/page-not-found/page-not-found.page.ts index 72c96b9d0..1d9d2386d 100644 --- a/projects/v3/src/app/pages/page-not-found/page-not-found.page.ts +++ b/projects/v3/src/app/pages/page-not-found/page-not-found.page.ts @@ -4,7 +4,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { Router } from '@angular/router'; @Component({ - standalone: false, selector: 'app-page-not-found', templateUrl: './page-not-found.page.html', styleUrls: ['./page-not-found.page.scss'] diff --git a/projects/v3/src/app/pages/review-desktop/review-desktop.page.spec.ts b/projects/v3/src/app/pages/review-desktop/review-desktop.page.spec.ts index d4dc410c2..03ae55e48 100644 --- a/projects/v3/src/app/pages/review-desktop/review-desktop.page.spec.ts +++ b/projects/v3/src/app/pages/review-desktop/review-desktop.page.spec.ts @@ -1,210 +1,55 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; import { AssessmentService } from '@v3/services/assessment.service'; import { UtilsService } from '@v3/services/utils.service'; -import { NotificationsService } from '@v3/services/notifications.service'; +import { IonicModule } from '@ionic/angular'; +import { ActivatedRouteStub } from '@testingv3/activated-route-stub'; +import { TestUtils } from '@testingv3/utils'; import { ReviewService } from '@v3/app/services/review.service'; -import { of, Subject } from 'rxjs'; +import { of } from 'rxjs'; import { ReviewDesktopPage } from './review-desktop.page'; describe('ReviewDesktopPage', () => { let component: ReviewDesktopPage; - let assessmentService: jasmine.SpyObj; - let reviewService: jasmine.SpyObj; - let notificationsService: jasmine.SpyObj; - let utilsService: jasmine.SpyObj; - - const createComponent = ({ - submissionId = 1, - reviews = [] as any[], - assessment = { id: 99, pulseCheck: false } as any, - submission = { id: 100, status: 'pending review' } as any, - review = { id: 101 } as any, - } = {}) => { - const paramMap$ = new Subject(); - const params$ = new Subject(); - - assessmentService = jasmine.createSpyObj('AssessmentService', [ - 'getAssessment', - 'fetchAssessment', - 'submitReview', - 'pullFastFeedback' - ], { - assessment$: of(assessment), - submission$: of(submission), - review$: of(review), - }); - - reviewService = jasmine.createSpyObj('ReviewService', ['getReviews'], { - reviews$: of(reviews), - }); - - notificationsService = jasmine.createSpyObj('NotificationsService', [ - 'getTodoItems', - 'assessmentSubmittedToast' - ]); - notificationsService.getTodoItems.and.returnValue(of([]) as any); - - utilsService = jasmine.createSpyObj('UtilsService', ['setPageTitle', 'isEmpty']); - utilsService.isEmpty.and.callFake((value) => value === null || value === undefined || value === ''); - - const activatedRoute = { - paramMap: paramMap$.asObservable(), - params: params$.asObservable(), - } as ActivatedRoute; - - component = new ReviewDesktopPage( - utilsService, - activatedRoute, - assessmentService, - reviewService, - notificationsService - ); - - component.ngOnInit(); - paramMap$.next({}); - params$.next({ submissionId }); - }; - - beforeEach(() => { - createComponent(); - }); + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ReviewDesktopPage ], + imports: [IonicModule.forRoot()], + providers: [ + { + provide: UtilsService, + useClass: TestUtils + }, + { + provide: ActivatedRoute, + useValue: new ActivatedRouteStub({ submissionId: 1}), + }, + { + provide: AssessmentService, + useValue: jasmine.createSpyObj('AssessmentService', ['saveAnswers'], { + 'assessment$': of(true), + 'submission$': of(true), + 'review$': of(true), + }), + }, + { + provide: ReviewService, + useValue: jasmine.createSpyObj('ReviewService', ['getReviews'], { + reviews$: of(true), + }), + }, + ], + }).compileComponents(); + + fixture = TestBed.createComponent(ReviewDesktopPage); + component = fixture.componentInstance; + fixture.detectChanges(); + })); it('should create', () => { expect(component).toBeTruthy(); }); - - it('should mark noReview when goto receives undefined review', () => { - component.goto(undefined as any); - - expect(component.noReview).toBeTrue(); - }); - - it('should load assessment when goto receives review', () => { - const review = { assessmentId: 11, contextId: 22, submissionId: 33, name: 'Review A' } as any; - - component.goto(review); - - expect(component.noReview).toBeFalse(); - expect(component.currentReview).toEqual(review); - expect(assessmentService.getAssessment).toHaveBeenCalledWith(11, 'review', 0, 22, 33); - }); - - it('should return early in gotoFirstReview when reviews is falsy', () => { - spyOn(component, 'goto'); - - component.gotoFirstReview(undefined as any); - - expect(component.goto).not.toHaveBeenCalled(); - }); - - it('should go to matching submission in gotoFirstReview', () => { - const reviews = [ - { submissionId: 1, isDone: true }, - { submissionId: 2, isDone: false }, - ] as any; - component.submissionId = 2; - spyOn(component, 'goto'); - - component.gotoFirstReview(reviews); - - expect(component.goto).toHaveBeenCalledWith(reviews[1]); - }); - - it('should go to first not-done review when no submission id', () => { - const reviews = [ - { submissionId: 1, isDone: true }, - { submissionId: 2, isDone: false }, - ] as any; - component.submissionId = 0; - spyOn(component, 'goto'); - - component.gotoFirstReview(reviews); - - expect(component.goto).toHaveBeenCalledWith(reviews[1]); - }); - - it('should return early in saveReview when autosave while loading', async () => { - component.loading = true; - const event = { autoSave: true }; - - await component.saveReview(event as any); - - expect(assessmentService.fetchAssessment).not.toHaveBeenCalled(); - }); - - it('should show duplicated toast when submission is not pending review', async () => { - component.currentReview = { contextId: 2 } as any; - component.submission = { id: 3, status: 'done' } as any; - component.review = { id: 4 } as any; - component.assessment = { id: 5, pulseCheck: false } as any; - assessmentService.fetchAssessment.and.returnValue(of({ submission: { status: 'done' } }) as any); - - await component.saveReview({ autoSave: false, assessmentId: 5, answers: {} } as any); - - expect(notificationsService.assessmentSubmittedToast).toHaveBeenCalledWith({ isDuplicated: true }); - expect(component.loading).toBeFalse(); - }); - - it('should handle submitReview false gracefully', async () => { - component.currentReview = { contextId: 2 } as any; - component.submission = { id: 3, status: 'pending review' } as any; - component.review = { id: 4 } as any; - component.assessment = { id: 5, pulseCheck: false } as any; - assessmentService.fetchAssessment.and.returnValues( - of({ submission: { status: 'pending review' } }) as any, - of({ submission: { status: 'pending review' } }) as any - ); - assessmentService.submitReview.and.returnValue(of({ data: { submitReview: false } }) as any); - - await component.saveReview({ autoSave: false, assessmentId: 5, answers: { q1: 'a' } } as any); - - expect(component.savingText$.value).toBe('Save failed.'); - expect(component.btnDisabled$.value).toBeFalse(); - expect(component.loading).toBeFalse(); - }); - - it('should trigger pulse check and success toast on successful submit', async () => { - component.currentReview = { contextId: 2 } as any; - component.submission = { id: 3, status: 'pending review' } as any; - component.review = { id: 4 } as any; - component.assessment = { id: 5, pulseCheck: true } as any; - assessmentService.fetchAssessment.and.returnValues( - of({ submission: { status: 'pending review' } }) as any, - of({ submission: { status: 'done' } }) as any - ); - assessmentService.submitReview.and.returnValue(of({ data: { submitReview: true } }) as any); - assessmentService.pullFastFeedback.and.returnValue(Promise.resolve() as any); - - await component.saveReview({ autoSave: false, assessmentId: 5, answers: { q1: 'a' } } as any); - - expect(assessmentService.pullFastFeedback).toHaveBeenCalled(); - expect(reviewService.getReviews).toHaveBeenCalled(); - expect(notificationsService.getTodoItems).toHaveBeenCalled(); - expect(notificationsService.assessmentSubmittedToast).toHaveBeenCalledWith({ isReview: true }); - expect(component.btnDisabled$.value).toBeFalse(); - expect(component.loading).toBeFalse(); - }); - - it('should set failure states when saveReview throws', async () => { - component.currentReview = { contextId: 2 } as any; - component.submission = { id: 3, status: 'pending review' } as any; - component.review = { id: 4 } as any; - component.assessment = { id: 5, pulseCheck: false } as any; - assessmentService.fetchAssessment.and.returnValue(of({ submission: { status: 'pending review' } }) as any); - assessmentService.submitReview.and.returnValue(of({ - data: { - get submitReview() { - throw new Error('submit error'); - } - } - }) as any); - - await component.saveReview({ autoSave: false, assessmentId: 5, answers: {} } as any); - - expect(component.savingText$.value).toBe('Save Failed.'); - expect(component.loading).toBeFalse(); - expect(component.btnDisabled$.value).toBeFalse(); - expect(notificationsService.assessmentSubmittedToast).toHaveBeenCalledWith({ isFail: true }); - }); }); diff --git a/projects/v3/src/app/pages/review-desktop/review-desktop.page.ts b/projects/v3/src/app/pages/review-desktop/review-desktop.page.ts index 78cf19bef..827d00b78 100644 --- a/projects/v3/src/app/pages/review-desktop/review-desktop.page.ts +++ b/projects/v3/src/app/pages/review-desktop/review-desktop.page.ts @@ -7,7 +7,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { BehaviorSubject, firstValueFrom } from 'rxjs'; @Component({ - standalone: false, selector: 'app-review-desktop', templateUrl: './review-desktop.page.html', styleUrls: ['./review-desktop.page.scss'], diff --git a/projects/v3/src/app/pages/review-mobile/review-mobile.page.ts b/projects/v3/src/app/pages/review-mobile/review-mobile.page.ts index 4035a9d11..4dfbf1504 100644 --- a/projects/v3/src/app/pages/review-mobile/review-mobile.page.ts +++ b/projects/v3/src/app/pages/review-mobile/review-mobile.page.ts @@ -4,7 +4,6 @@ import { Review, ReviewService } from '@v3/app/services/review.service'; import { UtilsService } from '@v3/services/utils.service'; @Component({ - standalone: false, selector: 'app-review-mobile', templateUrl: './review-mobile.page.html', styleUrls: ['./review-mobile.page.scss'], diff --git a/projects/v3/src/app/pages/settings/settings.page.spec.ts b/projects/v3/src/app/pages/settings/settings.page.spec.ts index f79fe0b1c..0750340df 100644 --- a/projects/v3/src/app/pages/settings/settings.page.spec.ts +++ b/projects/v3/src/app/pages/settings/settings.page.spec.ts @@ -1,302 +1,89 @@ +import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { Router, ActivatedRoute } from '@angular/router'; import { AuthService } from '@v3/services/auth.service'; import { BrowserStorageService } from '@v3/services/storage.service'; import { UtilsService } from '@v3/services/utils.service'; -import { of, Subject, throwError } from 'rxjs'; +import { IonicModule, ModalController } from '@ionic/angular'; +import { ActivatedRouteStub } from '@testingv3/activated-route-stub'; +import { MockRouter } from '@testingv3/mocked.service'; +import { TestUtils } from '@testingv3/utils'; +import { FilestackService } from '@v3/services/filestack.service'; import { NotificationsService } from '@v3/services/notifications.service'; import { SettingsPage } from './settings.page'; -import { ModalController } from '@ionic/angular'; -import { UppyUploaderService } from '../../components/uppy-uploader/uppy-uploader.service'; -import { SupportPopupComponent } from '../../components/support-popup/support-popup.component'; +import { HubspotService } from '../../services/hubspot.service'; describe('SettingsPage', () => { let component: SettingsPage; - let routerSpy: jasmine.SpyObj; - let authSpy: jasmine.SpyObj; - let storageSpy: jasmine.SpyObj; + let fixture: ComponentFixture; let utilsSpy: jasmine.SpyObj; - let notificationsServiceSpy: jasmine.SpyObj; - let modalControllerSpy: jasmine.SpyObj; - let uppyUploaderServiceSpy: jasmine.SpyObj; - let queryParams$: Subject; - - const createComponent = () => { - queryParams$ = new Subject(); - - routerSpy = jasmine.createSpyObj('Router', ['navigate']); - authSpy = jasmine.createSpyObj('AuthService', ['getMyInfo', 'logout', 'updateUserProfile']); - storageSpy = jasmine.createSpyObj('BrowserStorageService', ['getUser', 'get', 'setUser']); - utilsSpy = jasmine.createSpyObj('UtilsService', [ - 'setPageTitle', - 'getEvent', - 'checkIsPracteraSupportEmail', - 'isMobile', - 'redirectToUrl', - 'isEmpty', - 'openUrl', - 'getSupportEmail' - ]); - notificationsServiceSpy = jasmine.createSpyObj('NotificationsService', ['alert', 'modal', 'dismiss']); - modalControllerSpy = jasmine.createSpyObj('ModalController', ['create', 'dismiss', 'getTop']); - uppyUploaderServiceSpy = jasmine.createSpyObj('UppyUploaderService', ['open']); - - authSpy.getMyInfo.and.returnValue(of({ - data: { - user: { - id: 1, - uuid: 'uuid', - name: 'User', - firstName: 'First', - lastName: 'Last', - email: 'user@example.com', - image: '', - role: 'participant', - contactNumber: '+61', - userHash: 'hash', - } - } - } as any)); - authSpy.logout.and.returnValue(Promise.resolve() as any); - authSpy.updateUserProfile.and.returnValue(of({}) as any); - - storageSpy.getUser.and.returnValue({ - email: 'user@example.com', - contactNumber: '+61', - avatar: '', - name: 'User', - programName: 'Program', - LtiReturnUrl: '', - programImage: 'program.png', - apikey: 'key-1', - } as any); - storageSpy.get.withArgs('experience').and.returnValue({ supportEmail: 'support@practera.com' } as any); - storageSpy.get.withArgs('programs').and.returnValue([1, 2] as any); - - utilsSpy.getEvent.and.returnValue(of(false) as any); - utilsSpy.checkIsPracteraSupportEmail.and.returnValue(true); - utilsSpy.isEmpty.and.callFake((value) => value === null || value === undefined || value === ''); - - const documentMock = { - defaultView: { - history: { - back: jasmine.createSpy('back'), - } - } - } as any; - - component = new SettingsPage( - routerSpy, - { queryParams: queryParams$.asObservable() } as ActivatedRoute, - authSpy, - storageSpy, - utilsSpy, - notificationsServiceSpy, - modalControllerSpy, - uppyUploaderServiceSpy, - documentMock - ); - }; - - beforeEach(() => { - createComponent(); - }); + let hubspotServiceSpy: jasmine.SpyObj; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ SettingsPage ], + imports: [IonicModule.forRoot()], + providers: [ + { + provide: HubspotService, + useValue: jasmine.createSpyObj('HubspotService', ['openSupportPopup']), + }, + { + provide: Router, + useClass: MockRouter + }, + { + provide: ActivatedRoute, + useValue: new ActivatedRouteStub({}), + }, + { + provide: AuthService, + useValue: jasmine.createSpyObj('AuthService', ['logout', 'updateProfileImage']), + }, + { + provide: BrowserStorageService, + useValue: jasmine.createSpyObj('BrowserStorageService', { + 'getUser': jasmine.createSpy('getUser'), + 'get': jasmine.createSpy('get'), + 'setUser': jasmine.createSpy('setUser'), + }), + }, + { + provide: UtilsService, + useClass: TestUtils + }, + { + provide: NotificationsService, + useValue: jasmine.createSpyObj('NotificationsService', ['alert']), + }, + { + provide: FilestackService, + useValue: jasmine.createSpyObj('FilestackService', ['getFileTypes']), + }, + { + provide: ModalController, + useValue: jasmine.createSpyObj('ModalController', ['dismiss']), + }, + ], + }).compileComponents(); + + fixture = TestBed.createComponent(SettingsPage); + component = fixture.componentInstance; + fixture.detectChanges(); + utilsSpy = TestBed.inject(UtilsService) as jasmine.SpyObj; + })); it('should create', () => { expect(component).toBeTruthy(); }); - it('should ignore openLink for unsupported keyboard key', () => { - spyOn(window, 'open'); - - component.openLink(new KeyboardEvent('keydown', { key: 'Escape' })); - - expect(window.open).not.toHaveBeenCalled(); + it('should not call openSupportPopup on a KeyboardEvent that is not Enter or Space', () => { + component.openSupportPopup(new KeyboardEvent('keydown', { key: 'a' })); + expect(hubspotServiceSpy.openSupportPopup).not.toHaveBeenCalled(); }); - it('should open terms link for Enter key', () => { - spyOn(window, 'open'); - - component.openLink(new KeyboardEvent('keydown', { key: 'Enter' })); - - expect(window.open).toHaveBeenCalledWith(component.termsUrl, '_system'); - }); - - it('should ignore switchProgram for unsupported keyboard key', () => { - component.switchProgram(new KeyboardEvent('keydown', { key: 'a' })); - - expect(utilsSpy.redirectToUrl).not.toHaveBeenCalled(); - expect(routerSpy.navigate).not.toHaveBeenCalled(); - }); - - it('should redirect to LTI URL when returnLtiUrl is set', () => { - component.returnLtiUrl = 'https://example.com/lti'; - - component.switchProgram(new Event('click')); - - expect(utilsSpy.redirectToUrl).toHaveBeenCalledWith('https://example.com/lti'); - }); - - it('should navigate to switcher when returnLtiUrl is not set', () => { - component.returnLtiUrl = ''; - - component.switchProgram(new Event('click')); - - expect(routerSpy.navigate).toHaveBeenCalledWith(['switcher', 'switcher-program']); - }); - - it('should return true when user is in multiple programs', () => { - storageSpy.get.withArgs('programs').and.returnValue([1, 2]); - - expect(component.isInMultiplePrograms()).toBeTrue(); - }); - - it('should use experience support email when non-practera and non-empty', () => { - spyOn(window, 'open'); - storageSpy.get.withArgs('experience').and.returnValue({ supportEmail: 'help@client.com' } as any); - utilsSpy.getSupportEmail.and.returnValue('help@client.com'); - utilsSpy.checkIsPracteraSupportEmail.and.returnValue(false); - utilsSpy.isEmpty.and.returnValue(false); - - component.mailTo(new Event('click')); - - expect(window.open).toHaveBeenCalledWith('mailto:help@client.com?subject=', '_self'); - }); - - it('should fallback to helpline email when support email is practera/empty', () => { - spyOn(window, 'open'); - storageSpy.get.withArgs('experience').and.returnValue({ supportEmail: 'support@practera.com' } as any); - utilsSpy.getSupportEmail.and.returnValue('support@practera.com'); - utilsSpy.checkIsPracteraSupportEmail.and.returnValue(true); - - component.mailTo(new Event('click')); - - expect(window.open).toHaveBeenCalled(); - }); - - it('should ignore logout for unsupported keyboard key', () => { - component.logout(new KeyboardEvent('keydown', { key: 'a' })); - - expect(authSpy.logout).not.toHaveBeenCalled(); - }); - - it('should dismiss and logout on valid logout action', async () => { - await component.logout(new Event('click')); - - expect(modalControllerSpy.dismiss).toHaveBeenCalled(); - expect(authSpy.logout).toHaveBeenCalled(); - }); - - it('should ignore support popup for unsupported keyboard key', async () => { - await component.openSupportPopup(new KeyboardEvent('keydown', { key: 'a' })); - - expect(modalControllerSpy.create).not.toHaveBeenCalled(); - }); - - it('should open support modal when hubspot is activated', async () => { - const modal = { present: jasmine.createSpy('present').and.returnValue(Promise.resolve()) }; - modalControllerSpy.create.and.returnValue(Promise.resolve(modal as any)); + it('should call openSupportPopup when hubspotActivated is true', () => { component.hubspotActivated = true; - - await component.openSupportPopup(new Event('click')); - - expect(modalControllerSpy.create).toHaveBeenCalledWith(jasmine.objectContaining({ - component: SupportPopupComponent, - cssClass: 'support-popup', - backdropDismiss: false, - })); - expect(modal.present).toHaveBeenCalled(); - }); - - it('should fallback to mailTo when hubspot is not activated', async () => { - spyOn(component, 'mailTo'); - component.hubspotActivated = false; - - await component.openSupportPopup(new Event('click')); - - expect(component.mailTo).toHaveBeenCalled(); - }); - - it('should return early in profileImage when modal dismiss has no data', async () => { - uppyUploaderServiceSpy.open.and.returnValue(Promise.resolve({ - onDidDismiss: () => Promise.resolve({ data: null }) - } as any)); - - await component.profileImage(); - - expect(authSpy.updateUserProfile).not.toHaveBeenCalled(); - }); - - it('should update profile image and notify on success', async () => { - const uploaded = { - tus: { uploadUrl: 'https://upload' }, - name: 'profile.png', - extension: 'png', - type: 'image/png', - size: 10, - bucket: 'bucket', - path: '/uploads/profile', - preview: 'https://cdn/profile.png', - }; - uppyUploaderServiceSpy.open.and.returnValue(Promise.resolve({ - onDidDismiss: () => Promise.resolve({ data: uploaded }) - } as any)); - - await component.profileImage(); - - expect(authSpy.updateUserProfile).toHaveBeenCalled(); - expect(component.profile.avatar).toBe('https://cdn/profile.png'); - expect(storageSpy.setUser).toHaveBeenCalledWith({ image: 'https://cdn/profile.png' }); - expect(notificationsServiceSpy.alert).toHaveBeenCalled(); - }); - - it('should show upload error subHeader when server returns message', async () => { - uppyUploaderServiceSpy.open.and.returnValue(Promise.resolve({ - onDidDismiss: () => Promise.resolve({ data: { tus: { uploadUrl: 'u' } } }) - } as any)); - authSpy.updateUserProfile.and.returnValue(throwError(() => ({ error: { message: 'Upload denied' } })) as any); - - await component.profileImage(); - - expect(notificationsServiceSpy.alert).toHaveBeenCalled(); - const alertArgs = notificationsServiceSpy.alert.calls.mostRecent().args[0]; - expect(alertArgs.subHeader).toBe('Upload denied'); - expect(component.imageUpdating).toBeFalse(); - }); - - it('should go back using window history', () => { - component.goBack(); - - expect((component.window.history.back as any)).toHaveBeenCalled(); - }); - - it('should open badge app url', () => { - component.openBadgeApp(new Event('click')); - - expect(utilsSpy.openUrl).toHaveBeenCalled(); - }); - - it('should handle retrieve user info failure with alert', async () => { - authSpy.getMyInfo.and.returnValue(throwError(() => new Error('network')) as any); - - await (component as any)._retrieveUserInfo(); - - expect(notificationsServiceSpy.alert).toHaveBeenCalled(); - }); - - it('should initialize and trigger support email check on ngOnInit', () => { - component.ngOnInit(); - - expect(utilsSpy.setPageTitle).toHaveBeenCalledWith('Settings - Practera'); - expect(utilsSpy.checkIsPracteraSupportEmail).toHaveBeenCalled(); - }); - - it('should complete unsubscribe subject on destroy', () => { - const nextSpy = spyOn(component.unsubscribe$, 'next'); - const completeSpy = spyOn(component.unsubscribe$, 'complete'); - - component.ngOnDestroy(); - - expect(nextSpy).toHaveBeenCalled(); - expect(completeSpy).toHaveBeenCalled(); + component.openSupportPopup(new Event('click')); + expect(hubspotServiceSpy.openSupportPopup).toHaveBeenCalledWith({ formOnly: true }); }); }); diff --git a/projects/v3/src/app/pages/settings/settings.page.ts b/projects/v3/src/app/pages/settings/settings.page.ts index fff0999a3..cb506f674 100644 --- a/projects/v3/src/app/pages/settings/settings.page.ts +++ b/projects/v3/src/app/pages/settings/settings.page.ts @@ -13,7 +13,6 @@ import { first, takeUntil } from 'rxjs/operators'; import { SupportPopupComponent } from '../../components/support-popup/support-popup.component'; @Component({ - standalone: false, selector: 'app-settings', templateUrl: './settings.page.html', styleUrls: ['./settings.page.scss'], diff --git a/projects/v3/src/app/pages/tabs/tabs.page.spec.ts b/projects/v3/src/app/pages/tabs/tabs.page.spec.ts index 37e742d94..ab5a75eaa 100644 --- a/projects/v3/src/app/pages/tabs/tabs.page.spec.ts +++ b/projects/v3/src/app/pages/tabs/tabs.page.spec.ts @@ -2,48 +2,20 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ChatService } from '@v3/services/chat.service'; import { BrowserStorageService } from '@v3/services/storage.service'; import { UtilsService } from '@v3/services/utils.service'; -import { IonicModule } from '@ionic/angular'; +import { IonicModule, Platform } from '@ionic/angular'; import { NotificationsService } from '@v3/services/notifications.service'; import { ReviewService } from '@v3/services/review.service'; -import { ActivityService } from '@v3/services/activity.service'; import { TabsPage } from './tabs.page'; import { RouterTestingModule } from '@angular/router/testing'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { BehaviorSubject, of, Subject } from 'rxjs'; +import { of } from 'rxjs'; describe('TabsPage', () => { let component: TabsPage; let fixture: ComponentFixture; - let reviewServiceSpy: jasmine.SpyObj; - let storageServiceSpy: jasmine.SpyObj; - let chatServiceSpy: jasmine.SpyObj; - let utilsSpy: jasmine.SpyObj; - let notificationsSpy: jasmine.SpyObj; - let activityServiceSpy: jasmine.SpyObj; - let routerSpy: jasmine.SpyObj; - - let reviews$: BehaviorSubject; - let routeParams$: Subject; - let screenStatus$: BehaviorSubject; - let notification$: BehaviorSubject; - let eventStreams: { [key: string]: Subject }; - - const getEventStream = (key: string) => { - if (!eventStreams[key]) { - eventStreams[key] = new Subject(); - } - return eventStreams[key]; - }; beforeEach(waitForAsync(() => { - reviews$ = new BehaviorSubject([]); - routeParams$ = new Subject(); - screenStatus$ = new BehaviorSubject({ leftSidebarExpanded: false }); - notification$ = new BehaviorSubject([]); - eventStreams = {}; - TestBed.configureTestingModule({ declarations: [ TabsPage ], schemas: [CUSTOM_ELEMENTS_SCHEMA], @@ -52,13 +24,13 @@ describe('TabsPage', () => { { provide: ReviewService, useValue: jasmine.createSpyObj('ReviewService', [], { - reviews$: reviews$.asObservable(), + 'reviews$': of(), }), }, { provide: BrowserStorageService, useValue: jasmine.createSpyObj('BrowserStorageService', { - getUser: jasmine.createSpy(), + 'getUser': jasmine.createSpy() }), }, { @@ -67,45 +39,24 @@ describe('TabsPage', () => { }, { provide: UtilsService, - useValue: jasmine.createSpyObj('UtilsService', ['setPageTitle', 'getEvent'], { - screenStatus$: screenStatus$.asObservable(), + useValue: jasmine.createSpyObj('UtilsService', { + 'getEvent': of(true), }), }, { provide: NotificationsService, useValue: jasmine.createSpyObj('NotificationsService', { - getTodoItemFromEvent: undefined, - getReminderEvent: of(true), - getChatMessage: of(true), + 'getTodoItemFromEvent': of(), + 'getReminderEvent': of(), + 'getTodoItems': of(), + 'getChatMessage': of(), }, { - notification$: notification$.asObservable(), + 'notification$': of(), }), }, - { - provide: ActivityService, - useValue: jasmine.createSpyObj('ActivityService', ['getActivity']), - }, - { - provide: ActivatedRoute, - useValue: { - params: routeParams$.asObservable(), - }, - }, ], }).compileComponents(); - reviewServiceSpy = TestBed.inject(ReviewService) as jasmine.SpyObj; - storageServiceSpy = TestBed.inject(BrowserStorageService) as jasmine.SpyObj; - chatServiceSpy = TestBed.inject(ChatService) as jasmine.SpyObj; - utilsSpy = TestBed.inject(UtilsService) as jasmine.SpyObj; - notificationsSpy = TestBed.inject(NotificationsService) as jasmine.SpyObj; - activityServiceSpy = TestBed.inject(ActivityService) as jasmine.SpyObj; - routerSpy = TestBed.inject(Router) as jasmine.SpyObj; - - storageServiceSpy.getUser.and.returnValue({ role: 'participant', chatEnabled: true } as any); - chatServiceSpy.getChatList.and.returnValue(of([{ uuid: 'chat-1' }] as any)); - utilsSpy.getEvent.and.callFake((key: string) => getEventStream(key).asObservable()); - fixture = TestBed.createComponent(TabsPage); component = fixture.componentInstance; fixture.detectChanges(); @@ -114,122 +65,4 @@ describe('TabsPage', () => { it('should create', () => { expect(component).toBeTruthy(); }); - - it('should initialize title and left sidebar state', () => { - expect(utilsSpy.setPageTitle).toHaveBeenCalledWith('Practera'); - - screenStatus$.next({ leftSidebarExpanded: true }); - expect(component.hasLeftSidebar).toBeTrue(); - }); - - it('should keep chat tab hidden when chat is disabled for user', () => { - storageServiceSpy.getUser.and.returnValue({ role: 'participant', chatEnabled: false } as any); - - component.ngOnInit(); - - expect(component.showMessages).toBeFalse(); - }); - - it('should show chat tab only when chat list has channels', () => { - chatServiceSpy.getChatList.and.returnValue(of([] as any)); - - component.ngOnInit(); - expect(component.showMessages).toBeFalse(); - - chatServiceSpy.getChatList.and.returnValue(of([{ uuid: 'chat-1' }] as any)); - component.ngOnInit(); - expect(component.showMessages).toBeTrue(); - }); - - it('should toggle events tab by user role', () => { - storageServiceSpy.getUser.and.returnValue({ role: 'participant', chatEnabled: true } as any); - routeParams$.next({}); - expect(component.showEvents).toBeTrue(); - - storageServiceSpy.getUser.and.returnValue({ role: 'mentor', chatEnabled: true } as any); - routeParams$.next({}); - expect(component.showEvents).toBeFalse(); - }); - - it('should process notification events and trigger activity fetch when applicable', () => { - const event = { - type: 'assessment_review_published', - meta: { - AssessmentReview: { - activity_id: 321, - }, - }, - } as any; - - getEventStream('notification').next(event); - - expect(notificationsSpy.getTodoItemFromEvent).toHaveBeenCalledWith(event); - expect(activityServiceSpy.getActivity).toHaveBeenCalledWith(321); - }); - - it('should process chat and reminder events', () => { - getEventStream('chat:new-message').next({}); - getEventStream('chat:delete-message').next({}); - getEventStream('event-reminder').next({ id: 'reminder' }); - - expect(notificationsSpy.getChatMessage).toHaveBeenCalledTimes(2); - expect(notificationsSpy.getReminderEvent).toHaveBeenCalledWith({ id: 'reminder' }); - }); - - it('should map notification badges by type', () => { - notification$.next([ - { type: 'event-reminder' }, - { type: 'event-reminder' }, - { type: 'review_submission' }, - { type: 'chat', unreadMessages: 5 }, - ] as any); - - expect(component.badges.event).toBe(2); - expect(component.badges.review).toBe(1); - expect(component.badges.chat).toBe(5); - - notification$.next([{ type: 'chat' }] as any); - expect(component.badges.chat).toBe(0); - }); - - it('should set selected tab from tabs component', () => { - component.tabs = { - getSelected: () => 'home', - } as any; - - component.setCurrentTab(); - - expect(component.selectedTab).toBe('home'); - }); - - it('should handle keyboard navigation for tabs on enter and ignore unsupported keys', async () => { - const preventDefault = jasmine.createSpy('preventDefault'); - const selectSpy = jasmine.createSpy('select'); - spyOn(routerSpy, 'navigateByUrl').and.returnValue(Promise.resolve(true)); - component.tabs = { select: selectSpy } as any; - - await component.keyboardNavigateTab('home', { code: 'Enter', preventDefault } as any); - expect(preventDefault).toHaveBeenCalled(); - expect(selectSpy).toHaveBeenCalledWith('home'); - expect(routerSpy.navigateByUrl).toHaveBeenCalledWith('/v3/home'); - - const noActionEvent = { code: 'KeyA', preventDefault: jasmine.createSpy('preventDefault') } as any; - expect(component.keyboardNavigateTab('home', noActionEvent)).toBeUndefined(); - expect(noActionEvent.preventDefault).not.toHaveBeenCalled(); - }); - - it('should return false for developer-only feature checks by default', () => { - expect(component.forDeveloperMode('unknown-feature')).toBeFalse(); - }); - - it('should unsubscribe open subscriptions on destroy', () => { - const openSub = jasmine.createSpyObj('Subscription', ['unsubscribe'], { closed: false }); - const closedSub = jasmine.createSpyObj('Subscription', ['unsubscribe'], { closed: true }); - component.subscriptions = [openSub as any, closedSub as any]; - - component.ngOnDestroy(); - - expect(openSub.unsubscribe).toHaveBeenCalled(); - expect(closedSub.unsubscribe).not.toHaveBeenCalled(); - }); }); diff --git a/projects/v3/src/app/pages/tabs/tabs.page.ts b/projects/v3/src/app/pages/tabs/tabs.page.ts index e71567de1..1200a7437 100644 --- a/projects/v3/src/app/pages/tabs/tabs.page.ts +++ b/projects/v3/src/app/pages/tabs/tabs.page.ts @@ -10,7 +10,6 @@ import { NotificationsService } from '@v3/services/notifications.service'; import { ActivityService } from '@v3/app/services/activity.service'; @Component({ - standalone: false, selector: 'app-tabs', templateUrl: './tabs.page.html', styleUrls: ['./tabs.page.scss'], diff --git a/projects/v3/src/app/pages/topic-mobile/topic-mobile.page.spec.ts b/projects/v3/src/app/pages/topic-mobile/topic-mobile.page.spec.ts index b7153091a..e432e8161 100644 --- a/projects/v3/src/app/pages/topic-mobile/topic-mobile.page.spec.ts +++ b/projects/v3/src/app/pages/topic-mobile/topic-mobile.page.spec.ts @@ -2,132 +2,58 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { ActivatedRoute, Router } from '@angular/router'; import { ActivityService } from '@v3/services/activity.service'; import { TopicService } from '@v3/services/topic.service'; -import { UtilsService } from '@v3/services/utils.service'; import { IonicModule } from '@ionic/angular'; +import { MockRouter } from '@testingv3/mocked.service'; +import { ActivatedRouteStub } from '@testingv3/activated-route-stub'; import { TopicMobilePage } from './topic-mobile.page'; -import { BehaviorSubject, of, Subject } from 'rxjs'; +import { of } from 'rxjs'; describe('TopicMobilePage', () => { let component: TopicMobilePage; let fixture: ComponentFixture; - let routeParams$: Subject; - let topic$: BehaviorSubject; - let currentTask$: BehaviorSubject; - let topicServiceSpy: jasmine.SpyObj; - let activityServiceSpy: jasmine.SpyObj; - let routerSpy: jasmine.SpyObj; - let utilsSpy: jasmine.SpyObj; beforeEach(waitForAsync(() => { - routeParams$ = new Subject(); - topic$ = new BehaviorSubject(null); - currentTask$ = new BehaviorSubject(null); - TestBed.configureTestingModule({ declarations: [ TopicMobilePage ], providers: [ { provide: ActivatedRoute, - useValue: { - params: routeParams$.asObservable(), - }, + useValue: new ActivatedRouteStub({ + id: 1, activityId: 1 + }), }, { provide: Router, - useValue: jasmine.createSpyObj('Router', ['navigate']), + useClass: MockRouter, }, { provide: TopicService, - useValue: jasmine.createSpyObj('TopicService', ['getTopic', 'updateTopicProgress'], { - topic$: topic$.asObservable(), + useValue: jasmine.createSpyObj('TopicService', [ + 'getTopic', + 'updateTopicProgress', + ], { + topic$: of(true) }), }, { provide: ActivityService, - useValue: jasmine.createSpyObj('ActivityService', ['getActivity', 'goToNextTask'], { - currentTask$: currentTask$.asObservable(), + useValue: jasmine.createSpyObj('ActivityService', [ + 'getActivity', 'goToNextTask' + ], { + currentTask$: of(true) }), }, - { - provide: UtilsService, - useValue: jasmine.createSpyObj('UtilsService', ['setPageTitle']), - } ], imports: [IonicModule.forRoot()] }).compileComponents(); fixture = TestBed.createComponent(TopicMobilePage); component = fixture.componentInstance; - topicServiceSpy = TestBed.inject(TopicService) as jasmine.SpyObj; - activityServiceSpy = TestBed.inject(ActivityService) as jasmine.SpyObj; - routerSpy = TestBed.inject(Router) as jasmine.SpyObj; - utilsSpy = TestBed.inject(UtilsService) as jasmine.SpyObj; - - topicServiceSpy.updateTopicProgress.and.returnValue(of(true) as any); - activityServiceSpy.getActivity.and.callFake((_activityId: number, _refresh: boolean, _task: any, callback: Function) => { - callback(); - return Promise.resolve(true) as any; - }); - fixture.detectChanges(); })); it('should create', () => { expect(component).toBeTruthy(); }); - - it('should initialise topic and current task from streams', () => { - routeParams$.next({ id: 12, activityId: 44 }); - topic$.next({ id: 12, title: 'Topic A' } as any); - currentTask$.next({ id: 999, type: 'Topic', status: 'in progress' } as any); - - expect(topicServiceSpy.getTopic).toHaveBeenCalledWith(12); - expect(component.activityId).toBe(44); - expect(component.topic).toEqual(jasmine.objectContaining({ id: 12, title: 'Topic A' })); - expect(component.currentTask).toEqual(jasmine.objectContaining({ id: 999 })); - expect(utilsSpy.setPageTitle).toHaveBeenCalledWith('Topic A - Practera'); - }); - - it('should continue with done task by going directly to next task', async () => { - component.topic = { id: 7, title: 'Done Topic' } as any; - component.currentTask = { id: 7, type: 'Topic', status: 'done' } as any; - - await component.continue(); - - expect(activityServiceSpy.goToNextTask).toHaveBeenCalledWith(component.currentTask); - expect(topicServiceSpy.updateTopicProgress).not.toHaveBeenCalled(); - expect(component.btnDisabled$.value).toBeFalse(); - }); - - it('should continue incomplete task by updating progress and refreshing activity', async () => { - component.topic = { id: 9, title: 'In Progress Topic' } as any; - component.activityId = 88; - component.currentTask = { id: 9, type: 'Topic', status: 'in progress' } as any; - - await component.continue(); - - expect(topicServiceSpy.updateTopicProgress).toHaveBeenCalledWith(9, 'completed'); - expect(activityServiceSpy.getActivity).toHaveBeenCalled(); - expect(component.btnDisabled$.value).toBeFalse(); - }); - - it('should build fallback current task when missing', async () => { - component.topic = { id: 11, title: 'Fallback Topic' } as any; - component.activityId = 55; - component.currentTask = null; - - await component.continue(); - - expect(component.currentTask).toEqual(jasmine.objectContaining({ id: 11, type: 'Topic', name: 'Fallback Topic' })); - expect(topicServiceSpy.updateTopicProgress).toHaveBeenCalledWith(11, 'completed'); - }); - - it('should go back to activity-mobile page', () => { - component.activityId = 123; - - component.goBack(); - - expect(routerSpy.navigate).toHaveBeenCalledWith(['v3', 'activity-mobile', 123]); - }); }); diff --git a/projects/v3/src/app/pages/topic-mobile/topic-mobile.page.ts b/projects/v3/src/app/pages/topic-mobile/topic-mobile.page.ts index 23b2a0d3a..a2fe9ac59 100644 --- a/projects/v3/src/app/pages/topic-mobile/topic-mobile.page.ts +++ b/projects/v3/src/app/pages/topic-mobile/topic-mobile.page.ts @@ -3,16 +3,15 @@ import { ActivatedRoute, Router } from '@angular/router'; import { ActivityService, Task } from '@v3/app/services/activity.service'; import { TopicService, Topic } from '@v3/app/services/topic.service'; import { UtilsService } from '@v3/services/utils.service'; -import { BehaviorSubject, Observable, firstValueFrom } from 'rxjs'; +import { BehaviorSubject, firstValueFrom } from 'rxjs'; @Component({ - standalone: false, selector: 'app-topic-mobile', templateUrl: './topic-mobile.page.html', styleUrls: ['./topic-mobile.page.scss'], }) export class TopicMobilePage implements OnInit { - topic$: Observable; + topic$ = this.topicService.topic$; btnDisabled$: BehaviorSubject = new BehaviorSubject(false); topic: Topic; @@ -25,9 +24,7 @@ export class TopicMobilePage implements OnInit { private topicService: TopicService, private activityService: ActivityService, private utils: UtilsService - ) { - this.topic$ = this.topicService.topic$; - } + ) { } ngOnInit() { this.topic$.subscribe(res => { diff --git a/projects/v3/src/app/pages/v3/v3.page.spec.ts b/projects/v3/src/app/pages/v3/v3.page.spec.ts index 7efd81188..adb3c7125 100644 --- a/projects/v3/src/app/pages/v3/v3.page.spec.ts +++ b/projects/v3/src/app/pages/v3/v3.page.spec.ts @@ -16,7 +16,6 @@ import { TestUtils } from '@testingv3/utils'; import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { HomeService } from '@v3/app/services/home.service'; import { NotificationsService } from '@v3/app/services/notifications.service'; -import { UnlockIndicatorService } from '@v3/app/services/unlock-indicator.service'; describe('V3Page', () => { let component: V3Page; @@ -61,8 +60,7 @@ describe('V3Page', () => { { provide: BrowserStorageService, useValue: jasmine.createSpyObj('BrowserStorageService', { - getUser: jasmine.createSpy(), - get: jasmine.createSpy().and.returnValue([]), + getUser: jasmine.createSpy() }), }, { @@ -83,19 +81,10 @@ describe('V3Page', () => { }, { provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', { - 'getTodoItems': of(), - 'getChatMessage': of(), - }, { + useValue: jasmine.createSpyObj('NotificationsService', ['getTodoItems', 'getChatMessage'], { 'notification$': of(), }), }, - { - provide: UnlockIndicatorService, - useValue: jasmine.createSpyObj('UnlockIndicatorService', [], { - 'unlockedTasks$': of([]), - }), - }, ] }).compileComponents(); @@ -119,6 +108,7 @@ describe('V3Page', () => { it('should call required methods and set component properties correctly', () => { // Prepare data and spies const getReviewsSpy = reviewSpy.getReviews; + const getExperienceSpy = homeSpy.getExperience; utilsSpy.moveToNewLocale.and.stub(); const getTodoItemsSpy = notificationsSpy.getTodoItems.and.returnValue(of()); const getChatListSpy = chatSpy.getChatList.and.returnValue(of([])); @@ -131,13 +121,14 @@ describe('V3Page', () => { component.ngOnInit(); // Check if the required methods are called - // Note: getExperience is only called on NavigationEnd events to /v3/home, not during ngOnInit expect(getReviewsSpy).toHaveBeenCalled(); + expect(getExperienceSpy).toHaveBeenCalled(); expect(getTodoItemsSpy).toHaveBeenCalled(); expect(getChatListSpy).toHaveBeenCalled(); // Check if component properties are set correctly expect(component.showEvents).toBeTrue(); + expect(component.openMenu).toBeFalse(); expect(component.showMessages).toBeFalse(); }); }); diff --git a/projects/v3/src/app/pages/v3/v3.page.ts b/projects/v3/src/app/pages/v3/v3.page.ts index 3d7c2204a..5f4e9d3d1 100644 --- a/projects/v3/src/app/pages/v3/v3.page.ts +++ b/projects/v3/src/app/pages/v3/v3.page.ts @@ -16,7 +16,6 @@ import { environment } from '@v3/environments/environment'; import { UnlockIndicatorService } from '@v3/app/services/unlock-indicator.service'; @Component({ - standalone: false, selector: 'app-v3', templateUrl: './v3.page.html', styleUrls: ['./v3.page.scss'], diff --git a/projects/v3/src/app/personalised-header/personalised-header.component.spec.ts b/projects/v3/src/app/personalised-header/personalised-header.component.spec.ts index 53cc0d96a..cdf87109d 100644 --- a/projects/v3/src/app/personalised-header/personalised-header.component.spec.ts +++ b/projects/v3/src/app/personalised-header/personalised-header.component.spec.ts @@ -1,8 +1,6 @@ import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; import { Router } from '@angular/router'; import { IonicModule, ModalController } from '@ionic/angular'; -import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; -import { of, Subject } from 'rxjs'; import { AnimationsService } from '../services/animations.service'; import { NotificationsService } from '../services/notifications.service'; import { BrowserStorageService } from '../services/storage.service'; @@ -14,54 +12,35 @@ describe('PersonalisedHeaderComponent', () => { let component: PersonalisedHeaderComponent; let fixture: ComponentFixture; - const mockModalSpy = jasmine.createSpyObj('Modal', ['present', 'onDidDismiss']); - mockModalSpy.onDidDismiss.and.returnValue(Promise.resolve({ data: {} })); - beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ declarations: [ PersonalisedHeaderComponent ], - schemas: [CUSTOM_ELEMENTS_SCHEMA], providers: [ { provide: ModalController, - useValue: jasmine.createSpyObj('ModalController', { - 'create': Promise.resolve(mockModalSpy), - 'dismiss': Promise.resolve() - }), + useValue: jasmine.createSpyObj('ModalController', ['']), }, { provide: AnimationsService, - useValue: { - enterAnimation: jasmine.createSpy('enterAnimation'), - leaveAnimation: jasmine.createSpy('leaveAnimation') - }, + useValue: jasmine.createSpyObj('AnimationsService', ['']), }, { provide: BrowserStorageService, - useValue: jasmine.createSpyObj('BrowserStorageService', { - 'getUser': { name: 'Test User', image: '' }, - 'get': { supportEmail: 'test@example.com' } - }), + useValue: jasmine.createSpyObj('BrowserStorageService', [ + 'getUser', + ]), }, { provide: UtilsService, - useValue: jasmine.createSpyObj('UtilsService', { - 'isMobile': false, - 'getEvent': of({}), - 'checkIsPracteraSupportEmail': undefined - }), + useValue: jasmine.createSpyObj('UtilsService', ['']), }, { provide: Router, - useValue: jasmine.createSpyObj('Router', { - 'navigate': Promise.resolve(true) - }), + useValue: jasmine.createSpyObj('Router', ['']), }, { provide: NotificationsService, - useValue: { - notification$: new Subject() - }, + useValue: jasmine.createSpyObj('NotificationsService', ['']), }, ], imports: [IonicModule.forRoot()] diff --git a/projects/v3/src/app/personalised-header/personalised-header.component.ts b/projects/v3/src/app/personalised-header/personalised-header.component.ts index e2120d093..4c71e11b1 100644 --- a/projects/v3/src/app/personalised-header/personalised-header.component.ts +++ b/projects/v3/src/app/personalised-header/personalised-header.component.ts @@ -11,7 +11,6 @@ import { UtilsService } from '../services/utils.service'; import { SupportPopupComponent } from '../components/support-popup/support-popup.component'; @Component({ - standalone: false, selector: 'app-personalised-header', templateUrl: './personalised-header.component.html', styleUrls: ['./personalised-header.component.scss'], diff --git a/projects/v3/src/app/services/achievement.service.spec.ts b/projects/v3/src/app/services/achievement.service.spec.ts index 47d9d6fb2..12ddc0422 100644 --- a/projects/v3/src/app/services/achievement.service.spec.ts +++ b/projects/v3/src/app/services/achievement.service.spec.ts @@ -5,16 +5,12 @@ import { RequestService } from 'request'; import { BrowserStorageService } from '@v3/services/storage.service'; import { UtilsService } from '@v3/services/utils.service'; import { TestUtils } from '@testingv3/utils'; -import { ApolloService } from './apollo.service'; -import { DemoService } from './demo.service'; describe('AchievementService', () => { let service: AchievementService; let requestSpy: jasmine.SpyObj; - let apolloSpy: jasmine.SpyObj; beforeEach(() => { - apolloSpy = jasmine.createSpyObj('ApolloService', ['graphQLFetch', 'graphQLWatch']); TestBed.configureTestingModule({ providers: [ { @@ -34,14 +30,6 @@ describe('AchievementService', () => { } }) }, - { - provide: ApolloService, - useValue: apolloSpy, - }, - { - provide: DemoService, - useValue: jasmine.createSpyObj('DemoService', ['normalResponse']) - } ] }); service = TestBed.inject(AchievementService) as jasmine.SpyObj; @@ -53,54 +41,49 @@ describe('AchievementService', () => { }); describe('when testing getAchievements()', () => { - // graphql response format - achievements are in data.achievements - const graphqlResponse = { - data: { - achievements: [ - { - id: 1, - name: 'achieve 1', - description: 'des', - badge: '', - type: 'achievement', - points: 100, - isEarned: true, - earnedDate: '2019-02-02' - }, - { - id: 2, - name: 'achieve 2', - description: 'des', - badge: '', - type: 'achievement', - points: 200, - isEarned: false, - earnedDate: '2019-02-02' - }, - { - id: 3, - name: 'achieve 3', - description: 'des', - badge: '', - type: 'achievement', - points: 300, - isEarned: true, - earnedDate: '2019-02-02' - }, - { - id: 4, - name: 'achieve 4', - description: 'des', - badge: '', - type: 'achievement', - points: 0, - isEarned: true, - earnedDate: '2019-02-02' - } - ] - } + const requestResponse = { + success: true, + data: [ + { + id: 1, + name: 'achieve 1', + description: 'des', + badge: '', + points: 100, + isEarned: true, + earnedDate: '2019-02-02' + }, + { + id: 2, + name: 'achieve 2', + description: 'des', + badge: '', + points: 200, + isEarned: false, + earnedDate: '2019-02-02' + }, + { + id: 3, + name: 'achieve 3', + description: 'des', + badge: '', + points: 300, + isEarned: true, + earnedDate: '2019-02-02' + }, + { + id: 4, + name: 'achieve 4', + description: 'des', + badge: '', + points: 0, + isEarned: true, + earnedDate: '2019-02-02' + } + ] }; - const expected = JSON.parse(JSON.stringify(graphqlResponse.data.achievements)).map(res => { + const achievements = requestResponse.data[0]; + const expected = JSON.parse(JSON.stringify(requestResponse.data)).map(res => { return { id: res.id, name: res.name, @@ -108,37 +91,35 @@ describe('AchievementService', () => { image: res.badge, points: res.points, isEarned: res.isEarned, - earnedDate: res.earnedDate, - type: res.type, - badge: res.badge + earnedDate: res.earnedDate }; }); describe('should throw error', () => { - let tmpAchievements; + let tmpRes; let errMsg; beforeEach(() => { - tmpAchievements = JSON.parse(JSON.stringify(graphqlResponse.data.achievements)); + tmpRes = JSON.parse(JSON.stringify(requestResponse)); }); afterEach(() => { - apolloSpy.graphQLFetch.and.returnValue(of({ data: { achievements: tmpAchievements } })); + requestSpy.get.and.returnValue(of(tmpRes)); service.getAchievements(); service.achievements$.subscribe(); expect(requestSpy.apiResponseFormatError.calls.count()).toBe(1); expect(requestSpy.apiResponseFormatError.calls.first().args[0]).toEqual(errMsg); }); it('Achievement format error', () => { - tmpAchievements = {}; // not an array + tmpRes.data = {}; errMsg = 'Achievement format error'; }); it('Achievement object format error', () => { - tmpAchievements[0] = {}; // missing required fields + tmpRes.data[0] = {}; errMsg = 'Achievement object format error'; }); }); it('should get the correct data', () => { - apolloSpy.graphQLFetch.and.returnValue(of(graphqlResponse)); + requestSpy.get.and.returnValue(of(requestResponse)); service.getAchievements(); service.achievements$.subscribe(res => { expect(res).toEqual(expected); @@ -152,7 +133,7 @@ describe('AchievementService', () => { it('should return an array of achievements', (done) => { const mockResponse = { data: { - achievements: [ + badges: [ { id: 1, name: 'Achievement 1', @@ -185,13 +166,11 @@ describe('AchievementService', () => { } }; - // reset the spy for this describe block - apolloSpy.graphQLFetch.calls.reset(); - apolloSpy.graphQLFetch.and.returnValue(of(mockResponse)); + spyOn(service['apolloService'], 'graphQLFetch').and.returnValue(of(mockResponse)); service.graphQLGetAchievements().subscribe((achievements) => { expect(achievements.length).toBe(2); - expect(achievements).toEqual(mockResponse.data.achievements); + expect(achievements).toEqual(mockResponse.data.badges); done(); }); }); @@ -199,12 +178,11 @@ describe('AchievementService', () => { it('should return an empty array if no badges are returned', (done) => { const mockResponse = { data: { - achievements: [] + badges: [] } }; - apolloSpy.graphQLFetch.calls.reset(); - apolloSpy.graphQLFetch.and.returnValue(of(mockResponse)); + spyOn(service['apolloService'], 'graphQLFetch').and.returnValue(of(mockResponse)); service.graphQLGetAchievements().subscribe((achievements) => { expect(achievements.length).toBe(0); @@ -214,8 +192,7 @@ describe('AchievementService', () => { }); it('should handle errors gracefully', (done) => { - apolloSpy.graphQLFetch.calls.reset(); - apolloSpy.graphQLFetch.and.returnValue(of({ data: null })); + spyOn(service['apolloService'], 'graphQLFetch').and.returnValue(of({ data: null })); service.graphQLGetAchievements().subscribe((achievements) => { expect(achievements.length).toBe(0); diff --git a/projects/v3/src/app/services/activity.service.spec.ts b/projects/v3/src/app/services/activity.service.spec.ts index c2b00b795..ae6fdfdc8 100644 --- a/projects/v3/src/app/services/activity.service.spec.ts +++ b/projects/v3/src/app/services/activity.service.spec.ts @@ -1,5 +1,4 @@ import { TestBed, fakeAsync, tick, flushMicrotasks } from '@angular/core/testing'; -import { HttpClientTestingModule } from '@angular/common/http/testing'; import { ActivityService } from './activity.service'; import { of, throwError } from 'rxjs'; import { RequestService } from 'request'; @@ -12,9 +11,6 @@ import { TestUtils } from '@testingv3/utils'; import { ApolloService } from './apollo.service'; import { AssessmentService } from './assessment.service'; import { TopicService } from './topic.service'; -import { DemoService } from './demo.service'; -import { SharedService } from './shared.service'; -import { UnlockIndicatorService } from './unlock-indicator.service'; describe('ActivityService', () => { let service: ActivityService; @@ -27,7 +23,6 @@ describe('ActivityService', () => { beforeEach(() => { TestBed.configureTestingModule({ - imports: [HttpClientTestingModule], providers: [ ActivityService, { @@ -47,7 +42,7 @@ describe('ActivityService', () => { }, { provide: BrowserStorageService, - useValue: jasmine.createSpyObj('BrowserStorageService', ['getUser', 'getReferrer', 'get', 'set']) + useValue: jasmine.createSpyObj('BrowserStorageService', ['getUser', 'getReferrer']) }, { provide: Router, @@ -63,23 +58,11 @@ describe('ActivityService', () => { }, { provide: TopicService, - useValue: jasmine.createSpyObj('TopicService', ['getTopic']), + useValue: jasmine.createSpyObj('TopicService', ['']), }, { provide: AssessmentService, - useValue: jasmine.createSpyObj('AssessmentService', ['getAssessment']), - }, - { - provide: DemoService, - useValue: jasmine.createSpyObj('DemoService', ['normalResponse']) - }, - { - provide: SharedService, - useValue: jasmine.createSpyObj('SharedService', ['getTeamInfo', 'getTeamMembers']) - }, - { - provide: UnlockIndicatorService, - useValue: jasmine.createSpyObj('UnlockIndicatorService', ['loadFromStorage', 'clearAllTasks', 'addTask', 'removeTask']) + useValue: jasmine.createSpyObj('AssessmentService', ['']), }, ] }); @@ -103,7 +86,6 @@ describe('ActivityService', () => { id: 1, name: 'activity', description: 'des', - unlockConditions: [], tasks: [ { id: 1, @@ -165,7 +147,6 @@ describe('ActivityService', () => { id: activity.id, name: activity.name, description: activity.description, - unlockConditions: [], tasks: [ { id: 0, diff --git a/projects/v3/src/app/services/apollo.service.spec.ts b/projects/v3/src/app/services/apollo.service.spec.ts index 66bf9645d..344b8f87d 100644 --- a/projects/v3/src/app/services/apollo.service.spec.ts +++ b/projects/v3/src/app/services/apollo.service.spec.ts @@ -13,7 +13,6 @@ describe('ApolloService', () => { provide: Apollo, useValue: jasmine.createSpyObj('Apollo', [ 'create', - 'createDefault', 'getClient', 'watchQuery', 'mutate', @@ -37,21 +36,4 @@ describe('ApolloService', () => { const service: ApolloService = TestBed.inject(ApolloService); expect(service).toBeTruthy(); }); - - describe('initiateCoreClient()', () => { - it('should not throw when apollo client is not yet defined', () => { - const service: ApolloService = TestBed.inject(ApolloService); - const apollo: any = TestBed.inject(Apollo); - // mock client getter to throw (as real Apollo does before initialization) - apollo.client = undefined; - Object.defineProperty(apollo, 'client', { - get: () => { throw new Error('Client has not been defined yet'); }, - configurable: true, - }); - // add createDefault as a simple spy since defineProperty may interfere with the original spy - apollo.createDefault = jasmine.createSpy('createDefault'); - expect(() => service.initiateCoreClient()).not.toThrow(); - expect(apollo.createDefault).toHaveBeenCalled(); - }); - }); }); diff --git a/projects/v3/src/app/services/apollo.service.ts b/projects/v3/src/app/services/apollo.service.ts index f6b784e45..9b5d745ef 100644 --- a/projects/v3/src/app/services/apollo.service.ts +++ b/projects/v3/src/app/services/apollo.service.ts @@ -62,13 +62,9 @@ export class ApolloService { * @returns boolean */ private _hasInitiated(): boolean { - try { - if (this.apollo.client - && this._url === environment.graphQL) { - return true; - } - } catch { - // apollo client not yet created + if (this.apollo.client + && this._url === environment.graphQL) { + return true; } return false; } diff --git a/projects/v3/src/app/services/assessment.service.spec.ts b/projects/v3/src/app/services/assessment.service.spec.ts index cc300b789..564ae7cba 100644 --- a/projects/v3/src/app/services/assessment.service.spec.ts +++ b/projects/v3/src/app/services/assessment.service.spec.ts @@ -12,7 +12,6 @@ describe('AssessmentService', () => { let service: AssessmentService; let requestSpy: jasmine.SpyObj; let notificationSpy: jasmine.SpyObj; - let apolloSpy: jasmine.SpyObj; let utils: UtilsService; beforeEach(() => { @@ -25,7 +24,7 @@ describe('AssessmentService', () => { }, { provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', ['modal', 'markTodoItemAsDone']) + useValue: jasmine.createSpyObj('NotificationsService', ['modal']) }, { provide: RequestService, @@ -44,14 +43,13 @@ describe('AssessmentService', () => { }, { provide: ApolloService, - useValue: jasmine.createSpyObj('ApolloService', ['graphQLMutate', 'graphQLWatch', 'graphQLFetch']) + useValue: jasmine.createSpyObj('ApolloService', ['graphQLMutate', 'graphQLWatch']) }, ] }); service = TestBed.inject(AssessmentService); requestSpy = TestBed.inject(RequestService) as jasmine.SpyObj; notificationSpy = TestBed.inject(NotificationsService) as jasmine.SpyObj; - apolloSpy = TestBed.inject(ApolloService) as jasmine.SpyObj; utils = TestBed.inject(UtilsService); }); @@ -74,7 +72,6 @@ describe('AssessmentService', () => { isTeam: false, dueDate: '2019-02-02', pulseCheck: false, - allowResubmit: false, groups: [ { name: 'g name', @@ -170,7 +167,7 @@ describe('AssessmentService', () => { submissions: [ { id: 1, - status: 'published', + status: 'feedback available', modified: '2019-02-02', locked: false, completed: false, @@ -265,8 +262,6 @@ describe('AssessmentService', () => { dueDate: assessment.dueDate, isOverdue: assessment.dueDate ? utils.timeComparer(assessment.dueDate) < 0 : false, pulseCheck: assessment.pulseCheck, - hasReviewRating: assessment.hasReviewRating, - allowResubmit: assessment.allowResubmit, groups: [ { name: group0.name, @@ -281,8 +276,6 @@ describe('AssessmentService', () => { canComment: question0.hasComment, canAnswer: question0.audience.includes('submitter'), audience: question0.audience, - min: undefined, - max: undefined, submitterOnly: true, reviewerOnly: false }, @@ -295,8 +288,6 @@ describe('AssessmentService', () => { canComment: question1.hasComment, canAnswer: question1.audience.includes('submitter'), audience: question1.audience, - min: undefined, - max: undefined, submitterOnly: false, reviewerOnly: true, info: '', @@ -322,8 +313,6 @@ describe('AssessmentService', () => { canComment: question2.hasComment, canAnswer: question2.audience.includes('submitter'), audience: question2.audience, - min: undefined, - max: undefined, submitterOnly: false, reviewerOnly: false, info: `

Choice Description:

${question2.choices[0].name} ` + @@ -357,8 +346,6 @@ describe('AssessmentService', () => { canComment: question3.hasComment, canAnswer: question3.audience.includes('submitter'), audience: question3.audience, - min: undefined, - max: undefined, submitterOnly: false, reviewerOnly: false, fileType: question3.fileType @@ -372,8 +359,6 @@ describe('AssessmentService', () => { canComment: question4.hasComment, canAnswer: question4.audience.includes('submitter'), audience: question4.audience, - min: undefined, - max: undefined, submitterOnly: false, reviewerOnly: false, teamMembers: [ @@ -394,7 +379,7 @@ describe('AssessmentService', () => { submission = assessment.submissions[0]; expectedSubmission = { id: submission.id, - status: 'feedback available', + status: submission.status, submitterName: submission.submitter.name, submitterImage: submission.submitter.image, modified: submission.modified, @@ -412,8 +397,7 @@ describe('AssessmentService', () => { answer: submission.answers[2].answer }, 11: { - // file type answers normalize empty strings to null - answer: null + answer: submission.answers[3].answer }, 12: { answer: submission.answers[4].answer @@ -426,7 +410,6 @@ describe('AssessmentService', () => { status: review.status, modified: review.modified, teamName: submission.submitter.team.name, - projectBrief: null, answers: { 1: { answer: review.answers[0].answer, @@ -453,7 +436,7 @@ describe('AssessmentService', () => { }); afterEach(() => { - apolloSpy.graphQLFetch.and.returnValue(of(requestResponse)); + apolloSpy.graphQLWatch.and.returnValue(of(requestResponse)); service.getAssessment(1, 'assessment', 2, 3); service.assessment$.subscribe(assessment => { expect(assessment).toEqual(expectedAssessment); @@ -464,7 +447,7 @@ describe('AssessmentService', () => { service.review$.subscribe(review => { expect(review).toEqual(expectedReview); }); - expect(apolloSpy.graphQLFetch.calls.count()).toBe(1); + expect(apolloSpy.graphQLWatch.calls.count()).toBe(1); }); it(`should not include a question group if there's no question inside`, () => { @@ -476,6 +459,9 @@ describe('AssessmentService', () => { expectedAssessment.groups.splice(1, 1); delete expectedSubmission.answers[11]; delete expectedSubmission.answers[12]; + delete expectedReview.answers[1]; + delete expectedReview.answers[2]; + delete expectedReview.answers[3]; delete expectedReview.answers[11]; delete expectedReview.answers[12]; }); @@ -565,11 +551,12 @@ describe('AssessmentService', () => { describe('when testing saveFeedbackReviewed()', () => { it('should post correct data', () => { - notificationSpy.markTodoItemAsDone.and.returnValue(of(true)); service.saveFeedbackReviewed(11); - expect(notificationSpy.markTodoItemAsDone.calls.count()).toBe(1); - expect(notificationSpy.markTodoItemAsDone.calls.first().args[0]).toEqual({ + expect(requestSpy.post.calls.count()).toBe(1); + expect(requestSpy.post.calls.first().args[0].data).toEqual({ + project_id: 1, identifier: 'AssessmentSubmission-11', + is_done: true }); }); }); @@ -609,8 +596,7 @@ describe('AssessmentService', () => { it('should handle non-array string by wrapping it in an array for multiple question type', () => { const result = service['_normaliseAnswer'](2, 'not an array'); - // non-numeric strings convert to NaN when the code attempts to convert to numbers - expect(result).toEqual([NaN]); + expect(result).toEqual(['not an array']); }); it('should parse string to array for multi team member selector question type', () => { @@ -828,19 +814,16 @@ describe('AssessmentService', () => { }); // Verify review answers normalization - // Note: When answer is null and no file exists, the expression (answer || file) evaluates to undefined - expect(result.review.answers[1].answer).toBeUndefined(); + expect(result.review.answers[1].answer).toBeNull(); expect(result.review.answers[1].comment).toBe('Good answer'); expect(result.review.answers[2].answer).toBe(22); expect(result.review.answers[2].comment).toBe('Consider the other option'); - // file is normalized and stored as answer, not as separate file property - expect(result.review.answers[4].answer).toEqual({ + expect(result.review.answers[4].file).toEqual({ name: 'feedback.jpg', url: 'http://example.com/feedback.jpg', type: 'image/jpeg', size: 1024 }); - expect(result.review.answers[4].comment).toBe('Clear image'); done(); }); @@ -891,38 +874,34 @@ describe('AssessmentService', () => { it('should handle different types of answers in _normaliseAnswer', (done) => { // Modify the mock response to test various answer formats - // Note: only one answer per questionId since the service uses questionId as key - // Using question IDs from the mock: 1 (text), 2 (oneof), 3 (multiple), 11 (file) mockResponse.data.assessment.submissions[0].answers = [ - { questionId: 1, answer: 'some text' }, // Non-empty text (empty string becomes undefined due to || logic) + { questionId: 1, answer: '' }, // Empty string for text { questionId: 2, answer: '22' }, // String that should be converted to number for oneof - { questionId: 3, answer: '[31, 32]' }, // Multi-item array as string for multiple - { questionId: 11, file: null } // Null file (question 11 is the file type) + { questionId: 3, answer: '[]' }, // Empty array as string for multiple + { questionId: 3, answer: '[31]' }, // Single item array as string + { questionId: 3, answer: '[31, 32]' }, // Multi-item array as string + { questionId: 4, file: null } // Null file ]; service.fetchAssessment(1, 'assessment', 5, 10).subscribe(result => { - // Text question - answer should remain as is - expect(result.submission.answers[1].answer).toBe('some text'); + // Text question - empty answer should remain empty string + expect(result.submission.answers[1].answer).toBe(''); // Oneof question - string should be converted to number expect(result.submission.answers[2].answer).toBe(22); - // Multiple question - array string should be parsed to array of numbers - expect(result.submission.answers[3].answer).toEqual([31, 32]); - - // File question - null file should result in null (question 11 is file type) - expect(result.submission.answers[11].answer).toBeNull(); + // Multiple question - empty array string should be parsed to empty array + expect(result.submission.answers[3].answer).toEqual([]); done(); }); }); it('should handle file answers correctly', (done) => { - // Modify the mock to include a file answer in the submission - // Using question ID 11 which is the file type question + // Modify the mock to include a file answer in the review mockResponse.data.assessment.submissions[0].answers = [ { - questionId: 11, + questionId: 4, file: { name: 'submission.pdf', url: 'http://example.com/submission.pdf', @@ -932,8 +911,8 @@ describe('AssessmentService', () => { ]; service.fetchAssessment(1, 'assessment', 5, 10).subscribe(result => { - // File should be normalized properly in submission (question 11 is file type) - expect(result.submission.answers[11].answer).toEqual({ + // File should be normalized properly in submission + expect(result.submission.answers[4].answer).toEqual({ name: 'submission.pdf', url: 'http://example.com/submission.pdf', type: 'application/pdf' diff --git a/projects/v3/src/app/services/auth.service.spec.ts b/projects/v3/src/app/services/auth.service.spec.ts index cabc7d17f..c80b544b3 100644 --- a/projects/v3/src/app/services/auth.service.spec.ts +++ b/projects/v3/src/app/services/auth.service.spec.ts @@ -9,8 +9,6 @@ import { UtilsService } from '@v3/services/utils.service'; import { NotificationsService } from './notifications.service'; import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; import { ApolloService } from './apollo.service'; -import { DemoService } from './demo.service'; -import { UnlockIndicatorService } from './unlock-indicator.service'; describe('AuthService', () => { @@ -29,10 +27,6 @@ describe('AuthService', () => { imports: [HttpClientTestingModule], providers: [ AuthService, - { - provide: DemoService, - useValue: jasmine.createSpyObj('DemoService', { 'isDemoMode': false }), - }, { provide: RequestService, useValue: jasmine.createSpyObj('RequestService', [ @@ -65,7 +59,7 @@ describe('AuthService', () => { 'setUser', 'getUser', 'set', 'getConfig', 'setConfig', 'get', - 'clear', 'remove', + 'clear', ]), }, { @@ -77,10 +71,6 @@ describe('AuthService', () => { useValue: jasmine.createSpyObj('PusherService', ['unsubscribeChannels', 'disconnect']) }, { provide: NotificationsService, useValue: notificationsSpy }, - { - provide: UnlockIndicatorService, - useValue: jasmine.createSpyObj('UnlockIndicatorService', ['clearAllTasks', 'loadFromStorage']), - }, ] }); service = TestBed.inject(AuthService); @@ -102,95 +92,57 @@ describe('AuthService', () => { }); it('when testing directLogin(), it should pass the correct data to API', () => { - const apolloSpy = TestBed.inject(ApolloService) as jasmine.SpyObj; - apolloSpy.graphQLFetch.and.returnValue(of({ + requestSpy.post.and.returnValue(of({ + success: true, data: { - auth: { - apikey: '123456', - experience: { - id: 1, - uuid: 'test-uuid', - timelineId: 1, - projectId: 1, - name: 'Test Experience', - description: 'Test', - type: 'normal', - leadImage: '', - status: 'active', - setupStep: '', - color: '#abc', - secondaryColor: '#def', - role: 'participant', - isLast: false, - locale: 'en', - supportName: '', - supportEmail: '', - cardUrl: '', - bannerUrl: '', - logoUrl: '', - iconUrl: '', - reviewRating: false, - truncateDescription: false, - team: { id: 1 }, - featureToggle: { pulseCheckIndicator: false } - }, - email: 'test@test.com', - unregistered: false, - activationCode: null - } + tutorial: null, + apikey: '123456', + Timelines: [ + { + Program: { + config: { + theme_color: 'abc' + } + }, + Enrolment: {}, + Project: {}, + Timeline: {} + } + ] } })); storageSpy.getConfig.and.returnValue(true); service.authenticate({ authToken: 'abcd' }).subscribe(); - expect(apolloSpy.graphQLFetch.calls.count()).toBe(1); - expect(apolloSpy.graphQLFetch.calls.first().args[1]?.variables?.authToken).toEqual('abcd'); + expect(requestSpy.post.calls.count()).toBe(1); + expect(requestSpy.post.calls.first().args[0].data).toContain('abcd'); + expect(storageSpy.setUser.calls.first().args[0]).toEqual({ apikey: '123456' }); }); it('when testing globalLogin(), it should pass the correct data to API', () => { - const apolloSpy = TestBed.inject(ApolloService) as jasmine.SpyObj; - apolloSpy.graphQLFetch.and.returnValue(of({ + requestSpy.post.and.returnValue(of({ + success: true, data: { - auth: { - apikey: '123456', - experience: { - id: 1, - uuid: 'test-uuid', - timelineId: 1, - projectId: 1, - name: 'Test Experience', - description: 'Test', - type: 'normal', - leadImage: '', - status: 'active', - setupStep: '', - color: '#abc', - secondaryColor: '#def', - role: 'participant', - isLast: false, - locale: 'en', - supportName: '', - supportEmail: '', - cardUrl: '', - bannerUrl: '', - logoUrl: '', - iconUrl: '', - reviewRating: false, - truncateDescription: false, - team: { id: 1 }, - featureToggle: { pulseCheckIndicator: false } - }, - email: 'test@test.com', - unregistered: false, - activationCode: null - } + tutorial: null, + apikey: '123456', + Timelines: [ + { + Program: { + config: { + theme_color: 'abc' + } + }, + Enrolment: {}, + Project: {}, + Timeline: {} + } + ] } })); storageSpy.getConfig.and.returnValue(true); service.authenticate({ apikey: 'abcd', service: 'LOGIN' }).subscribe(); - expect(apolloSpy.graphQLFetch.calls.count()).toBe(1); - expect(apolloSpy.graphQLFetch.calls.first().args[1]?.context?.headers?.apikey).toEqual('abcd'); - expect(apolloSpy.graphQLFetch.calls.first().args[1]?.context?.headers?.service).toEqual('LOGIN'); - expect(storageSpy.setUser.calls.first().args[0]).toEqual({ apikey: 'abcd' }); + expect(requestSpy.post.calls.count()).toBe(1); + expect(requestSpy.post.calls.first().args[0].data).toContain('abcd'); + expect(storageSpy.setUser.calls.first().args[0]).toEqual({ apikey: '123456' }); }); describe('when testing isAuthenticated()', () => { @@ -280,16 +232,19 @@ describe('AuthService', () => { { id: 2, name: 'Experience 2' }, ], }; - requestSpy.get.and.returnValue(of(responseData)); spyOn(service, 'isAuthenticated').and.returnValue(true); service.getConfig(configParams).subscribe(response => { expect(response).toEqual(responseData); }); - expect(requestSpy.get.calls.count()).toBe(1); - expect(requestSpy.get.calls.first().args[0]).toEqual('api/v2/plan/experience/list'); - expect(requestSpy.get.calls.first().args[1]).toEqual({ params: configParams }); + const req = httpTestingController.expectOne('api/v2/plan/experience/list'); + expect(req.request.method).toEqual('GET'); + + req.flush(responseData); + + expect(service.isAuthenticated).not.toHaveBeenCalled(); + expect(notificationsService.alert).not.toHaveBeenCalled(); }); it('when testing checkDomain()', () => { diff --git a/projects/v3/src/app/services/chat.service.spec.ts b/projects/v3/src/app/services/chat.service.spec.ts index 5d1d1caaa..34cc8c402 100644 --- a/projects/v3/src/app/services/chat.service.spec.ts +++ b/projects/v3/src/app/services/chat.service.spec.ts @@ -231,11 +231,11 @@ describe('ChatService', () => { expect(message.message).toEqual(messageListRequestResponse.data.channel.chatLogsConnection.chatLogs[i].message); expect(message.created).toEqual(messageListRequestResponse.data.channel.chatLogsConnection.chatLogs[i].created); expect(message.file).toEqual(messageListRequestResponse.data.channel.chatLogsConnection.chatLogs[i].file); - expect((message as any).fileObject).toBeDefined(); + expect(message.fileObject).toBeDefined(); if ((typeof messageListRequestResponse.data.channel.chatLogsConnection.chatLogs[i].file) === 'string') { - expect((message as any).fileObject).toEqual(fileJson); + expect(message.fileObject).toEqual(fileJson); } else { - expect((message as any).fileObject).toEqual(messageListRequestResponse.data.channel.chatLogsConnection.chatLogs[i].file); + expect(message.fileObject).toEqual(messageListRequestResponse.data.channel.chatLogsConnection.chatLogs[i].file); } }); } @@ -348,7 +348,7 @@ describe('ChatService', () => { { message: 'test message', channelUuid: '10', - fileObj: undefined + file: undefined } )); }); @@ -357,15 +357,12 @@ describe('ChatService', () => { const attachmentMessageParam = { message: 'test message', channelUuid: '10', - file: { - path: '/path/to/file', - bucket: 'file-bucket', - name: 'unnamed.jpg', + file: JSON.stringify({ + filename: 'unnamed.jpg', + mimetype: 'image/jpeg', url: 'https://cdn.filestackcontent.com/X8Cj0Y4QS2AmDUZX6LSq', - extension: 'jpg', - type: 'image/jpeg', - size: 12345 - } + status: 'Stored' + }) }; const newMessageRes = { data: { @@ -396,13 +393,19 @@ describe('ChatService', () => { status: 'Stored' }; apolloSpy.graphQLMutate.and.returnValue(of(newMessageRes)); - service.postNewMessage(attachmentMessageParam).subscribe( + service.postAttachmentMessage(attachmentMessageParam).subscribe( message => { expect(message.uuid).toEqual(newMessageRes.data.createChatLog.uuid); expect(message.isSender).toEqual(newMessageRes.data.createChatLog.isSender); expect(message.message).toEqual(newMessageRes.data.createChatLog.message); expect(message.created).toEqual(newMessageRes.data.createChatLog.created); expect(message.file).toEqual(newMessageRes.data.createChatLog.file); + expect(message.fileObject).toBeDefined(); + if ((typeof newMessageRes.data.createChatLog.file) === 'string') { + expect(message.fileObject).toEqual(fileJson); + } else { + expect(message.fileObject).toEqual(newMessageRes.data.createChatLog.file); + } } ); expect(apolloSpy.graphQLMutate.calls.count()).toBe(1); @@ -410,7 +413,12 @@ describe('ChatService', () => { { message: 'test message', channelUuid: '10', - fileObj: attachmentMessageParam.file + file: JSON.stringify({ + filename: 'unnamed.jpg', + mimetype: 'image/jpeg', + url: 'https://cdn.filestackcontent.com/X8Cj0Y4QS2AmDUZX6LSq', + status: 'Stored' + }) } )); }); diff --git a/projects/v3/src/app/services/event.service.spec.ts b/projects/v3/src/app/services/event.service.spec.ts index 866371c8a..6038b87e8 100644 --- a/projects/v3/src/app/services/event.service.spec.ts +++ b/projects/v3/src/app/services/event.service.spec.ts @@ -6,7 +6,7 @@ import { UtilsService } from '@v3/services/utils.service'; import { NotificationsService } from '@v3/services/notifications.service'; import { TestUtils } from '@testingv3/utils'; import { BrowserStorageService } from '@v3/services/storage.service'; -import moment from 'moment'; +import * as moment from 'moment'; describe('EventService', () => { moment.updateLocale('en', { diff --git a/projects/v3/src/app/services/experience.service.spec.ts b/projects/v3/src/app/services/experience.service.spec.ts index 8792559e3..62bea2f23 100644 --- a/projects/v3/src/app/services/experience.service.spec.ts +++ b/projects/v3/src/app/services/experience.service.spec.ts @@ -2,7 +2,6 @@ import { TestBed } from '@angular/core/testing'; import { TestUtils } from '@testingv3/utils'; import { RequestService } from 'request'; import { ApolloService } from './apollo.service'; -import { AuthService } from './auth.service'; import { DemoService } from './demo.service'; import { EventService } from './event.service'; @@ -29,35 +28,31 @@ describe('ExperienceService', () => { }, { provide: ApolloService, - useValue: jasmine.createSpyObj('ApolloService', ['graphQLFetch', 'graphQLMutate', 'graphQLWatch']), + useValue: jasmine.createSpyObj('ApolloService', ['']), }, { provide: SharedService, - useValue: jasmine.createSpyObj('SharedService', ['getConfig']), + useValue: jasmine.createSpyObj('SharedService', ['']), }, { provide: BrowserStorageService, - useValue: jasmine.createSpyObj('BrowserStorageService', ['get', 'set', 'getUser', 'getConfig']), + useValue: jasmine.createSpyObj('BrowserStorageService', ['']), }, { provide: RequestService, - useValue: jasmine.createSpyObj('RequestService', ['get', 'post']), + useValue: jasmine.createSpyObj('RequestService', ['']), }, { provide: EventService, - useValue: jasmine.createSpyObj('EventService', ['trigger', 'listen']), + useValue: jasmine.createSpyObj('EventService', ['']), }, { provide: ReviewService, - useValue: jasmine.createSpyObj('ReviewService', ['getReviews']), + useValue: jasmine.createSpyObj('ReviewService', ['']), }, { provide: HomeService, - useValue: jasmine.createSpyObj('HomeService', ['getTodoItems']), - }, - { - provide: AuthService, - useValue: jasmine.createSpyObj('AuthService', ['getConfig']), + useValue: jasmine.createSpyObj('HomeService', ['']), }, ], }); diff --git a/projects/v3/src/app/services/fast-feedback.service.spec.ts b/projects/v3/src/app/services/fast-feedback.service.spec.ts index 53418ca22..2d70f40ef 100644 --- a/projects/v3/src/app/services/fast-feedback.service.spec.ts +++ b/projects/v3/src/app/services/fast-feedback.service.spec.ts @@ -7,7 +7,6 @@ import { BrowserStorageService } from '@v3/services/storage.service'; import { UtilsService } from '@v3/services/utils.service'; import { DemoService } from './demo.service'; import { ApolloService } from './apollo.service'; -import { AlertController } from '@ionic/angular'; // helper to build a valid pulse check API response function makePulseCheckResponse(questions: any[] = [], meta: any = null) { @@ -63,10 +62,6 @@ describe('FastFeedbackService', () => { provide: DemoService, useValue: jasmine.createSpyObj('DemoService', ['fastFeedback', 'normalResponse']), }, - { - provide: AlertController, - useValue: jasmine.createSpyObj('AlertController', ['create']), - }, ] }); service = TestBed.inject(FastFeedbackService); @@ -88,10 +83,12 @@ describe('FastFeedbackService', () => { describe('when testing pullFastFeedback()', () => { it('should open modal and set lock when pulse check data is valid', () => { apolloSpy.graphQLFetch.and.returnValue(of(makePulseCheckResponse(VALID_QUESTIONS, VALID_META))); - storageSpy.get.and.returnValue(false); + storageSpy.get.and.returnValue(false); // fastFeedbackOpening = false service.pullFastFeedback().subscribe(() => { + // should set fastFeedbackOpening = true expect(storageSpy.set).toHaveBeenCalledWith('fastFeedbackOpening', true); + // should call fastFeedbackModal expect(notificationSpy.fastFeedbackModal).toHaveBeenCalledTimes(1); }); }); @@ -103,6 +100,7 @@ describe('FastFeedbackService', () => { service.pullFastFeedback().subscribe(); tick(); + // lock is set to true and never released by the service const setCalls = storageSpy.set.calls.allArgs(); const lockCalls = setCalls.filter(args => args[0] === 'fastFeedbackOpening'); expect(lockCalls.length).toBe(1); @@ -111,7 +109,7 @@ describe('FastFeedbackService', () => { it('should not open modal when fastFeedbackOpening is already true', () => { apolloSpy.graphQLFetch.and.returnValue(of(makePulseCheckResponse(VALID_QUESTIONS, VALID_META))); - storageSpy.get.and.returnValue(true); + storageSpy.get.and.returnValue(true); // lock already held service.pullFastFeedback().subscribe(() => { expect(notificationSpy.fastFeedbackModal).not.toHaveBeenCalled(); @@ -151,10 +149,11 @@ describe('FastFeedbackService', () => { notificationSpy.fastFeedbackModal.and.returnValue(Promise.reject('modal error')); service.pullFastFeedback().subscribe(); - tick(); + tick(); // resolve rejected promise const setCalls = storageSpy.set.calls.allArgs(); const lockCalls = setCalls.filter(args => args[0] === 'fastFeedbackOpening'); + // first set to true, then released to false on error expect(lockCalls).toEqual([ ['fastFeedbackOpening', true], ['fastFeedbackOpening', false], diff --git a/projects/v3/src/app/services/fast-feedback.service.ts b/projects/v3/src/app/services/fast-feedback.service.ts index 0d18d2140..1b6d02032 100644 --- a/projects/v3/src/app/services/fast-feedback.service.ts +++ b/projects/v3/src/app/services/fast-feedback.service.ts @@ -1,4 +1,4 @@ -import { Inject, Injectable, forwardRef } from '@angular/core'; +import { Injectable } from '@angular/core'; import { NotificationsService } from './notifications.service'; import { BrowserStorageService } from '@v3/services/storage.service'; import { UtilsService } from '@v3/services/utils.service'; @@ -18,8 +18,7 @@ export class FastFeedbackService { private currentPulseCheckId: string = null; // temporary store active pulse check ID constructor( - // type is 'any' to prevent design:paramtypes metadata from accessing NotificationsService during module evaluation (circular dependency) - @Inject(forwardRef(() => NotificationsService)) private notificationsService: any, + private notificationsService: NotificationsService, private storage: BrowserStorageService, private utils: UtilsService, private demo: DemoService, diff --git a/projects/v3/src/app/services/filestack.service.spec.ts b/projects/v3/src/app/services/filestack.service.spec.ts index 136d1dd9b..f64393d02 100644 --- a/projects/v3/src/app/services/filestack.service.spec.ts +++ b/projects/v3/src/app/services/filestack.service.spec.ts @@ -130,13 +130,6 @@ describe('FilestackService', () => { it('should popup file preview', fakeAsync(() => { spyOn(service, 'metadata').and.returnValue(Promise.resolve({ mimetype: 'testing/format' })); service.previewFile({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', - url: 'https://example.com/test.jpg', - extension: 'jpg', - type: 'image/jpeg', - size: 1000, handle: 'testingHandleValue' }).then(); flushMicrotasks(); @@ -146,13 +139,7 @@ describe('FilestackService', () => { it('should popup file preview (support older URL format)', fakeAsync(() => { spyOn(service, 'metadata').and.returnValue(Promise.resolve({ mimetype: 'testing/format' })); service.previewFile({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', url: 'www.filepicker.io/api/file', - extension: 'jpg', - type: 'image/jpeg', - size: 1000, handle: 'testingHandleValue' }).then(); flushMicrotasks(); @@ -162,13 +149,7 @@ describe('FilestackService', () => { it('should popup file preview (support older URL format 2)', fakeAsync(() => { spyOn(service, 'metadata').and.returnValue(Promise.resolve({ mimetype: 'testing/format' })); service.previewFile({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', url: 'filestackcontent.com', - extension: 'jpg', - type: 'image/jpeg', - size: 1000, handle: 'testingHandleValue' }).then(); flushMicrotasks(); @@ -182,13 +163,7 @@ describe('FilestackService', () => { })); service.previewFile({ - bucket: 'test-bucket', - path: 'test-path', - name: 'test-file', url: 'filestackcontent.com', - extension: 'pdf', - type: 'application/pdf', - size: 11 * 1000 * 1000, // 11mb handle: 'testingHandleValue' }).then(); flushMicrotasks(); @@ -266,10 +241,14 @@ describe('FilestackService', () => { describe('previewModal()', () => { it('should pop up modal for provided filestack link', fakeAsync(() => { - service.previewModal('test.com'); + let result; + service.previewModal('test.com').then(res => { + result = res; + }); flushMicrotasks(); expect(modalctrlSpy.create).toHaveBeenCalled(); + expect(result).toEqual(MODAL_SAMPLE); })); }); @@ -319,30 +298,23 @@ describe('FilestackService', () => { describe('onFileSelectedRename()', () => { it('should rename file with spacing', fakeAsync(() => { + let result: any; const currentFile = { - bucket: 'test-bucket', - path: 'test-path', - name: 'a b c', - url: 'http://example.com/a-b-c', - extension: 'jpg', - type: 'image/jpeg', - size: 1000, filename: 'a b c', handle: 'a-b-c', mimetype: 'mimetype', originalPath: 'here', + size: 1, source: 'earth', uploadId: '12345', - alt: '' + url: 'https://test.com', }; - - // Since onFileSelectedRename is always returning a Promise now - let result; service['onFileSelectedRename'](currentFile).then(res => { - result = res; - expect(result.filename).toEqual('a_b_c'); + result = res.filename; }); + flushMicrotasks(); + expect(result).toEqual('a_b_c'); })); }); }); diff --git a/projects/v3/src/app/services/home.service.spec.ts b/projects/v3/src/app/services/home.service.spec.ts index 27f048f77..1cf80c11e 100644 --- a/projects/v3/src/app/services/home.service.spec.ts +++ b/projects/v3/src/app/services/home.service.spec.ts @@ -1,46 +1,20 @@ import { TestBed } from '@angular/core/testing'; import { of } from 'rxjs'; import { ApolloService } from './apollo.service'; + import { HomeService } from './home.service'; -import { NotificationsService } from './notifications.service'; -import { AuthService } from './auth.service'; -import { BrowserStorageService } from './storage.service'; -import { UtilsService } from './utils.service'; -import { DemoService } from './demo.service'; -import { TestUtils } from '@testingv3/utils'; describe('HomeService', () => { let service: HomeService; let apolloService: jasmine.SpyObj; beforeEach(() => { - apolloService = jasmine.createSpyObj('ApolloService', ['graphQLWatch', 'graphQLFetch']); + apolloService = jasmine.createSpyObj('ApolloService', ['graphQLWatch']); TestBed.configureTestingModule({ providers: [ - HomeService, { provide: ApolloService, useValue: apolloService, - }, - { - provide: NotificationsService, - useValue: jasmine.createSpyObj('NotificationsService', ['presentToast', 'alert', 'modal']) - }, - { - provide: AuthService, - useValue: jasmine.createSpyObj('AuthService', ['getConfig']) - }, - { - provide: BrowserStorageService, - useValue: jasmine.createSpyObj('BrowserStorageService', ['getUser', 'get', 'set']) - }, - { - provide: UtilsService, - useClass: TestUtils - }, - { - provide: DemoService, - useValue: jasmine.createSpyObj('DemoService', ['normalResponse']) } ] }); @@ -69,9 +43,6 @@ describe('HomeService', () => { it('should return an observable with pulseCheckSkills data', (done) => { const mockResponse = { - success: true, - status: 'success', - cache: false, data: { pulseCheckSkills: [ { id: 1, name: 'Skill A', value: 5 }, diff --git a/projects/v3/src/app/services/hubspot.service.spec.ts b/projects/v3/src/app/services/hubspot.service.spec.ts index 751f1a2ec..b36082566 100644 --- a/projects/v3/src/app/services/hubspot.service.spec.ts +++ b/projects/v3/src/app/services/hubspot.service.spec.ts @@ -1,11 +1,12 @@ import { TestBed } from '@angular/core/testing'; -import { of } from 'rxjs'; import { HubspotService } from './hubspot.service'; import { RequestService } from 'request'; -import { UtilsService } from '@v3/services/utils.service'; +import { map } from 'rxjs/operators'; +import { Observable, of } from 'rxjs'; +import { environment } from '@v3/environments/environment'; +import { TestUtils } from '@testingv3/utils'; import { BrowserStorageService } from '@v3/services/storage.service'; -import { ModalController } from '@ionic/angular'; -import { DemoService } from './demo.service'; +import { UtilsService } from './utils.service'; describe('HubspotService', () => { let service: HubspotService; @@ -19,7 +20,8 @@ describe('HubspotService', () => { HubspotService, { provide: UtilsService, - useValue: jasmine.createSpyObj('UtilsService', ['isEmpty']) + useValue: jasmine.createSpyObj('UtilsService', ['isEmpty']), + // useClass: TestUtils, }, { provide: RequestService, @@ -28,14 +30,6 @@ describe('HubspotService', () => { { provide: BrowserStorageService, useValue: jasmine.createSpyObj('BrowserStorageService', ['getUser', 'getReferrer', 'get']) - }, - { - provide: ModalController, - useValue: jasmine.createSpyObj('ModalController', ['create', 'dismiss', 'getTop']) - }, - { - provide: DemoService, - useValue: jasmine.createSpyObj('DemoService', ['normalResponse']) } ] }); @@ -50,8 +44,8 @@ describe('HubspotService', () => { }); - // user without uuid - the service only generates params when uuid is NOT present const tempUser = { + uuid: 'uuid-1', name: 'test user', firstName: 'test', lastName: 'user', @@ -65,22 +59,25 @@ describe('HubspotService', () => { experienceId: 1234 } - // experience object - the service calls storage.get('experience') expecting an Experience, not an array - const tempExperience = { - id: 1234, - name: 'Global Trade Accelerator - 01', - config: { - primary_color: '#2bc1d9', - secondary_color: '#9fc5e8', - email_template: 'email_1', - card_url: 'https://cdn.filestackcontent.com/uYxes8YBS2elXV0m2yjA', - manual_url: 'https://www.filepicker.io/api/file/lNQp4sFcTjGj2ojOm1fR', - design_url: 'https://www.filepicker.io/api/file/VuL71nOUSiM9NoNuEIhS', - overview_url: 'https://vimeo.com/325554048' - }, - lead_image: 'https://cdn.filestackcontent.com/urFIZW6TuC9lujp0N3PD', - support_email: 'help@practera.com' - } + const tempPrograms = [ + { + experience: { + id: 1234, + name: 'Global Trade Accelerator - 01', + config: { + primary_color: '#2bc1d9', + secondary_color: '#9fc5e8', + email_template: 'email_1', + card_url: 'https://cdn.filestackcontent.com/uYxes8YBS2elXV0m2yjA', + manual_url: 'https://www.filepicker.io/api/file/lNQp4sFcTjGj2ojOm1fR', + design_url: 'https://www.filepicker.io/api/file/VuL71nOUSiM9NoNuEIhS', + overview_url: 'https://vimeo.com/325554048' + }, + lead_image: 'https://cdn.filestackcontent.com/urFIZW6TuC9lujp0N3PD', + support_email: 'help@practera.com' + } + } + ] const params = { subject: 'test', @@ -161,13 +158,9 @@ describe('HubspotService', () => { describe('when testing submitDataToHubspot()', () => { - beforeEach(() => { - requestSpy.post.and.returnValue(of({})); - }); - it('should call hubspot API with correct data', () => { storageSpy.getUser.and.returnValue(tempUser); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.count()).toBe(1); }); @@ -175,7 +168,7 @@ describe('HubspotService', () => { it('should return correct user role "Learner"', () => { const hubspotFields = [ ...hubspotSubmitData.fields ]; storageSpy.getUser.and.returnValue(tempUser); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.first().args[0].data.fields).toEqual(hubspotFields); }); @@ -186,7 +179,7 @@ describe('HubspotService', () => { const user = { ... tempUser }; user.role = 'mentor'; storageSpy.getUser.and.returnValue(user); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.first().args[0].data.fields).toEqual(hubspotFields); }); @@ -197,7 +190,7 @@ describe('HubspotService', () => { const user = { ... tempUser }; user.role = 'admin'; storageSpy.getUser.and.returnValue(user); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.first().args[0].data.fields).toEqual(hubspotFields); }); @@ -209,7 +202,7 @@ describe('HubspotService', () => { const user = { ... tempUser }; user.firstName = null; storageSpy.getUser.and.returnValue(user); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.first().args[0].data.fields).toEqual(hubspotFields); }); @@ -222,7 +215,7 @@ describe('HubspotService', () => { user.firstName = 'test'; user.lastName = null; storageSpy.getUser.and.returnValue(user); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.first().args[0].data.fields).toEqual(hubspotFields); }); @@ -235,7 +228,7 @@ describe('HubspotService', () => { user.lastName = 'user'; user.contactNumber = null; storageSpy.getUser.and.returnValue(user); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.first().args[0].data.fields).toEqual(hubspotFields); }); @@ -248,7 +241,7 @@ describe('HubspotService', () => { user.contactNumber = '1212121212'; user.teamName = null; storageSpy.getUser.and.returnValue(user); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.first().args[0].data.fields).toEqual(hubspotFields); }); @@ -262,24 +255,56 @@ describe('HubspotService', () => { const tempPram = { ...params }; tempPram.file = null; storageSpy.getUser.and.returnValue(user); - storageSpy.get.and.returnValue(tempExperience); + storageSpy.get.and.returnValue(tempPrograms); service.submitDataToHubspot(params); expect(requestSpy.post.calls.first().args[0].data.fields).toEqual(hubspotFields); }); - describe('if user has uuid (service returns null for users with uuid)', () => { + describe('if no user data in storage', () => { + it('should not call Post request', () => { + storageSpy.getUser.and.returnValue({}); + service.submitDataToHubspot(params); + expect(requestSpy.post.calls.count()).toBe(0); + }); + }); + + describe('if experienceId is missing', () => { it('should not call Post request', () => { - storageSpy.getUser.and.returnValue({ uuid: 'some-uuid' }); + const user = tempUser; + delete user.experienceId; + storageSpy.getUser.and.returnValue(user); + service.submitDataToHubspot(params); + expect(requestSpy.post.calls.count()).toBe(0); + }); + }); + + describe('if programList is empty', () => { + it('should not call Post request', () => { + storageSpy.getUser.and.returnValue(tempUser); + storageSpy.get.and.returnValue({}); + service.submitDataToHubspot(params); + expect(requestSpy.post.calls.count()).toBe(0); + }); + }); + + describe('if no program match the program ID', () => { + it('should not call Post request', () => { + const program = tempPrograms; + program[0].experience.id = 4334; + storageSpy.getUser.and.returnValue(tempUser); + storageSpy.get.and.returnValue(program); service.submitDataToHubspot(params); expect(requestSpy.post.calls.count()).toBe(0); }); }); - describe('if experience is missing from storage', () => { + describe('if no program match the program ID', () => { it('should not call Post request', () => { + const program = tempPrograms; + program[0].experience.id = 4334; storageSpy.getUser.and.returnValue(tempUser); - storageSpy.get.and.returnValue(null); + storageSpy.get.and.returnValue(program); service.submitDataToHubspot(params); expect(requestSpy.post.calls.count()).toBe(0); }); diff --git a/projects/v3/src/app/services/modal.service.spec.ts b/projects/v3/src/app/services/modal.service.spec.ts index 349bc075e..bafdef1ff 100644 --- a/projects/v3/src/app/services/modal.service.spec.ts +++ b/projects/v3/src/app/services/modal.service.spec.ts @@ -1,5 +1,6 @@ -import { TestBed, fakeAsync, tick, flush } from '@angular/core/testing'; +import { TestBed } from '@angular/core/testing'; import { ModalController } from '@ionic/angular'; +import { of } from 'rxjs'; import { ModalService } from './modal.service'; describe('ModalService', () => { @@ -26,8 +27,7 @@ describe('ModalService', () => { it('should add a modal to the queue and show it', async () => { const modalSpy = jasmine.createSpyObj('Modal', ['present', 'onDidDismiss']); - // onDidDismiss returns a Promise, not an Observable - modalSpy.onDidDismiss.and.returnValue(Promise.resolve({})); + modalSpy.onDidDismiss.and.returnValue(of({})); modalControllerSpy.create.and.returnValue(Promise.resolve(modalSpy)); await service.addModal({}, () => {}); @@ -38,7 +38,6 @@ describe('ModalService', () => { it('should not show a new modal while another one is showing', async () => { const modalSpy = jasmine.createSpyObj('Modal', ['present', 'onDidDismiss']); - // never-resolving promise to simulate modal staying open modalSpy.onDidDismiss.and.returnValue(new Promise(() => {})); modalControllerSpy.create.and.returnValue(Promise.resolve(modalSpy)); @@ -49,22 +48,15 @@ describe('ModalService', () => { expect(modalSpy.present.calls.count()).toEqual(1); }); - it('should show the next modal after the current one is dismissed', fakeAsync(() => { + it('should show the next modal after the current one is dismissed', async () => { const modalSpy = jasmine.createSpyObj('Modal', ['present', 'onDidDismiss']); - // onDidDismiss returns a Promise, not an Observable - modalSpy.onDidDismiss.and.returnValue(Promise.resolve({})); + modalSpy.onDidDismiss.and.returnValue(of({})); modalControllerSpy.create.and.returnValue(Promise.resolve(modalSpy)); - service.addModal({}, () => {}); - tick(); // let first modal be created - service.addModal({}, () => {}); - tick(); // let second modal be added to queue - - // flush all pending async operations - flush(); + await service.addModal({}, () => {}); + await service.addModal({}, () => {}); expect(modalControllerSpy.create.calls.count()).toEqual(2); expect(modalSpy.present.calls.count()).toEqual(2); - })); - + }); }); diff --git a/projects/v3/src/app/services/network.service.spec.ts b/projects/v3/src/app/services/network.service.spec.ts index f38844d3d..74ff24189 100644 --- a/projects/v3/src/app/services/network.service.spec.ts +++ b/projects/v3/src/app/services/network.service.spec.ts @@ -1,23 +1,12 @@ import { TestBed } from '@angular/core/testing'; -import { RequestService } from 'request'; -import { of } from 'rxjs'; import { NetworkService } from './network.service'; describe('NetworkService', () => { let service: NetworkService; - let requestServiceSpy: jasmine.SpyObj; beforeEach(() => { - requestServiceSpy = jasmine.createSpyObj('RequestService', ['get']); - requestServiceSpy.get.and.returnValue(of({ status: 200 })); - - TestBed.configureTestingModule({ - providers: [ - NetworkService, - { provide: RequestService, useValue: requestServiceSpy } - ] - }); + TestBed.configureTestingModule({}); service = TestBed.inject(NetworkService); }); diff --git a/projects/v3/src/app/services/ngx-embed-video.service.spec.ts b/projects/v3/src/app/services/ngx-embed-video.service.spec.ts index 7a6ae2cd6..24212fdd3 100644 --- a/projects/v3/src/app/services/ngx-embed-video.service.spec.ts +++ b/projects/v3/src/app/services/ngx-embed-video.service.spec.ts @@ -44,74 +44,63 @@ describe('EmbedVideoService', () => { }); it('converts vimeo.com url', () => { - const target = service.embed('http://vimeo.com/19339941') as string; - expect(target).toMatch(/^sanitized:'; + + expect(target).toEqual(`sanitized:${result}`); }); it('converts youtube.com url', () => { - const target = service.embed('https://www.youtube.com/watch?v=twE64AuqE9A') as string; - expect(target).toMatch(/^sanitized:') }); it('converts youtu.be url', () => { - const target = service.embed('http://youtu.be/9XeNNqeHVDw#aid=P-Do3JLm4A0') as string; - expect(target).toMatch(/^sanitized:') }); it('converts dailymotion.com url', () => { - const target = service.embed('https://www.dailymotion.com/video/x20qnej_red-bull-presents-wild-ride-bmx-mtb-dirt_sport') as string; - expect(target).toMatch(/^sanitized:') }); it('converts dai.ly url', () => { - const target = service.embed('http://dai.ly/x20qnej') as string; - expect(target).toMatch(/^sanitized:') }); it('converts vimeo id', () => { - const target = service.embed_vimeo('19339941') as string; - expect(target).toMatch(/^sanitized:') }); it('converts youtube id', () => { - const target = service.embed_youtube('9XeNNqeHVDw') as string; - expect(target).toMatch(/^sanitized:') }); it('converts dailymotion id', () => { - const target = service.embed_dailymotion('x20qnej') as string; - expect(target).toMatch(/^sanitized:') }); it('accepts query param youtube', () => { - const target = service.embed_youtube('9XeNNqeHVDw', { query: { rel: 0, showinfo: 0 } }) as string; - expect(target).toMatch(/^sanitized:') }); it('accepts attributes youtube', () => { - const target = service.embed_youtube('9XeNNqeHVDw', { query: { rel: 0, showinfo: 0 }, attr: { width: 400, height: 200 } }) as string; - expect(target).toMatch(/^sanitized:') }); it('accepts query param vimeo', () => { - const target = service.embed_vimeo('19339941', { query: { portrait: 0, color: '333' } }) as string; - expect(target).toMatch(/^sanitized:') }); it('accepts attributes vimeo', () => { - const target = service.embed_vimeo('19339941', { query: { portrait: 0, color: '333' }, attr: { width: 400, height: 200 } }) as string; - expect(target).toMatch(/^sanitized:') }); it('accepts query param dailymotion', () => { - const target = service.embed_dailymotion('x20qnej', { query: { autoPlay: 1, start: 66 } }) as string; - expect(target).toMatch(/^sanitized:') }); it('accepts attributes dailymotion', () => { - const target = service.embed_dailymotion('x20qnej', { query: { autoPlay: 1, start: 66 }, attr: { width: 400, height: 200 } }) as string; - expect(target).toMatch(/^sanitized:') }); describe('embed_image', () => { diff --git a/projects/v3/src/app/services/notifications.service.spec.ts b/projects/v3/src/app/services/notifications.service.spec.ts index 9204f6f86..bb4d22012 100644 --- a/projects/v3/src/app/services/notifications.service.spec.ts +++ b/projects/v3/src/app/services/notifications.service.spec.ts @@ -52,7 +52,7 @@ describe('NotificationsService', () => { }, { provide: BrowserStorageService, - useValue: jasmine.createSpyObj('BrowserStorageService', ['getUser', 'get', 'set']), + useValue: jasmine.createSpyObj('BrowserStorageService', ['getUser']), }, { provide: ApolloService, @@ -71,6 +71,17 @@ describe('NotificationsService', () => { expect(service).toBeTruthy(); }); + describe('when testing popUpReviewRating()', () => { + it('should pass the correct data to notification modal', () => { + service.popUpReviewRating(1, ['home']); + expect(service.modal).toHaveBeenCalledTimes(1); + expect(service.modal).toHaveBeenCalledWith({} as any, { + reviewId: 1, + redirect: ['home'] + }); + }); + }); + describe('markTodoItemAsDone', () => { let requestService: jasmine.SpyObj; let storageService: jasmine.SpyObj; @@ -132,26 +143,47 @@ describe('NotificationsService', () => { } }); }); + }); +}); +describe('NotificationsService', () => { + let service: NotificationsService; + let requestService: RequestService; + let storageService: BrowserStorageService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + // ... existing providers + ] + }); + service = TestBed.inject(NotificationsService); + requestService = TestBed.inject(RequestService); + storageService = TestBed.inject(BrowserStorageService); + }); + + // ... existing tests + describe('markTodoItemAsDone', () => { it('should call requestService.post with correct parameters', () => { - // arrange - const projectId = 123; - storageService.getUser.and.returnValue({ projectId }); - const todoItem: Partial = { - identifier: 'test-todo' + // Arrange + const todoItem: TodoItem = { + // ... define your todo item properties here }; + const expectedData = { + ...todoItem, + project_id: storageService.getUser().projectId, + is_done: true + }; + + spyOn(requestService, 'post').and.returnValue(Promise.resolve() as any); - // act + // Act service.markTodoItemAsDone(todoItem); - // assert + // Assert expect(requestService.post).toHaveBeenCalledWith({ endPoint: api.post.todoItem, - data: { - ...todoItem, - project_id: projectId, - is_done: true - } + data: expectedData }); }); }); diff --git a/projects/v3/src/app/services/notifications.service.ts b/projects/v3/src/app/services/notifications.service.ts index 325c64d0a..ac4f52cf9 100644 --- a/projects/v3/src/app/services/notifications.service.ts +++ b/projects/v3/src/app/services/notifications.service.ts @@ -8,6 +8,7 @@ import { Achievement, AchievementService } from './achievement.service'; import { UtilsService } from '@v3/services/utils.service'; import { ReviewRatingComponent } from '../components/review-rating/review-rating.component'; import { LockTeamAssessmentPopUpComponent } from '../components/lock-team-assessment-pop-up/lock-team-assessment-pop-up.component'; +import { FastFeedbackComponent } from '../components/fast-feedback/fast-feedback.component'; import { firstValueFrom, Observable, of, Subject } from 'rxjs'; import { RequestService } from 'request'; import { BrowserStorageService } from './storage.service'; @@ -475,7 +476,7 @@ export class NotificationsService { /** * Pop up the fast feedback modal window */ - async fastFeedbackModal( + fastFeedbackModal( props: { questions?: Question[]; meta?: Meta | Object; @@ -493,9 +494,6 @@ export class NotificationsService { ? 'modal-fullscreen' : ''; - // lazy import to break circular dependency with FastFeedbackService - const { FastFeedbackComponent } = await import('../components/fast-feedback/fast-feedback.component'); - const modalConfig = { cssClass, backdropDismiss: options?.closable === true, diff --git a/projects/v3/src/app/services/pusher.service.spec.ts b/projects/v3/src/app/services/pusher.service.spec.ts index d0424f43f..cca1002e3 100644 --- a/projects/v3/src/app/services/pusher.service.spec.ts +++ b/projects/v3/src/app/services/pusher.service.spec.ts @@ -8,7 +8,7 @@ import { MockRouter } from '@testingv3/mocked.service'; import { UtilsService } from '@v3/services/utils.service'; import { RequestService } from 'request'; import { environment } from '@v3/environments/environment'; -import Pusher from 'pusher-js'; +import * as Pusher from 'pusher-js'; import { TestUtils } from '@testingv3/utils'; import { ApolloService } from './apollo.service'; import { ApolloQueryResult } from '@apollo/client'; @@ -422,5 +422,4 @@ describe('PusherService', async () => { expect(mockSubscription.trigger).toHaveBeenCalledWith('client-chat-edit-message', data); }); }); -}); diff --git a/projects/v3/src/app/services/pusher.service.ts b/projects/v3/src/app/services/pusher.service.ts index 2118876e5..9fa785d89 100644 --- a/projects/v3/src/app/services/pusher.service.ts +++ b/projects/v3/src/app/services/pusher.service.ts @@ -28,7 +28,7 @@ export interface SendMessageParam { sentAt: string; } -export interface DeleteMessageParam { +export interface DeleteMessageTriggerParam { channelUuid: string; uuid: string; } @@ -359,7 +359,7 @@ export class PusherService { /** * trigger a client event to notify other members that a message was deleted. */ - triggerDeleteMessage(channelName: string, data: DeleteMessageParam) { + triggerDeleteMessage(channelName: string, data: DeleteMessageTriggerParam) { const channel = this.channels.chat.find(c => c.name === channelName); if (!channel) { return; diff --git a/projects/v3/src/app/services/review.service.spec.ts b/projects/v3/src/app/services/review.service.spec.ts new file mode 100644 index 000000000..21b66293c --- /dev/null +++ b/projects/v3/src/app/services/review.service.spec.ts @@ -0,0 +1,101 @@ +import { TestBed } from '@angular/core/testing'; +import { ReviewService } from './review.service'; +import { of } from 'rxjs'; +import { RequestService } from 'request'; +import { UtilsService } from '@v3/services/utils.service'; +import { TestUtils } from '@testingv3/utils'; + +describe('ReviewService', () => { + let service: ReviewService; + let requestSpy: jasmine.SpyObj; + let utils: UtilsService; + + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ + ReviewService, + { + provide: UtilsService, + useClass: TestUtils, + }, + { + provide: RequestService, + useValue: jasmine.createSpyObj('RequestService', [ + 'get', 'apiResponseFormatError' + ]), + }, + ] + }); + service = TestBed.inject(ReviewService); + requestSpy = TestBed.inject(RequestService) as jasmine.SpyObj; + utils = TestBed.inject(UtilsService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); + + describe('getReviews()', () => { + it('should return empty array if no response data.', () => { + requestSpy.get.and.returnValue(of({})); + expect(service.getReviews).toThrowError(); + }); + + it('should return error if response data format error #1.', () => { + requestSpy.get.and.returnValue(of({ + success: true, + data: {} + })); + expect(service.getReviews).toThrowError(); + }); + + it('should return error if response data format error #2.', () => { + requestSpy.get.and.returnValue(of({ + success: true, + data: [{ + Assessment: {} + }] + })); + service.getReviews(); + service.reviews$.subscribe(); + expect(requestSpy.apiResponseFormatError.calls.count()).toBe(1); + }); + + it('should get correct data.', () => { + requestSpy.get.and.returnValue(of({ + success: true, + data: [{ + Assessment: { + id: 1, + name: 'assessment' + }, + AssessmentSubmission: { + id: 2, + context_id: 3, + Submitter: { name: 'submitter' }, + Team: { name: 'team' } + }, + AssessmentReview: { + is_done: true, + created: '2019-01-01 18:00:00', + modified: '2019-01-01 19:00:00' + } + }] + })); + service.getReviews(); + service.reviews$.subscribe(res => { + expect(res).toEqual([{ + assessmentId: 1, + submissionId: 2, + isDone: true, + name: 'assessment', + submitterName: 'submitter', + date: utils.timeFormatter('2019-01-01 19:00:00'), + teamName: 'team', + contextId: 3, + }]); + }); + }); + }); + +}); diff --git a/projects/v3/src/app/services/shared.service.spec.ts b/projects/v3/src/app/services/shared.service.spec.ts index 547e8c503..d5e024b7f 100644 --- a/projects/v3/src/app/services/shared.service.spec.ts +++ b/projects/v3/src/app/services/shared.service.spec.ts @@ -1,5 +1,5 @@ import { HttpClient } from '@angular/common/http'; -import { TestBed, tick, fakeAsync } from '@angular/core/testing'; +import { TestBed, tick } from '@angular/core/testing'; import { NotificationsService } from '@v3/services/notifications.service'; import { RequestService } from 'request'; import { TopicService } from '@v3/services/topic.service'; @@ -112,7 +112,7 @@ describe('SharedService', () => { expect(apolloSpy.graphQLFetch).toHaveBeenCalled(); }); - it('should set teamId as null when no teams retrieved from API', fakeAsync(() => { + it('should set teamId as null when no teams retrieved from API', () => { apolloSpy.graphQLFetch.and.returnValue(of({ data: { user: { @@ -123,51 +123,48 @@ describe('SharedService', () => { utilsSpy.has = jasmine.createSpy('has').and.returnValue(false); service.getTeamInfo().subscribe(); - tick(); expect(apolloSpy.graphQLFetch).toHaveBeenCalled(); expect(storageSpy.setUser).toHaveBeenCalledWith({ teamId: null }); - })); + }); - it('should set teamId as null when wrong response format retrieved from API', fakeAsync(() => { + it('should set teamId as null when wrong response format retrieved from API', () => { apolloSpy.graphQLFetch.and.returnValue(of({ data: {} })); utilsSpy.has = jasmine.createSpy('has').and.returnValue(false); service.getTeamInfo().subscribe(); - tick(); expect(apolloSpy.graphQLFetch).toHaveBeenCalled(); expect(storageSpy.setUser).not.toHaveBeenCalled(); - })); + }); - it('should just forward response when no "data" object available in the response', fakeAsync(() => { + it('should just forward response when no "data" object available in the response', () => { const SAMPLE_RESULT = { nodata: {} }; apolloSpy.graphQLFetch.and.returnValue(of(SAMPLE_RESULT)); let result; - service.getTeamInfo().subscribe(async res => result = await res); - tick(); + service.getTeamInfo().subscribe(res => result = res); expect(apolloSpy.graphQLFetch).toHaveBeenCalled(); expect(storageSpy.setUser).not.toHaveBeenCalled(); expect(result).toEqual(SAMPLE_RESULT); - })); + }); }); describe('onPageLoad()', () => { - it('should return void if timelineId undefined', async () => { + it('should return void if timelineId undefined', () => { storageSpy.getUser = jasmine.createSpy('storageSpy.getUser').and.returnValue({ timelineId: undefined, }); - const result = await service.onPageLoad(); + const result = service.onPageLoad(); expect(httpSpy.get).toHaveBeenCalled(); expect(result).toBeUndefined(); }); - it('should able to change color', async () => { + it('should able to change color', () => { storageSpy.getUser = jasmine.createSpy('storageSpy.getUser').and.returnValue({ timelineId: 1, colors: { @@ -175,7 +172,7 @@ describe('SharedService', () => { }, activityCardImage: 'abc' }); - const result = await service.onPageLoad(); + const result = service.onPageLoad(); expect(httpSpy.get).toHaveBeenCalled(); expect(utilsSpy.changeThemeColor).toHaveBeenCalled(); expect(utilsSpy.changeCardBackgroundImage).toHaveBeenCalled(); diff --git a/projects/v3/src/app/services/storage.service.spec.ts b/projects/v3/src/app/services/storage.service.spec.ts index 698b4a23c..082d3df27 100644 --- a/projects/v3/src/app/services/storage.service.spec.ts +++ b/projects/v3/src/app/services/storage.service.spec.ts @@ -3,38 +3,25 @@ import { BrowserStorageService, BROWSER_STORAGE } from './storage.service'; describe('StorageService', () => { let service: BrowserStorageService; - let storageSpy: jasmine.SpyObj; - // use a container object so the closure always references the same object - const storageContainer: { data: { [key: string]: string } } = { data: {} }; + let storageSpy; // : BROWSER_STORAGE; beforeEach(() => { - // reset storage data before each test by clearing the object - storageContainer.data = {}; - - // create spy with callFake BEFORE configuring TestBed - storageSpy = jasmine.createSpyObj('BROWSER_STORAGE', [ - 'getItem', - 'setItem', - 'removeItem', - 'clear' - ]); - - // set up callFake immediately after creating spy - storageSpy.getItem.and.callFake((key: string) => storageContainer.data[key] || null); - storageSpy.setItem.and.callFake((key: string, value: string) => { - storageContainer.data[key] = value; - }); - TestBed.configureTestingModule({ providers: [ BrowserStorageService, { provide: BROWSER_STORAGE, - useValue: storageSpy + useValue: jasmine.createSpyObj('BROWSER_STORAGE', [ + 'getItem', + 'setItem', + 'removeItem', + 'clear' + ]) }, ] }); service = TestBed.inject(BrowserStorageService); + storageSpy = TestBed.inject(BROWSER_STORAGE); }); it('should created', () => { @@ -155,6 +142,10 @@ describe('StorageService', () => { }); describe("lastVisited()", () => { + beforeEach(() => { + storageSpy.getItem.and.returnValue(null); + }); + it("should return null if no value is set", () => { const result = service.lastVisited("homeBookmarks"); expect(result).toBeNull(); @@ -181,35 +172,33 @@ describe('StorageService', () => { }); it("should add a number to homeBookmarks array", () => { - // note: BOOKMARK_LIMIT = 1, so only the most recent bookmark is kept - storageContainer.data['lastVisited'] = JSON.stringify({ homeBookmarks: [3] }); + storageSpy.getItem.and.returnValue( + JSON.stringify({ homeBookmarks: [1, 2, 3] }) + ); service.lastVisited("homeBookmarks", 4); - // service filters existing, pushes new value, then slices to BOOKMARK_LIMIT (1) - // bookmarks = [3] -> filter out 4 (not present) -> [3] -> push 4 -> [3,4] -> slice(-1) -> [4] expect(storageSpy.setItem).toHaveBeenCalledWith( "lastVisited", - JSON.stringify({ homeBookmarks: [4], activityId: 4 }) + JSON.stringify({ homeBookmarks: [1, 2, 3, 4] }) ); const result = service.lastVisited("homeBookmarks"); - expect(result).toEqual([4]); + expect(result).toEqual([1, 2, 3, 4]); }); it("should remove a number from homeBookmarks array if it exists", () => { - // note: BOOKMARK_LIMIT = 1, so only the most recent bookmark is kept - storageContainer.data['lastVisited'] = JSON.stringify({ homeBookmarks: [2] }); + storageSpy.getItem.and.returnValue( + JSON.stringify({ homeBookmarks: [1, 2, 3] }) + ); service.lastVisited("homeBookmarks", 2); - // value 2 is removed then added back at the end - // bookmarks = [2] -> filter out 2 -> [] -> push 2 -> [2] -> length 1 <= limit, no slice needed expect(storageSpy.setItem).toHaveBeenCalledWith( "lastVisited", - JSON.stringify({ homeBookmarks: [2], activityId: 2 }) + JSON.stringify({ homeBookmarks: [1, 3] }) ); const result = service.lastVisited("homeBookmarks"); - expect(result).toEqual([2]); + expect(result).toEqual([1, 3]); }); it("should add a number to activityId if it does not exist", () => { - storageContainer.data['lastVisited'] = JSON.stringify({ activityId: 1 }); + storageSpy.getItem.and.returnValue(JSON.stringify({ activityId: 1 })); service.lastVisited("activityId", 2); expect(storageSpy.setItem).toHaveBeenCalledWith( "lastVisited", @@ -220,21 +209,18 @@ describe('StorageService', () => { }); it("should remove activityId if it exists and is the same", () => { - storageContainer.data['lastVisited'] = JSON.stringify({ activityId: 2 }); + storageSpy.getItem.and.returnValue(JSON.stringify({ activityId: 2 })); service.lastVisited("activityId", 2); - // note: due to how append() uses Object.assign, the activityId property - // from storage is not actually removed - this is a known behavior - // the service deletes from local object but append merges with existing storage expect(storageSpy.setItem).toHaveBeenCalledWith( "lastVisited", - JSON.stringify({ activityId: 2 }) + JSON.stringify({}) ); const result = service.lastVisited("activityId"); - expect(result).toBe(2); + expect(result).toBeNull(); }); it("should update lastVisited with new value", () => { - storageContainer.data['lastVisited'] = JSON.stringify({ url: "oldUrl" }); + storageSpy.getItem.and.returnValue(JSON.stringify({ url: "oldUrl" })); service.lastVisited("url", "newUrl"); expect(storageSpy.setItem).toHaveBeenCalledWith( "lastVisited", diff --git a/projects/v3/src/app/services/unlock-indicator.service.spec.ts b/projects/v3/src/app/services/unlock-indicator.service.spec.ts index fbd310fc4..7c46a7254 100644 --- a/projects/v3/src/app/services/unlock-indicator.service.spec.ts +++ b/projects/v3/src/app/services/unlock-indicator.service.spec.ts @@ -39,7 +39,7 @@ describe("UnlockIndicatorService", () => { { id: 2, identifier: "task2", taskId: 102 }, ]; storageService.get.and.returnValue(initialTasks); - service["_unlockedTasksSubject"].next(initialTasks); + service["_unlockedTasksSubject$"].next(initialTasks); const removedTasks = service.removeTasks(101); @@ -58,7 +58,7 @@ describe("UnlockIndicatorService", () => { { id: 2, identifier: "task2", taskId: 102, activityId: 202 }, ]; storageService.get.and.returnValue(initialTasks); - service["_unlockedTasksSubject"].next(initialTasks); + service["_unlockedTasksSubject$"].next(initialTasks); const removedTasks = service.removeTasks(101); @@ -90,7 +90,7 @@ describe("UnlockIndicatorService", () => { }, ]; storageService.get.and.returnValue(initialTasks); - service["_unlockedTasksSubject"].next(initialTasks); + service["_unlockedTasksSubject$"].next(initialTasks); const removedTasks = service.removeTasks(101); @@ -116,7 +116,7 @@ describe("UnlockIndicatorService", () => { { id: 2, identifier: "task2", taskId: 102 }, ]; storageService.get.and.returnValue(initialTasks); - service["_unlockedTasksSubject"].next(initialTasks); + service["_unlockedTasksSubject$"].next(initialTasks); service.removeTasks(101); diff --git a/projects/v3/src/app/services/utils.service.spec.ts b/projects/v3/src/app/services/utils.service.spec.ts index a07da3367..b19495d0a 100644 --- a/projects/v3/src/app/services/utils.service.spec.ts +++ b/projects/v3/src/app/services/utils.service.spec.ts @@ -1,10 +1,10 @@ import { TestBed, flushMicrotasks, fakeAsync } from '@angular/core/testing'; import { UtilsService, ThemeColor } from './utils.service'; -import _ from 'lodash'; -import moment from 'moment'; +import * as _ from 'lodash'; +import * as moment from 'moment'; import { ApolloService } from '@v3/services/apollo.service'; import { BrowserStorageService } from '@v3/services/storage.service'; -import { ModalController, Platform } from '@ionic/angular'; +import { ModalController } from '@ionic/angular'; describe('UtilsService', () => { moment.updateLocale('en', { @@ -20,7 +20,6 @@ describe('UtilsService', () => { const TOMORROW = new Date(moment(NOW).add(1, 'day').toString()); let service: UtilsService; let storageSpy: jasmine.SpyObj; - let platformSpy: jasmine.SpyObj; beforeEach(() => { TestBed.configureTestingModule({ @@ -47,15 +46,10 @@ describe('UtilsService', () => { 'dismiss', 'create' ]), }, - { - provide: Platform, - useValue: jasmine.createSpyObj('Platform', ['is']), - }, ], }); service = TestBed.inject(UtilsService); - platformSpy = TestBed.inject(Platform) as jasmine.SpyObj; storageSpy = TestBed.inject(BrowserStorageService) as jasmine.SpyObj; }); @@ -65,47 +59,51 @@ describe('UtilsService', () => { describe('lodash extensions', () => { it('should extend each()', () => { - const result: number[] = []; - service.each([1, 2, 3], (val) => result.push(val)); - expect(result).toEqual([1, 2, 3]); + spyOn(_, 'each'); + service.each([1, 2, 3], () => true); + expect(_.each).toHaveBeenCalled(); }); it('should unset', () => { - const obj = { a: { b: 1 } }; - service.unset(obj, 'a.b'); - expect(obj.a.b).toBeUndefined(); + spyOn(_, 'unset'); + service.unset([1, 2, 3], () => true); + expect(_.unset).toHaveBeenCalled(); }); it('should find', () => { - const result = service.find([1, 2, 3], (val) => val === 2); - expect(result).toBe(2); + spyOn(_, 'find'); + service.find([1, 2, 3], () => true); + expect(_.find).toHaveBeenCalled(); }); it('should findIndex', () => { - const result = service.findIndex([1, 2, 3], (val) => val === 2); - expect(result).toBe(1); + spyOn(_, 'findIndex'); + service.findIndex([1, 2, 3], () => true); + expect(_.findIndex).toHaveBeenCalled(); }); it('should has', () => { - const result = service.has({ a: { b: 1 } }, 'a.b'); - expect(result).toBe(true); + spyOn(_, 'has'); + service.has([1, 2, 3], () => true); + expect(_.has).toHaveBeenCalled(); }); it('should flatten', () => { - const result = service.flatten([[1, 2], [3, 4]]); - expect(result).toEqual([1, 2, 3, 4]); + spyOn(_, 'flatten'); + service.flatten([1, 2, 3]); + expect(_.flatten).toHaveBeenCalled(); }); it('should indexOf', () => { - const result = service.indexOf([1, 2, 3], 2); - expect(result).toBe(1); + spyOn(_, 'indexOf'); + service.indexOf([1, 2, 3], () => true); + expect(_.indexOf).toHaveBeenCalled(); }); it('should remove', () => { - const arr = [1, 2, 3, 4]; - const removed = service.remove(arr, (val) => val % 2 === 0); - expect(removed).toEqual([2, 4]); - expect(arr).toEqual([1, 3]); + spyOn(_, 'remove'); + service.remove([1, 2, 3], () => true); + expect(_.remove).toHaveBeenCalled(); }); }); @@ -234,31 +232,17 @@ describe('UtilsService', () => { }); describe('isMobile()', () => { - it('should return false when platform is desktop', () => { - platformSpy.is.and.callFake((type: string) => type === 'desktop'); + it('should return false when screensize > 576', () => { + spyOnProperty(window, 'innerWidth').and.returnValue(577); const result = service.isMobile(); expect(result).toBeFalsy(); }); - it('should return true when platform is mobile', () => { - platformSpy.is.and.callFake((type: string) => type === 'mobile'); + it('should return false when screensize <= 576', () => { + spyOnProperty(window, 'innerWidth').and.returnValue(576); const result = service.isMobile(); expect(result).toBeTruthy(); }); - - it('should return true when tablet with width < 1024', () => { - platformSpy.is.and.callFake((type: string) => type === 'tablet'); - spyOnProperty(window, 'innerWidth').and.returnValue(800); - const result = service.isMobile(); - expect(result).toBeTruthy(); - }); - - it('should return false when tablet with width >= 1024', () => { - platformSpy.is.and.callFake((type: string) => type === 'tablet'); - spyOnProperty(window, 'innerWidth').and.returnValue(1024); - const result = service.isMobile(); - expect(result).toBeFalsy(); - }); }); describe('isEmpty()', () => { @@ -299,7 +283,7 @@ describe('UtilsService', () => { // expect(result).toEqual('activity'); // }); - // }); +// }); describe('urlQueryToObject()', () => { it('should turn url query into programmatically useable object', () => { @@ -343,29 +327,29 @@ describe('UtilsService', () => { it('should standardize date format', () => { const result = service.timeFormatter(NOW); - const formatted = new Intl.DateTimeFormat('en-US', { + const formatted = new Intl.DateTimeFormat('en-GB', { hour12: true, hour: 'numeric', minute: 'numeric' }).format(NOW); - expect(result.toLowerCase()).toEqual(formatted.toLowerCase()); + expect(result).toEqual(formatted); }); it('should standardize date format international format', () => { const onePMUTC = `${thisMoment.format('YYYY-MM-DD')} 13:00:00.000Z`; const result = service.timeFormatter(onePMUTC); // follows local GMT - const formatted = new Intl.DateTimeFormat('en-US', { + const formatted = new Intl.DateTimeFormat('en-GB', { hour12: true, hour: 'numeric', minute: 'numeric' }).format(new Date(onePMUTC)); - expect(result.toLowerCase()).toEqual(formatted.toLowerCase()); + expect(result).toEqual(formatted); }); it('should ensure all numeric time format is return in expected time format (h:mm a)', () => { LOCAL_TIME_TODAY.forEach(timeString => { const result = service.timeFormatter(timeString); - const formatted = new Intl.DateTimeFormat('en-US', { + const formatted = new Intl.DateTimeFormat('en-GB', { hour12: true, hour: 'numeric', minute: 'numeric' @@ -378,7 +362,7 @@ describe('UtilsService', () => { expect(thisMoment.utcOffset()).toBeLessThan(0); expect(moment.utc(new Date(`${timeString} GMT+0000`)).isBefore(thisMoment.format('YYYY-MM-DD'))).toBeTruthy(); } else { - expect(result.toLowerCase()).toEqual(formatted.toLowerCase()); + expect(result).toEqual(formatted); } }); }); @@ -635,35 +619,76 @@ describe('UtilsService', () => { }); describe('checkIsPracteraSupportEmail()', () => { - it('should return true and broadcast event with "true" when email is a practera.com email', () => { - spyOn(service, 'broadcastEvent'); - storageSpy.get.and.returnValue({ supportEmail: 'test@practera.com' } as any); - const result = service.checkIsPracteraSupportEmail(); + const tempUser = { + uuid: 'uuid-1', + name: 'test user', + firstName: 'test', + lastName: 'user', + email: 'test@abcd.com', + image: 'https://swapnil2597.github.io/assets/img/profile.png', + role: 'participent', + contactNumber: '1212121212', + userHash: '1234#asdwdd', + institutionName: 'Test institute', + teamName: 'team 1', + experienceId: 1234 + } + + const tempPrograms = [ + { + experience: { + id: 1234, + name: 'Global Trade Accelerator - 01', + config: { + primary_color: '#2bc1d9', + secondary_color: '#9fc5e8', + email_template: 'email_1', + card_url: 'https://cdn.filestackcontent.com/uYxes8YBS2elXV0m2yjA', + manual_url: 'https://www.filepicker.io/api/file/lNQp4sFcTjGj2ojOm1fR', + design_url: 'https://www.filepicker.io/api/file/VuL71nOUSiM9NoNuEIhS', + overview_url: 'https://vimeo.com/325554048' + }, + lead_image: 'https://cdn.filestackcontent.com/urFIZW6TuC9lujp0N3PD', + support_email: 'help@practera.com' + } + } + ] - expect(result).toBeTruthy(); + it('"experienceId" and email matched should broadcast event with "true"', () => { + spyOn(service, 'broadcastEvent'); + storageSpy.getUser.and.returnValue(tempUser); + storageSpy.get.and.returnValue(tempPrograms); + service.checkIsPracteraSupportEmail(); expect(service.broadcastEvent).toHaveBeenCalledWith('support-email-checked', true); }); - it('should return false and broadcast event with "false" when email is not a practera.com email', () => { + it('"experienceId" matched and email not matched should broadcast event with "false"', () => { + const program = tempPrograms; + program[0].experience.support_email = 'asd@wer.com'; spyOn(service, 'broadcastEvent'); - storageSpy.get.and.returnValue({ supportEmail: 'test@example.com' } as any); - - const result = service.checkIsPracteraSupportEmail(); - - expect(result).toBeFalsy(); + storageSpy.getUser.and.returnValue(tempUser); + storageSpy.get.and.returnValue(program); + service.checkIsPracteraSupportEmail(); expect(service.broadcastEvent).toHaveBeenCalledWith('support-email-checked', false); }); - it('should return false and broadcast event with "false" when no email is provided', () => { + it('"experienceId" not matched should broadcast event with "false"', () => { + const program = tempPrograms; + program[0].experience.id = 54654; spyOn(service, 'broadcastEvent'); - storageSpy.get.and.returnValue(null as any); - - const result = service.checkIsPracteraSupportEmail(); - - expect(result).toBeFalsy(); + storageSpy.getUser.and.returnValue(tempUser); + storageSpy.get.and.returnValue(program); + service.checkIsPracteraSupportEmail(); expect(service.broadcastEvent).toHaveBeenCalledWith('support-email-checked', false); }); + + it('"experienceId" or programs empty should return', () => { + spyOn(service, 'broadcastEvent'); + storageSpy.getUser.and.returnValue(tempUser); + service.checkIsPracteraSupportEmail(); + expect(service.broadcastEvent).not.toHaveBeenCalled(); + }); }); describe('scrollToElement()', () => { diff --git a/projects/v3/src/app/services/utils.service.ts b/projects/v3/src/app/services/utils.service.ts index f9dfed517..6063046b8 100644 --- a/projects/v3/src/app/services/utils.service.ts +++ b/projects/v3/src/app/services/utils.service.ts @@ -14,9 +14,9 @@ import indexOf from 'lodash-es/indexOf'; import remove from 'lodash-es/remove'; import isEqual from 'lodash-es/isEqual'; import upperFirst from 'lodash-es/upperFirst'; -import dayjs from 'dayjs'; +import * as dayjs from 'dayjs'; import { Colors, BrowserStorageService } from './storage.service'; -import convert from 'color-convert'; +import * as convert from 'color-convert'; import { Title } from '@angular/platform-browser'; import { francAll } from 'franc-min'; diff --git a/projects/v3/src/global.scss b/projects/v3/src/global.scss index 4e7f591b9..b73bd8659 100644 --- a/projects/v3/src/global.scss +++ b/projects/v3/src/global.scss @@ -20,14 +20,14 @@ @import "./theme/dark.scss"; // custom video player styles -@import "plyr/css"; +@import "plyr/src/sass/plyr"; // Quill @import "quill/dist/quill.snow.css"; // uppy -@import '@uppy/core/css/style.css'; -@import '@uppy/dashboard/css/style.css'; +@import '@uppy/core/dist/style.css'; +@import '@uppy/dashboard/dist/style.css'; // Slide-in Modal // affix modal to right position of screen diff --git a/projects/v3/src/test.ts b/projects/v3/src/test.ts index b0a23e9b9..5b582097f 100644 --- a/projects/v3/src/test.ts +++ b/projects/v3/src/test.ts @@ -1,15 +1,12 @@ // This file is required by karma.conf.js and loads recursively all the .spec and framework files -import '@angular/localize/init'; import 'zone.js'; import 'zone.js/testing'; -import { getTestBed, TestBed } from '@angular/core/testing'; +import { getTestBed } from '@angular/core/testing'; import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; -import { ModalController, PopoverController, AngularDelegate } from '@ionic/angular'; -import { Apollo } from 'apollo-angular'; declare const require: { context(path: string, deep?: boolean, filter?: RegExp): { @@ -23,40 +20,7 @@ getTestBed().initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting(), { - teardown: { destroyAfterEach: true } + teardown: { destroyAfterEach: false } } ); -// global fallback providers for ionic overlay controllers and commonly-injected -// root services. these prevent NullInjectorError / "is not a function" errors -// during component teardown (destroyAfterEach: true). specs that need the REAL -// service must re-call TestBed.overrideProvider() before compileComponents(). -beforeEach(() => { - const mockOverlay = { - present: jasmine.createSpy('present').and.returnValue(Promise.resolve()), - dismiss: jasmine.createSpy('dismiss').and.returnValue(Promise.resolve()), - onDidDismiss: jasmine.createSpy('onDidDismiss').and.returnValue(Promise.resolve({ data: null, role: undefined })), - onWillDismiss: jasmine.createSpy('onWillDismiss').and.returnValue(Promise.resolve({ data: null, role: undefined })), - }; - - TestBed.overrideProvider(ModalController, { - useValue: jasmine.createSpyObj('ModalController', { - create: Promise.resolve(mockOverlay), - dismiss: Promise.resolve(), - getTop: Promise.resolve(null), - }), - }); - TestBed.overrideProvider(PopoverController, { - useValue: jasmine.createSpyObj('PopoverController', { - create: Promise.resolve(mockOverlay), - dismiss: Promise.resolve(), - }), - }); - TestBed.overrideProvider(AngularDelegate, { - useValue: jasmine.createSpyObj('AngularDelegate', ['create']), - }); - TestBed.overrideProvider(Apollo, { - useValue: jasmine.createSpyObj('Apollo', ['use', 'watchQuery', 'mutate', 'query']), - }); -}); - diff --git a/projects/v3/src/testing/fixtures/assessment-submissions.ts b/projects/v3/src/testing/fixtures/assessment-submissions.ts index a00a23031..bef4e13f7 100644 --- a/projects/v3/src/testing/fixtures/assessment-submissions.ts +++ b/projects/v3/src/testing/fixtures/assessment-submissions.ts @@ -1,6 +1,4 @@ -// filepath: /projects/v3/src/testing/fixtures/assessment-submissions.ts import { AssessmentSubmitParams } from '@v3/app/services/assessment.service'; - export const SubmissionFixture: AssessmentSubmitParams = { id: 1, inProgress: true, diff --git a/projects/v3/src/testing/fixtures/chats.ts b/projects/v3/src/testing/fixtures/chats.ts index a46a58443..bcb3f18da 100644 --- a/projects/v3/src/testing/fixtures/chats.ts +++ b/projects/v3/src/testing/fixtures/chats.ts @@ -1,4 +1,4 @@ -import { ChannelMembers, ChatChannel, Message, MessageListResult, User } from '@v3/services/chat.service'; +import { ChannelMembers, ChatChannel } from '@v3/services/chat.service'; const mockMembers: ChannelMembers[] = [ { @@ -69,49 +69,8 @@ const mockChats = { } }; -// Create a user type that meets the requirements -const createUser = (uuid: string): User => { - return { - id: parseInt(uuid), - uuid, - name: `User ${uuid}`, - email: `user${uuid}@example.com`, - role: 'participant', - avatar: 'https://sandbox.practera.com/img/user-512.png' - }; -}; - -// Create a message that meets the Message interface requirements -const createMessage = (uuid: string, senderUuid: string, messageText: string): Message => { - return { - uuid, - sender: createUser(senderUuid), - isSender: false, - message: messageText, - file: null, - created: '2023-04-16T10:00:00', - scheduled: null, - sentAt: '2023-04-16T10:00:00', - - // Optional properties that may be needed in tests - senderUuid, - senderName: `User ${senderUuid}`, - senderRole: 'participant', - senderAvatar: 'https://sandbox.practera.com/img/user-512.png' - }; -}; - -// Create a MessageListResult for mock chat messages -const mockChatMessages: MessageListResult = { - cursor: 'next-page-cursor', - messages: [ - createMessage('msg1', '1', 'Hello team'), - createMessage('msg2', '2', 'Hello everyone'), - createMessage('msg3', '3', 'What are we working on today?') - ] -}; +export { mockChats, mockMembers }; -export { mockChats, mockMembers, mockChatMessages, createMessage, createUser }; const SAMPLE_AVATAR = 'https://cdn.filestackcontent.com/uYQuauwNRdD43PfCQ4iW'; const SAMPLE_PUSHER_CHANNEL = 'pusher-channel-name'; diff --git a/projects/v3/src/testing/fixtures/programs.ts b/projects/v3/src/testing/fixtures/programs.ts index 7df9ce7fc..bc88d5ac8 100644 --- a/projects/v3/src/testing/fixtures/programs.ts +++ b/projects/v3/src/testing/fixtures/programs.ts @@ -1,40 +1,5 @@ -import { supportQuestionList } from './../../app/components/support-popup/support-questions'; import { ProgramObj } from "@v3/app/services/experience.service"; -const createExperience = (num: number) => { - return { - id: num, - uuid: `uuid-${num}`, - timelineId: num, - projectId: num, - name: `test-experience-${num}`, - description: 'test description', - type: 'test', - leadImage: '', - status: 'active', - color: '', - secondaryColor: '', - todoItemCount: 0, - role: 'participant', - isLast: false, - locale: 'en', - supportName: '', - supportEmail: '', - cardUrl: '', - bannerUrl: '', - logoUrl: '', - iconUrl: '', - reviewRating: false, - truncateDescription: false, - featureToggle: { - pulseCheckIndicator: false, - showProjectHub: false, - }, - progress: 0, - config: {}, - }; -}; - const programObj: ProgramObj[] = [1, 2].map(num => { return { program: { @@ -54,7 +19,12 @@ const programObj: ProgramObj[] = [1, 2].map(num => { enrolment: { contact_number: `0${123456789 + num}` }, - experience: createExperience(num), + experience: { + id: num, + config: {}, + name: '', + lead_image: '', + }, institution: { name: '', logo_url: '', @@ -63,7 +33,6 @@ const programObj: ProgramObj[] = [1, 2].map(num => { } }; }); - programObj.push(...[3].map(num => { return { program: { @@ -83,7 +52,12 @@ programObj.push(...[3].map(num => { enrolment: { contact_number: `0${123456789 + num}` }, - experience: createExperience(num), + experience: { + id: num, + config: null, + name: '', + lead_image: '', + }, institution: { name: '', logo_url: '', @@ -92,7 +66,6 @@ programObj.push(...[3].map(num => { } }; })); - programObj.push(...[4].map(num => { return { program: { @@ -112,14 +85,19 @@ programObj.push(...[4].map(num => { enrolment: { contact_number: `0${123456789 + num}` }, - experience: createExperience(num), + experience: { + id: num, + config: null, + name: '', + lead_image: '', + }, institution: { name: '', logo_url: '', config: {}, uuid: '', - } + }, }; })); -export const ProgramFixture = programObj; +export const ProgramFixture: ProgramObj[] = programObj; diff --git a/projects/v3/src/testing/fixtures/tasks.ts b/projects/v3/src/testing/fixtures/tasks.ts index 7515a7cc3..181b627bb 100644 --- a/projects/v3/src/testing/fixtures/tasks.ts +++ b/projects/v3/src/testing/fixtures/tasks.ts @@ -1,7 +1,3 @@ -// filepath: /Users/chaw/Workspaces/www/intersective/app-ionic7/projects/v3/src/testing/fixtures/tasks.ts -import { Activity, Task } from '@v3/app/services/activity.service'; -import { UnlockConditionMeta } from '@v3/app/services/home.service'; - const Activity = { "data": { "activity": { @@ -26,45 +22,146 @@ const Activity = { }, "__typename": "Task" }, - // remaining tasks... + { + "id": 18620, + "name": "Introduction to the ON Accelerator testing", + "type": "topic", + "isLocked": false, + "isTeam": false, + "deadline": null, + "contextId": null, + "status": { + "status": "done", + "isLocked": null, + "submitterName": null, + "submitterImage": null, + "__typename": "TaskStatus" + }, + "__typename": "Task" + }, + { + "id": 18621, + "name": "Wicked problems, global opportunity", + "type": "topic", + "isLocked": false, + "isTeam": false, + "deadline": null, + "contextId": null, + "status": { + "status": "done", + "isLocked": null, + "submitterName": null, + "submitterImage": null, + "__typename": "TaskStatus" + }, + "__typename": "Task" + }, + { + "id": 18622, + "name": "The ON program experience", + "type": "topic", + "isLocked": false, + "isTeam": false, + "deadline": null, + "contextId": null, + "status": { + "status": "done", + "isLocked": null, + "submitterName": null, + "submitterImage": null, + "__typename": "TaskStatus" + }, + "__typename": "Task" + }, + { + "id": 12369, + "name": "Group Moderated Feedback 1", + "type": "assessment", + "isLocked": false, + "isTeam": true, + "deadline": "2022-05-30 00:00:00", + "contextId": 17739, + "status": { + "status": "pending review", + "isLocked": false, + "submitterName": "expert_008_v3", + "submitterImage": "https://www.gravatar.com/avatar/2704bb8c2aa44f2c049ad5920f2527bf?d=https%3A%2F%2Fmy.practera.com%2Fimg%2Fuser-512.png&s=50", + "__typename": "TaskStatus" + }, + "__typename": "Task" + }, + { + "id": 12370, + "name": "Individual Moderated Assessment 1", + "type": "assessment", + "isLocked": false, + "isTeam": false, + "deadline": null, + "contextId": 17740, + "status": { + "status": "in progress", + "isLocked": false, + "submitterName": "learner 008 v3", + "submitterImage": "https://cdn.filestackcontent.com/Pj2pKuJ7QQa6IRQ7GXrU", + "__typename": "TaskStatus" + }, + "__typename": "Task" + }, + { + "id": 13083, + "name": "New individual assessment CORE-5496", + "type": "assessment", + "isLocked": false, + "isTeam": false, + "deadline": "2022-08-26 11:00:00", + "contextId": 19396, + "status": { + "status": "", + "isLocked": null, + "submitterName": null, + "submitterImage": null, + "__typename": "TaskStatus" + }, + "__typename": "Task" + }, + { + "id": 13082, + "name": "New group assessment CORE-5496", + "type": "assessment", + "isLocked": false, + "isTeam": true, + "deadline": "2022-09-01 22:00:00", + "contextId": 19395, + "status": { + "status": "", + "isLocked": null, + "submitterName": null, + "submitterImage": null, + "__typename": "TaskStatus" + }, + "__typename": "Task" + } ], - // Adding unlockConditions to fix the error - "unlockConditions": [], "__typename": "Activity" } } }; -// This is used in normalizing a task for testing -export const NormalisedTaskFixture: Task = { +export const NormalisedTaskFixture = { id: 1, type: 'Topic', name: 'Test Topic', status: '', - // Optional fields - contextId: null, - isForTeam: false, - dueDate: null, - isOverdue: false, - isDueToday: false, - isLocked: false, - submitter: null, - assessmentType: null, -}; - -// Creating a proper Activity object that includes the required unlockConditions property -export const NormalizedActivityFixture: Activity = { - id: 1, - name: 'Test Activity', - description: 'Activity Description', - tasks: [NormalisedTaskFixture], - unlockConditions: [ - { - name: 'test condition', - action: 'test action', - meta: {} as UnlockConditionMeta - } - ] + // contextId?: number, + // isForTeam?: boolean, + // dueDate?: string, + // isOverdue?: boolean, + // isDueToday?: boolean, + // isLocked?: boolean, + // submitter?: { + // name: string, + // image: string, + // }, }; export const TaskFixture = Activity; diff --git a/projects/v3/src/testing/mocked.service.ts b/projects/v3/src/testing/mocked.service.ts index 0eb78027e..8ed138fad 100644 --- a/projects/v3/src/testing/mocked.service.ts +++ b/projects/v3/src/testing/mocked.service.ts @@ -21,8 +21,6 @@ export class MockRouter extends SpyObject { events; url; createUrlTree; - getCurrentNavigation; - serializeUrl; constructor() { super(Router); @@ -40,8 +38,6 @@ export class MockRouter extends SpyObject { )); this.createUrlTree = this.spy('createUrlTree'); this.url = 'abc'; - this.getCurrentNavigation = this.spy('getCurrentNavigation').and.returnValue(null); - this.serializeUrl = this.spy('serializeUrl').and.returnValue('/test'); } } diff --git a/projects/v3/src/testing/utils.ts b/projects/v3/src/testing/utils.ts index 2a882f614..97d355deb 100644 --- a/projects/v3/src/testing/utils.ts +++ b/projects/v3/src/testing/utils.ts @@ -1,6 +1,6 @@ -import moment from 'moment'; +import * as moment from 'moment'; import { UtilsService } from '@v3/services/utils.service'; -import _ from 'lodash'; +import * as _ from 'lodash'; import { of, Subject } from 'rxjs'; export class SpyObject { @@ -65,17 +65,6 @@ export class TestUtils extends SpyObject { getCurrentLocale; urlQueryToObject; getFormatedCurrentTime; - setPageLanguage; - isHour12Format; - setPageTitle; - addLanguageAttributes; - moveToNewLocale; - detectLanguage; - decodeHtmlEntities; - isQuillContentEmpty; - checkIsPracteraSupportEmail; - scrollToElement; - isColor; protected _eventsSubject = new Subject<{ key: string, value: any }>(); @@ -84,10 +73,7 @@ export class TestUtils extends SpyObject { this.lodash = _; // UtilsService.prototype['lodash'] = (UtilsService.prototype['lodash']) ? UtilsService.prototype['lodash'] : _; this.isEmpty = this.spy('isEmpty').and.callFake(UtilsService.prototype.isEmpty); - this.isMobile = this.spy('isMobile').and.returnValue(false); - this.isQuillContentEmpty = this.spy('isQuillContentEmpty').and.returnValue(false); - this.scrollToElement = this.spy('scrollToElement'); - this.isColor = this.spy('isColor').and.returnValue(false); + this.isMobile = this.spy('isMobile'); this.each = this.spy('each').and.callFake(UtilsService.prototype.each); this.find = this.spy('find'); this.indexOf = this.spy('indexOf').and.callFake(UtilsService.prototype.indexOf); @@ -113,15 +99,7 @@ export class TestUtils extends SpyObject { this.downloadFile = this.spy('downloadFile'); this.getCurrentLocation = this.spy('getCurrentLocation'); this.getFormatedCurrentTime = this.spy('getFormatedCurrentTime'); - this.getCurrentLocale = this.spy('getCurrentLocale').and.returnValue('en-US'); - this.setPageLanguage = this.spy('setPageLanguage'); - this.isHour12Format = this.spy('isHour12Format').and.returnValue(true); - this.setPageTitle = this.spy('setPageTitle'); - this.addLanguageAttributes = this.spy('addLanguageAttributes').and.callFake((htmlContent: any) => htmlContent); - this.moveToNewLocale = this.spy('moveToNewLocale'); - this.detectLanguage = this.spy('detectLanguage').and.returnValue(null); - this.decodeHtmlEntities = this.spy('decodeHtmlEntities').and.callFake((text: any) => text); - this.checkIsPracteraSupportEmail = this.spy('checkIsPracteraSupportEmail').and.returnValue(false); + this.getCurrentLocale = this.spy('getCurrentLocale'); } static createRouterSpy() { diff --git a/projects/v3/src/theme/dark.scss b/projects/v3/src/theme/dark.scss index d77d2101d..ed54d914b 100644 --- a/projects/v3/src/theme/dark.scss +++ b/projects/v3/src/theme/dark.scss @@ -168,45 +168,25 @@ body.dark { --ion-text-color: #ffffff; --ion-text-color-rgb: 255, 255, 255; - --ion-background-color-step-50: #0d0d0d; - --ion-background-color-step-100: #1a1a1a; - --ion-background-color-step-150: #262626; - --ion-background-color-step-200: #333333; - --ion-background-color-step-250: #404040; - --ion-background-color-step-300: #4d4d4d; - --ion-background-color-step-350: #595959; - --ion-background-color-step-400: #666666; - --ion-background-color-step-450: #737373; - --ion-background-color-step-500: #808080; - --ion-background-color-step-550: #8c8c8c; - --ion-background-color-step-600: #999999; - --ion-background-color-step-650: #a6a6a6; - --ion-background-color-step-700: #b3b3b3; - --ion-background-color-step-750: #bfbfbf; - --ion-background-color-step-800: #cccccc; - --ion-background-color-step-850: #d9d9d9; - --ion-background-color-step-900: #e6e6e6; - --ion-background-color-step-950: #f2f2f2; - - --ion-text-color-step-50: #f2f2f2; - --ion-text-color-step-100: #e6e6e6; - --ion-text-color-step-150: #d9d9d9; - --ion-text-color-step-200: #cccccc; - --ion-text-color-step-250: #bfbfbf; - --ion-text-color-step-300: #b3b3b3; - --ion-text-color-step-350: #a6a6a6; - --ion-text-color-step-400: #999999; - --ion-text-color-step-450: #8c8c8c; - --ion-text-color-step-500: #808080; - --ion-text-color-step-550: #737373; - --ion-text-color-step-600: #666666; - --ion-text-color-step-650: #595959; - --ion-text-color-step-700: #4d4d4d; - --ion-text-color-step-750: #404040; - --ion-text-color-step-800: #333333; - --ion-text-color-step-850: #262626; - --ion-text-color-step-900: #1a1a1a; - --ion-text-color-step-950: #0d0d0d; + --ion-color-step-50: #0d0d0d; + --ion-color-step-100: #1a1a1a; + --ion-color-step-150: #262626; + --ion-color-step-200: #333333; + --ion-color-step-250: #404040; + --ion-color-step-300: #4d4d4d; + --ion-color-step-350: #595959; + --ion-color-step-400: #666666; + --ion-color-step-450: #737373; + --ion-color-step-500: #808080; + --ion-color-step-550: #8c8c8c; + --ion-color-step-600: #999999; + --ion-color-step-650: #a6a6a6; + --ion-color-step-700: #b3b3b3; + --ion-color-step-750: #bfbfbf; + --ion-color-step-800: #cccccc; + --ion-color-step-850: #d9d9d9; + --ion-color-step-900: #e6e6e6; + --ion-color-step-950: #f2f2f2; --ion-toolbar-background: #0d0d0d; diff --git a/projects/v3/tsconfig.app.json b/projects/v3/tsconfig.app.json index 3ad2393d9..be1929302 100644 --- a/projects/v3/tsconfig.app.json +++ b/projects/v3/tsconfig.app.json @@ -48,7 +48,6 @@ "./src/**/*.ts" ], "exclude": [ - "src/test.ts", "src/testing/**/*.ts", "**/*.spec.ts", "src/environments/environment.*.ts", diff --git a/tsconfig.json b/tsconfig.json index 57bb207c3..f0fd7a5a1 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,7 +9,7 @@ "experimentalDecorators": true, "emitDecoratorMetadata": true, "module": "ES2022", - "moduleResolution": "bundler", + "moduleResolution": "node", "importHelpers": true, "useDefineForClassFields": false, "target": "ES2022",