diff --git a/.cursor/commands/code-review.md b/.cursor/commands/code-review.md new file mode 100644 index 0000000000..14dd499df1 --- /dev/null +++ b/.cursor/commands/code-review.md @@ -0,0 +1,154 @@ +--- +name: code-review +description: Automated PR review using comprehensive checklist tailored for modularized Contentstack CLI +--- + +# Code Review Command + +## Usage Patterns + +### Scope-Based Reviews +- `/code-review` - Review all current changes with full checklist +- `/code-review --scope typescript` - Focus on TypeScript configuration and patterns +- `/code-review --scope testing` - Focus on Mocha/Chai test patterns +- `/code-review --scope oclif` - Focus on command structure and OCLIF patterns +- `/code-review --scope packages` - Focus on package structure and organization + +### Severity Filtering +- `/code-review --severity critical` - Show only critical issues (security, breaking changes) +- `/code-review --severity high` - Show high and critical issues +- `/code-review --severity all` - Show all issues including suggestions + +### Package-Aware Reviews +- `/code-review --package contentstack-config` - Review changes in specific package +- `/code-review --package-type plugin` - Review plugin packages only (auth, config) +- `/code-review --package-type library` - Review library packages (command, utilities, dev-dependencies) + +### File Type Focus +- `/code-review --files commands` - Review command files only +- `/code-review --files tests` - Review test files only +- `/code-review --files utils` - Review utility files + +## Comprehensive Review Checklist + +### Monorepo Structure Compliance +- **Package organization**: Proper placement in `packages/` structure +- **pnpm workspace**: Correct `package.json` workspace configuration +- **Build artifacts**: No `lib/` directories committed to version control +- **Dependencies**: Proper use of shared utilities (`@contentstack/cli-command`, `@contentstack/cli-utilities`) +- **Scripts**: Consistent build, test, and lint scripts across packages + +### Package-Specific Structure +- **Plugin packages** (auth, config): Have `oclif.commands` configuration +- **Library packages** (command, utilities, dev-dependencies): Proper exports in package.json +- **Main package** (contentstack): Aggregates plugins correctly +- **Dependency versions**: Using beta versions appropriately (~version ranges) + +### TypeScript Standards +- **Configuration compliance**: Follows package TypeScript config (`strict: false`, `target: es2017`) +- **Naming conventions**: kebab-case files, PascalCase classes, camelCase functions +- **Import patterns**: ES modules with proper default/named exports +- **Type safety**: No unnecessary `any` types in production code + +### OCLIF Command Patterns +- **Base class usage**: Extends `@contentstack/cli-command` Command +- **Command structure**: Proper `static description`, `static examples`, `static flags` +- **Topic organization**: Uses `cm` topic structure (`cm:config:set`, `cm:auth:login`) +- **Error handling**: Uses `handleAndLogError` from utilities +- **Flag validation**: Early validation and user-friendly error messages +- **Service delegation**: Commands orchestrate, services implement business logic + +### Testing Excellence (Mocha/Chai Stack) +- **Framework compliance**: Uses Mocha + Chai (not Jest) +- **File patterns**: Follows `*.test.ts` naming convention +- **Directory structure**: Proper placement in `test/unit/` +- **Test organization**: Arrange-Act-Assert pattern consistently used +- **Isolation**: Proper setup/teardown with beforeEach/afterEach +- **No real API calls**: All external dependencies properly mocked + +### Error Handling Standards +- **Consistent patterns**: Use `handleAndLogError` from utilities +- **User-friendly messages**: Clear error descriptions for end users +- **Logging**: Proper use of `log.debug` for diagnostic information +- **Status messages**: Use `cliux` for user feedback (success, error, info) + +### Build and Compilation +- **TypeScript compilation**: Clean compilation with no errors +- **OCLIF manifest**: Generated for command discovery +- **README generation**: Commands documented in package README +- **Source maps**: Properly configured for debugging +- **No build artifacts in commit**: `.gitignore` excludes `lib/` directories + +### Testing Coverage +- **Test structure**: Tests in `test/unit/` with descriptive names +- **Command testing**: Uses @oclif/test for command validation +- **Error scenarios**: Tests for both success and failure paths +- **Mocking**: All dependencies properly mocked + +### Package.json Compliance +- **Correct metadata**: name, description, version, author +- **Script definitions**: build, compile, test, lint scripts present +- **Dependencies**: Correct versions of shared packages +- **Main/types**: Properly configured for library packages +- **OCLIF config**: Present for plugin packages + +### Security and Best Practices +- **No secrets**: No API keys or tokens in code or tests +- **Input validation**: Proper validation of user inputs and flags +- **Process management**: Appropriate use of error codes +- **File operations**: Safe handling of file system operations + +### Code Quality +- **Naming consistency**: Follow established conventions +- **Comments**: Only for non-obvious logic (no "narration" comments) +- **Error messages**: Clear, actionable messages for users +- **Module organization**: Proper separation of concerns + +## Review Execution + +### Automated Checks +1. **Lint compliance**: ESLint checks for code style +2. **TypeScript compiler**: Successful compilation to `lib/` directories +3. **Test execution**: All tests pass successfully +4. **Build verification**: Build scripts complete without errors + +### Manual Review Focus Areas +1. **Command usability**: Clear help text and realistic examples +2. **Error handling**: Appropriate error messages and recovery options +3. **Test quality**: Comprehensive test coverage for critical paths +4. **Monorepo consistency**: Consistent patterns across all packages +5. **Flag design**: Intuitive flag names and combinations + +### Common Issues to Flag +- **Inconsistent TypeScript settings**: Mixed strict mode without reason +- **Real API calls in tests**: Unmocked external dependencies +- **Missing error handling**: Commands that fail silently +- **Poor test organization**: Tests without clear Arrange-Act-Assert +- **Build artifacts committed**: `lib/` directories in version control +- **Unclear error messages**: Non-actionable error descriptions +- **Inconsistent flag naming**: Similar flags with different names +- **Missing command examples**: Examples not showing actual usage + +## Repository-Specific Checklist + +### For Modularized CLI +- [ ] Command properly extends `@contentstack/cli-command` Command +- [ ] Flags defined with proper types from `@contentstack/cli-utilities` +- [ ] Error handling uses `handleAndLogError` utility +- [ ] User feedback uses `cliux` utilities +- [ ] Tests use Mocha + Chai pattern with mocked dependencies +- [ ] Package.json has correct scripts (build, compile, test, lint) +- [ ] TypeScript compiles with no errors +- [ ] Tests pass: `pnpm test` +- [ ] No `.only` or `.skip` in test files +- [ ] Build succeeds: `pnpm run build` +- [ ] OCLIF manifest generated successfully + +### Before Merge +- [ ] All review items addressed +- [ ] No build artifacts in commit +- [ ] Tests added for new functionality +- [ ] Documentation updated if needed +- [ ] No console.log() statements (use log.debug instead) +- [ ] Error messages are user-friendly +- [ ] No secrets or credentials in code diff --git a/.cursor/commands/execute-tests.md b/.cursor/commands/execute-tests.md new file mode 100644 index 0000000000..fb473ecf26 --- /dev/null +++ b/.cursor/commands/execute-tests.md @@ -0,0 +1,246 @@ +--- +name: execute-tests +description: Run tests by scope, file, or module with intelligent filtering for this pnpm monorepo +--- + +# Execute Tests Command + +## Usage Patterns + +### Monorepo-Wide Testing +- `/execute-tests` - Run all tests across all packages +- `/execute-tests --coverage` - Run all tests with coverage reporting +- `/execute-tests --parallel` - Run package tests in parallel using pnpm + +### Package-Specific Testing +- `/execute-tests contentstack-config` - Run tests for config package +- `/execute-tests contentstack-auth` - Run tests for auth package +- `/execute-tests contentstack-command` - Run tests for command package +- `/execute-tests contentstack-utilities` - Run tests for utilities package +- `/execute-tests packages/contentstack-config/` - Run tests using path + +### Scope-Based Testing +- `/execute-tests unit` - Run unit tests only (`test/unit/**/*.test.ts`) +- `/execute-tests commands` - Run command tests (`test/unit/commands/**/*.test.ts`) +- `/execute-tests services` - Run service layer tests + +### File Pattern Testing +- `/execute-tests *.test.ts` - Run all TypeScript tests +- `/execute-tests test/unit/commands/` - Run tests for specific directory + +### Watch and Development +- `/execute-tests --watch` - Run tests in watch mode with file monitoring +- `/execute-tests --debug` - Run tests with debug output enabled +- `/execute-tests --bail` - Stop on first test failure + +## Intelligent Filtering + +### Repository-Aware Detection +- **Test patterns**: All use `*.test.ts` naming convention +- **Directory structures**: Standard `test/unit/` layout +- **Test locations**: `packages/*/test/unit/**/*.test.ts` +- **Build exclusion**: Ignores `lib/` directories (compiled artifacts) + +### Package Structure +The monorepo contains 6 packages: +- `contentstack` - Main CLI package +- `contentstack-auth` - Authentication plugin +- `contentstack-config` - Configuration plugin +- `contentstack-command` - Base Command class (library) +- `contentstack-utilities` - Utilities library +- `contentstack-dev-dependencies` - Dev dependencies + +### Monorepo Integration +- **pnpm workspace support**: Uses `pnpm -r --filter` for package targeting +- **Dependency awareness**: Understands package interdependencies +- **Parallel execution**: Leverages pnpm's parallel capabilities +- **Selective testing**: Can target specific packages or file patterns + +### Framework Detection +- **Mocha configuration**: Respects `.mocharc.json` files per package +- **TypeScript compilation**: Handles test TypeScript setup +- **Test setup**: Detects test helper initialization files +- **Test timeout**: 30 seconds standard (configurable per package) + +## Execution Examples + +### Common Workflows +```bash +# Run all tests with coverage +/execute-tests --coverage + +# Test specific package during development +/execute-tests contentstack-config --watch + +# Run only command tests across all packages +/execute-tests commands + +# Run unit tests with detailed output +/execute-tests --debug + +# Test until first failure (quick feedback) +/execute-tests --bail +``` + +### Package-Specific Commands Generated +```bash +# For contentstack-config package +cd packages/contentstack-config && pnpm test + +# For all packages with parallel execution +pnpm -r --filter './packages/*' run test + +# For specific test file +cd packages/contentstack-config && npx mocha "test/unit/commands/region.test.ts" + +# With coverage +pnpm -r --filter './packages/*' run test:coverage +``` + +## Configuration Awareness + +### Mocha Integration +- Respects individual package `.mocharc.json` configurations +- Handles TypeScript compilation via ts-node/register +- Supports test helpers and initialization files +- Manages timeout settings per package (default 30 seconds) + +### Test Configuration +```json +// .mocharc.json +{ + "require": [ + "test/helpers/init.js", + "ts-node/register", + "source-map-support/register" + ], + "recursive": true, + "timeout": 30000, + "spec": "test/**/*.test.ts" +} +``` + +### pnpm Workspace Features +- Leverages workspace dependency resolution +- Supports filtered execution by package patterns +- Enables parallel test execution across packages +- Respects package-specific scripts and configurations + +## Test Structure + +### Standard Test Organization +``` +packages/*/ +├── test/ +│ └── unit/ +│ ├── commands/ # Command-specific tests +│ ├── services/ # Service/business logic tests +│ └── utils/ # Utility function tests +└── src/ + ├── commands/ # CLI commands + ├── services/ # Business logic + └── utils/ # Utilities +``` + +### Test File Naming +- **Pattern**: `*.test.ts` across all packages +- **Location**: `test/unit/` directories +- **Organization**: Mirrors `src/` structure for easy navigation + +## Performance Optimization + +### Parallel Testing +```bash +# Run tests in parallel for faster feedback +pnpm -r --filter './packages/*' run test + +# Watch mode during development +/execute-tests --watch +``` + +### Selective Testing +- Run only affected packages' tests during development +- Use `--bail` to stop on first failure for quick iteration +- Target specific test files for focused debugging + +## Troubleshooting + +### Common Issues + +**Tests not found** +- Check that files follow `*.test.ts` pattern +- Verify files are in `test/unit/` directory +- Ensure `.mocharc.json` has correct spec pattern + +**TypeScript compilation errors** +- Verify `tsconfig.json` in package root +- Check that `ts-node/register` is in `.mocharc.json` requires +- Run `pnpm compile` to check TypeScript errors + +**Watch mode not detecting changes** +- Verify `--watch` flag is supported in your Mocha version +- Check that file paths are correct +- Ensure no excessive `.gitignore` patterns + +**Port conflicts** +- Tests should not use hard-coded ports +- Use dynamic port allocation or test isolation +- Check for process cleanup in `afterEach` hooks + +## Best Practices + +### Test Execution +- Run tests before committing: `pnpm test` +- Use `--bail` during development for quick feedback +- Run full suite before opening PR +- Check coverage for critical paths + +### Test Organization +- Keep tests close to source code structure +- Use descriptive test names +- Group related tests with `describe` blocks +- Clean up resources in `afterEach` + +### Debugging +- Use `--debug` flag for detailed output +- Add `log.debug()` statements in tests +- Run individual test files for isolation +- Use `--bail` to stop at first failure + +## Integration with CI/CD + +### GitHub Actions +- Runs `pnpm test` on pull requests +- Enforces test passage before merge +- May include coverage reporting +- Runs linting and build verification + +### Local Development +```bash +# Before committing +pnpm test +pnpm run lint +pnpm run build + +# Or use watch mode for faster iteration +pnpm test --watch +``` + +## Coverage Reporting + +### Coverage Commands +```bash +# Run tests with coverage +/execute-tests --coverage + +# Coverage output location +coverage/ +├── index.html # HTML report +├── coverage-summary.json # JSON summary +└── lcov.info # LCOV format +``` + +### Coverage Goals +- **Team aspiration**: 80% minimum coverage +- **Focus on**: Critical business logic and error paths +- **Not critical**: Utility functions and edge cases diff --git a/.cursor/rules/README.md b/.cursor/rules/README.md new file mode 100644 index 0000000000..148ead7678 --- /dev/null +++ b/.cursor/rules/README.md @@ -0,0 +1,84 @@ +# Cursor Rules + +Context-aware rules that load automatically based on the files you're editing, optimized for this modularized Contentstack CLI. + +## Rule Files + +| File | Scope | Always Applied | Purpose | +|------|-------|----------------|---------| +| `dev-workflow.md` | `**/*.ts`, `**/*.js`, `**/*.json` | Yes | Monorepo TDD workflow, pnpm workspace patterns (6 packages) | +| `typescript.mdc` | `**/*.ts`, `**/*.tsx` | No | TypeScript configurations and naming conventions | +| `testing.mdc` | `**/test/**/*.ts`, `**/test/**/*.js`, `**/__tests__/**/*.ts`, `**/*.spec.ts`, `**/*.test.ts` | Yes | Mocha, Chai test patterns and test structure | +| `oclif-commands.mdc` | `**/commands/**/*.ts`, `**/base-command.ts` | No | OCLIF command patterns and CLI validation | +| `contentstack-core.mdc` | `packages/contentstack/src/**/*.ts`, `packages/contentstack/src/**/*.js` | No | Core package plugin aggregation, hooks, and entry point patterns | + +## Commands + +| File | Trigger | Purpose | +|------|---------|---------| +| `execute-tests.md` | `/execute-tests` | Run tests by scope, package, or module with monorepo awareness | +| `code-review.md` | `/code-review` | Automated PR review with CLI-specific checklist | + +## Loading Behaviour + +### File Type Mapping +- **TypeScript files** → `typescript.mdc` + `dev-workflow.md` +- **Command files** (`packages/*/src/commands/**/*.ts`) → `oclif-commands.mdc` + `typescript.mdc` + `dev-workflow.md` +- **Base command files** (`packages/*/src/base-command.ts`) → `oclif-commands.mdc` + `typescript.mdc` + `dev-workflow.md` +- **Core package files** (`packages/contentstack/src/**/*.ts`) → `contentstack-core.mdc` + `typescript.mdc` + `dev-workflow.md` +- **Test files** (`packages/*/test/**/*.{ts,js}`) → `testing.mdc` + `dev-workflow.md` +- **Utility files** (`packages/*/src/utils/**/*.ts`) → `typescript.mdc` + `dev-workflow.md` + +### Package-Specific Loading +- **Plugin packages** (with `oclif.commands`) → Full command and utility rules +- **Library packages** → TypeScript and utility rules only + +## Repository-Specific Features + +### Monorepo Structure +- **6 packages** under `packages/`: + - `contentstack` - Main CLI entry point (bin/run.js) + - `contentstack-auth` - Authentication plugin + - `contentstack-config` - Configuration plugin + - `contentstack-command` - Base Command class for plugins + - `contentstack-utilities` - Shared utilities and helpers + - `contentstack-dev-dependencies` - Development dependencies + +### Build Configuration +- **pnpm workspaces** configuration +- **Shared dependencies**: `@contentstack/cli-command`, `@contentstack/cli-utilities` +- **Build process**: TypeScript compilation → `lib/` directories +- **OCLIF manifest** generation for command discovery + +### Actual Patterns Detected +- **Testing**: Mocha + Chai (not Jest or Sinon-heavy) +- **TypeScript**: Mixed strict mode adoption +- **Commands**: Extend `@oclif/core` Command class +- **Build artifacts**: `lib/` directories (excluded from rules) + +## Performance Benefits + +- **Lightweight loading** - Only relevant rules activate based on file patterns +- **Precise glob patterns** - Avoid loading rules for build artifacts +- **Context-aware** - Rules load based on actual file structure + +## Design Principles + +### Validated Against Codebase +- Rules reflect **actual patterns** found in repository +- Glob patterns match **real file structure** +- Examples use **actual dependencies** and APIs + +### Lightweight and Focused +- Each rule has **single responsibility** +- Package-specific variations acknowledged +- `alwaysApply: true` only for truly universal patterns + +## Quick Reference + +For detailed patterns: +- **Testing**: See `testing.mdc` for Mocha/Chai test structure +- **Commands**: See `oclif-commands.mdc` for command development +- **Core Package**: See `contentstack-core.mdc` for plugin aggregation and hook patterns +- **Development**: See `dev-workflow.md` for TDD and monorepo workflow +- **TypeScript**: See `typescript.mdc` for type safety patterns diff --git a/.cursor/rules/contentstack-core.mdc b/.cursor/rules/contentstack-core.mdc new file mode 100644 index 0000000000..730daaa5f9 --- /dev/null +++ b/.cursor/rules/contentstack-core.mdc @@ -0,0 +1,358 @@ +--- +description: "Contentstack core CLI package patterns — plugin aggregation, hooks, and entry point" +globs: ["packages/contentstack/src/**/*.ts", "packages/contentstack/src/**/*.js"] +alwaysApply: false +--- + +# Contentstack Core Package Standards + +## Overview + +The `@contentstack/cli` core package is the entry point for the entire CLI. Unlike plugin packages (auth, config), it: +- **Aggregates all plugins** — declared in `oclif.plugins` array in `package.json` +- **Implements hooks** — `init` and `prerun` hooks in `src/hooks/` for global behaviors +- **Shares interfaces** — Core types used across all plugins in `src/interfaces/` +- **Provides utilities** — Helper classes like `CsdxContext` in `src/utils/` +- **Has no command files** — Commands are provided by plugin packages + +## Architecture + +### Entry Point + +```typescript +// ✅ GOOD - bin/run.js (CommonJS) +// This is the executable entry point referenced in package.json "bin" +// Standard OCLIF entry point pattern +``` + +### Package Configuration + +The `oclif` configuration in `package.json`: +```json +{ + "oclif": { + "bin": "csdx", + "topicSeparator": ":", + "helpClass": "./lib/help.js", + "plugins": [ + "@oclif/plugin-help", + "@oclif/plugin-not-found", + "@oclif/plugin-plugins", + "@contentstack/cli-config", + "@contentstack/cli-auth" + // ... more plugins + ], + "hooks": { + "init": [ + "./lib/hooks/init/context-init", + "./lib/hooks/init/utils-init" + ], + "prerun": [ + "./lib/hooks/prerun/init-context-for-command", + "./lib/hooks/prerun/command-deprecation-check", + "./lib/hooks/prerun/default-rate-limit-check", + "./lib/hooks/prerun/latest-version-warning" + ] + }, + "topics": { + "auth": { "description": "Perform authentication-related activities" }, + "config": { "description": "Perform configuration related activities" }, + "cm": { "description": "Perform content management activities" } + } + } +} +``` + +## Hook Lifecycle + +### OCLIF Hook Execution Order + +1. **CLI initialization** → Node process starts +2. **`init` hooks** → Set up global context and utilities (executed once) +3. **Command detection** → OCLIF matches command name to plugin +4. **`prerun` hooks** → Validate state, check auth, prepare for command execution (per command) +5. **Command execution** → Plugin command's `run()` method executes + +### Init Hooks + +Init hooks run once during CLI startup. Use them for expensive setup operations. + +```typescript +// ✅ GOOD - src/hooks/init/context-init.ts +// Initialize CLI context that commands depend on +import { CsdxContext } from '../../utils'; +import { configHandler } from '@contentstack/cli-utilities'; + +export default function (opts): void { + // Store command ID for session-based log organization + if (opts.id) { + configHandler.set('currentCommandId', opts.id); + } + // Make context available to all commands via this.config.context + this.config.context = new CsdxContext(opts, this.config); +} +``` + +### Prerun Hooks + +Prerun hooks run before each command. Use them for validation and state checks. + +```typescript +// ✅ GOOD - src/hooks/prerun/auth-guard.ts +// Validate authentication before running protected commands + +import { cliux, isAuthenticated, managementSDKClient } from '@contentstack/cli-utilities'; + +export default async function (opts): Promise { + const { context: { region = null } = {} } = this.config; + + // Validate region is set (required for all non-region commands) + if (opts.Command.id !== 'config:set:region') { + if (!region) { + cliux.error('No region found, please set a region via config:set:region'); + this.exit(); + return; + } + } + + // Example: Validate auth for protected commands + if (isProtectedCommand(opts.Command.id)) { + if (!isAuthenticated()) { + cliux.error('Please log in to execute this command'); + this.exit(); + } + } +} +``` + +### Hook Patterns + +#### Accessing Configuration +```typescript +// ✅ GOOD - Access global config in hooks +export default function (opts): void { + const { config } = this; // OCLIF Config object + const { context, region } = config; // Custom properties set by other hooks +} +``` + +#### Async Hooks +```typescript +// ✅ GOOD - Async hooks for operations requiring I/O +export default async function (opts): Promise { + const client = await managementSDKClient({ host: this.config.region.cma }); + const user = await client.getUser(); + // Hook runs to completion before command starts +} +``` + +#### Early Exit +```typescript +// ✅ GOOD - Exit hook execution when validation fails +export default function (opts): void { + if (!isValid()) { + cliux.error('Validation failed'); + this.exit(); // Stops command from executing + return; + } +} +``` + +## Context Object + +The `CsdxContext` class wraps OCLIF config and adds CLI-specific state. + +```typescript +// ✅ GOOD - Accessing context in commands +import { CLIConfig } from '../interfaces'; + +export default class MyCommand extends Command { + async run(): Promise { + const config: CLIConfig = this.config; + const { context } = config; + + // Available context properties: + // - context.id: unique session identifier + // - context.user: authenticated user info (authtoken, email) + // - context.region: current region configuration + // - context.config: regional configuration + // - context.plugin: current plugin metadata + } +} +``` + +## Shared Interfaces + +Interfaces in `src/interfaces/index.ts` are exported and consumed by all plugins. + +```typescript +// ✅ GOOD - Define shared types +export interface Context { + id: string; + user: { + authtoken: string; + email: string; + }; + region: Region; + plugin: Plugin; + config: any; +} + +export interface CLIConfig extends Config { + context: Context; +} + +export interface Region { + name: string; + cma: string; // Content Management API endpoint + cda: string; // Content Delivery API endpoint +} +``` + +## Utilities + +Core utilities in `src/utils/` provide shared functionality. + +```typescript +// ✅ GOOD - src/utils/context-handler.ts +// Wrapper around context initialization and access +export class CsdxContext { + constructor(opts: any, config: any) { + this.id = opts.id || generateId(); + this.region = config.region; + this.user = extractUserFromToken(); + } +} + +// Export utilities for use in hooks and contexts +export { CsdxContext }; +``` + +## Plugin Registration + +Plugins are registered via `oclif.plugins` in `package.json`. Each plugin package must: + +1. **Provide commands** — via `oclif.commands` in its `package.json` +2. **Be installed** — as a dependency in the core package +3. **Be listed** — in `oclif.plugins` array for auto-discovery + +```json +{ + "dependencies": { + "@contentstack/cli-config": "~1.20.0-beta.1", + "@contentstack/cli-auth": "~1.8.0-beta.1" + }, + "oclif": { + "plugins": [ + "@contentstack/cli-config", + "@contentstack/cli-auth" + ] + } +} +``` + +### Plugin Discovery + +OCLIF automatically discovers commands in: +1. Built-in plugins (`@oclif/plugin-help`, etc.) +2. Core package commands (none in contentstack core) +3. Registered plugins (listed in `oclif.plugins`) + +## Differences from Plugin Packages + +| Aspect | Core Package | Plugin Package | +|--------|--------------|----------------| +| **OCLIF config** | No `commands` field | Has `oclif.commands: "./lib/commands"` | +| **Source structure** | `src/hooks/`, `src/interfaces/`, `src/utils/` | `src/commands/`, `src/services/` | +| **Entry point** | `bin/run.js` | None | +| **Dependencies** | References all plugins | Depends on `@contentstack/cli-command` | +| **Execution role** | Aggregates and initializes | Implements business logic | + +## Build Process + +The core package build includes hook compilation and OCLIF manifest generation. + +```bash +# In package.json scripts +"build": "pnpm compile && oclif manifest && oclif readme" +``` + +### Build Steps + +1. **compile** — TypeScript → JavaScript in `lib/` +2. **oclif manifest** — Generate `oclif.manifest.json` for plugin discovery +3. **oclif readme** — Generate README with available commands + +### Build Artifacts + +- `lib/` — Compiled hooks, utilities, interfaces +- `oclif.manifest.json` — Plugin and command registry +- `bin/run.js` — Executable entry point +- `README.md` — Generated command documentation + +## Testing Hooks + +Hooks cannot be tested with standard command testing. Test hook behavior by: + +1. **Unit test hook functions** — Import and invoke directly +2. **Integration test via CLI** — Run commands that trigger hooks +3. **Mock OCLIF config** — Provide mocked `this.config` object + +```typescript +// ✅ GOOD - Test hook function directly +import contextInit from '../src/hooks/init/context-init'; + +describe('context-init hook', () => { + it('should set context on config', () => { + const mockConfig = { context: null }; + const hookContext = { config: mockConfig }; + const opts = { id: 'test-command' }; + + contextInit.call(hookContext, opts); + + expect(mockConfig.context).to.exist; + }); +}); +``` + +## Error Handling in Hooks + +Hooks should fail fast and provide clear error messages to users. + +```typescript +// ✅ GOOD - Clear error messages with user guidance +export default function (opts): void { + if (!isRegionSet()) { + cliux.error('No region configured'); + cliux.print('Run: csdx config:set:region --region us', { color: 'blue' }); + this.exit(); + } +} +``` + +## Best Practices + +### Hook Organization +- Keep hooks focused on a single concern (validation, initialization, etc.) +- Use descriptive names that indicate when they run (`prerun-`, `init-`) +- Initialize dependencies in `init` hooks, not in `prerun` hooks + +### Performance +- Minimize work in `init` hooks (they run once per CLI session) +- Cache expensive operations in context for reuse +- Avoid repeated API calls across hooks + +### Ordering +- Place hooks that prepare data before hooks that consume it +- Auth validation (`auth-guard`) should run after region validation +- Version warnings can run last (non-critical) + +### Context Usage +- Store computed values in context to avoid recalculation +- Make context available to all commands via `this.config.context` +- Document context properties that plugins should expect + +### Plugin Development +- Ensure plugins depend on `@contentstack/cli-command`, not the core package +- Commands should extend the shared Command base class +- Plugins should not modify or depend on core hooks directly diff --git a/.cursor/rules/dev-workflow.md b/.cursor/rules/dev-workflow.md new file mode 100644 index 0000000000..517867b0ef --- /dev/null +++ b/.cursor/rules/dev-workflow.md @@ -0,0 +1,211 @@ +--- +description: "Core development workflow and TDD patterns - always applied" +globs: ["**/*.ts", "**/*.js", "**/*.json"] +alwaysApply: true +--- + +# Development Workflow + +## Monorepo Structure + +### Package Organization +This modularized CLI has 6 packages under `packages/`: + +1. **contentstack** - Main CLI package + - Entry point: `bin/run.js` + - Aggregates all plugins + +2. **contentstack-auth** - Authentication plugin + - Commands: `cm:auth:*` + - Handles login/logout flows + +3. **contentstack-config** - Configuration plugin + - Commands: `cm:config:*`, `cm:region:*`, etc. + - Manages CLI settings and preferences + +4. **contentstack-command** - Base Command class (library) + - Shared Command base for all plugins + - Utilities and helpers for command development + +5. **contentstack-utilities** - Utilities library + - Shared helpers and utilities + - Used by all packages + +6. **contentstack-dev-dependencies** - Dev dependencies + - Centralized development dependencies + +### pnpm Workspace Configuration +```json +{ + "workspaces": ["packages/*"] +} +``` + +### Development Commands +```bash +# Install dependencies for all packages +pnpm install + +# Run command across all packages +pnpm -r --filter './packages/*' + +# Work on specific package +cd packages/contentstack-config +pnpm test +``` + +## TDD Workflow - MANDATORY + +1. **RED** → Write ONE failing test in `test/unit/**/*.test.ts` +2. **GREEN** → Write minimal code in `src/` to pass +3. **REFACTOR** → Improve code quality while keeping tests green + +### Test-First Examples +```typescript +// ✅ GOOD - Write test first +describe('ConfigService', () => { + it('should load configuration', async () => { + // Arrange - Set up mocks + const mockConfig = { region: 'us', alias: 'default' }; + + // Act - Call the method + const result = await configService.load(); + + // Assert - Verify behavior + expect(result).to.deep.equal(mockConfig); + }); +}); +``` + +## Critical Rules + +### Testing Standards +- **NO implementation before tests** - Test-driven development only +- **Mock all external dependencies** - No real API calls in tests +- **Use Mocha + Chai** - Standard testing stack +- **Coverage aspiration**: 80% minimum + +### Code Quality +- **TypeScript configuration**: Varies by package +- **NO test.skip or .only in commits** - Clean test suites only +- **Proper error handling** - Clear error messages + +### Build Process +```bash +# Standard build process for each package +pnpm run build # tsc compilation + oclif manifest +pnpm run test # Run test suite +pnpm run lint # ESLint checks +``` + +## Package-Specific Patterns + +### Plugin Packages (auth, config) +- Have `oclif.commands` in `package.json` +- Commands in `src/commands/cm/**/*.ts` +- Built commands in `lib/commands/` +- Extend `@oclif/core` Command class +- Script: `build`: compiles TypeScript, generates OCLIF manifest and README + +### Library Packages (command, utilities, dev-dependencies) +- No OCLIF commands configuration +- Pure TypeScript/JavaScript libraries +- Consumed by other packages +- `main` points to `lib/index.js` + +### Main CLI Package (contentstack) +- Entry point through `bin/run.js` +- Aggregates plugin commands +- Package dependencies reference plugin packages + +## Script Conventions + +### Build Scripts +```json +{ + "build": "pnpm compile && oclif manifest && oclif readme", + "compile": "tsc -b tsconfig.json", + "prepack": "pnpm compile && oclif manifest && oclif readme", + "test": "mocha \"test/unit/**/*.test.ts\"", + "lint": "eslint src/**/*.ts" +} +``` + +### Key Build Steps +1. **compile** - TypeScript compilation to `lib/` +2. **oclif manifest** - Generate command manifest for discovery +3. **oclif readme** - Generate command documentation + +## Quick Reference + +For detailed patterns, see: +- `@testing` - Mocha, Chai test patterns +- `@oclif-commands` - Command structure and validation +- `@dev-workflow` (this document) - Monorepo workflow and TDD + +## Development Checklist + +### Before Starting Work +- [ ] Identify target package in `packages/` +- [ ] Check existing tests in `test/unit/` +- [ ] Understand command structure if working on commands +- [ ] Set up proper TypeScript configuration + +### During Development +- [ ] Write failing test first +- [ ] Implement minimal code to pass +- [ ] Mock external dependencies +- [ ] Follow naming conventions (kebab-case files, PascalCase classes) + +### Before Committing +- [ ] All tests pass: `pnpm test` +- [ ] No `.only` or `.skip` in test files +- [ ] Build succeeds: `pnpm run build` +- [ ] TypeScript compilation clean +- [ ] Proper error handling implemented + +## Common Patterns + +### Service/Class Architecture +```typescript +// ✅ GOOD - Separate concerns +export default class ConfigCommand extends Command { + static description = 'Manage CLI configuration'; + + async run(): Promise { + try { + const service = new ConfigService(); + await service.execute(); + this.log('Configuration updated successfully'); + } catch (error) { + this.error('Configuration update failed'); + } + } +} +``` + +### Error Handling +```typescript +// ✅ GOOD - Clear error messages +try { + await this.performAction(); +} catch (error) { + if (error instanceof ValidationError) { + this.error(`Invalid input: ${error.message}`); + } else { + this.error('Operation failed'); + } +} +``` + +## CI/CD Integration + +### GitHub Actions +- Uses workflow files in `.github/workflows/` +- Runs linting, tests, and builds on pull requests +- Enforces code quality standards + +### Pre-commit Hooks +- Husky integration for pre-commit checks +- Prevents commits with linting errors +- Located in `.husky/` diff --git a/.cursor/rules/oclif-commands.mdc b/.cursor/rules/oclif-commands.mdc new file mode 100644 index 0000000000..7ca9bc25ab --- /dev/null +++ b/.cursor/rules/oclif-commands.mdc @@ -0,0 +1,352 @@ +--- +description: 'OCLIF command development patterns and CLI best practices' +globs: ['**/commands/**/*.ts', '**/base-command.ts'] +alwaysApply: false +--- + +# OCLIF Command Standards + +## Command Structure + +### Standard Command Pattern +```typescript +// ✅ GOOD - Standard command structure +import { Command } from '@contentstack/cli-command'; +import { cliux, flags, FlagInput, handleAndLogError } from '@contentstack/cli-utilities'; + +export default class ConfigSetCommand extends Command { + static description = 'Set CLI configuration values'; + + static flags: FlagInput = { + region: flags.string({ + char: 'r', + description: 'Set region (us/eu)', + }), + alias: flags.string({ + char: 'a', + description: 'Configuration alias', + }), + }; + + static examples = [ + 'csdx config:set --region eu', + 'csdx config:set --region us --alias default', + ]; + + async run(): Promise { + try { + const { flags: configFlags } = await this.parse(ConfigSetCommand); + // Command logic here + } catch (error) { + handleAndLogError(error, { module: 'config-set' }); + } + } +} +``` + +## Base Classes + +### Command Base Class +```typescript +// ✅ GOOD - Extend Command from @contentstack/cli-command +import { Command } from '@contentstack/cli-command'; + +export default class MyCommand extends Command { + async run(): Promise { + // Command implementation + } +} +``` + +### Custom Base Classes +```typescript +// ✅ GOOD - Create custom base classes for shared functionality +export abstract class BaseCommand extends Command { + protected contextDetails = { + command: this.id || 'unknown', + }; + + async init(): Promise { + await super.init(); + log.debug('Command initialized', this.contextDetails); + } +} +``` + +## OCLIF Configuration + +### Package.json Setup +```json +{ + "oclif": { + "commands": "./lib/commands", + "bin": "csdx", + "topicSeparator": ":" + } +} +``` + +### Command Topics +- All commands use `cm` topic: `cm:config:set`, `cm:auth:login` +- Built commands live in `lib/commands` (compiled from `src/commands`) +- Commands use nested directories: `src/commands/config/set.ts` → `cm:config:set` + +### Command Naming +- **Topic hierarchy**: `config/remove/proxy.ts` → `cm:config:remove:proxy` +- **Descriptive names**: Use verb-noun pattern (`set`, `remove`, `show`) +- **Grouping**: Related commands share parent topics + +## Flag Management + +### Flag Definition Patterns +```typescript +// ✅ GOOD - Define flags clearly +static flags: FlagInput = { + 'stack-api-key': flags.string({ + char: 'k', + description: 'Stack API key', + required: false, + }), + region: flags.string({ + char: 'r', + description: 'Set region', + options: ['us', 'eu'], + }), + verbose: flags.boolean({ + char: 'v', + description: 'Show verbose output', + default: false, + }), +}; +``` + +### Flag Parsing +```typescript +// ✅ GOOD - Parse and validate flags +async run(): Promise { + const { flags: parsedFlags } = await this.parse(MyCommand); + + // Validate flag combinations + if (!parsedFlags['stack-api-key'] && !parsedFlags.alias) { + this.error('Either --stack-api-key or --alias is required'); + } + + // Use parsed flags + const region = parsedFlags.region || 'us'; +} +``` + +## Error Handling + +### Standard Error Pattern +```typescript +// ✅ GOOD - Use handleAndLogError from utilities +try { + await this.executeCommand(); +} catch (error) { + handleAndLogError(error, { module: 'my-command' }); +} +``` + +### User-Friendly Messages +```typescript +// ✅ GOOD - Clear user feedback +import { cliux } from '@contentstack/cli-utilities'; + +// Success message +cliux.success('Configuration updated successfully', { color: 'green' }); + +// Error message +cliux.error('Invalid region specified', { color: 'red' }); + +// Info message +cliux.print('Setting region to eu', { color: 'blue' }); +``` + +## Validation Patterns + +### Early Validation +```typescript +// ✅ GOOD - Validate flags early +async run(): Promise { + const { flags } = await this.parse(MyCommand); + + // Validate required flags + if (!flags.region) { + this.error('--region is required'); + } + + // Validate flag values + if (!['us', 'eu'].includes(flags.region)) { + this.error('Region must be "us" or "eu"'); + } + + // Proceed with validated input +} +``` + +## Progress and Logging + +### User Feedback +```typescript +// ✅ GOOD - Provide user feedback +import { log, cliux } from '@contentstack/cli-utilities'; + +// Regular logging +this.log('Starting configuration update...'); + +// Debug logging +log.debug('Detailed operation information', { context: 'data' }); + +// Status messages +cliux.print('Processing...', { color: 'blue' }); +``` + +### Progress Indication +```typescript +// ✅ GOOD - Show progress for long operations +cliux.print('Processing items...', { color: 'blue' }); +let count = 0; +for (const item of items) { + await this.processItem(item); + count++; + cliux.print(`Processed ${count}/${items.length} items`, { color: 'blue' }); +} +``` + +## Command Delegation + +### Service Layer Separation +```typescript +// ✅ GOOD - Commands orchestrate, services implement +async run(): Promise { + try { + const { flags } = await this.parse(MyCommand); + const config = this.buildConfig(flags); + const service = new ConfigService(config); + + await service.execute(); + cliux.success('Operation completed successfully'); + } catch (error) { + this.handleError(error); + } +} +``` + +## Testing Commands + +### OCLIF Test Support +```typescript +// ✅ GOOD - Use @oclif/test for command testing +import { test } from '@oclif/test'; + +describe('cm:config:set', () => { + test + .stdout() + .command(['cm:config:set', '--help']) + .it('shows help', ctx => { + expect(ctx.stdout).to.contain('Set CLI configuration'); + }); + + test + .stdout() + .command(['cm:config:set', '--region', 'eu']) + .it('sets region to eu', ctx => { + expect(ctx.stdout).to.contain('success'); + }); +}); +``` + +## Log Integration + +### Debug Logging +```typescript +// ✅ GOOD - Use structured debug logging +import { log } from '@contentstack/cli-utilities'; + +log.debug('Command started', { + command: this.id, + flags: this.flags, + timestamp: new Date().toISOString(), +}); + +log.debug('Processing complete', { + itemsProcessed: count, + module: 'my-command', +}); +``` + +### Error Context +```typescript +// ✅ GOOD - Include context in error handling +try { + await operation(); +} catch (error) { + handleAndLogError(error, { + module: 'config-set', + command: 'cm:config:set', + flags: { region: 'eu' }, + }); +} +``` + +## Multi-Topic Commands + +### Nested Command Structure +```typescript +// File: src/commands/config/show.ts +export default class ShowConfigCommand extends Command { + static description = 'Show current configuration'; + static examples = ['csdx config:show']; + async run(): Promise { } +} + +// File: src/commands/config/set.ts +export default class SetConfigCommand extends Command { + static description = 'Set configuration values'; + static examples = ['csdx config:set --region eu']; + async run(): Promise { } +} + +// Generated commands: +// - cm:config:show +// - cm:config:set +``` + +## Best Practices + +### Command Organization +```typescript +// ✅ GOOD - Well-organized command +export default class MyCommand extends Command { + static description = 'Clear, concise description'; + + static flags: FlagInput = { + // Define all flags + }; + + static examples = [ + 'csdx my:command', + 'csdx my:command --flag value', + ]; + + async run(): Promise { + try { + const { flags } = await this.parse(MyCommand); + await this.execute(flags); + } catch (error) { + handleAndLogError(error, { module: 'my-command' }); + } + } + + private async execute(flags: Flags): Promise { + // Implementation + } +} +``` + +### Clear Help Text +- Write description as action-oriented statement +- Provide multiple examples for common use cases +- Document each flag with clear description +- Show output format or examples of results diff --git a/.cursor/rules/testing.mdc b/.cursor/rules/testing.mdc new file mode 100644 index 0000000000..daf6de1089 --- /dev/null +++ b/.cursor/rules/testing.mdc @@ -0,0 +1,323 @@ +--- +description: 'Testing patterns and TDD workflow' +globs: ['**/test/**/*.ts', '**/test/**/*.js', '**/__tests__/**/*.ts', '**/*.spec.ts', '**/*.test.ts'] +alwaysApply: true +--- + +# Testing Standards + +## Framework Stack + +### Primary Testing Tools +- **Mocha** - Test runner (used across all packages) +- **Chai** - Assertion library +- **@oclif/test** - Command testing support (for plugin packages) + +### Test Setup +- TypeScript compilation via ts-node/register +- Source map support for stack traces +- Global test timeout: 30 seconds (configurable per package) + +## Test File Patterns + +### Naming Conventions +- **Primary**: `*.test.ts` (standard pattern across all packages) +- **Location**: `test/unit/**/*.test.ts` (most packages) + +### Directory Structure +``` +packages/*/ +├── test/ +│ └── unit/ +│ ├── commands/ # Command-specific tests +│ ├── services/ # Service/business logic tests +│ └── utils/ # Utility function tests +└── src/ # Source code + ├── commands/ # CLI commands + ├── services/ # Business logic + └── utils/ # Utilities +``` + +## Mocha Configuration + +### Standard Setup (.mocharc.json) +```json +{ + "require": [ + "test/helpers/init.js", + "ts-node/register", + "source-map-support/register" + ], + "recursive": true, + "timeout": 30000, + "spec": "test/**/*.test.ts" +} +``` + +### TypeScript Compilation +```json +// package.json scripts +{ + "test": "mocha \"test/unit/**/*.test.ts\"", + "test:coverage": "nyc mocha \"test/unit/**/*.test.ts\"" +} +``` + +## Test Structure + +### Standard Test Pattern +```typescript +// ✅ GOOD - Comprehensive test structure +describe('ConfigService', () => { + let service: ConfigService; + + beforeEach(() => { + service = new ConfigService(); + }); + + describe('loadConfig()', () => { + it('should load configuration successfully', async () => { + // Arrange + const expectedConfig = { region: 'us' }; + + // Act + const result = await service.loadConfig(); + + // Assert + expect(result).to.deep.equal(expectedConfig); + }); + + it('should handle missing configuration', async () => { + // Arrange & Act & Assert + await expect(service.loadConfig()).to.be.rejectedWith('Config not found'); + }); + }); +}); +``` + +### Async/Await Pattern +```typescript +// ✅ GOOD - Use async/await in tests +it('should process data asynchronously', async () => { + const result = await service.processAsync(); + expect(result).to.exist; +}); + +// ✅ GOOD - Explicit Promise handling +it('should return a promise', () => { + return service.asyncMethod().then(result => { + expect(result).to.be.true; + }); +}); +``` + +## Mocking Patterns + +### Class Mocking +```typescript +// ✅ GOOD - Mock class dependencies +class MockConfigService { + async loadConfig() { + return { region: 'us' }; + } +} + +it('should use mocked service', async () => { + const mockService = new MockConfigService(); + const result = await mockService.loadConfig(); + expect(result.region).to.equal('us'); +}); +``` + +### Function Stubs +```typescript +// ✅ GOOD - Stub module functions if needed +beforeEach(() => { + // Stub file system operations + // Stub network calls +}); + +afterEach(() => { + // Restore original implementations +}); +``` + +## Command Testing + +### OCLIF Test Pattern +```typescript +// ✅ GOOD - Test commands with @oclif/test +import { test } from '@oclif/test'; + +describe('cm:config:region', () => { + test + .stdout() + .command(['cm:config:region', '--help']) + .it('shows help message', ctx => { + expect(ctx.stdout).to.contain('Display region'); + }); + + test + .stdout() + .command(['cm:config:region']) + .it('shows current region', ctx => { + expect(ctx.stdout).to.contain('us'); + }); +}); +``` + +### Command Flag Testing +```typescript +// ✅ GOOD - Test command flags and arguments +describe('cm:config:set', () => { + test + .command(['cm:config:set', '--help']) + .it('shows usage information'); + + test + .command(['cm:config:set', '--region', 'eu']) + .it('sets region to eu'); +}); +``` + +## Error Testing + +### Error Handling +```typescript +// ✅ GOOD - Test error scenarios +it('should throw ValidationError on invalid input', async () => { + const invalidInput = ''; + await expect(service.validate(invalidInput)) + .to.be.rejectedWith('Invalid input'); +}); + +it('should handle network errors gracefully', async () => { + // Mock network failure + const result = await service.fetchWithRetry(); + expect(result).to.be.null; +}); +``` + +### Error Types +```typescript +// ✅ GOOD - Test specific error types +it('should throw appropriate error', async () => { + try { + await service.failingOperation(); + } catch (error) { + expect(error).to.be.instanceof(ValidationError); + expect(error.code).to.equal('INVALID_CONFIG'); + } +}); +``` + +## Test Data Management + +### Mock Data Organization +```typescript +// ✅ GOOD - Organize test data +const mockData = { + validConfig: { + region: 'us', + timeout: 30000, + }, + invalidConfig: { + region: '', + }, + users: [ + { email: 'user1@example.com', name: 'User 1' }, + { email: 'user2@example.com', name: 'User 2' }, + ], +}; +``` + +### Test Helpers +```typescript +// ✅ GOOD - Create reusable test utilities +export function createMockConfig(overrides?: Partial): Config { + return { + region: 'us', + timeout: 30000, + ...overrides, + }; +} + +export function createMockService( + config: Config = createMockConfig() +): ConfigService { + return new ConfigService(config); +} +``` + +## Coverage + +### Coverage Goals +- **Team aspiration**: 80% minimum coverage +- **Current enforcement**: Applied consistently across packages +- **Focus areas**: Critical business logic and error paths + +### Coverage Reporting +```bash +# Run tests with coverage +pnpm test:coverage + +# Coverage reports generated in: +# - coverage/index.html (HTML report) +# - coverage/coverage-summary.json (JSON report) +``` + +## Critical Testing Rules + +- **No real external calls** - Mock all dependencies +- **Test both success and failure paths** - Cover error scenarios completely +- **One assertion per test** - Focus each test on single behavior +- **Use descriptive test names** - Test name should explain what's tested +- **Arrange-Act-Assert** - Follow AAA pattern consistently +- **Test command validation** - Verify flag validation and error messages +- **Clean up after tests** - Restore any mocked state + +## Best Practices + +### Test Organization +```typescript +// ✅ GOOD - Organize related tests +describe('AuthCommand', () => { + describe('login', () => { + it('should authenticate user'); + it('should save token'); + }); + + describe('logout', () => { + it('should clear token'); + it('should reset config'); + }); +}); +``` + +### Async Test Patterns +```typescript +// ✅ GOOD - Handle async operations properly +it('should complete async operation', async () => { + const promise = service.asyncMethod(); + expect(promise).to.be.instanceof(Promise); + + const result = await promise; + expect(result).to.equal('success'); +}); +``` + +### Isolation +```typescript +// ✅ GOOD - Ensure test isolation +describe('ConfigService', () => { + let service: ConfigService; + + beforeEach(() => { + service = new ConfigService(); + }); + + afterEach(() => { + // Clean up resources + }); +}); +``` diff --git a/.cursor/rules/typescript.mdc b/.cursor/rules/typescript.mdc new file mode 100644 index 0000000000..ea4d82a265 --- /dev/null +++ b/.cursor/rules/typescript.mdc @@ -0,0 +1,246 @@ +--- +description: 'TypeScript strict mode standards and naming conventions' +globs: ['**/*.ts', '**/*.tsx'] +alwaysApply: false +--- + +# TypeScript Standards + +## Configuration + +### Standard Configuration (All Packages) +```json +{ + "compilerOptions": { + "declaration": true, + "importHelpers": true, + "module": "commonjs", + "outDir": "lib", + "rootDir": "src", + "strict": false, // Relaxed for compatibility + "target": "es2017", + "sourceMap": false, + "allowJs": true, // Mixed JS/TS support + "skipLibCheck": true, + "esModuleInterop": true + }, + "include": ["src/**/*"] +} +``` + +### Root Configuration +```json +// tsconfig.json - Baseline configuration +{ + "compilerOptions": { + "strict": false, + "module": "commonjs", + "target": "es2017", + "declaration": true, + "outDir": "lib", + "rootDir": "src" + } +} +``` + +## Naming Conventions (Actual Usage) + +### Files +- **Primary pattern**: `kebab-case.ts` (e.g., `base-command.ts`, `config-handler.ts`) +- **Single-word modules**: `index.ts`, `types.ts` +- **Commands**: Follow OCLIF topic structure (`cm/auth/login.ts`, `cm/config/region.ts`) + +### Classes +```typescript +// ✅ GOOD - PascalCase for classes +export default class ConfigCommand extends Command { } +export class AuthService { } +export class ValidationError extends Error { } +``` + +### Functions and Methods +```typescript +// ✅ GOOD - camelCase for functions +export async function loadConfig(): Promise { } +async validateInput(input: string): Promise { } +createCommandContext(): CommandContext { } +``` + +### Constants +```typescript +// ✅ GOOD - SCREAMING_SNAKE_CASE for constants +const DEFAULT_REGION = 'us'; +const MAX_RETRIES = 3; +const API_BASE_URL = 'https://api.contentstack.io'; +``` + +### Interfaces and Types +```typescript +// ✅ GOOD - PascalCase for types +export interface CommandConfig { + region: string; + alias?: string; +} + +export type CommandResult = { + success: boolean; + message?: string; +}; +``` + +## Import/Export Patterns + +### ES Modules (Preferred) +```typescript +// ✅ GOOD - ES import/export syntax +import { Command } from '@oclif/core'; +import type { CommandConfig } from '../types'; +import { loadConfig } from '../utils'; + +export default class ConfigCommand extends Command { } +export { CommandConfig }; +``` + +### Default Exports +```typescript +// ✅ GOOD - Default export for commands and main classes +export default class ConfigCommand extends Command { } +``` + +### Named Exports +```typescript +// ✅ GOOD - Named exports for utilities and types +export async function delay(ms: number): Promise { } +export interface CommandOptions { } +export type ActionResult = 'success' | 'failure'; +``` + +## Type Definitions + +### Local Types +```typescript +// ✅ GOOD - Define types close to usage +export interface AuthOptions { + email: string; + password: string; + token?: string; +} + +export type ConfigResult = { + success: boolean; + config?: Record; +}; +``` + +### Type Organization +```typescript +// ✅ GOOD - Organize types in dedicated files +// src/types/index.ts +export interface CommandConfig { } +export interface AuthConfig { } +export type ConfigValue = string | number | boolean; +``` + +## Null Safety + +### Function Return Types +```typescript +// ✅ GOOD - Explicit return types +export async function getConfig(): Promise { + return await this.loadFromFile(); +} + +export function createDefaults(): CommandConfig { + return { + region: 'us', + timeout: 30000, + }; +} +``` + +### Null/Undefined Handling +```typescript +// ✅ GOOD - Handle null/undefined explicitly +function processConfig(config: CommandConfig | null): void { + if (!config) { + throw new Error('Configuration is required'); + } + // Process config safely +} +``` + +## Error Handling Types + +### Custom Error Classes +```typescript +// ✅ GOOD - Typed error classes +export class ValidationError extends Error { + constructor( + message: string, + public readonly code?: string + ) { + super(message); + this.name = 'ValidationError'; + } +} +``` + +### Error Union Types +```typescript +// ✅ GOOD - Model expected errors +type AuthResult = { + success: true; + data: T; +} | { + success: false; + error: string; +}; +``` + +## Strict Mode Adoption + +### Current Status +- Most packages use `strict: false` for compatibility +- Gradual migration path available +- Team working toward stricter TypeScript + +### Gradual Adoption +```typescript +// ✅ ACCEPTABLE - Comments for known issues +// TODO: Fix type issues in legacy code +const legacyData = unknownData as unknown; +``` + +## Package-Specific Patterns + +### Command Packages (auth, config) +- Extend `@oclif/core` Command +- Define command flags with `static flags` +- Use @oclif/core flag utilities +- Define command-specific types + +### Library Packages (command, utilities) +- No OCLIF dependencies +- Pure TypeScript interfaces +- Consumed by command packages +- Focus on type safety for exports + +### Main Package (contentstack) +- Aggregates command plugins +- May have common types +- Shared interfaces for plugin integration + +## Export Patterns + +### Package Exports (lib/index.js) +```typescript +// ✅ GOOD - Barrel exports for libraries +export { Command } from './command'; +export { loadConfig } from './config'; +export type { CommandConfig, AuthOptions } from './types'; +``` + +### Entry Points +- Libraries export from `lib/index.js` +- Commands export directly as default classes +- Type definitions included via `types` field in package.json diff --git a/.cursor/skills/SKILL.md b/.cursor/skills/SKILL.md new file mode 100644 index 0000000000..422807ad04 --- /dev/null +++ b/.cursor/skills/SKILL.md @@ -0,0 +1,31 @@ +--- +name: contentstack-cli-skills +description: Collection of project-specific skills for Contentstack CLI monorepo development. Use when working with CLI commands, testing, framework utilities, or reviewing code changes. +--- + +# Contentstack CLI Skills + +Project-specific skills for the pnpm monorepo containing 6 CLI packages. + +## Skills Overview + +| Skill | Purpose | Trigger | +|-------|---------|---------| +| **testing** | Testing patterns, TDD workflow, and test automation for CLI development | When writing tests or debugging test failures | +| **framework** | Core utilities, configuration, logging, and framework patterns | When working with utilities, config, or error handling | +| **contentstack-cli** | CLI commands, OCLIF patterns, authentication and configuration workflows | When implementing commands or integrating APIs | +| **code-review** | PR review guidelines and monorepo-aware checks | When reviewing code or pull requests | + +## Quick Links + +- **[Testing Skill](./testing/SKILL.md)** — TDD patterns, test structure, mocking strategies +- **[Framework Skill](./framework/SKILL.md)** — Utilities, configuration, logging, error handling +- **[Contentstack CLI Skill](./contentstack-cli/SKILL.md)** — Command development, API integration, auth/config patterns +- **[Code Review Skill](./code-review/SKILL.md)** — Review checklist with monorepo awareness + +## Repository Context + +- **Monorepo**: 6 pnpm workspace packages under `packages/` +- **Tech Stack**: TypeScript, OCLIF v4, Mocha+Chai, pnpm workspaces +- **Packages**: `@contentstack/cli` (main), `@contentstack/cli-auth`, `@contentstack/cli-config`, `@contentstack/cli-command`, `@contentstack/cli-utilities`, `@contentstack/cli-dev-dependencies` +- **Build**: TypeScript → `lib/` directories, OCLIF manifest generation diff --git a/.cursor/skills/code-review/SKILL.md b/.cursor/skills/code-review/SKILL.md new file mode 100644 index 0000000000..bc647259c0 --- /dev/null +++ b/.cursor/skills/code-review/SKILL.md @@ -0,0 +1,77 @@ +--- +name: code-review +description: Automated PR review checklist covering security, performance, architecture, and code quality. Use when reviewing pull requests, examining code changes, or performing code quality assessments. +--- + +# Code Review Skill + +## Quick Reference + +For comprehensive review guidelines, see: +- **[Code Review Checklist](./references/code-review-checklist.md)** - Complete PR review guidelines with severity levels and checklists + +## Review Process + +### Severity Levels +- 🔴 **Critical**: Must fix before merge (security, correctness, breaking changes) +- 🟡 **Important**: Should fix (performance, maintainability, best practices) +- 🟢 **Suggestion**: Consider improving (style, optimization, readability) + +### Quick Review Categories + +1. **Security** - No hardcoded secrets, input validation, secure error handling +2. **Correctness** - Logic validation, error scenarios, data integrity +3. **Architecture** - Code organization, design patterns, modularity +4. **Performance** - Efficiency, resource management, concurrency +5. **Testing** - Test coverage, quality tests, TDD compliance +6. **Conventions** - TypeScript standards, code style, documentation +7. **Monorepo** - Cross-package imports, workspace dependencies, manifest validity + +## Quick Checklist Template + +```markdown +## Security Review +- [ ] No hardcoded secrets or tokens +- [ ] Input validation present +- [ ] Error handling secure (no sensitive data in logs) + +## Correctness Review +- [ ] Logic correctly implemented +- [ ] Edge cases handled +- [ ] Error scenarios covered +- [ ] Async/await chains correct + +## Architecture Review +- [ ] Proper code organization +- [ ] Design patterns followed +- [ ] Good modularity +- [ ] No circular dependencies + +## Performance Review +- [ ] Efficient implementation +- [ ] No unnecessary API calls +- [ ] Memory leaks avoided +- [ ] Concurrency handled correctly + +## Testing Review +- [ ] Adequate test coverage (80%+) +- [ ] Quality tests (not just passing) +- [ ] TDD compliance +- [ ] Both success and failure paths tested + +## Code Conventions +- [ ] TypeScript strict mode +- [ ] Consistent naming conventions +- [ ] No unused imports or variables +- [ ] Documentation adequate + +## Monorepo Checks +- [ ] Cross-package imports use published names +- [ ] Workspace dependencies declared correctly +- [ ] OCLIF manifest updated if commands changed +- [ ] No breaking changes to exported APIs +``` + +## Usage + +Use the comprehensive checklist guide for detailed review guidelines, common issues, severity assessment, and best practices for code quality in the Contentstack CLI monorepo. diff --git a/.cursor/skills/code-review/references/code-review-checklist.md b/.cursor/skills/code-review/references/code-review-checklist.md new file mode 100644 index 0000000000..682cc86a40 --- /dev/null +++ b/.cursor/skills/code-review/references/code-review-checklist.md @@ -0,0 +1,373 @@ +# Code Review Checklist + +Automated PR review guidelines covering security, performance, architecture, and code quality for the Contentstack CLI monorepo. + +## Review Process + +### Severity Levels +- **🔴 Critical** (must fix before merge): + - Security vulnerabilities + - Logic errors causing incorrect behavior + - Breaking API changes + - Hardcoded secrets or credentials + - Data loss scenarios + +- **🟡 Important** (should fix): + - Performance regressions + - Code maintainability issues + - Missing error handling + - Test coverage gaps + - Best practice violations + +- **🟢 Suggestion** (consider improving): + - Code readability improvements + - Minor optimizations + - Documentation enhancements + - Style inconsistencies + +## Security Review + +### Secrets and Credentials +- [ ] No hardcoded API keys, tokens, or passwords +- [ ] No secrets in environment variables exposed in logs +- [ ] No secrets in test data or fixtures +- [ ] Sensitive data not logged or exposed in error messages +- [ ] Config files don't contain real credentials + +### Input Validation +```typescript +// ✅ GOOD - Validate all user input +if (!region || typeof region !== 'string') { + throw new CLIError('Region must be a non-empty string'); +} + +if (!['us', 'eu', 'au'].includes(region)) { + throw new CLIError('Invalid region specified'); +} + +// ❌ BAD - No validation +const result = await client.setRegion(region); +``` + +### Error Handling +- [ ] No sensitive data in error messages +- [ ] Stack traces don't leak system information +- [ ] Error messages are user-friendly +- [ ] All errors properly caught and handled +- [ ] No raw error objects exposed to users + +### Authentication +- [ ] OAuth/token handling is secure +- [ ] No storing plaintext passwords +- [ ] Session tokens validated +- [ ] Auth state properly managed +- [ ] Rate limiting respected + +## Correctness Review + +### Logic Validation +- [ ] Business logic correctly implemented +- [ ] Algorithm is correct for the problem +- [ ] State transitions valid +- [ ] Data types used correctly +- [ ] Comparisons use correct operators (=== not ==) + +### Error Scenarios +- [ ] API failures handled (404, 429, 500, etc.) +- [ ] Network timeouts managed +- [ ] Empty/null responses handled +- [ ] Invalid input rejected +- [ ] Partial failures handled gracefully + +### Async/Await and Promises +```typescript +// ✅ GOOD - Proper async handling +async run(): Promise { + try { + const result = await this.fetchData(); + await this.processData(result); + } catch (error) { + handleAndLogError(error, this.contextDetails); + } +} + +// ❌ BAD - Missing await +async run(): Promise { + const result = this.fetchData(); // Missing await! + await this.processData(result); +} +``` + +### Data Integrity +- [ ] No race conditions +- [ ] State mutations atomic +- [ ] Data validation before mutations +- [ ] Rollback strategy for failures +- [ ] Concurrent operations safe + +## Architecture Review + +### Code Organization +- [ ] Classes/functions have single responsibility +- [ ] No circular dependencies +- [ ] Proper module structure +- [ ] Clear separation of concerns +- [ ] Commands delegate to services/utils + +### Design Patterns +```typescript +// ✅ GOOD - Service layer separation +export default class MyCommand extends BaseCommand { + async run(): Promise { + const service = new MyService(this.contextDetails); + const result = await service.execute(); + } +} + +// ❌ BAD - Logic in command +export default class MyCommand extends BaseCommand { + async run(): Promise { + const data = await client.fetch(); + for (const item of data) { + // Complex business logic here + } + } +} +``` + +### Modularity +- [ ] Services are reusable +- [ ] Utils are generic and testable +- [ ] Dependencies injected +- [ ] No tight coupling +- [ ] Easy to test in isolation + +### Type Safety +- [ ] TypeScript strict mode enabled +- [ ] No `any` types without justification +- [ ] Interfaces defined for contracts +- [ ] Generic types used appropriately +- [ ] Type narrowing correct + +## Performance Review + +### API Calls +- [ ] Rate limiting respected (10 req/sec for Contentstack) +- [ ] No unnecessary API calls in loops +- [ ] Pagination implemented for large datasets +- [ ] Caching used where appropriate +- [ ] Batch operations considered + +### Memory Management +- [ ] No memory leaks in event listeners +- [ ] Large arrays streamed not loaded fully +- [ ] Cleanup in try/finally blocks +- [ ] File handles properly closed +- [ ] Resources released after use + +### Concurrency +```typescript +// ✅ GOOD - Controlled concurrency +const results = await Promise.all( + items.map(item => processItem(item)) +); + +// ❌ BAD - Unbounded concurrency +for (const item of items) { + promises.push(processItem(item)); // No limit! +} +``` + +### Efficiency +- [ ] Algorithms are efficient for scale +- [ ] String concatenation uses proper methods +- [ ] Unnecessary computations avoided +- [ ] Data structures appropriate +- [ ] No repeated lookups without caching + +## Testing Review + +### Coverage +- [ ] 80%+ line coverage achieved +- [ ] 80%+ branch coverage +- [ ] Critical paths fully tested +- [ ] Error paths tested +- [ ] Edge cases included + +### Test Quality +```typescript +// ✅ GOOD - Quality test +it('should throw error when region is empty', () => { + expect(() => validateRegion('')) + .to.throw('Region is required'); +}); + +// ❌ BAD - Weak test +it('should validate region', () => { + validateRegion('us'); // No assertion! +}); +``` + +### Testing Patterns +- [ ] Descriptive test names +- [ ] Arrange-Act-Assert pattern +- [ ] One assertion per test (focus) +- [ ] Mocks properly isolated +- [ ] No test interdependencies + +### TDD Compliance +- [ ] Tests written before implementation +- [ ] All tests pass +- [ ] Code coverage requirements met +- [ ] Tests are maintainable +- [ ] Both success and failure paths covered + +## Code Conventions + +### TypeScript Standards +- [ ] `strict: true` in tsconfig +- [ ] No `any` types (use `unknown` if needed) +- [ ] Proper null/undefined handling +- [ ] Type annotations on public APIs +- [ ] Generics used appropriately + +### Naming Conventions +- [ ] Classes: PascalCase (`MyClass`) +- [ ] Functions: camelCase (`myFunction`) +- [ ] Constants: UPPER_SNAKE_CASE (`MY_CONST`) +- [ ] Booleans start with verb (`isActive`, `hasData`) +- [ ] Descriptive names (not `x`, `temp`, `data`) + +### Code Style +- [ ] No unused imports +- [ ] No unused variables +- [ ] Proper indentation (consistent spacing) +- [ ] Line length reasonable (<100 chars) +- [ ] Imports organized (group by type) + +### Documentation +- [ ] Complex logic documented +- [ ] Public APIs have JSDoc comments +- [ ] Non-obvious decisions explained +- [ ] Examples provided where helpful +- [ ] README updated if needed + +## Monorepo-Specific Checks + +### Cross-Package Imports +```typescript +// ✅ GOOD - Use published package names +import { configHandler } from '@contentstack/cli-utilities'; +import { BaseCommand } from '@contentstack/cli-command'; + +// ❌ BAD - Relative paths across packages +import { configHandler } from '../../../contentstack-utilities/src'; +``` + +### Workspace Dependencies +- [ ] Dependencies declared in correct `package.json` +- [ ] Versions consistent across packages +- [ ] No circular dependencies between packages +- [ ] Shared deps in root if used by multiple packages +- [ ] No installing globally when local version exists + +### OCLIF Configuration +- [ ] Command file paths correct in `package.json` +- [ ] OCLIF manifest regenerated (`pnpm build && pnpm oclif manifest`) +- [ ] New commands registered in plugin list if needed +- [ ] Topic separators consistent (`:`) +- [ ] Command names follow pattern + +### Build and Publishing +- [ ] TypeScript compiles without errors +- [ ] Build output in `lib/` directory +- [ ] No build artifacts committed +- [ ] ESLint passes without warnings +- [ ] Tests pass in CI environment + +## Common Issues to Look For + +### Security +- [ ] Config with default passwords +- [ ] API keys in client-side code +- [ ] SQL injection (N/A here, but parameterization pattern) +- [ ] XSS in CLI output (escape HTML if needed) + +### Performance +- [ ] API calls in loops +- [ ] Synchronous file I/O on large files +- [ ] Memory not released properly +- [ ] Rate limiting ignored + +### Logic +- [ ] Off-by-one errors in loops +- [ ] Wrong comparison operators +- [ ] Async/await chains broken +- [ ] Null/undefined not handled + +### Testing +- [ ] Tests pass locally but fail in CI +- [ ] Mocks not properly restored +- [ ] Race conditions in tests +- [ ] Hardcoded timeouts + +## Review Checklist Template + +```markdown +## Security +- [ ] No hardcoded secrets +- [ ] Input validation present +- [ ] Error handling secure + +## Correctness +- [ ] Logic is correct +- [ ] Edge cases handled +- [ ] Error scenarios covered + +## Architecture +- [ ] Good code organization +- [ ] Design patterns followed +- [ ] Modularity intact + +## Performance +- [ ] Efficient implementation +- [ ] Rate limits respected +- [ ] Memory managed properly + +## Testing +- [ ] Adequate coverage +- [ ] Quality tests +- [ ] Both paths tested + +## Conventions +- [ ] TypeScript standards met +- [ ] Code style consistent +- [ ] Documentation adequate + +## Monorepo +- [ ] Package imports correct +- [ ] Dependencies declared properly +- [ ] Manifest/build updated +- [ ] No breaking changes +``` + +## Approval Criteria + +**APPROVE when:** +- ✅ All 🔴 Critical items addressed +- ✅ Most 🟡 Important items addressed (document exceptions) +- ✅ Code follows team conventions +- ✅ Tests pass and coverage sufficient +- ✅ Monorepo integrity maintained + +**REQUEST CHANGES when:** +- ❌ Any 🔴 Critical issues present +- ❌ Multiple 🟡 Important issues unaddressed +- ❌ Test coverage below 80% +- ❌ Architecture concerns not resolved +- ❌ Breaking changes not documented + +**COMMENT for:** +- 💬 🟢 Suggestions (non-blocking) +- 💬 Questions about implementation +- 💬 Appreciation for good patterns diff --git a/.cursor/skills/contentstack-cli/SKILL.md b/.cursor/skills/contentstack-cli/SKILL.md new file mode 100644 index 0000000000..f5a29a9a3b --- /dev/null +++ b/.cursor/skills/contentstack-cli/SKILL.md @@ -0,0 +1,150 @@ +--- +name: contentstack-cli +description: Contentstack CLI development patterns, OCLIF commands, API integration, and authentication/configuration workflows. Use when working with Contentstack CLI plugins, OCLIF commands, CLI commands, or Contentstack API integration. +--- + +# Contentstack CLI Development + +## Quick Reference + +For comprehensive patterns, see: +- **[Contentstack Patterns](./references/contentstack-patterns.md)** - Complete CLI commands, API integration, and configuration patterns +- **[Framework Patterns](../framework/references/framework-patterns.md)** - Utilities, configuration, and error handling + +## Key Patterns Summary + +### OCLIF Command Structure +- Extend `BaseCommand` (package-level) or `Command` from `@contentstack/cli-command` +- Validate flags early: `if (!flags.region) this.error('Region is required')` +- Delegate to services/utils: commands handle CLI, utilities handle logic +- Show progress: `cliux.success('✅ Operation completed')` +- Include command examples: `static examples = ['$ csdx auth:login', '$ csdx auth:login -u email@example.com']` + +### Command Topics +- Auth commands: `auth:login`, `auth:logout`, `auth:whoami`, `auth:tokens:add`, `auth:tokens:remove`, `auth:tokens:index` +- Config commands: `config:get:region`, `config:set:region`, `config:remove:proxy`, etc. +- File pattern: `src/commands/auth/login.ts` → command `cm:auth:login` + +### Flag Patterns +```typescript +static flags: FlagInput = { + username: flags.string({ + char: 'u', + description: 'Email address', + required: false + }), + oauth: flags.boolean({ + description: 'Enable SSO', + default: false, + exclusive: ['username', 'password'] + }) +}; +``` + +### Logging and Error Handling +- Use structured logging: `log.debug('Message', { context: 'data' })` +- Include contextDetails: `handleAndLogError(error, { ...this.contextDetails, module: 'auth-login' })` +- User feedback: `cliux.success()`, `cliux.error()`, `throw new CLIError()` + +### I18N Messages +- Store user-facing strings in `messages/*.json` files +- Load with `messageHandler` from utilities +- Example: `messages/en.json` for English strings + +## Command Base Class Pattern + +```typescript +export abstract class BaseCommand extends Command { + protected contextDetails!: Context; + + async init(): Promise { + await super.init(); + this.contextDetails = { + command: this.context?.info?.command || 'unknown', + userId: configHandler.get('userUid'), + email: configHandler.get('email') + }; + } + + protected async catch(err: Error & { exitCode?: number }): Promise { + return super.catch(err); + } +} +``` + +## Authentication Patterns + +### Login Command Example +```typescript +async run(): Promise { + const { flags: loginFlags } = await this.parse(LoginCommand); + + if (loginFlags.oauth) { + await oauthHandler.oauth(); + } else { + const username = loginFlags.username || await interactive.askUsername(); + const password = loginFlags.password || await interactive.askPassword(); + await authHandler.login(username, password); + } + + cliux.success('✅ Authenticated successfully'); +} +``` + +### Check Authentication +```typescript +if (!configHandler.get('authenticationMethod')) { + throw new CLIError('Authentication required. Please login first.'); +} +``` + +## Configuration Patterns + +### Config Set/Get/Remove Commands +- Use `configHandler.get()` and `configHandler.set()` +- Support interactive mode when no flags provided +- Display results with `cliux.success()` or `cliux.print()` + +### Region Configuration +```typescript +const selectedRegion = args.region || await interactive.askRegions(); +const regionDetails = regionHandler.setRegion(selectedRegion); +cliux.success(`Region set to ${regionDetails.name}`); +cliux.success(`CMA host: ${regionDetails.cma}`); +``` + +## API Integration + +### Management SDK Client +```typescript +import { managementSDKClient } from '@contentstack/cli-utilities'; + +const client = await managementSDKClient({ + host: this.cmaHost, + skipTokenValidity: true +}); + +const stack = client.stack({ api_key: stackApiKey }); +const entries = await stack.entry().query().find(); +``` + +### Error Handling for API Calls +```typescript +try { + const result = await this.client.stack().entry().fetch(); +} catch (error) { + if (error.status === 401) { + throw new CLIError('Authentication failed. Please login again.'); + } else if (error.status === 404) { + throw new CLIError('Entry not found.'); + } + handleAndLogError(error, { + module: 'entry-fetch', + entryId: entryUid + }); +} +``` + +## Usage + +Reference the comprehensive patterns guide above for detailed implementations, examples, and best practices for CLI command development, authentication flows, configuration management, and API integration. diff --git a/.cursor/skills/contentstack-cli/references/contentstack-patterns.md b/.cursor/skills/contentstack-cli/references/contentstack-patterns.md new file mode 100644 index 0000000000..36bf7d2f42 --- /dev/null +++ b/.cursor/skills/contentstack-cli/references/contentstack-patterns.md @@ -0,0 +1,476 @@ +# Contentstack CLI Patterns + +Contentstack CLI development patterns, OCLIF commands, API integration, and configuration workflows. + +## OCLIF Command Structure + +### Base Command Pattern +```typescript +import { BaseCommand } from '../../base-command'; +import { FlagInput } from '@contentstack/cli-utilities'; +import { cliux, handleAndLogError } from '@contentstack/cli-utilities'; + +export default class MyCommand extends BaseCommand { + static description = 'Clear description of command'; + static aliases = ['shortcut']; // Optional alias + + static flags: FlagInput = { + region: flags.string({ + char: 'r', + description: 'Target region', + required: false, + default: 'us' + }), + verbose: flags.boolean({ + char: 'v', + description: 'Show verbose output', + default: false + }) + }; + + static examples = [ + '$ csdx my:command', + '$ csdx my:command --region eu', + '$ csdx shortcut' + ]; + + async run(): Promise { + try { + const { flags: parsedFlags } = await this.parse(MyCommand); + + // Validate flags + if (!parsedFlags.region) { + this.error('Region is required'); + } + + // Implementation + cliux.print('Processing...', { color: 'blue' }); + const result = await this.execute(parsedFlags); + + cliux.success('✅ Operation completed successfully'); + } catch (error) { + handleAndLogError(error, { + ...this.contextDetails, + module: 'my-command' + }); + } + } + + private async execute(flags: any): Promise { + // Implementation here + } +} +``` + +### Command Topics and Naming +Commands are organized by topic hierarchy: +- `src/commands/auth/login.ts` → command `cm:auth:login` +- `src/commands/auth/tokens/add.ts` → command `cm:auth:tokens:add` +- `src/commands/config/set/region.ts` → command `cm:config:set:region` +- `src/commands/config/get/region.ts` → command `cm:config:get:region` + +### Flag Validation Patterns + +#### Early Validation +```typescript +async run(): Promise { + const { flags } = await this.parse(MyCommand); + + // Validate required flags + if (!flags.region) { + this.error('--region is required'); + } + + // Validate flag values + const validRegions = ['us', 'eu', 'au']; + if (!validRegions.includes(flags.region)) { + this.error(`Region must be one of: ${validRegions.join(', ')}`); + } +} +``` + +#### Exclusive Flags +```typescript +static flags: FlagInput = { + username: flags.string({ + char: 'u', + exclusive: ['oauth'] // Cannot use with oauth flag + }), + oauth: flags.boolean({ + exclusive: ['username', 'password'] + }) +}; +``` + +#### Dependent Flags +```typescript +static flags: FlagInput = { + cma: flags.string({ + dependsOn: ['cda', 'name'] + }), + cda: flags.string({ + dependsOn: ['cma', 'name'] + }) +}; +``` + +## Authentication Commands + +### Login Command +```typescript +export default class LoginCommand extends BaseCommand { + static description = 'User sessions login'; + static aliases = ['login']; + + static flags: FlagInput = { + username: flags.string({ + char: 'u', + description: 'Email address of your Contentstack account', + exclusive: ['oauth'] + }), + password: flags.string({ + char: 'p', + description: 'Password of your Contentstack account', + exclusive: ['oauth'] + }), + oauth: flags.boolean({ + description: 'Enable single sign-on (SSO)', + default: false, + exclusive: ['username', 'password'] + }) + }; + + async run(): Promise { + try { + const managementAPIClient = await managementSDKClient({ + host: this.cmaHost, + skipTokenValidity: true + }); + + const { flags: loginFlags } = await this.parse(LoginCommand); + authHandler.client = managementAPIClient; + + if (loginFlags.oauth) { + log.debug('Starting OAuth flow', this.contextDetails); + oauthHandler.host = this.cmaHost; + await oauthHandler.oauth(); + } else { + const username = loginFlags.username || await interactive.askUsername(); + const password = loginFlags.password || await interactive.askPassword(); + await authHandler.login(username, password); + } + + cliux.success('✅ Authenticated successfully'); + } catch (error) { + handleAndLogError(error, this.contextDetails); + } + } +} +``` + +### Logout Command +```typescript +export default class LogoutCommand extends BaseCommand { + static description = 'Logout from Contentstack'; + + async run(): Promise { + try { + await authHandler.setConfigData('logout'); + cliux.success('✅ Logged out successfully'); + } catch (error) { + handleAndLogError(error, this.contextDetails); + } + } +} +``` + +### Token Management +```typescript +// Add token +export default class TokenAddCommand extends BaseCommand { + static description = 'Add authentication token'; + + static flags: FlagInput = { + email: flags.string({ + char: 'e', + description: 'Email address', + required: true + }), + label: flags.string({ + char: 'l', + description: 'Token label', + required: false + }) + }; + + async run(): Promise { + const { flags } = await this.parse(TokenAddCommand); + // Add token logic + cliux.success('✅ Token added successfully'); + } +} +``` + +## Configuration Commands + +### Config Get Command +```typescript +export default class ConfigGetCommand extends BaseCommand { + static description = 'Get CLI configuration values'; + + async run(): Promise { + try { + const region = configHandler.get('region'); + cliux.print(`Region: ${region}`); + } catch (error) { + handleAndLogError(error, { ...this.contextDetails, module: 'config-get' }); + } + } +} +``` + +### Config Set Command +```typescript +export default class RegionSetCommand extends BaseCommand { + static description = 'Set region for CLI'; + + static args = { + region: args.string({ description: 'Region name (AWS-NA, AWS-EU, etc.)' }) + }; + + static examples = [ + '$ csdx config:set:region', + '$ csdx config:set:region AWS-NA', + '$ csdx config:set:region --cma --cda --ui-host --name "Custom"' + ]; + + async run(): Promise { + try { + const { args, flags } = await this.parse(RegionSetCommand); + + let selectedRegion = args.region; + if (!selectedRegion) { + selectedRegion = await interactive.askRegions(); + } + + const regionDetails = regionHandler.setRegion(selectedRegion); + await authHandler.setConfigData('logout'); // Reset auth on region change + + cliux.success(`✅ Region set to ${regionDetails.name}`); + cliux.print(`CMA host: ${regionDetails.cma}`); + cliux.print(`CDA host: ${regionDetails.cda}`); + } catch (error) { + handleAndLogError(error, { ...this.contextDetails, module: 'config-set-region' }); + } + } +} +``` + +### Config Remove Command +```typescript +export default class ProxyRemoveCommand extends BaseCommand { + static description = 'Remove proxy configuration'; + + async run(): Promise { + try { + configHandler.remove('proxy'); + cliux.success('✅ Proxy configuration removed'); + } catch (error) { + handleAndLogError(error, this.contextDetails); + } + } +} +``` + +## API Integration + +### Using Management SDK Client +```typescript +import { managementSDKClient } from '@contentstack/cli-utilities'; + +// Initialize client +const managementClient = await managementSDKClient({ + host: this.cmaHost, + skipTokenValidity: false +}); + +// Get stack +const stack = managementClient.stack({ api_key: stackApiKey }); + +// Fetch entry +const entry = await stack.entry(entryUid).fetch(); + +// Query entries +const entries = await stack + .entry() + .query({ query: { title: 'My Entry' } }) + .find(); + +// Update entry +const updatedEntry = await stack.entry(entryUid).update({ ...entry }); +``` + +### Error Handling for API Calls +```typescript +try { + const stack = client.stack({ api_key: apiKey }); + const entry = await stack.entry(uid).fetch(); +} catch (error: any) { + if (error.status === 401) { + throw new CLIError('Authentication failed. Please login again.'); + } else if (error.status === 404) { + throw new CLIError(`Entry with UID "${uid}" not found.`); + } else if (error.status === 429) { + throw new CLIError('Rate limited. Please try again later.'); + } + + handleAndLogError(error, { + module: 'entry-service', + entryUid: uid, + stackApiKey: apiKey + }); +} +``` + +## User Input and Interaction + +### Interactive Prompts +```typescript +import { interactive } from '../../utils'; + +// Ask for region selection +const region = await interactive.askRegions(); + +// Ask for username +const username = await interactive.askUsername(); + +// Ask for password +const password = await interactive.askPassword(); + +// Ask custom question +const customResponse = await cliux.prompt('Enter your choice:'); +``` + +### User Feedback +```typescript +// Success message +cliux.success('✅ Operation completed'); + +// Error message +cliux.error('❌ Operation failed'); + +// Info message +cliux.print('Processing...', { color: 'blue' }); + +// Show data +cliux.table([ + { name: 'Alice', region: 'us', status: 'active' }, + { name: 'Bob', region: 'eu', status: 'inactive' } +]); +``` + +## Logging Patterns + +### Structured Logging +```typescript +log.debug('LoginCommand started', this.contextDetails); +log.debug('Management API client initialized', this.contextDetails); +log.debug('Token parsed', { + ...this.contextDetails, + flags: loginFlags +}); + +try { + await this.performOperation(); +} catch (error) { + log.debug('Operation failed', { + ...this.contextDetails, + error: error.message, + errorCode: error.code + }); +} +``` + +### Context Details +The `BaseCommand` provides `contextDetails` with: +```typescript +contextDetails = { + command: 'auth:login', + userId: '12345', + email: 'user@example.com', + sessionId: 'session-123' +}; +``` + +## Messages (i18n) + +### Store User Strings +```json +// messages/en.json +{ + "auth": { + "login": { + "success": "Authentication successful", + "failed": "Authentication failed" + }, + "logout": { + "success": "Logged out successfully" + } + }, + "config": { + "region": { + "set": "Region set to {{name}}" + } + } +} +``` + +### Use Message Handler +```typescript +import { messageHandler } from '@contentstack/cli-utilities'; + +const message = messageHandler.get(['auth', 'login', 'success']); +cliux.success(message); +``` + +## Best Practices + +### Command Organization +```typescript +export default class MyCommand extends BaseCommand { + // 1. Static properties + static description = '...'; + static examples = [...]; + static flags = {...}; + + // 2. Instance variables + private someHelper: Helper; + + // 3. run method + async run(): Promise { + try { + const { flags } = await this.parse(MyCommand); + await this.execute(flags); + } catch (error) { + handleAndLogError(error, this.contextDetails); + } + } + + // 4. Private helper methods + private async execute(flags: any): Promise {} + private validate(input: any): void {} +} +``` + +### Error Messages +- Be specific about what went wrong +- Provide actionable feedback +- Example: "Region must be AWS-NA, AWS-EU, or AWS-AU" +- Not: "Invalid region" + +### Progress Indication +```typescript +cliux.print('🔄 Processing...', { color: 'blue' }); +// ... operation ... +cliux.success('✅ Completed successfully'); +``` diff --git a/.cursor/skills/framework/SKILL.md b/.cursor/skills/framework/SKILL.md new file mode 100644 index 0000000000..80be284d90 --- /dev/null +++ b/.cursor/skills/framework/SKILL.md @@ -0,0 +1,142 @@ +--- +name: framework +description: Core utilities, configuration, logging, and framework patterns for CLI development. Use when working with utilities, configuration management, error handling, or core framework components. +--- + +# Framework Patterns + +## Quick Reference + +For comprehensive framework guidance, see: +- **[Framework Patterns](./references/framework-patterns.md)** - Complete utilities, configuration, logging, and framework patterns + +## Core Utilities from @contentstack/cli-utilities + +### Configuration Management +```typescript +import { configHandler } from '@contentstack/cli-utilities'; + +// Get config values +const region = configHandler.get('region'); +const email = configHandler.get('email'); +const authToken = configHandler.get('authenticationMethod'); + +// Set config values +configHandler.set('region', 'us'); +``` + +### Logging Framework +```typescript +import { log } from '@contentstack/cli-utilities'; + +// Use structured logging +log.debug('Debug message', { context: 'data' }); +log.info('Information message', { userId: '123' }); +log.warn('Warning message'); +log.error('Error message', { errorCode: 'ERR_001' }); +``` + +### Error Handling +```typescript +import { handleAndLogError, CLIError } from '@contentstack/cli-utilities'; + +try { + await operation(); +} catch (error) { + handleAndLogError(error, { + module: 'my-command', + command: 'cm:auth:login' + }); +} + +// Or throw CLI errors +throw new CLIError('User-friendly error message'); +``` + +### CLI UX / User Output +```typescript +import { cliux } from '@contentstack/cli-utilities'; + +// Success message +cliux.success('Operation completed successfully'); + +// Error message +cliux.error('Something went wrong'); + +// Print message with color +cliux.print('Processing...', { color: 'blue' }); + +// Prompt user for input +const response = await cliux.prompt('Enter region:'); + +// Show table +cliux.table([ + { name: 'Alice', region: 'us' }, + { name: 'Bob', region: 'eu' } +]); +``` + +### HTTP Client +```typescript +import { httpClient } from '@contentstack/cli-utilities'; + +// Make HTTP requests with built-in error handling +const response = await httpClient.request({ + url: 'https://api.contentstack.io/v3/stacks', + method: 'GET', + headers: { 'Authorization': `Bearer ${token}` } +}); +``` + +## Command Base Class + +```typescript +import { Command } from '@contentstack/cli-command'; + +export default class MyCommand extends Command { + static description = 'My command description'; + + static flags = { + region: flags.string({ + char: 'r', + description: 'Set region' + }) + }; + + async run(): Promise { + const { flags } = await this.parse(MyCommand); + // Command logic here + } +} +``` + +## Error Handling Patterns + +### With Context +```typescript +try { + const result = await this.client.stack().entry().fetch(); +} catch (error) { + handleAndLogError(error, { + module: 'auth-service', + command: 'cm:auth:login', + userId: this.contextDetails.userId, + email: this.contextDetails.email + }); +} +``` + +### Custom Errors +```typescript +if (response.status === 401) { + throw new CLIError('Authentication failed. Please login again.'); +} + +if (response.status === 429) { + throw new CLIError('Rate limited. Please try again later.'); +} +``` + +## Usage + +Reference the comprehensive patterns guide above for detailed implementations of configuration, logging, error handling, utilities, and dependency injection patterns. diff --git a/.cursor/skills/framework/references/framework-patterns.md b/.cursor/skills/framework/references/framework-patterns.md new file mode 100644 index 0000000000..8c1d4fc190 --- /dev/null +++ b/.cursor/skills/framework/references/framework-patterns.md @@ -0,0 +1,399 @@ +# Framework Patterns + +Core utilities, configuration, logging, and framework patterns for Contentstack CLI development. + +## Configuration Management + +The `@contentstack/cli-utilities` package exports `configHandler` for centralized configuration access. + +### Using configHandler +```typescript +import { configHandler } from '@contentstack/cli-utilities'; + +// Get config values (no arguments returns all config) +const allConfig = configHandler.get(); + +// Get specific config +const region = configHandler.get('region'); +const email = configHandler.get('email'); +const authToken = configHandler.get('authenticationMethod'); +const userUid = configHandler.get('userUid'); +const oauthOrgUid = configHandler.get('oauthOrgUid'); + +// Set config +configHandler.set('region', 'us'); +configHandler.set('email', 'user@example.com'); +``` + +### Config Keys +- `region` - Current region setting (us, eu, etc.) +- `email` - User email address +- `authenticationMethod` - Auth method used +- `userUid` - User unique identifier +- `oauthOrgUid` - OAuth organization UID +- `authenticationMethod` - Authentication method + +## Logging Framework + +The `@contentstack/cli-utilities` exports a winston-based `log` (v2Logger) for structured logging. + +### Structured Logging +```typescript +import { log } from '@contentstack/cli-utilities'; + +// Debug level +log.debug('Starting operation', { + command: 'cm:auth:login', + timestamp: new Date().toISOString() +}); + +// Info level +log.info('Operation completed', { + itemsProcessed: 100, + duration: 5000 +}); + +// Warn level +log.warn('Deprecated flag used', { + flag: '--old-flag', + alternative: '--new-flag' +}); + +// Error level +log.error('Operation failed', { + errorCode: 'ERR_AUTH_001', + message: 'Invalid credentials' +}); +``` + +### Log Context Creation +```typescript +import { createLogContext } from '@contentstack/cli-utilities'; + +// Create context for logging +const logContext = createLogContext( + command, // command name + module, // module name + authMethod // authentication method +); + +// Use in command +const contextDetails = { + ...logContext, + userId: configHandler.get('userUid'), + email: configHandler.get('email') +}; +``` + +## Error Handling Framework + +The utilities provide error handling functions and error classes. + +### handleAndLogError Function +```typescript +import { handleAndLogError } from '@contentstack/cli-utilities'; + +try { + await risky operation(); +} catch (error) { + handleAndLogError(error, { + module: 'config-set-region', + command: 'cm:config:set:region', + flags: { region: 'eu' } + }); +} +``` + +### CLIError Class +```typescript +import { CLIError } from '@contentstack/cli-utilities'; + +// Throw user-friendly errors +if (!region) { + throw new CLIError('Region is required'); +} + +if (invalidEnvironments.length > 0) { + throw new CLIError(`Invalid environments: ${invalidEnvironments.join(', ')}`); +} +``` + +### Error Context +```typescript +// Include context for debugging +try { + const response = await this.client.fetch(); +} catch (error) { + handleAndLogError(error, { + module: 'asset-service', + command: this.id, + context: { + userId: this.contextDetails.userId, + email: this.contextDetails.email, + region: configHandler.get('region') + } + }); +} +``` + +## CLI UX / User Output + +The `cliux` utility provides user-friendly output functions. + +### Success Messages +```typescript +import { cliux } from '@contentstack/cli-utilities'; + +// Simple success +cliux.success('Configuration updated successfully'); + +// Success with details +cliux.success('Region set to us'); +cliux.success('CMA host: https://api.contentstack.io'); +cliux.success('CDA host: https://cdn.contentstack.io'); +``` + +### Error Messages +```typescript +cliux.error('Authentication failed'); +cliux.error('Invalid region: custom'); +cliux.error('Environment not found or inaccessible'); +``` + +### Print with Color +```typescript +// Blue for info +cliux.print('Processing items...', { color: 'blue' }); + +// Show progress +cliux.print(`Progress: ${completed}/${total} items`, { color: 'blue' }); + +// Status messages +cliux.print('✅ Operation completed', { color: 'green' }); +cliux.print('🔄 Syncing configuration...', { color: 'blue' }); +``` + +### User Input +```typescript +// Prompt for string input +const region = await cliux.prompt('Enter region:'); + +// Prompt with choices (using inquirer) +const response = await cliux.prompt('Select action:', { + choices: ['publish', 'unpublish', 'delete'] +}); +``` + +### Display Tables +```typescript +// Display data in table format +cliux.table([ + { name: 'Alice', region: 'us', status: 'active' }, + { name: 'Bob', region: 'eu', status: 'inactive' } +]); + +// With custom columns +const data = [ + { uid: 'entry-1', title: 'Entry 1', locale: 'en' }, + { uid: 'entry-2', title: 'Entry 2', locale: 'en' } +]; +cliux.table(data); +``` + +## HTTP Client + +The `httpClient` provides HTTP request functionality with error handling. + +### Basic Requests +```typescript +import { httpClient } from '@contentstack/cli-utilities'; + +// GET request +const response = await httpClient.request({ + url: 'https://api.contentstack.io/v3/stacks', + method: 'GET', + headers: { 'Authorization': `Bearer ${token}` } +}); + +// POST request +const postResponse = await httpClient.request({ + url: 'https://api.contentstack.io/v3/stacks', + method: 'POST', + headers: { + 'Authorization': `Bearer ${token}`, + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ name: 'My Stack' }) +}); +``` + +### Error Handling +```typescript +try { + const response = await httpClient.request({ + url: endpoint, + method: 'GET', + headers: getAuthHeaders() + }); +} catch (error: any) { + if (error.status === 429) { + cliux.error('Rate limited. Please try again later.'); + } else if (error.status === 401) { + cliux.error('Authentication failed. Please login again.'); + } else { + handleAndLogError(error, { module: 'http-client' }); + } +} +``` + +## Command Base Class + +Commands should extend `Command` from `@contentstack/cli-command`. + +### Basic Command Structure +```typescript +import { Command } from '@contentstack/cli-command'; +import { FlagInput, args } from '@contentstack/cli-utilities'; + +export default class MyCommand extends Command { + static description = 'Clear description of what this command does'; + + static flags: FlagInput = { + region: flags.string({ + char: 'r', + description: 'Target region (us/eu)', + required: false + }), + verbose: flags.boolean({ + char: 'v', + description: 'Show verbose output', + default: false + }) + }; + + static args = { + name: args.string({ description: 'Name of item', required: false }) + }; + + static examples = [ + '$ csdx my:command', + '$ csdx my:command --region eu' + ]; + + async run(): Promise { + try { + const { args, flags } = await this.parse(MyCommand); + // Validate flags + if (!flags.region) { + this.error('--region is required'); + } + + // Implementation + this.log('Starting operation...'); + // ... perform operation ... + cliux.success('Operation completed'); + } catch (error) { + handleAndLogError(error, { module: 'my-command' }); + } + } +} +``` + +### Command Lifecycle +```typescript +export abstract class BaseCommand extends Command { + public async init(): Promise { + await super.init(); + // Initialize context, config, logging + this.contextDetails = createLogContext( + this.context?.info?.command, + '', + configHandler.get('authenticationMethod') + ); + } + + protected async catch(err: Error & { exitCode?: number }): Promise { + // Custom error handling + return super.catch(err); + } + + protected async finally(_: Error | undefined): Promise { + // Cleanup after command + return super.finally(_); + } +} +``` + +## Authentication Patterns + +### Auth Handler +```typescript +import { authHandler } from '@contentstack/cli-utilities'; + +// Check if authenticated +const isAuthenticated = !!configHandler.get('authenticationMethod'); + +// Get auth token +const token = await authHandler.getToken(); + +// Set config data (e.g., during logout) +await authHandler.setConfigData('logout'); +``` + +### Checking Authentication in Commands +```typescript +if (!configHandler.get('authenticationMethod')) { + throw new CLIError('Authentication required. Please login first.'); +} +``` + +## Common Patterns + +### Error and Success Pattern +```typescript +async run(): Promise { + try { + this.log('Starting operation...'); + const result = await this.performOperation(); + cliux.success(`✅ Success: ${result}`); + } catch (error) { + handleAndLogError(error, { + module: 'my-command', + command: this.id + }); + } +} +``` + +### Progress Reporting Pattern +```typescript +cliux.print('Processing items...', { color: 'blue' }); +let count = 0; +for (const item of items) { + await this.processItem(item); + count++; + cliux.print(`Progress: ${count}/${items.length} items`, { color: 'blue' }); +} +cliux.success(`✅ Processed ${count} items`); +``` + +### Dependency Injection Pattern +```typescript +export class MyService { + constructor( + private configHandler: any, + private logger: any, + private httpClient: any + ) {} + + async execute(): Promise { + this.logger.debug('Starting service'); + const config = this.configHandler.get('region'); + // Use injected dependencies + } +} + +// In command +const service = new MyService(configHandler, log, httpClient); +await service.execute(); +``` diff --git a/.cursor/skills/testing/SKILL.md b/.cursor/skills/testing/SKILL.md new file mode 100644 index 0000000000..d53591924e --- /dev/null +++ b/.cursor/skills/testing/SKILL.md @@ -0,0 +1,200 @@ +--- +name: testing +description: Testing patterns, TDD workflow, and test automation for CLI development. Use when writing tests, implementing TDD, setting up test coverage, or debugging test failures. +--- + +# Testing Patterns + +## Quick Reference + +For comprehensive testing guidance, see: +- **[Testing Patterns](./references/testing-patterns.md)** - Complete testing best practices and TDD workflow +- See also `.cursor/rules/testing.mdc` for workspace-wide testing standards + +## TDD Workflow Summary + +**Simple RED-GREEN-REFACTOR:** +1. **RED** → Write failing test +2. **GREEN** → Make it pass with minimal code +3. **REFACTOR** → Improve code quality while keeping tests green + +## Key Testing Rules + +- **80% minimum coverage** (lines, branches, functions) +- **Class-based mocking** (no external libraries; extend and override methods) +- **Never make real API calls** in tests +- **Mock at service boundaries**, not implementation details +- **Test both success and failure paths** +- **Use descriptive test names**: "should [behavior] when [condition]" + +## Quick Test Template + +```typescript +describe('[ServiceName]', () => { + let service: [ServiceName]; + + beforeEach(() => { + service = new [ServiceName](); + }); + + afterEach(() => { + // Clean up any resources + }); + + it('should [expected behavior] when [condition]', async () => { + // Arrange + const input = { /* test data */ }; + + // Act + const result = await service.method(input); + + // Assert + expect(result).to.deep.equal(expectedOutput); + }); + + it('should throw error when [error condition]', async () => { + // Arrange & Act & Assert + await expect(service.failingMethod()) + .to.be.rejectedWith('Expected error message'); + }); +}); +``` + +## Common Mock Patterns + +### Class-Based Mocking +```typescript +// Mock a service by extending it +class MockContentstackClient extends ContentstackClient { + async fetch() { + return mockData; + } +} + +it('should use mocked client', async () => { + const mockClient = new MockContentstackClient(config); + const result = await mockClient.fetch(); + expect(result).to.deep.equal(mockData); +}); +``` + +### Constructor Injection +```typescript +class RateLimiter { + async execute(operation: () => Promise): Promise { + return operation(); + } +} + +class MyService { + constructor(private rateLimiter: RateLimiter) {} + + async doWork() { + return this.rateLimiter.execute(() => this.performWork()); + } +} + +it('should rate limit operations', () => { + const mockLimiter = { execute: () => Promise.resolve('result') }; + const service = new MyService(mockLimiter as any); + // test service behavior +}); +``` + +## Running Tests + +### Run all tests in workspace +```bash +pnpm test +``` + +### Run tests for specific package +```bash +pnpm --filter @contentstack/cli-auth test +pnpm --filter @contentstack/cli-config test +``` + +### Run tests with coverage +```bash +pnpm test:coverage +``` + +### Run tests in watch mode +```bash +pnpm test:watch +``` + +### Run specific test file +```bash +pnpm test -- test/unit/commands/auth/login.test.ts +``` + +## Test Organization + +### File Structure +- Mirror source structure: `test/unit/commands/auth/`, `test/unit/services/`, `test/unit/utils/` +- Use consistent naming: `[module-name].test.ts` +- Integration tests: `test/integration/` + +### Test Data Management +```typescript +// Create mock data factories in test/fixtures/ +const mockAuthToken = { token: 'abc123', expiresAt: Date.now() + 3600000 }; +const mockConfig = { region: 'us', email: 'test@example.com' }; +``` + +## Error Testing + +### Rate Limit Handling +```typescript +it('should handle rate limit errors', async () => { + const error = new Error('Rate limited'); + (error as any).status = 429; + + class MockClient { + fetch() { throw error; } + } + + try { + await new MockClient().fetch(); + expect.fail('Should have thrown'); + } catch (err: any) { + expect(err.status).to.equal(429); + } +}); +``` + +### Validation Error Testing +```typescript +it('should throw validation error for invalid input', () => { + expect(() => service.validateRegion('')) + .to.throw('Region is required'); +}); +``` + +## Coverage and Quality + +### Coverage Requirements +```json +"nyc": { + "check-coverage": true, + "lines": 80, + "functions": 80, + "branches": 80, + "statements": 80 +} +``` + +### Quality Checklist +- [ ] All public methods tested +- [ ] Error paths covered (success + failure) +- [ ] Edge cases included +- [ ] No real API calls +- [ ] Descriptive test names +- [ ] Minimal test setup +- [ ] Tests run < 5s per test file +- [ ] 80%+ coverage achieved + +## Usage + +Reference the comprehensive patterns guide above for detailed test structures, mocking strategies, error testing patterns, and coverage requirements. diff --git a/.cursor/skills/testing/references/testing-patterns.md b/.cursor/skills/testing/references/testing-patterns.md new file mode 100644 index 0000000000..fa4d481092 --- /dev/null +++ b/.cursor/skills/testing/references/testing-patterns.md @@ -0,0 +1,358 @@ +# Testing Patterns + +Testing best practices and TDD workflow for Contentstack CLI monorepo development. + +## TDD Workflow + +**Simple RED-GREEN-REFACTOR:** +1. **RED** → Write failing test +2. **GREEN** → Make it pass with minimal code +3. **REFACTOR** → Improve code quality while keeping tests green + +## Test Structure Standards + +### Basic Test Template +```typescript +describe('[ComponentName]', () => { + let component: [ComponentName]; + + beforeEach(() => { + // Setup mocks and test data + component = new [ComponentName](); + }); + + afterEach(() => { + // Clean up resources + }); + + it('should [expected behavior] when [condition]', async () => { + // Arrange + const input = { /* test data */ }; + + // Act + const result = await component.method(input); + + // Assert + expect(result).to.deep.equal(expectedOutput); + }); +}); +``` + +### Command Testing Example +```typescript +import { test } from '@oclif/test'; + +describe('config:set:region', () => { + test + .stdout() + .command(['config:set:region', '--help']) + .it('shows help', ctx => { + expect(ctx.stdout).to.contain('Set CLI region'); + }); + + test + .stdout() + .command(['config:set:region', 'AWS-NA']) + .it('sets region to AWS-NA', ctx => { + expect(ctx.stdout).to.contain('success'); + }); +}); +``` + +### Service Testing Example +```typescript +describe('AuthService', () => { + let authService: AuthService; + let mockConfig: any; + + beforeEach(() => { + mockConfig = { region: 'us', email: 'test@example.com' }; + authService = new AuthService(mockConfig); + }); + + it('should authenticate user with valid credentials', async () => { + const result = await authService.login('test@example.com', 'password'); + expect(result).to.have.property('token'); + }); + + it('should throw error on invalid credentials', async () => { + await expect(authService.login('test@example.com', 'wrong')) + .to.be.rejectedWith('Authentication failed'); + }); +}); +``` + +## Key Testing Rules + +### Coverage Requirements +- **80% minimum** coverage (lines, branches, functions) +- Test both success and failure paths +- Include edge cases and error scenarios + +### Mocking Standards +- **Use class-based mocking** (extend and override methods) +- **Never make real API calls** in tests +- **Mock at service boundaries**, not implementation details +- Clean up resources in `afterEach()` to prevent test pollution + +### Test Patterns +- Use descriptive test names: "should [behavior] when [condition]" +- Keep test setup minimal and focused +- Prefer async/await patterns +- Group related tests in `describe` blocks + +## Common Mock Patterns + +### Service Mocking +```typescript +// Mock a service by extending and overriding methods +class MockContentstackClient { + async fetch() { + return { + uid: 'entry-1', + title: 'Mock Entry', + content_type: 'page' + }; + } +} + +it('should process entry', async () => { + const mockClient = new MockContentstackClient(); + const result = await mockClient.fetch(); + expect(result.uid).to.equal('entry-1'); +}); +``` + +### Dependency Injection Mocking +```typescript +class RateLimiter { + constructor(private maxConcurrent: number = 1) {} + + async execute(operation: () => Promise): Promise { + return operation(); + } +} + +class MyService { + constructor(private rateLimiter: RateLimiter) {} + + async doWork() { + return this.rateLimiter.execute(() => this.performWork()); + } +} + +it('should use rate limiter', async () => { + // Pass in mock with minimal implementation + const mockLimiter = { execute: (fn) => fn() } as any; + const service = new MyService(mockLimiter); + + const result = await service.doWork(); + expect(result).to.exist; +}); +``` + +### API Error Simulation +```typescript +class MockClient { + fetch(endpoint: string) { + if (endpoint === '/rate-limited') { + const error = new Error('Rate limited'); + (error as any).status = 429; + throw error; + } + return Promise.resolve({ data: 'ok' }); + } +} + +it('should handle rate limit errors', async () => { + const client = new MockClient(); + + try { + await client.fetch('/rate-limited'); + expect.fail('Should have thrown'); + } catch (error: any) { + expect(error.status).to.equal(429); + expect(error.message).to.include('Rate limited'); + } +}); +``` + +### Configuration Mocking +```typescript +it('should load config from mock', async () => { + const mockConfig = { + region: 'us', + email: 'test@example.com', + authToken: 'token-123', + get: (key: string) => mockConfig[key as keyof typeof mockConfig] + }; + + const service = new ConfigService(mockConfig); + expect(service.region).to.equal('us'); +}); +``` + +## Error Testing Patterns + +### Rate Limit Handling +```typescript +it('should retry on rate limit error', async () => { + let callCount = 0; + + class MockService { + async call() { + callCount++; + if (callCount === 1) { + const error = new Error('Rate limited'); + (error as any).status = 429; + throw error; + } + return 'success'; + } + } + + const service = new MockService(); + + // First call throws, simulate retry + try { await service.call(); } catch (e) { /* expected */ } + const result = await service.call(); + + expect(result).to.equal('success'); + expect(callCount).to.equal(2); +}); +``` + +### Validation Error Testing +```typescript +it('should throw validation error for invalid input', () => { + class Validator { + validate(region: string): void { + if (!region || region === '') { + throw new Error('Region is required'); + } + } + } + + const validator = new Validator(); + expect(() => validator.validate('')) + .to.throw('Region is required'); +}); +``` + +### Async Error Handling +```typescript +it('should handle async operation failures', async () => { + class FailingService { + async performAsync() { + throw new Error('Operation failed'); + } + } + + const service = new FailingService(); + + try { + await service.performAsync(); + expect.fail('Should have thrown error'); + } catch (error: any) { + expect(error.message).to.include('Operation failed'); + } +}); +``` + +## Test Organization + +### File Structure +- Mirror source structure: `test/unit/services/auth-service.test.ts` +- Use consistent naming: `[module-name].test.ts` +- Group integration tests: `test/integration/` +- Commands: `test/unit/commands/auth/login.test.ts` +- Services: `test/unit/services/config-service.test.ts` +- Utils: `test/unit/utils/region-handler.test.ts` + +### Test Data Management +- Create mock data in test files or in `test/fixtures/` for reuse +- Use realistic test data that matches actual API responses +- Share common mocks across test files in a factory pattern + +### Test Configuration +```javascript +// .mocharc.json +{ + "require": [ + "test/helpers/init.js", + "ts-node/register", + "source-map-support/register" + ], + "recursive": true, + "timeout": 30000, + "spec": "test/**/*.test.ts" +} +``` + +## Monorepo Testing Commands + +### Run all tests across workspace +```bash +pnpm test +``` + +### Run tests for specific package +```bash +pnpm --filter @contentstack/cli-auth test +pnpm --filter @contentstack/cli-config test +pnpm --filter @contentstack/cli-command test +``` + +### Run tests with coverage +```bash +pnpm test:coverage +``` + +### Run tests in watch mode +```bash +pnpm test:watch +``` + +### Run specific test file +```bash +pnpm test -- test/unit/commands/config/set/region.test.ts +``` + +### Run tests matching pattern +```bash +pnpm test -- --grep "should authenticate user" +``` + +## Coverage and Quality + +### Coverage Enforcement +```json +"nyc": { + "check-coverage": true, + "lines": 80, + "functions": 80, + "branches": 80, + "statements": 80 +} +``` + +### Coverage Report Generation +```bash +# Generate coverage reports +pnpm test:coverage + +# HTML report available at coverage/index.html +open coverage/index.html +``` + +### Quality Checklist +- [ ] All public methods tested +- [ ] Error paths covered (success + failure) +- [ ] Edge cases included +- [ ] No real API calls in tests +- [ ] Descriptive test names +- [ ] Minimal test setup (fast to run) +- [ ] Tests complete in < 5 seconds per file +- [ ] 80%+ coverage achieved +- [ ] Mocks properly isolated per test +- [ ] No test pollution (afterEach cleanup) diff --git a/.talismanrc b/.talismanrc index e03b666036..6bac9cef9a 100644 --- a/.talismanrc +++ b/.talismanrc @@ -1,6 +1,18 @@ fileignoreconfig: - - filename: .github/workflows/release-production-pipeline.yml - checksum: 48264fdeb61cbbed348c7271aae5e155651f490aca063dbb1d54f2c15a154090 - filename: pnpm-lock.yaml - checksum: c64bb59690952523cb0c314de42499c168d3e08b1810e4583a546c5773bd89fc + checksum: 445d77cc28199508bb51188b622523184baf109cffd6a027403463b00d7c7698 + - filename: packages/contentstack-utilities/src/proxy-helper.ts + checksum: 2169f25563bca3a0fe54edd00c73646ed56d36aa7e8effe904de26b0c1633759 + - filename: .cursor/skills/code-review/SKILL.md + checksum: 29d812ac5c2ed4c55490f8d31e15eb592851601a6a141354cb458b1b9f1daa7a + - filename: .cursor/skills/contentstack-cli/SKILL.md + checksum: 2130a0c665821cd2831644aa238afef09992388f67f682c867820c0d98ab2406 + - filename: .cursor/skills/contentstack-cli/references/contentstack-patterns.md + checksum: 159d7e31f9e32ceb708c702699c36459ed2210a61ff29ebb78efb66cec466128 + - filename: .cursor/skills/code-review/references/code-review-checklist.md + checksum: bdf7453f08d7209deaee411f47a1132ee872b28f0eb082563dfe20aa56eab057 + - filename: .cursor/skills/testing/references/testing-patterns.md + checksum: 0a6cb66f27eda46b40508517063a2f43fea1b4b8df878e7ddff404ab7fc126f8 + - filename: .github/workflows/release-production-pipeline.yml + checksum: 4aef94feea3ea0538162a9454cfd30457ec85e3123672f0933713e3d113d4504 version: '1.0' diff --git a/packages/contentstack-auth/README.md b/packages/contentstack-auth/README.md index 8734c38a50..21e157a7ff 100644 --- a/packages/contentstack-auth/README.md +++ b/packages/contentstack-auth/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-auth $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-auth/1.8.0-beta.1 darwin-arm64 node-v22.13.1 +@contentstack/cli-auth/1.8.0 darwin-arm64 node-v22.13.1 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-config/README.md b/packages/contentstack-config/README.md index c43d8558b1..e39ce4a065 100644 --- a/packages/contentstack-config/README.md +++ b/packages/contentstack-config/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli-config $ csdx COMMAND running command... $ csdx (--version) -@contentstack/cli-config/1.20.0-beta.1 darwin-arm64 node-v22.13.1 +@contentstack/cli-config/1.20.1 darwin-arm64 node-v22.13.1 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack-config/package.json b/packages/contentstack-config/package.json index 8179321b72..e0c887f16c 100644 --- a/packages/contentstack-config/package.json +++ b/packages/contentstack-config/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli-config", "description": "Contentstack CLI plugin for configuration", - "version": "1.20.0", + "version": "1.20.1", "author": "Contentstack", "scripts": { "build": "pnpm compile && oclif manifest && oclif readme", @@ -19,7 +19,7 @@ "@contentstack/utils": "~1.7.0", "@oclif/core": "^4.8.3", "@oclif/plugin-help": "^6.2.28", - "lodash": "^4.17.23" + "lodash": "^4.18.1" }, "overrides": { "@oclif/core": { diff --git a/packages/contentstack-utilities/package.json b/packages/contentstack-utilities/package.json index 1a88316be9..b95fd0a1ff 100644 --- a/packages/contentstack-utilities/package.json +++ b/packages/contentstack-utilities/package.json @@ -1,6 +1,6 @@ { "name": "@contentstack/cli-utilities", - "version": "1.18.0", + "version": "1.18.1", "description": "Utilities for contentstack projects", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -43,7 +43,7 @@ "inquirer-search-list": "^1.2.6", "js-yaml": "^4.1.1", "klona": "^2.0.6", - "lodash": "^4.17.23", + "lodash": "^4.18.1", "mkdirp": "^1.0.4", "open": "^8.4.2", "ora": "^5.4.1", diff --git a/packages/contentstack/README.md b/packages/contentstack/README.md index 75d7bd85fb..72470f249b 100644 --- a/packages/contentstack/README.md +++ b/packages/contentstack/README.md @@ -18,7 +18,7 @@ $ npm install -g @contentstack/cli $ csdx COMMAND running command... $ csdx (--version|-v) -@contentstack/cli/1.60.0-beta.7 darwin-arm64 node-v22.13.1 +@contentstack/cli/1.60.1 darwin-arm64 node-v22.13.1 $ csdx --help [COMMAND] USAGE $ csdx COMMAND diff --git a/packages/contentstack/package.json b/packages/contentstack/package.json index 6cf688b92c..57632a383b 100755 --- a/packages/contentstack/package.json +++ b/packages/contentstack/package.json @@ -1,7 +1,7 @@ { "name": "@contentstack/cli", "description": "Command-line tool (CLI) to interact with Contentstack", - "version": "1.60.0", + "version": "1.60.1", "author": "Contentstack", "bin": { "csdx": "./bin/run.js" @@ -19,24 +19,24 @@ "prepack": "pnpm compile && oclif manifest && oclif readme" }, "dependencies": { - "@contentstack/cli-audit": "~1.19.0", + "@contentstack/cli-audit": "~1.19.1", "@contentstack/cli-cm-export": "~1.24.0", "@contentstack/cli-cm-import": "~1.32.0", "@contentstack/cli-auth": "~1.8.0", "@contentstack/cli-cm-bootstrap": "~1.19.0", - "@contentstack/cli-cm-branches": "~1.7.0", - "@contentstack/cli-cm-bulk-publish": "~1.11.0", - "@contentstack/cli-cm-clone": "~1.21.0", + "@contentstack/cli-cm-branches": "~1.7.1", + "@contentstack/cli-cm-bulk-publish": "~1.11.1", + "@contentstack/cli-cm-clone": "~1.21.1", "@contentstack/cli-cm-export-to-csv": "~1.12.0", - "@contentstack/cli-cm-import-setup": "~1.8.0", + "@contentstack/cli-cm-import-setup": "~1.8.1", "@contentstack/cli-cm-migrate-rte": "~1.6.4", "@contentstack/cli-cm-seed": "~1.15.0", "@contentstack/cli-command": "~1.8.0", - "@contentstack/cli-config": "~1.20.0", - "@contentstack/cli-launch": "^1.9.6", + "@contentstack/cli-config": "~1.20.1", + "@contentstack/cli-launch": "^1.9.7", "@contentstack/cli-migration": "~1.12.0", - "@contentstack/cli-utilities": "~1.18.0", - "@contentstack/cli-variants": "~1.4.0", + "@contentstack/cli-utilities": "~1.18.1", + "@contentstack/cli-variants": "~1.4.1", "@contentstack/management": "~1.27.5", "@oclif/core": "^4.8.3", "@oclif/plugin-help": "^6.2.28", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ae676ea922..231e7b60f7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -17,13 +17,13 @@ importers: version: 9.1.7 pnpm: specifier: ^10.28.0 - version: 10.30.3 + version: 10.33.0 packages/contentstack: dependencies: '@contentstack/cli-audit': - specifier: ~1.19.0 - version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.19.1 + version: 1.19.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-auth': specifier: ~1.8.0 version: link:../contentstack-auth @@ -31,26 +31,26 @@ importers: specifier: ~1.19.0 version: 1.19.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-cm-branches': - specifier: ~1.7.0 - version: 1.7.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.7.1 + version: 1.7.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-cm-bulk-publish': - specifier: ~1.11.0 - version: 1.11.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.11.1 + version: 1.11.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-cm-clone': - specifier: ~1.21.0 - version: 1.21.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.21.1 + version: 1.21.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-cm-export': specifier: ~1.24.0 - version: 1.24.0(@types/node@14.18.63)(debug@4.4.3) + version: 1.24.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-cm-export-to-csv': specifier: ~1.12.0 version: 1.12.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-cm-import': specifier: ~1.32.0 - version: 1.32.0(@types/node@14.18.63) + version: 1.32.1(@types/node@14.18.63) '@contentstack/cli-cm-import-setup': - specifier: ~1.8.0 - version: 1.8.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.8.1 + version: 1.8.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-cm-migrate-rte': specifier: ~1.6.4 version: 1.6.4(@types/node@14.18.63)(debug@4.4.3) @@ -61,35 +61,35 @@ importers: specifier: ~1.8.0 version: link:../contentstack-command '@contentstack/cli-config': - specifier: ~1.20.0 + specifier: ~1.20.1 version: link:../contentstack-config '@contentstack/cli-launch': - specifier: ^1.9.6 - version: 1.9.6(@types/node@14.18.63)(debug@4.4.3)(tslib@2.8.1)(typescript@4.9.5) + specifier: ^1.9.7 + version: 1.9.7(@types/node@14.18.63)(debug@4.4.3)(tslib@2.8.1)(typescript@4.9.5) '@contentstack/cli-migration': specifier: ~1.12.0 version: 1.12.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': - specifier: ~1.18.0 + specifier: ~1.18.1 version: link:../contentstack-utilities '@contentstack/cli-variants': - specifier: ~1.4.0 - version: 1.4.0(@types/node@14.18.63)(debug@4.4.3) + specifier: ~1.4.1 + version: 1.4.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/management': specifier: ~1.27.5 version: 1.27.6(debug@4.4.3) '@oclif/core': specifier: ^4.8.3 - version: 4.8.3 + version: 4.10.5 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.37 + version: 6.2.43 '@oclif/plugin-not-found': specifier: ^3.2.53 - version: 3.2.74(@types/node@14.18.63) + version: 3.2.80(@types/node@14.18.63) '@oclif/plugin-plugins': specifier: ^5.4.54 - version: 5.4.56 + version: 5.4.59 chalk: specifier: ^4.1.2 version: 4.1.2 @@ -123,7 +123,7 @@ importers: devDependencies: '@oclif/test': specifier: ^4.1.16 - version: 4.1.16(@oclif/core@4.8.3) + version: 4.1.18(@oclif/core@4.10.5) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -144,7 +144,7 @@ importers: version: 7.7.1 '@types/sinon': specifier: ^21.0.0 - version: 21.0.0 + version: 21.0.1 chai: specifier: ^4.5.0 version: 4.5.0 @@ -153,7 +153,7 @@ importers: version: 8.57.1 eslint-config-oclif: specifier: ^6.0.137 - version: 6.0.146(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.156(eslint@8.57.1)(typescript@4.9.5) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@8.57.1)(typescript@4.9.5) @@ -171,7 +171,7 @@ importers: version: 15.1.0 oclif: specifier: ^4.17.46 - version: 4.22.81(@types/node@14.18.63) + version: 4.22.96(@types/node@14.18.63) rimraf: specifier: ^5.0.10 version: 5.0.10 @@ -180,7 +180,7 @@ importers: version: 0.10.0 sinon: specifier: ^21.0.1 - version: 21.0.1 + version: 21.0.3 tmp: specifier: ^0.2.5 version: 0.2.5 @@ -204,10 +204,10 @@ importers: version: link:../contentstack-utilities '@oclif/core': specifier: ^4.8.3 - version: 4.8.3 + version: 4.10.5 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.37 + version: 6.2.43 otplib: specifier: ^12.0.1 version: 12.0.1 @@ -217,7 +217,7 @@ importers: version: 0.1.1 '@oclif/test': specifier: ^4.1.13 - version: 4.1.16(@oclif/core@4.8.3) + version: 4.1.18(@oclif/core@4.10.5) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -232,7 +232,7 @@ importers: version: 14.18.63 '@types/sinon': specifier: ^21.0.0 - version: 21.0.0 + version: 21.0.1 chai: specifier: ^4.5.0 version: 4.5.0 @@ -256,10 +256,10 @@ importers: version: 15.1.0 oclif: specifier: ^4.17.46 - version: 4.22.81(@types/node@14.18.63) + version: 4.22.96(@types/node@14.18.63) sinon: specifier: ^21.0.1 - version: 21.0.1 + version: 21.0.3 ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@14.18.63)(typescript@4.9.5) @@ -274,17 +274,17 @@ importers: version: link:../contentstack-utilities '@oclif/core': specifier: ^4.8.3 - version: 4.8.3 + version: 4.10.5 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.37 + version: 6.2.43 contentstack: specifier: ^3.25.3 - version: 3.26.4 + version: 3.27.0 devDependencies: '@oclif/test': specifier: ^4.1.13 - version: 4.1.16(@oclif/core@4.8.3) + version: 4.1.18(@oclif/core@4.10.5) '@types/mkdirp': specifier: ^1.0.2 version: 1.0.2 @@ -299,7 +299,7 @@ importers: version: 8.57.1 eslint-config-oclif: specifier: ^6.0.15 - version: 6.0.146(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.156(eslint@8.57.1)(typescript@4.9.5) eslint-config-oclif-typescript: specifier: ^3.1.13 version: 3.1.14(eslint@8.57.1)(typescript@4.9.5) @@ -329,17 +329,17 @@ importers: version: 1.7.1 '@oclif/core': specifier: ^4.8.3 - version: 4.8.3 + version: 4.10.5 '@oclif/plugin-help': specifier: ^6.2.28 - version: 6.2.37 + version: 6.2.43 lodash: - specifier: ^4.17.23 - version: 4.17.23 + specifier: ^4.18.1 + version: 4.18.1 devDependencies: '@oclif/test': specifier: ^4.1.13 - version: 4.1.16(@oclif/core@4.8.3) + version: 4.1.18(@oclif/core@4.10.5) '@types/chai': specifier: ^4.3.20 version: 4.3.20 @@ -351,7 +351,7 @@ importers: version: 14.18.63 '@types/sinon': specifier: ^21.0.0 - version: 21.0.0 + version: 21.0.1 chai: specifier: ^4.5.0 version: 4.5.0 @@ -360,7 +360,7 @@ importers: version: 8.57.1 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.146(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.156(eslint@8.57.1)(typescript@4.9.5) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@8.57.1)(typescript@4.9.5) @@ -372,10 +372,10 @@ importers: version: 15.1.0 oclif: specifier: ^4.17.46 - version: 4.22.81(@types/node@14.18.63) + version: 4.22.96(@types/node@14.18.63) sinon: specifier: ^21.0.1 - version: 21.0.1 + version: 21.0.3 ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@14.18.63)(typescript@4.9.5) @@ -393,10 +393,10 @@ importers: version: 1.5.0(debug@4.4.3) '@oclif/core': specifier: ^4.8.3 - version: 4.8.3 + version: 4.10.5 axios: specifier: ^1.13.5 - version: 1.13.6(debug@4.4.3) + version: 1.14.0(debug@4.4.3) chalk: specifier: ^4.1.2 version: 4.1.2 @@ -434,8 +434,8 @@ importers: specifier: ^2.0.6 version: 2.0.6 lodash: - specifier: ^4.17.23 - version: 4.17.23 + specifier: ^4.18.1 + version: 4.18.1 mkdirp: specifier: ^1.0.4 version: 1.0.4 @@ -490,7 +490,7 @@ importers: version: 14.18.63 '@types/sinon': specifier: ^21.0.0 - version: 21.0.0 + version: 21.0.1 '@types/traverse': specifier: ^0.6.37 version: 0.6.37 @@ -502,7 +502,7 @@ importers: version: 8.57.1 eslint-config-oclif: specifier: ^6.0.62 - version: 6.0.146(eslint@8.57.1)(typescript@4.9.5) + version: 6.0.156(eslint@8.57.1)(typescript@4.9.5) eslint-config-oclif-typescript: specifier: ^3.1.14 version: 3.1.14(eslint@8.57.1)(typescript@4.9.5) @@ -517,7 +517,7 @@ importers: version: 15.1.0 sinon: specifier: ^21.0.1 - version: 21.0.1 + version: 21.0.3 ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@14.18.63)(typescript@4.9.5) @@ -527,8 +527,8 @@ importers: packages: - '@apollo/client@3.14.0': - resolution: {integrity: sha512-0YQKKRIxiMlIou+SekQqdCo0ZTHxOcES+K8vKB53cIDpwABNR0P0yRzPgsbgcj3zRJniD93S/ontsnZsCLZrxQ==} + '@apollo/client@3.14.1': + resolution: {integrity: sha512-SgGX6E23JsZhUdG2anxiyHvEvvN6CUaI4ZfMsndZFeuHPXL3H0IsaiNAhLITSISbeyeYd+CBd9oERXQDdjXWZw==} peerDependencies: graphql: ^15.0.0 || ^16.0.0 graphql-ws: ^5.5.5 || ^6.0.3 @@ -568,131 +568,131 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-cloudfront@3.1001.0': - resolution: {integrity: sha512-zp6+jzAvrfgct46xhUWNFWJApcVLoBNzjwfRUbPKKqkDj2NQd+wh6zy0JMLqdo948FD26fBtVojjeYqyh0EZmw==} + '@aws-sdk/client-cloudfront@3.1009.0': + resolution: {integrity: sha512-KRac+gkuj3u49IyWkrudHRlP/q/faTto+1xRS7Aj6cDGewMIzgdQArrdZEJoVntbaVZHLM5s/NVmWORzBWNcSw==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1001.0': - resolution: {integrity: sha512-uKgFjQuBjMcd0iigLQwnqIp9gOy/5TGBxa42rcb6l5byDt1mrwOe6fyWTEUEJaNHG2LKYSPUibteGvM1zfm0Rw==} + '@aws-sdk/client-s3@3.1014.0': + resolution: {integrity: sha512-0XLrOT4Cm3NEhhiME7l/8LbTXS4KdsbR4dSrY207KNKTcHLLTZ9EXt4ZpgnTfLvWQF3pGP2us4Zi1fYLo0N+Ow==} engines: {node: '>=20.0.0'} - '@aws-sdk/core@3.973.16': - resolution: {integrity: sha512-Nasoyb5K4jfvncTKQyA13q55xHoz9as01NVYP05B0Kzux/X5UhMn3qXsZDyWOSXkfSCAIrMBKmVVWbI0vUapdQ==} + '@aws-sdk/core@3.973.26': + resolution: {integrity: sha512-A/E6n2W42ruU+sfWk+mMUOyVXbsSgGrY3MJ9/0Az5qUdG67y8I6HYzzoAa+e/lzxxl1uCYmEL6BTMi9ZiZnplQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/crc64-nvme@3.972.3': - resolution: {integrity: sha512-UExeK+EFiq5LAcbHm96CQLSia+5pvpUVSAsVApscBzayb7/6dJBJKwV4/onsk4VbWSmqxDMcfuTD+pC4RxgZHg==} + '@aws-sdk/crc64-nvme@3.972.5': + resolution: {integrity: sha512-2VbTstbjKdT+yKi8m7b3a9CiVac+pL/IY2PHJwsaGkkHmuuqkJZIErPck1h6P3T9ghQMLSdMPyW6Qp7Di5swFg==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-env@3.972.14': - resolution: {integrity: sha512-PvnBY9rwBuLh9MEsAng28DG+WKl+txerKgf4BU9IPAqYI7FBIo1x6q/utLf4KLyQYgSy1TLQnbQuXx5xfBGASg==} + '@aws-sdk/credential-provider-env@3.972.24': + resolution: {integrity: sha512-FWg8uFmT6vQM7VuzELzwVo5bzExGaKHdubn0StjgrcU5FvuLExUe+k06kn/40uKv59rYzhez8eFNM4yYE/Yb/w==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.16': - resolution: {integrity: sha512-m/QAcvw5OahqGPjeAnKtgfWgjLxeWOYj7JSmxKK6PLyKp2S/t2TAHI6EELEzXnIz28RMgbQLukJkVAqPASVAGQ==} + '@aws-sdk/credential-provider-http@3.972.26': + resolution: {integrity: sha512-CY4ppZ+qHYqcXqBVi//sdHST1QK3KzOEiLtpLsc9W2k2vfZPKExGaQIsOwcyvjpjUEolotitmd3mUNY56IwDEA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.14': - resolution: {integrity: sha512-EGA7ufqNpZKZcD0RwM6gRDEQgwAf19wQ99R1ptdWYDJAnpcMcWiFyT0RIrgiZFLD28CwJmYjnra75hChnEveWA==} + '@aws-sdk/credential-provider-ini@3.972.28': + resolution: {integrity: sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.14': - resolution: {integrity: sha512-P2kujQHAoV7irCTv6EGyReKFofkHCjIK+F0ZYf5UxeLeecrCwtrDkHoO2Vjsv/eRUumaKblD8czuk3CLlzwGDw==} + '@aws-sdk/credential-provider-login@3.972.28': + resolution: {integrity: sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.15': - resolution: {integrity: sha512-59NBJgTcQ2FC94T+SWkN5UQgViFtrLnkswSKhG5xbjPAotOXnkEF2Bf0bfUV1F3VaXzqAPZJoZ3bpg4rr8XD5Q==} + '@aws-sdk/credential-provider-node@3.972.29': + resolution: {integrity: sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.14': - resolution: {integrity: sha512-KAF5LBkJInUPaR9dJDw8LqmbPDRTLyXyRoWVGcJQ+DcN9rxVKBRzAK+O4dTIvQtQ7xaIDZ2kY7zUmDlz6CCXdw==} + '@aws-sdk/credential-provider-process@3.972.24': + resolution: {integrity: sha512-Q2k/XLrFXhEztPHqj4SLCNID3hEPdlhh1CDLBpNnM+1L8fq7P+yON9/9M1IGN/dA5W45v44ylERfXtDAlmMNmw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.14': - resolution: {integrity: sha512-LQzIYrNABnZzkyuIguFa3VVOox9UxPpRW6PL+QYtRHaGl1Ux/+Zi54tAVK31VdeBKPKU3cxqeu8dbOgNqy+naw==} + '@aws-sdk/credential-provider-sso@3.972.28': + resolution: {integrity: sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.14': - resolution: {integrity: sha512-rOwB3vXHHHnGvAOjTgQETxVAsWjgF61XlbGd/ulvYo7EpdXs8cbIHE3PGih9tTj/65ZOegSqZGFqLaKntaI9Kw==} + '@aws-sdk/credential-provider-web-identity@3.972.28': + resolution: {integrity: sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.972.6': - resolution: {integrity: sha512-3H2bhvb7Cb/S6WFsBy/Dy9q2aegC9JmGH1inO8Lb2sWirSqpLJlZmvQHPE29h2tIxzv6el/14X/tLCQ8BQU6ZQ==} + '@aws-sdk/middleware-bucket-endpoint@3.972.8': + resolution: {integrity: sha512-WR525Rr2QJSETa9a050isktyWi/4yIGcmY3BQ1kpHqb0LqUglQHCS8R27dTJxxWNZvQ0RVGtEZjTCbZJpyF3Aw==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-expect-continue@3.972.6': - resolution: {integrity: sha512-QMdffpU+GkSGC+bz6WdqlclqIeCsOfgX8JFZ5xvwDtX+UTj4mIXm3uXu7Ko6dBseRcJz1FA6T9OmlAAY6JgJUg==} + '@aws-sdk/middleware-expect-continue@3.972.8': + resolution: {integrity: sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.973.2': - resolution: {integrity: sha512-KM6QujWdasNjRLG+f7YEqEY5D36vR6Govm7nPIwxjILpb5rJ0pPJZpYY1nrzgtlxwJIYAznfBK5YXoLOHKHyfQ==} + '@aws-sdk/middleware-flexible-checksums@3.974.6': + resolution: {integrity: sha512-YckB8k1ejbyCg/g36gUMFLNzE4W5cERIa4MtsdO+wpTmJEP0+TB7okWIt7d8TDOvnb7SwvxJ21E4TGOBxFpSWQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-host-header@3.972.6': - resolution: {integrity: sha512-5XHwjPH1lHB+1q4bfC7T8Z5zZrZXfaLcjSMwTd1HPSPrCmPFMbg3UQ5vgNWcVj0xoX4HWqTGkSf2byrjlnRg5w==} + '@aws-sdk/middleware-host-header@3.972.8': + resolution: {integrity: sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-location-constraint@3.972.6': - resolution: {integrity: sha512-XdZ2TLwyj3Am6kvUc67vquQvs6+D8npXvXgyEUJAdkUDx5oMFJKOqpK+UpJhVDsEL068WAJl2NEGzbSik7dGJQ==} + '@aws-sdk/middleware-location-constraint@3.972.8': + resolution: {integrity: sha512-KaUoFuoFPziIa98DSQsTPeke1gvGXlc5ZGMhy+b+nLxZ4A7jmJgLzjEF95l8aOQN2T/qlPP3MrAyELm8ExXucw==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-logger@3.972.6': - resolution: {integrity: sha512-iFnaMFMQdljAPrvsCVKYltPt2j40LQqukAbXvW7v0aL5I+1GO7bZ/W8m12WxW3gwyK5p5u1WlHg8TSAizC5cZw==} + '@aws-sdk/middleware-logger@3.972.8': + resolution: {integrity: sha512-CWl5UCM57WUFaFi5kB7IBY1UmOeLvNZAZ2/OZ5l20ldiJ3TiIz1pC65gYj8X0BCPWkeR1E32mpsCk1L1I4n+lA==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-recursion-detection@3.972.6': - resolution: {integrity: sha512-dY4v3of5EEMvik6+UDwQ96KfUFDk8m1oZDdkSc5lwi4o7rFrjnv0A+yTV+gu230iybQZnKgDLg/rt2P3H+Vscw==} + '@aws-sdk/middleware-recursion-detection@3.972.9': + resolution: {integrity: sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-sdk-s3@3.972.16': - resolution: {integrity: sha512-U4K1rqyJYvT/zgTI3+rN+MToa51dFnnq1VSsVJuJWPNEKcEnuZVqf7yTpkJJMkYixVW5TTi1dgupd+nmJ0JyWw==} + '@aws-sdk/middleware-sdk-s3@3.972.27': + resolution: {integrity: sha512-gomO6DZwx+1D/9mbCpcqO5tPBqYBK7DtdgjTIjZ4yvfh/S7ETwAPS0XbJgP2JD8Ycr5CwVrEkV1sFtu3ShXeOw==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-ssec@3.972.6': - resolution: {integrity: sha512-acvMUX9jF4I2Ew+Z/EA6gfaFaz9ehci5wxBmXCZeulLuv8m+iGf6pY9uKz8TPjg39bdAz3hxoE0eLP8Qz+IYlA==} + '@aws-sdk/middleware-ssec@3.972.8': + resolution: {integrity: sha512-wqlK0yO/TxEC2UsY9wIlqeeutF6jjLe0f96Pbm40XscTo57nImUk9lBcw0dPgsm0sppFtAkSlDrfpK+pC30Wqw==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-user-agent@3.972.16': - resolution: {integrity: sha512-AmVxtxn8ZkNJbuPu3KKfW9IkJgTgcEtgSwbo0NVcAb31iGvLgHXj2nbbyrUDfh2fx8otXmqL+qw1lRaTi+V3vA==} + '@aws-sdk/middleware-user-agent@3.972.28': + resolution: {integrity: sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.996.4': - resolution: {integrity: sha512-NowB1HfOnWC4kwZOnTg8E8rSL0U+RSjSa++UtEV4ipoH6JOjMLnHyGilqwl+Pe1f0Al6v9yMkSJ/8Ot0f578CQ==} + '@aws-sdk/nested-clients@3.996.18': + resolution: {integrity: sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA==} engines: {node: '>=20.0.0'} - '@aws-sdk/region-config-resolver@3.972.6': - resolution: {integrity: sha512-Aa5PusHLXAqLTX1UKDvI3pHQJtIsF7Q+3turCHqfz/1F61/zDMWfbTC8evjhrrYVAtz9Vsv3SJ/waSUeu7B6gw==} + '@aws-sdk/region-config-resolver@3.972.10': + resolution: {integrity: sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.4': - resolution: {integrity: sha512-MGa8ro0onekYIiesHX60LwKdkxK3Kd61p7TTbLwZemBqlnD9OLrk9sXZdFOIxXanJ+3AaJnV/jiX866eD/4PDg==} + '@aws-sdk/signature-v4-multi-region@3.996.15': + resolution: {integrity: sha512-Ukw2RpqvaL96CjfH/FgfBmy/ZosHBqoHBCFsN61qGg99F33vpntIVii8aNeh65XuOja73arSduskoa4OJea9RQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1001.0': - resolution: {integrity: sha512-09XAq/uIYgeZhohuGRrR/R+ek3+ljFNdzWCXdqb9rlIERDjSfNiLjTtpHgSK1xTPmC5G4yWoEAyMfTXiggS6wA==} + '@aws-sdk/token-providers@3.1021.0': + resolution: {integrity: sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA==} engines: {node: '>=20.0.0'} - '@aws-sdk/types@3.973.4': - resolution: {integrity: sha512-RW60aH26Bsc016Y9B98hC0Plx6fK5P2v/iQYwMzrSjiDh1qRMUCP6KrXHYEHe3uFvKiOC93Z9zk4BJsUi6Tj1Q==} + '@aws-sdk/types@3.973.6': + resolution: {integrity: sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-arn-parser@3.972.2': - resolution: {integrity: sha512-VkykWbqMjlSgBFDyrY3nOSqupMc6ivXuGmvci6Q3NnLq5kC+mKQe2QBZ4nrWRE/jqOxeFP2uYzLtwncYYcvQDg==} + '@aws-sdk/util-arn-parser@3.972.3': + resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-endpoints@3.996.3': - resolution: {integrity: sha512-yWIQSNiCjykLL+ezN5A+DfBb1gfXTytBxm57e64lYmwxDHNmInYHRJYYRAGWG1o77vKEiWaw4ui28e3yb1k5aQ==} + '@aws-sdk/util-endpoints@3.996.5': + resolution: {integrity: sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-locate-window@3.965.4': - resolution: {integrity: sha512-H1onv5SkgPBK2P6JR2MjGgbOnttoNzSPIRoeZTNPZYyaplwGg50zS3amXvXqF0/qfXpWEC9rLWU564QTB9bSog==} + '@aws-sdk/util-locate-window@3.965.5': + resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-user-agent-browser@3.972.6': - resolution: {integrity: sha512-Fwr/llD6GOrFgQnKaI2glhohdGuBDfHfora6iG9qsBBBR8xv1SdCSwbtf5CWlUdCw5X7g76G/9Hf0Inh0EmoxA==} + '@aws-sdk/util-user-agent-browser@3.972.8': + resolution: {integrity: sha512-B3KGXJviV2u6Cdw2SDY2aDhoJkVfY/Q/Trwk2CMSkikE1Oi6gRzxhvhIfiRpHfmIsAhV4EA54TVEX8K6CbHbkA==} - '@aws-sdk/util-user-agent-node@3.973.1': - resolution: {integrity: sha512-kmgbDqT7aCBEVrqESM2JUjbf0zhDUQ7wnt3q1RuVS+3mglrcfVb2bwkbmf38npOyyPGtQPV5dWN3m+sSFAVAgQ==} + '@aws-sdk/util-user-agent-node@3.973.14': + resolution: {integrity: sha512-vNSB/DYaPOyujVZBg/zUznH9QC142MaTHVmaFlF7uzzfg3CgT9f/l4C0Yi+vU/tbBhxVcXVB90Oohk5+o+ZbWw==} engines: {node: '>=20.0.0'} peerDependencies: aws-crt: '>=1.0.0' @@ -700,12 +700,12 @@ packages: aws-crt: optional: true - '@aws-sdk/xml-builder@3.972.9': - resolution: {integrity: sha512-ItnlMgSqkPrUfJs7EsvU/01zw5UeIb2tNPhD09LBLHbg+g+HDiKibSLwpkuz/ZIlz4F2IMn+5XgE4AK/pfPuog==} + '@aws-sdk/xml-builder@3.972.16': + resolution: {integrity: sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==} engines: {node: '>=20.0.0'} - '@aws/lambda-invoke-store@0.2.3': - resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} + '@aws/lambda-invoke-store@0.2.4': + resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} engines: {node: '>=18.0.0'} '@babel/code-frame@7.29.0': @@ -754,12 +754,12 @@ packages: resolution: {integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==} engines: {node: '>=6.9.0'} - '@babel/helpers@7.28.6': - resolution: {integrity: sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==} + '@babel/helpers@7.29.2': + resolution: {integrity: sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==} engines: {node: '>=6.9.0'} - '@babel/parser@7.29.0': - resolution: {integrity: sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==} + '@babel/parser@7.29.2': + resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==} engines: {node: '>=6.0.0'} hasBin: true @@ -783,8 +783,8 @@ packages: resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} engines: {node: '>=0.1.90'} - '@contentstack/cli-audit@1.19.0': - resolution: {integrity: sha512-NwET9cBeCmM5tM3faJ8wG4YMX9JrGYo7lYE7WQhmVUOhC/7bbYKPpWb6Jmy3JMvzP9YSwmSrztEUdwotB4F6WQ==} + '@contentstack/cli-audit@1.19.1': + resolution: {integrity: sha512-k3bu/NLXGu7/ntMtWh/kd4smytQ44Z4wlixCajoPxKR2k1A/4OaZD6n1WQ7TcJ7biosNU9Pl83PO4oKMdxrEfA==} engines: {node: '>=16'} hasBin: true @@ -792,32 +792,32 @@ packages: resolution: {integrity: sha512-0v7rW02EYIEhLYU529zvXpc+T0x5I+zVagkENnlPIrh37huJFP9KKt3l+IGNC8PI5jsNE1RF3AylVDYz97Pf2A==} engines: {node: '>=14.0.0'} - '@contentstack/cli-cm-branches@1.7.0': - resolution: {integrity: sha512-5uCqqzB1mGlHX8Ac3+3bteUuQ0CNBHmAZ6mRj9D6/DPTW7spbOHkKWksMyKuSrbkOTj57otjZUpcWvZobuW5kg==} + '@contentstack/cli-cm-branches@1.7.1': + resolution: {integrity: sha512-IUU/Hs7/LXH/vGRkqGf+CQhDSMFLLa0KqYLOi+LneBU/irrQSC6ue+/oaGVJw4i59Wy/rV5U3buCreAKlSzd2Q==} engines: {node: '>=14.0.0'} - '@contentstack/cli-cm-bulk-publish@1.11.0': - resolution: {integrity: sha512-oQd1se/3qa18exmuIFvBL+zH3wuSWHuS4eV1nAyYA6pVl8HU4hqcCj1ygHdMdUx7ZLckESgZjeOfeglbUJg3zQ==} + '@contentstack/cli-cm-bulk-publish@1.11.1': + resolution: {integrity: sha512-0mjpOfzSMX/vJFXiLhQwgefCuVuiqBH2e/8BR2ks4a6/8ISquIcACkJ7Zosh+8LjiAxSOSJtCtykn6nJIaV2EA==} engines: {node: '>=14.0.0'} - '@contentstack/cli-cm-clone@1.21.0': - resolution: {integrity: sha512-StImHRgX+9iGjdnFOM3AAdU7+ccOrMk3mr1p0oaIlqPLu5QDrMqNZialhuV0BjZ0BXPhLm93bpXuEKg0cCK+5w==} + '@contentstack/cli-cm-clone@1.21.1': + resolution: {integrity: sha512-s/UJhEtYqjPKhLbys0eVoDz+yYgESSki5Z+4jQr/PaGcoW3GM4hDro1d+c/rG3/KhKy4VdhnZZcPVDdezRSsvQ==} engines: {node: '>=14.0.0'} '@contentstack/cli-cm-export-to-csv@1.12.0': resolution: {integrity: sha512-eJHxBwO/k6L979jugS2G9dUQp9csuP1IL5boK4/2tT61H55ah3/EQR0TfDq8kwVQaUaRMmI/JbDscrauOR48TA==} engines: {node: '>=18.0.0'} - '@contentstack/cli-cm-export@1.24.0': - resolution: {integrity: sha512-eRdSt3z08W7MNH1CnXhZSwJ4o/jodYIBGv+f1G3Zs3ZrthNToDQBR7018gmVjjoZYXIRMvaHo8Nw8eZgbYtchA==} + '@contentstack/cli-cm-export@1.24.1': + resolution: {integrity: sha512-zTaun28JcIjT88NCi+p1gZabZVkJO6bQLOBs+QGHPOUxRBn5t++AYOuomm7iA1ZJAzsfMN5FF1lWRuRZ2qPf2A==} engines: {node: '>=14.0.0'} - '@contentstack/cli-cm-import-setup@1.8.0': - resolution: {integrity: sha512-h4vTeFNfKF09NTbJmki1p4EYEh9KxMJn3G7U3CJ7IurcxI6ccNxJuEFhsCHYGwX+UwmZ8TcJMqmbsHwAMQjP0Q==} + '@contentstack/cli-cm-import-setup@1.8.1': + resolution: {integrity: sha512-xffwa0MXGH8dk+FGOefETnv2LOOyAwKPwG9+QLoLqLxoCRadiMKsTcaw8ejZcB7i1NXbpEp4aWtOkBLOwEc9KA==} engines: {node: '>=14.0.0'} - '@contentstack/cli-cm-import@1.32.0': - resolution: {integrity: sha512-S+WVN+b5kMa+VaaZSM0oaaYsR3SGTOjlJlvzeFe0Kykkxau6DKbEMvDE2esmsFn21HpUxjLb58//7KS5BhedhQ==} + '@contentstack/cli-cm-import@1.32.1': + resolution: {integrity: sha512-WPdKpFq2iYAoCXrMp9ZlahgzhuHbovQqmQSTxvxCBoQZPt8YX2jr8fu6wgzGEhvI8ra4Tpx/br0n2vEMBbSQSg==} engines: {node: '>=14.0.0'} '@contentstack/cli-cm-migrate-rte@1.6.4': @@ -840,9 +840,9 @@ packages: resolution: {integrity: sha512-WURtexv9+lQWNPriWvaakHS+9SmGoO3Aq/zLu5SNt2k2Mj+awJwUehYcuZIVflTVzXlUQvxtU0Bn/mCpX2jkmQ==} engines: {node: '>=14.0.0'} - '@contentstack/cli-launch@1.9.6': - resolution: {integrity: sha512-CQN9932sQiek7r+fvsL96Y9+1a14e8mpB3NdC+ASa6tYhi/UKEO78cPF03Oj7+W7Qg1O1/YmRJSxjOdE3m3KMA==} - engines: {node: '>=14.0.0'} + '@contentstack/cli-launch@1.9.7': + resolution: {integrity: sha512-simTT1JlwNbZ1VLMPb3RPWAZYkjoEMmLgWggsCZabL4b+FkQOVdM7fZGYrBis0qKl+bw3t6YlScMn8zBIRBXRQ==} + engines: {node: '>=22.0.0'} hasBin: true '@contentstack/cli-migration@1.12.0': @@ -855,8 +855,8 @@ packages: '@contentstack/cli-utilities@1.18.0': resolution: {integrity: sha512-JEm6ElIegkcibHUEjRF+Id9529bAXBqkf0Givs9GL5CZE7d8eiLzFCUnlb51VZynk1g5+SmjY5nSeghrmcVSPg==} - '@contentstack/cli-variants@1.4.0': - resolution: {integrity: sha512-avYWCteVVfChz2m/r6VzLAeRKboJjwZVZuQUEONJb0wOeSlFfUC/koYbUaoAtN8v+0vbVx4Z/EkQAaTJIMDbMg==} + '@contentstack/cli-variants@1.4.1': + resolution: {integrity: sha512-iLl1QFeVLIxJGRSbBoTXp3OyfujBj74zj47yzQKo6eSUMBF4Eelb75zFrQlx2gI3UQY9hRX1KnAtqcfRk7jGmg==} '@contentstack/json-rte-serializer@2.1.0': resolution: {integrity: sha512-klw+0kH5UtL4mHGDP7A8olZIaA4CoyAVzveYqso8uxeDXKkTvwF8D5HBhCqQLr0NXwhofl+FF431cbzGZ3TNCg==} @@ -878,14 +878,14 @@ packages: '@dabh/diagnostics@2.0.8': resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} - '@emnapi/core@1.8.1': - resolution: {integrity: sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==} + '@emnapi/core@1.9.2': + resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} - '@emnapi/runtime@1.8.1': - resolution: {integrity: sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==} + '@emnapi/runtime@1.9.2': + resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} - '@emnapi/wasi-threads@1.1.0': - resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==} + '@emnapi/wasi-threads@1.2.1': + resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} '@es-joy/jsdoccomment@0.50.2': resolution: {integrity: sha512-YAdE/IJSpwbOTiaURNCKECdAwqrJuFiZhylmesBcIRawtYKnBR2wxPhoIewMg+Yu+QuYvHfJNReWpoxGBKOChA==} @@ -934,16 +934,16 @@ packages: resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/eslintrc@3.3.4': - resolution: {integrity: sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==} + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/js@8.57.1': resolution: {integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@eslint/js@9.39.3': - resolution: {integrity: sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==} + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/json@0.13.2': @@ -1198,28 +1198,32 @@ packages: resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} engines: {node: '>=12.4.0'} - '@oclif/core@4.8.3': - resolution: {integrity: sha512-f7Rc1JBZO0wNMyDmNzP5IFOv5eM97S9pO4JUFdu2OLyk73YeBI9wog1Yyf666NOQvyptkbG1xh8inzMDQLNTyQ==} + '@oclif/core@4.10.5': + resolution: {integrity: sha512-qcdCF7NrdWPfme6Kr34wwljRCXbCVpL1WVxiNy0Ep6vbWKjxAjFQwuhqkoyL0yjI+KdwtLcOCGn5z2yzdijc8w==} + engines: {node: '>=18.0.0'} + + '@oclif/core@4.9.0': + resolution: {integrity: sha512-k/ntRgDcUprTT+aaNoF+whk3cY3f9fRD2lkF6ul7JeCUg2MaMXVXZXfbRhJCfsiX51X8/5Pqo0LGdO9SLYXNHg==} engines: {node: '>=18.0.0'} - '@oclif/plugin-help@6.2.37': - resolution: {integrity: sha512-5N/X/FzlJaYfpaHwDC0YHzOzKDWa41s9t+4FpCDu4f9OMReds4JeNBaaWk9rlIzdKjh2M6AC5Q18ORfECRkHGA==} + '@oclif/plugin-help@6.2.43': + resolution: {integrity: sha512-aef92VxQECLFDjI4CpgCL+jDuAsc3jzq5gBTLwNzj60mmrh8eDd7B0ABIgWXphb6gdARSRil+/FPtcdiSSupRA==} engines: {node: '>=18.0.0'} - '@oclif/plugin-not-found@3.2.74': - resolution: {integrity: sha512-6RD/EuIUGxAYR45nMQg+nw+PqwCXUxkR6Eyn+1fvbVjtb9d+60OPwB77LCRUI4zKNI+n0LOFaMniEdSpb+A7kQ==} + '@oclif/plugin-not-found@3.2.80': + resolution: {integrity: sha512-yTLjWvR1r/Rd/cO2LxHdMCDoL5sQhBYRUcOMCmxZtWVWhx4rAZ8KVUPDVsb+SvjJDV5ADTDBgt1H52fFx7YWqg==} engines: {node: '>=18.0.0'} - '@oclif/plugin-plugins@5.4.56': - resolution: {integrity: sha512-mZjRudlmVSr6Stz0CVFuaIZOjwZ5DqjWepQCR/yK9nbs8YunGautpuxBx/CcqaEH29xiQfsuNOIUWa1w/+3VSA==} + '@oclif/plugin-plugins@5.4.59': + resolution: {integrity: sha512-W/F3vNwhC3BHmn1o4g92H8kY4rYw9RsgVRm+GDulZg0XqSoseJYCMQell6ajTj8xljrrG0dZSTuEfc4ETwC2VA==} engines: {node: '>=18.0.0'} - '@oclif/plugin-warn-if-update-available@3.1.55': - resolution: {integrity: sha512-VIEBoaoMOCjl3y+w/kdfZMODi0mVMnDuM0vkBf3nqeidhRXVXq87hBqYDdRwN1XoD+eDfE8tBbOP7qtSOONztQ==} + '@oclif/plugin-warn-if-update-available@3.1.60': + resolution: {integrity: sha512-cRKBZm14IuA6G8W84dfd3iXj3BTAoxQ5o3pUE8DKEQ4n/tVha20t5nkVeD+ISC68e0Fuw5koTMvRwXb1lJSnzg==} engines: {node: '>=18.0.0'} - '@oclif/test@4.1.16': - resolution: {integrity: sha512-LPrF++WGGBE0pe3GUkzEteI5WrwTT7usGpIMSxkyJhYnFXKkwASyTcCmOhNH4QC65kqsLt1oBA88BMkCJqPtxg==} + '@oclif/test@4.1.18': + resolution: {integrity: sha512-SIy/8x8OHKh5Z32aS8jpzTDc+FC9531mMyypoH5HiZ0vXNjKJ9+SpbW4nYK2c/X44WcPdmjIImStZ/Wgc2zZnQ==} engines: {node: '>=18.0.0'} peerDependencies: '@oclif/core': '>= 3.0.0' @@ -1307,128 +1311,128 @@ packages: rollup: optional: true - '@rollup/rollup-android-arm-eabi@4.59.0': - resolution: {integrity: sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==} + '@rollup/rollup-android-arm-eabi@4.60.1': + resolution: {integrity: sha512-d6FinEBLdIiK+1uACUttJKfgZREXrF0Qc2SmLII7W2AD8FfiZ9Wjd+rD/iRuf5s5dWrr1GgwXCvPqOuDquOowA==} cpu: [arm] os: [android] - '@rollup/rollup-android-arm64@4.59.0': - resolution: {integrity: sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==} + '@rollup/rollup-android-arm64@4.60.1': + resolution: {integrity: sha512-YjG/EwIDvvYI1YvYbHvDz/BYHtkY4ygUIXHnTdLhG+hKIQFBiosfWiACWortsKPKU/+dUwQQCKQM3qrDe8c9BA==} cpu: [arm64] os: [android] - '@rollup/rollup-darwin-arm64@4.59.0': - resolution: {integrity: sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==} + '@rollup/rollup-darwin-arm64@4.60.1': + resolution: {integrity: sha512-mjCpF7GmkRtSJwon+Rq1N8+pI+8l7w5g9Z3vWj4T7abguC4Czwi3Yu/pFaLvA3TTeMVjnu3ctigusqWUfjZzvw==} cpu: [arm64] os: [darwin] - '@rollup/rollup-darwin-x64@4.59.0': - resolution: {integrity: sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==} + '@rollup/rollup-darwin-x64@4.60.1': + resolution: {integrity: sha512-haZ7hJ1JT4e9hqkoT9R/19XW2QKqjfJVv+i5AGg57S+nLk9lQnJ1F/eZloRO3o9Scy9CM3wQ9l+dkXtcBgN5Ew==} cpu: [x64] os: [darwin] - '@rollup/rollup-freebsd-arm64@4.59.0': - resolution: {integrity: sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==} + '@rollup/rollup-freebsd-arm64@4.60.1': + resolution: {integrity: sha512-czw90wpQq3ZsAVBlinZjAYTKduOjTywlG7fEeWKUA7oCmpA8xdTkxZZlwNJKWqILlq0wehoZcJYfBvOyhPTQ6w==} cpu: [arm64] os: [freebsd] - '@rollup/rollup-freebsd-x64@4.59.0': - resolution: {integrity: sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==} + '@rollup/rollup-freebsd-x64@4.60.1': + resolution: {integrity: sha512-KVB2rqsxTHuBtfOeySEyzEOB7ltlB/ux38iu2rBQzkjbwRVlkhAGIEDiiYnO2kFOkJp+Z7pUXKyrRRFuFUKt+g==} cpu: [x64] os: [freebsd] - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': - resolution: {integrity: sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==} + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': + resolution: {integrity: sha512-L+34Qqil+v5uC0zEubW7uByo78WOCIrBvci69E7sFASRl0X7b/MB6Cqd1lky/CtcSVTydWa2WZwFuWexjS5o6g==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm-musleabihf@4.59.0': - resolution: {integrity: sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==} + '@rollup/rollup-linux-arm-musleabihf@4.60.1': + resolution: {integrity: sha512-n83O8rt4v34hgFzlkb1ycniJh7IR5RCIqt6mz1VRJD6pmhRi0CXdmfnLu9dIUS6buzh60IvACM842Ffb3xd6Gg==} cpu: [arm] os: [linux] - '@rollup/rollup-linux-arm64-gnu@4.59.0': - resolution: {integrity: sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==} + '@rollup/rollup-linux-arm64-gnu@4.60.1': + resolution: {integrity: sha512-Nql7sTeAzhTAja3QXeAI48+/+GjBJ+QmAH13snn0AJSNL50JsDqotyudHyMbO2RbJkskbMbFJfIJKWA6R1LCJQ==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.59.0': - resolution: {integrity: sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==} + '@rollup/rollup-linux-arm64-musl@4.60.1': + resolution: {integrity: sha512-+pUymDhd0ys9GcKZPPWlFiZ67sTWV5UU6zOJat02M1+PiuSGDziyRuI/pPue3hoUwm2uGfxdL+trT6Z9rxnlMA==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-loong64-gnu@4.59.0': - resolution: {integrity: sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==} + '@rollup/rollup-linux-loong64-gnu@4.60.1': + resolution: {integrity: sha512-VSvgvQeIcsEvY4bKDHEDWcpW4Yw7BtlKG1GUT4FzBUlEKQK0rWHYBqQt6Fm2taXS+1bXvJT6kICu5ZwqKCnvlQ==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-loong64-musl@4.59.0': - resolution: {integrity: sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==} + '@rollup/rollup-linux-loong64-musl@4.60.1': + resolution: {integrity: sha512-4LqhUomJqwe641gsPp6xLfhqWMbQV04KtPp7/dIp0nzPxAkNY1AbwL5W0MQpcalLYk07vaW9Kp1PBhdpZYYcEw==} cpu: [loong64] os: [linux] - '@rollup/rollup-linux-ppc64-gnu@4.59.0': - resolution: {integrity: sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==} + '@rollup/rollup-linux-ppc64-gnu@4.60.1': + resolution: {integrity: sha512-tLQQ9aPvkBxOc/EUT6j3pyeMD6Hb8QF2BTBnCQWP/uu1lhc9AIrIjKnLYMEroIz/JvtGYgI9dF3AxHZNaEH0rw==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-ppc64-musl@4.59.0': - resolution: {integrity: sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==} + '@rollup/rollup-linux-ppc64-musl@4.60.1': + resolution: {integrity: sha512-RMxFhJwc9fSXP6PqmAz4cbv3kAyvD1etJFjTx4ONqFP9DkTkXsAMU4v3Vyc5BgzC+anz7nS/9tp4obsKfqkDHg==} cpu: [ppc64] os: [linux] - '@rollup/rollup-linux-riscv64-gnu@4.59.0': - resolution: {integrity: sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==} + '@rollup/rollup-linux-riscv64-gnu@4.60.1': + resolution: {integrity: sha512-QKgFl+Yc1eEk6MmOBfRHYF6lTxiiiV3/z/BRrbSiW2I7AFTXoBFvdMEyglohPj//2mZS4hDOqeB0H1ACh3sBbg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-riscv64-musl@4.59.0': - resolution: {integrity: sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==} + '@rollup/rollup-linux-riscv64-musl@4.60.1': + resolution: {integrity: sha512-RAjXjP/8c6ZtzatZcA1RaQr6O1TRhzC+adn8YZDnChliZHviqIjmvFwHcxi4JKPSDAt6Uhf/7vqcBzQJy0PDJg==} cpu: [riscv64] os: [linux] - '@rollup/rollup-linux-s390x-gnu@4.59.0': - resolution: {integrity: sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==} + '@rollup/rollup-linux-s390x-gnu@4.60.1': + resolution: {integrity: sha512-wcuocpaOlaL1COBYiA89O6yfjlp3RwKDeTIA0hM7OpmhR1Bjo9j31G1uQVpDlTvwxGn2nQs65fBFL5UFd76FcQ==} cpu: [s390x] os: [linux] - '@rollup/rollup-linux-x64-gnu@4.59.0': - resolution: {integrity: sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==} + '@rollup/rollup-linux-x64-gnu@4.60.1': + resolution: {integrity: sha512-77PpsFQUCOiZR9+LQEFg9GClyfkNXj1MP6wRnzYs0EeWbPcHs02AXu4xuUbM1zhwn3wqaizle3AEYg5aeoohhg==} cpu: [x64] os: [linux] - '@rollup/rollup-linux-x64-musl@4.59.0': - resolution: {integrity: sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==} + '@rollup/rollup-linux-x64-musl@4.60.1': + resolution: {integrity: sha512-5cIATbk5vynAjqqmyBjlciMJl1+R/CwX9oLk/EyiFXDWd95KpHdrOJT//rnUl4cUcskrd0jCCw3wpZnhIHdD9w==} cpu: [x64] os: [linux] - '@rollup/rollup-openbsd-x64@4.59.0': - resolution: {integrity: sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==} + '@rollup/rollup-openbsd-x64@4.60.1': + resolution: {integrity: sha512-cl0w09WsCi17mcmWqqglez9Gk8isgeWvoUZ3WiJFYSR3zjBQc2J5/ihSjpl+VLjPqjQ/1hJRcqBfLjssREQILw==} cpu: [x64] os: [openbsd] - '@rollup/rollup-openharmony-arm64@4.59.0': - resolution: {integrity: sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==} + '@rollup/rollup-openharmony-arm64@4.60.1': + resolution: {integrity: sha512-4Cv23ZrONRbNtbZa37mLSueXUCtN7MXccChtKpUnQNgF010rjrjfHx3QxkS2PI7LqGT5xXyYs1a7LbzAwT0iCA==} cpu: [arm64] os: [openharmony] - '@rollup/rollup-win32-arm64-msvc@4.59.0': - resolution: {integrity: sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==} + '@rollup/rollup-win32-arm64-msvc@4.60.1': + resolution: {integrity: sha512-i1okWYkA4FJICtr7KpYzFpRTHgy5jdDbZiWfvny21iIKky5YExiDXP+zbXzm3dUcFpkEeYNHgQ5fuG236JPq0g==} cpu: [arm64] os: [win32] - '@rollup/rollup-win32-ia32-msvc@4.59.0': - resolution: {integrity: sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==} + '@rollup/rollup-win32-ia32-msvc@4.60.1': + resolution: {integrity: sha512-u09m3CuwLzShA0EYKMNiFgcjjzwqtUMLmuCJLeZWjjOYA3IT2Di09KaxGBTP9xVztWyIWjVdsB2E9goMjZvTQg==} cpu: [ia32] os: [win32] - '@rollup/rollup-win32-x64-gnu@4.59.0': - resolution: {integrity: sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==} + '@rollup/rollup-win32-x64-gnu@4.60.1': + resolution: {integrity: sha512-k+600V9Zl1CM7eZxJgMyTUzmrmhB/0XZnF4pRypKAlAgxmedUA+1v9R+XOFv56W4SlHEzfeMtzujLJD22Uz5zg==} cpu: [x64] os: [win32] - '@rollup/rollup-win32-x64-msvc@4.59.0': - resolution: {integrity: sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==} + '@rollup/rollup-win32-x64-msvc@4.60.1': + resolution: {integrity: sha512-lWMnixq/QzxyhTV6NjQJ4SFo1J6PvOX8vUx5Wb4bBPsEb+8xZ89Bz6kOXpfXj9ak9AHTQVQzlgzBEc1SyM27xQ==} cpu: [x64] os: [win32] @@ -1454,226 +1458,222 @@ packages: '@sinonjs/commons@3.0.1': resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} - '@sinonjs/fake-timers@15.1.1': - resolution: {integrity: sha512-cO5W33JgAPbOh07tvZjUOJ7oWhtaqGHiZw+11DPbyqh2kHTBc3eF/CjJDeQ4205RLQsX6rxCuYOroFQwl7JDRw==} + '@sinonjs/fake-timers@15.3.0': + resolution: {integrity: sha512-m2xozxSfCIxjDdvbhIWazlP2i2aha/iUmbl94alpsIbd3iLTfeXgfBVbwyWogB6l++istyGZqamgA/EcqYf+Bg==} - '@sinonjs/samsam@8.0.3': - resolution: {integrity: sha512-hw6HbX+GyVZzmaYNh82Ecj1vdGZrqVIn/keDTg63IgAwiQPO+xCz99uG6Woqgb4tM0mUiFENKZ4cqd7IX94AXQ==} + '@sinonjs/samsam@9.0.3': + resolution: {integrity: sha512-ZgYY7Dc2RW+OUdnZ1DEHg00lhRt+9BjymPKHog4PRFzr1U3MbK57+djmscWyKxzO1qfunHqs4N45WWyKIFKpiQ==} - '@smithy/abort-controller@4.2.10': - resolution: {integrity: sha512-qocxM/X4XGATqQtUkbE9SPUB6wekBi+FyJOMbPj0AhvyvFGYEmOlz6VB22iMePCQsFmMIvFSeViDvA7mZJG47g==} + '@smithy/chunked-blob-reader-native@4.2.3': + resolution: {integrity: sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==} engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader-native@4.2.2': - resolution: {integrity: sha512-QzzYIlf4yg0w5TQaC9VId3B3ugSk1MI/wb7tgcHtd7CBV9gNRKZrhc2EPSxSZuDy10zUZ0lomNMgkc6/VVe8xg==} + '@smithy/chunked-blob-reader@5.2.2': + resolution: {integrity: sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==} engines: {node: '>=18.0.0'} - '@smithy/chunked-blob-reader@5.2.1': - resolution: {integrity: sha512-y5d4xRiD6TzeP5BWlb+Ig/VFqF+t9oANNhGeMqyzU7obw7FYgTgVi50i5JqBTeKp+TABeDIeeXFZdz65RipNtA==} + '@smithy/config-resolver@4.4.13': + resolution: {integrity: sha512-iIzMC5NmOUP6WL6o8iPBjFhUhBZ9pPjpUpQYWMUFQqKyXXzOftbfK8zcQCz/jFV1Psmf05BK5ypx4K2r4Tnwdg==} engines: {node: '>=18.0.0'} - '@smithy/config-resolver@4.4.9': - resolution: {integrity: sha512-ejQvXqlcU30h7liR9fXtj7PIAau1t/sFbJpgWPfiYDs7zd16jpH0IsSXKcba2jF6ChTXvIjACs27kNMc5xxE2Q==} + '@smithy/core@3.23.13': + resolution: {integrity: sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q==} engines: {node: '>=18.0.0'} - '@smithy/core@3.23.7': - resolution: {integrity: sha512-/+ldRdtiO5Cb26afAZOG1FZM0x7D4AYdjpyOv2OScJw+4C7X+OLdRnNKF5UyUE0VpPgSKr3rnF/kvprRA4h2kg==} + '@smithy/credential-provider-imds@4.2.12': + resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} engines: {node: '>=18.0.0'} - '@smithy/credential-provider-imds@4.2.10': - resolution: {integrity: sha512-3bsMLJJLTZGZqVGGeBVFfLzuRulVsGTj12BzRKODTHqUABpIr0jMN1vN3+u6r2OfyhAQ2pXaMZWX/swBK5I6PQ==} + '@smithy/eventstream-codec@4.2.12': + resolution: {integrity: sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-codec@4.2.10': - resolution: {integrity: sha512-A4ynrsFFfSXUHicfTcRehytppFBcY3HQxEGYiyGktPIOye3Ot7fxpiy4VR42WmtGI4Wfo6OXt/c1Ky1nUFxYYQ==} + '@smithy/eventstream-serde-browser@4.2.12': + resolution: {integrity: sha512-XUSuMxlTxV5pp4VpqZf6Sa3vT/Q75FVkLSpSSE3KkWBvAQWeuWt1msTv8fJfgA4/jcJhrbrbMzN1AC/hvPmm5A==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-browser@4.2.10': - resolution: {integrity: sha512-0xupsu9yj9oDVuQ50YCTS9nuSYhGlrwqdaKQel9y2Fz7LU9fNErVlw9N0o4pm4qqvWEGbSTI4HKc6XJfB30MVw==} + '@smithy/eventstream-serde-config-resolver@4.3.12': + resolution: {integrity: sha512-7epsAZ3QvfHkngz6RXQYseyZYHlmWXSTPOfPmXkiS+zA6TBNo1awUaMFL9vxyXlGdoELmCZyZe1nQE+imbmV+Q==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-config-resolver@4.3.10': - resolution: {integrity: sha512-8kn6sinrduk0yaYHMJDsNuiFpXwQwibR7n/4CDUqn4UgaG+SeBHu5jHGFdU9BLFAM7Q4/gvr9RYxBHz9/jKrhA==} + '@smithy/eventstream-serde-node@4.2.12': + resolution: {integrity: sha512-D1pFuExo31854eAvg89KMn9Oab/wEeJR6Buy32B49A9Ogdtx5fwZPqBHUlDzaCDpycTFk2+fSQgX689Qsk7UGA==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-node@4.2.10': - resolution: {integrity: sha512-uUrxPGgIffnYfvIOUmBM5i+USdEBRTdh7mLPttjphgtooxQ8CtdO1p6K5+Q4BBAZvKlvtJ9jWyrWpBJYzBKsyQ==} + '@smithy/eventstream-serde-universal@4.2.12': + resolution: {integrity: sha512-+yNuTiyBACxOJUTvbsNsSOfH9G9oKbaJE1lNL3YHpGcuucl6rPZMi3nrpehpVOVR2E07YqFFmtwpImtpzlouHQ==} engines: {node: '>=18.0.0'} - '@smithy/eventstream-serde-universal@4.2.10': - resolution: {integrity: sha512-aArqzOEvcs2dK+xQVCgLbpJQGfZihw8SD4ymhkwNTtwKbnrzdhJsFDKuMQnam2kF69WzgJYOU5eJlCx+CA32bw==} + '@smithy/fetch-http-handler@5.3.15': + resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.3.12': - resolution: {integrity: sha512-muS5tFw+A/uo+U+yig06vk1776UFM+aAp9hFM8efI4ZcHhTcgv6NTeK4x7ltHeMPBwnhEjcf0MULTyxNkSNxDw==} + '@smithy/hash-blob-browser@4.2.13': + resolution: {integrity: sha512-YrF4zWKh+ghLuquldj6e/RzE3xZYL8wIPfkt0MqCRphVICjyyjH8OwKD7LLlKpVEbk4FLizFfC1+gwK6XQdR3g==} engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.2.11': - resolution: {integrity: sha512-DrcAx3PM6AEbWZxsKl6CWAGnVwiz28Wp1ZhNu+Hi4uI/6C1PIZBIaPM2VoqBDAsOWbM6ZVzOEQMxFLLdmb4eBQ==} + '@smithy/hash-node@4.2.12': + resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} engines: {node: '>=18.0.0'} - '@smithy/hash-node@4.2.10': - resolution: {integrity: sha512-1VzIOI5CcsvMDvP3iv1vG/RfLJVVVc67dCRyLSB2Hn9SWCZrDO3zvcIzj3BfEtqRW5kcMg5KAeVf1K3dR6nD3w==} + '@smithy/hash-stream-node@4.2.12': + resolution: {integrity: sha512-O3YbmGExeafuM/kP7Y8r6+1y0hIh3/zn6GROx0uNlB54K9oihAL75Qtc+jFfLNliTi6pxOAYZrRKD9A7iA6UFw==} engines: {node: '>=18.0.0'} - '@smithy/hash-stream-node@4.2.10': - resolution: {integrity: sha512-w78xsYrOlwXKwN5tv1GnKIRbHb1HygSpeZMP6xDxCPGf1U/xDHjCpJu64c5T35UKyEPwa0bPeIcvU69VY3khUA==} - engines: {node: '>=18.0.0'} - - '@smithy/invalid-dependency@4.2.10': - resolution: {integrity: sha512-vy9KPNSFUU0ajFYk0sDZIYiUlAWGEAhRfehIr5ZkdFrRFTAuXEPUd41USuqHU6vvLX4r6Q9X7MKBco5+Il0Org==} + '@smithy/invalid-dependency@4.2.12': + resolution: {integrity: sha512-/4F1zb7Z8LOu1PalTdESFHR0RbPwHd3FcaG1sI3UEIriQTWakysgJr65lc1jj6QY5ye7aFsisajotH6UhWfm/g==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/is-array-buffer@4.2.1': - resolution: {integrity: sha512-Yfu664Qbf1B4IYIsYgKoABt010daZjkaCRvdU/sPnZG6TtHOB0md0RjNdLGzxe5UIdn9js4ftPICzmkRa9RJ4Q==} + '@smithy/is-array-buffer@4.2.2': + resolution: {integrity: sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==} engines: {node: '>=18.0.0'} - '@smithy/md5-js@4.2.10': - resolution: {integrity: sha512-Op+Dh6dPLWTjWITChFayDllIaCXRofOed8ecpggTC5fkh8yXes0vAEX7gRUfjGK+TlyxoCAA05gHbZW/zB9JwQ==} + '@smithy/md5-js@4.2.12': + resolution: {integrity: sha512-W/oIpHCpWU2+iAkfZYyGWE+qkpuf3vEXHLxQQDx9FPNZTTdnul0dZ2d/gUFrtQ5je1G2kp4cjG0/24YueG2LbQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-content-length@4.2.10': - resolution: {integrity: sha512-TQZ9kX5c6XbjhaEBpvhSvMEZ0klBs1CFtOdPFwATZSbC9UeQfKHPLPN9Y+I6wZGMOavlYTOlHEPDrt42PMSH9w==} + '@smithy/middleware-content-length@4.2.12': + resolution: {integrity: sha512-YE58Yz+cvFInWI/wOTrB+DbvUVz/pLn5mC5MvOV4fdRUc6qGwygyngcucRQjAhiCEbmfLOXX0gntSIcgMvAjmA==} engines: {node: '>=18.0.0'} - '@smithy/middleware-endpoint@4.4.21': - resolution: {integrity: sha512-CoVGZaqIC0tEjz0ga3ciwCMA5fd/4lIOwO2wx0fH+cTi1zxSFZnMJbIiIF9G1d4vRSDyTupDrpS3FKBBJGkRZg==} + '@smithy/middleware-endpoint@4.4.28': + resolution: {integrity: sha512-p1gfYpi91CHcs5cBq982UlGlDrxoYUX6XdHSo91cQ2KFuz6QloHosO7Jc60pJiVmkWrKOV8kFYlGFFbQ2WUKKQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-retry@4.4.38': - resolution: {integrity: sha512-WdHvdhjE6Fj78vxFwDKFDwlqGOGRUWrwGeuENUbTVE46Su9mnQM+dXHtbnCaQvwuSYrRsjpe8zUsFpwUp/azlA==} + '@smithy/middleware-retry@4.4.46': + resolution: {integrity: sha512-SpvWNNOPOrKQGUqZbEPO+es+FRXMWvIyzUKUOYdDgdlA6BdZj/R58p4umoQ76c2oJC44PiM7mKizyyex1IJzow==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.2.11': - resolution: {integrity: sha512-STQdONGPwbbC7cusL60s7vOa6He6A9w2jWhoapL0mgVjmR19pr26slV+yoSP76SIssMTX/95e5nOZ6UQv6jolg==} + '@smithy/middleware-serde@4.2.16': + resolution: {integrity: sha512-beqfV+RZ9RSv+sQqor3xroUUYgRFCGRw6niGstPG8zO9LgTl0B0MCucxjmrH/2WwksQN7UUgI7KNANoZv+KALA==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.2.10': - resolution: {integrity: sha512-pmts/WovNcE/tlyHa8z/groPeOtqtEpp61q3W0nW1nDJuMq/x+hWa/OVQBtgU0tBqupeXq0VBOLA4UZwE8I0YA==} + '@smithy/middleware-stack@4.2.12': + resolution: {integrity: sha512-kruC5gRHwsCOuyCd4ouQxYjgRAym2uDlCvQ5acuMtRrcdfg7mFBg6blaxcJ09STpt3ziEkis6bhg1uwrWU7txw==} engines: {node: '>=18.0.0'} - '@smithy/node-config-provider@4.3.10': - resolution: {integrity: sha512-UALRbJtVX34AdP2VECKVlnNgidLHA2A7YgcJzwSBg1hzmnO/bZBHl/LDQQyYifzUwp1UOODnl9JJ3KNawpUJ9w==} + '@smithy/node-config-provider@4.3.12': + resolution: {integrity: sha512-tr2oKX2xMcO+rBOjobSwVAkV05SIfUKz8iI53rzxEmgW3GOOPOv0UioSDk+J8OpRQnpnhsO3Af6IEBabQBVmiw==} engines: {node: '>=18.0.0'} - '@smithy/node-http-handler@4.4.13': - resolution: {integrity: sha512-o8CP8w6tlUA0lk+Qfwm6Ed0jCWk3bEY6iBOJjdBaowbXKCSClk8zIHQvUL6RUZMvuNafF27cbRCMYqw6O1v4aA==} + '@smithy/node-http-handler@4.5.1': + resolution: {integrity: sha512-ejjxdAXjkPIs9lyYyVutOGNOraqUE9v/NjGMKwwFrfOM354wfSD8lmlj8hVwUzQmlLLF4+udhfCX9Exnbmvfzw==} engines: {node: '>=18.0.0'} - '@smithy/property-provider@4.2.10': - resolution: {integrity: sha512-5jm60P0CU7tom0eNrZ7YrkgBaoLFXzmqB0wVS+4uK8PPGmosSrLNf6rRd50UBvukztawZ7zyA8TxlrKpF5z9jw==} + '@smithy/property-provider@4.2.12': + resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} engines: {node: '>=18.0.0'} - '@smithy/protocol-http@5.3.10': - resolution: {integrity: sha512-2NzVWpYY0tRdfeCJLsgrR89KE3NTWT2wGulhNUxYlRmtRmPwLQwKzhrfVaiNlA9ZpJvbW7cjTVChYKgnkqXj1A==} + '@smithy/protocol-http@5.3.12': + resolution: {integrity: sha512-fit0GZK9I1xoRlR4jXmbLhoN0OdEpa96ul8M65XdmXnxXkuMxM0Y8HDT0Fh0Xb4I85MBvBClOzgSrV1X2s1Hxw==} engines: {node: '>=18.0.0'} - '@smithy/querystring-builder@4.2.10': - resolution: {integrity: sha512-HeN7kEvuzO2DmAzLukE9UryiUvejD3tMp9a1D1NJETerIfKobBUCLfviP6QEk500166eD2IATaXM59qgUI+YDA==} + '@smithy/querystring-builder@4.2.12': + resolution: {integrity: sha512-6wTZjGABQufekycfDGMEB84BgtdOE/rCVTov+EDXQ8NHKTUNIp/j27IliwP7tjIU9LR+sSzyGBOXjeEtVgzCHg==} engines: {node: '>=18.0.0'} - '@smithy/querystring-parser@4.2.10': - resolution: {integrity: sha512-4Mh18J26+ao1oX5wXJfWlTT+Q1OpDR8ssiC9PDOuEgVBGloqg18Fw7h5Ct8DyT9NBYwJgtJ2nLjKKFU6RP1G1Q==} + '@smithy/querystring-parser@4.2.12': + resolution: {integrity: sha512-P2OdvrgiAKpkPNKlKUtWbNZKB1XjPxM086NeVhK+W+wI46pIKdWBe5QyXvhUm3MEcyS/rkLvY8rZzyUdmyDZBw==} engines: {node: '>=18.0.0'} - '@smithy/service-error-classification@4.2.10': - resolution: {integrity: sha512-0R/+/Il5y8nB/By90o8hy/bWVYptbIfvoTYad0igYQO5RefhNCDmNzqxaMx7K1t/QWo0d6UynqpqN5cCQt1MCg==} + '@smithy/service-error-classification@4.2.12': + resolution: {integrity: sha512-LlP29oSQN0Tw0b6D0Xo6BIikBswuIiGYbRACy5ujw/JgWSzTdYj46U83ssf6Ux0GyNJVivs2uReU8pt7Eu9okQ==} engines: {node: '>=18.0.0'} - '@smithy/shared-ini-file-loader@4.4.5': - resolution: {integrity: sha512-pHgASxl50rrtOztgQCPmOXFjRW+mCd7ALr/3uXNzRrRoGV5G2+78GOsQ3HlQuBVHCh9o6xqMNvlIKZjWn4Euug==} + '@smithy/shared-ini-file-loader@4.4.7': + resolution: {integrity: sha512-HrOKWsUb+otTeo1HxVWeEb99t5ER1XrBi/xka2Wv6NVmTbuCUC1dvlrksdvxFtODLBjsC+PHK+fuy2x/7Ynyiw==} engines: {node: '>=18.0.0'} - '@smithy/signature-v4@5.3.10': - resolution: {integrity: sha512-Wab3wW8468WqTKIxI+aZe3JYO52/RYT/8sDOdzkUhjnLakLe9qoQqIcfih/qxcF4qWEFoWBszY0mj5uxffaVXA==} + '@smithy/signature-v4@5.3.12': + resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} engines: {node: '>=18.0.0'} - '@smithy/smithy-client@4.12.1': - resolution: {integrity: sha512-Xf9UFHlAihewfkmLNZ6I/Ek6kcYBKoU3cbRS9Z4q++9GWoW0YFbAHs7wMbuXm+nGuKHZ5OKheZMuDdaWPv8DJw==} + '@smithy/smithy-client@4.12.8': + resolution: {integrity: sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA==} engines: {node: '>=18.0.0'} - '@smithy/types@4.13.0': - resolution: {integrity: sha512-COuLsZILbbQsdrwKQpkkpyep7lCsByxwj7m0Mg5v66/ZTyenlfBc40/QFQ5chO0YN/PNEH1Bi3fGtfXPnYNeDw==} + '@smithy/types@4.13.1': + resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} engines: {node: '>=18.0.0'} - '@smithy/url-parser@4.2.10': - resolution: {integrity: sha512-uypjF7fCDsRk26u3qHmFI/ePL7bxxB9vKkE+2WKEciHhz+4QtbzWiHRVNRJwU3cKhrYDYQE3b0MRFtqfLYdA4A==} + '@smithy/url-parser@4.2.12': + resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==} engines: {node: '>=18.0.0'} - '@smithy/util-base64@4.3.1': - resolution: {integrity: sha512-BKGuawX4Doq/bI/uEmg+Zyc36rJKWuin3py89PquXBIBqmbnJwBBsmKhdHfNEp0+A4TDgLmT/3MSKZ1SxHcR6w==} + '@smithy/util-base64@4.3.2': + resolution: {integrity: sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-browser@4.2.1': - resolution: {integrity: sha512-SiJeLiozrAoCrgDBUgsVbmqHmMgg/2bA15AzcbcW+zan7SuyAVHN4xTSbq0GlebAIwlcaX32xacnrG488/J/6g==} + '@smithy/util-body-length-browser@4.2.2': + resolution: {integrity: sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==} engines: {node: '>=18.0.0'} - '@smithy/util-body-length-node@4.2.2': - resolution: {integrity: sha512-4rHqBvxtJEBvsZcFQSPQqXP2b/yy/YlB66KlcEgcH2WNoOKCKB03DSLzXmOsXjbl8dJ4OEYTn31knhdznwk7zw==} + '@smithy/util-body-length-node@4.2.3': + resolution: {integrity: sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==} engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} - '@smithy/util-buffer-from@4.2.1': - resolution: {integrity: sha512-/swhmt1qTiVkaejlmMPPDgZhEaWb/HWMGRBheaxwuVkusp/z+ErJyQxO6kaXumOciZSWlmq6Z5mNylCd33X7Ig==} + '@smithy/util-buffer-from@4.2.2': + resolution: {integrity: sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==} engines: {node: '>=18.0.0'} - '@smithy/util-config-provider@4.2.1': - resolution: {integrity: sha512-462id/00U8JWFw6qBuTSWfN5TxOHvDu4WliI97qOIOnuC/g+NDAknTU8eoGXEPlLkRVgWEr03jJBLV4o2FL8+A==} + '@smithy/util-config-provider@4.2.2': + resolution: {integrity: sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-browser@4.3.37': - resolution: {integrity: sha512-JlPZhV1kQCGNJgofRTU6E8kHrjCKsb6cps8gco8QDVaFl7biFYzHg0p1x89ytIWyVyCkY3nOpO8tJPM47Vqlww==} + '@smithy/util-defaults-mode-browser@4.3.44': + resolution: {integrity: sha512-eZg6XzaCbVr2S5cAErU5eGBDaOVTuTo1I65i4tQcHENRcZ8rMWhQy1DaIYUSLyZjsfXvmCqZrstSMYyGFocvHA==} engines: {node: '>=18.0.0'} - '@smithy/util-defaults-mode-node@4.2.40': - resolution: {integrity: sha512-BM5cPEsyxHdYYO4Da77E94lenhaVPNUzBTyCGDkcw/n/mE8Q1cfHwr+n/w2bNPuUsPC30WaW5/hGKWOTKqw8kw==} + '@smithy/util-defaults-mode-node@4.2.48': + resolution: {integrity: sha512-FqOKTlqSaoV3nzO55pMs5NBnZX8EhoI0DGmn9kbYeXWppgHD6dchyuj2HLqp4INJDJbSrj6OFYJkAh/WhSzZPg==} engines: {node: '>=18.0.0'} - '@smithy/util-endpoints@3.3.1': - resolution: {integrity: sha512-xyctc4klmjmieQiF9I1wssBWleRV0RhJ2DpO8+8yzi2LO1Z+4IWOZNGZGNj4+hq9kdo+nyfrRLmQTzc16Op2Vg==} + '@smithy/util-endpoints@3.3.3': + resolution: {integrity: sha512-VACQVe50j0HZPjpwWcjyT51KUQ4AnsvEaQ2lKHOSL4mNLD0G9BjEniQ+yCt1qqfKfiAHRAts26ud7hBjamrwig==} engines: {node: '>=18.0.0'} - '@smithy/util-hex-encoding@4.2.1': - resolution: {integrity: sha512-c1hHtkgAWmE35/50gmdKajgGAKV3ePJ7t6UtEmpfCWJmQE9BQAQPz0URUVI89eSkcDqCtzqllxzG28IQoZPvwA==} + '@smithy/util-hex-encoding@4.2.2': + resolution: {integrity: sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==} engines: {node: '>=18.0.0'} - '@smithy/util-middleware@4.2.10': - resolution: {integrity: sha512-LxaQIWLp4y0r72eA8mwPNQ9va4h5KeLM0I3M/HV9klmFaY2kN766wf5vsTzmaOpNNb7GgXAd9a25P3h8T49PSA==} + '@smithy/util-middleware@4.2.12': + resolution: {integrity: sha512-Er805uFUOvgc0l8nv0e0su0VFISoxhJ/AwOn3gL2NWNY2LUEldP5WtVcRYSQBcjg0y9NfG8JYrCJaYDpupBHJQ==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.2.10': - resolution: {integrity: sha512-HrBzistfpyE5uqTwiyLsFHscgnwB0kgv8vySp7q5kZ0Eltn/tjosaSGGDj/jJ9ys7pWzIP/icE2d+7vMKXLv7A==} + '@smithy/util-retry@4.2.13': + resolution: {integrity: sha512-qQQsIvL0MGIbUjeSrg0/VlQ3jGNKyM3/2iU3FPNgy01z+Sp4OvcaxbgIoFOTvB61ZoohtutuOvOcgmhbD0katQ==} engines: {node: '>=18.0.0'} - '@smithy/util-stream@4.5.16': - resolution: {integrity: sha512-c7awZV6cxY0czgDDSr+Bz0XfRtg8AwW2BWhrHhLJISrpmwv8QzA2qzTllWyMVNdy1+UJr9vCm29hzuh3l8TTFw==} + '@smithy/util-stream@4.5.21': + resolution: {integrity: sha512-KzSg+7KKywLnkoKejRtIBXDmwBfjGvg1U1i/etkC7XSWUyFCoLno1IohV2c74IzQqdhX5y3uE44r/8/wuK+A7Q==} engines: {node: '>=18.0.0'} - '@smithy/util-uri-escape@4.2.1': - resolution: {integrity: sha512-YmiUDn2eo2IOiWYYvGQkgX5ZkBSiTQu4FlDo5jNPpAxng2t6Sjb6WutnZV9l6VR4eJul1ABmCrnWBC9hKHQa6Q==} + '@smithy/util-uri-escape@4.2.2': + resolution: {integrity: sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==} engines: {node: '>=18.0.0'} '@smithy/util-utf8@2.3.0': resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} - '@smithy/util-utf8@4.2.1': - resolution: {integrity: sha512-DSIwNaWtmzrNQHv8g7DBGR9mulSit65KSj5ymGEIAknmIN8IpbZefEep10LaMG/P/xquwbmJ1h9ectz8z6mV6g==} + '@smithy/util-utf8@4.2.2': + resolution: {integrity: sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==} engines: {node: '>=18.0.0'} - '@smithy/util-waiter@4.2.10': - resolution: {integrity: sha512-4eTWph/Lkg1wZEDAyObwme0kmhEb7J/JjibY2znJdrYRgKbKqB7YoEhhJVJ4R1g/SYih4zuwX7LpJaM8RsnTVg==} + '@smithy/util-waiter@4.2.14': + resolution: {integrity: sha512-2zqq5o/oizvMaFUlNiTyZ7dbgYv1a893aGut2uaxtbzTx/VYYnRxWzDHuD/ftgcw94ffenua+ZNLrbqwUYE+Bg==} engines: {node: '>=18.0.0'} - '@smithy/uuid@1.1.1': - resolution: {integrity: sha512-dSfDCeihDmZlV2oyr0yWPTUfh07suS+R5OB+FZGiv/hHyK3hrFBW5rR1UYjfa57vBsrP9lciFkRPzebaV1Qujw==} + '@smithy/uuid@1.1.2': + resolution: {integrity: sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==} engines: {node: '>=18.0.0'} '@so-ric/colorspace@1.1.6': @@ -1685,8 +1685,8 @@ packages: peerDependencies: eslint: '>=8.40.0' - '@stylistic/eslint-plugin@5.9.0': - resolution: {integrity: sha512-FqqSkvDMYJReydrMhlugc71M76yLLQWNfmGq+SIlLa7N3kHp8Qq8i2PyWrVNAfjOyOIY+xv9XaaYwvVW7vroMA==} + '@stylistic/eslint-plugin@5.10.0': + resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^9.0.0 || ^10.0.0 @@ -1775,14 +1775,14 @@ packages: '@types/node@14.18.63': resolution: {integrity: sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==} - '@types/node@22.19.13': - resolution: {integrity: sha512-akNQMv0wW5uyRpD2v2IEyRSZiR+BeGuoB6L310EgGObO44HSMNT8z1xzio28V8qOrgYaopIDNA18YgdXd+qTiw==} + '@types/node@22.19.17': + resolution: {integrity: sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} - '@types/qs@6.14.0': - resolution: {integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==} + '@types/qs@6.15.0': + resolution: {integrity: sha512-JawvT8iBVWpzTrz3EGw9BTQFg3BQNmwERdKE22vlTxawwtbyUSlMppvZYKLZzB5zgACXdXxbD3m1bXaMqP/9ow==} '@types/range-parser@1.2.7': resolution: {integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==} @@ -1802,8 +1802,8 @@ packages: '@types/serve-static@1.15.10': resolution: {integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==} - '@types/sinon@21.0.0': - resolution: {integrity: sha512-+oHKZ0lTI+WVLxx1IbJDNmReQaIsQJjN2e7UUrJHEeByG7bFeKJYsv1E75JxTQ9QKJDp21bAa/0W2Xo4srsDnw==} + '@types/sinon@21.0.1': + resolution: {integrity: sha512-5yoJSqLbjH8T9V2bksgRayuhpZy+723/z6wBOR+Soe4ZlXC0eW8Na71TeaZPUWDQvM7LYKa9UGFc6LRqxiR5fQ==} '@types/sinonjs__fake-timers@15.0.1': resolution: {integrity: sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==} @@ -1831,13 +1831,13 @@ packages: typescript: optional: true - '@typescript-eslint/eslint-plugin@8.56.1': - resolution: {integrity: sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==} + '@typescript-eslint/eslint-plugin@8.58.0': + resolution: {integrity: sha512-RLkVSiNuUP1C2ROIWfqX+YcUfLaSnxGE/8M+Y57lopVwg9VTYYfhuz15Yf1IzCKgZj6/rIbYTmJCUSqr76r0Wg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.56.1 + '@typescript-eslint/parser': ^8.58.0 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/parser@6.21.0': resolution: {integrity: sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==} @@ -1849,18 +1849,18 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.56.1': - resolution: {integrity: sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==} + '@typescript-eslint/parser@8.58.0': + resolution: {integrity: sha512-rLoGZIf9afaRBYsPUMtvkDWykwXwUPL60HebR4JgTI8mxfFe2cQTu3AGitANp4b9B2QlVru6WzjgB2IzJKiCSA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.56.1': - resolution: {integrity: sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==} + '@typescript-eslint/project-service@8.58.0': + resolution: {integrity: sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/scope-manager@6.21.0': resolution: {integrity: sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==} @@ -1870,15 +1870,15 @@ packages: resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/scope-manager@8.56.1': - resolution: {integrity: sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==} + '@typescript-eslint/scope-manager@8.58.0': + resolution: {integrity: sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.56.1': - resolution: {integrity: sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==} + '@typescript-eslint/tsconfig-utils@8.58.0': + resolution: {integrity: sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/type-utils@6.21.0': resolution: {integrity: sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==} @@ -1890,12 +1890,12 @@ packages: typescript: optional: true - '@typescript-eslint/type-utils@8.56.1': - resolution: {integrity: sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==} + '@typescript-eslint/type-utils@8.58.0': + resolution: {integrity: sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/types@6.21.0': resolution: {integrity: sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==} @@ -1905,8 +1905,8 @@ packages: resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/types@8.56.1': - resolution: {integrity: sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==} + '@typescript-eslint/types@8.58.0': + resolution: {integrity: sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@6.21.0': @@ -1927,11 +1927,11 @@ packages: typescript: optional: true - '@typescript-eslint/typescript-estree@8.56.1': - resolution: {integrity: sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==} + '@typescript-eslint/typescript-estree@8.58.0': + resolution: {integrity: sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/utils@6.21.0': resolution: {integrity: sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==} @@ -1945,12 +1945,12 @@ packages: peerDependencies: eslint: ^8.56.0 - '@typescript-eslint/utils@8.56.1': - resolution: {integrity: sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==} + '@typescript-eslint/utils@8.58.0': + resolution: {integrity: sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' '@typescript-eslint/visitor-keys@6.21.0': resolution: {integrity: sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==} @@ -1960,8 +1960,8 @@ packages: resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} engines: {node: ^18.18.0 || >=20.0.0} - '@typescript-eslint/visitor-keys@8.56.1': - resolution: {integrity: sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==} + '@typescript-eslint/visitor-keys@8.58.0': + resolution: {integrity: sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -2107,8 +2107,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - adm-zip@0.5.16: - resolution: {integrity: sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==} + adm-zip@0.5.17: + resolution: {integrity: sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==} engines: {node: '>=12.0'} agent-base@6.0.2: @@ -2295,8 +2295,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.13.6: - resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==} + axios@1.14.0: + resolution: {integrity: sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==} balanced-match@4.0.4: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} @@ -2305,8 +2305,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.10.0: - resolution: {integrity: sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==} + baseline-browser-mapping@2.10.15: + resolution: {integrity: sha512-1nfKCq9wuAZFTkA2ey/3OXXx7GzFjLdkTiFVNwlJ9WqdI706CZRIhEqjuwanjMIja+84jDLa9rcyZDPDiVkASQ==} engines: {node: '>=6.0.0'} hasBin: true @@ -2347,8 +2347,8 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - browserslist@4.28.1: - resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -2411,8 +2411,8 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - caniuse-lite@1.0.30001776: - resolution: {integrity: sha512-sg01JDPzZ9jGshqKSckOQthXnYwOEP50jeVFhaSFbZcOy05TiuuaffDOfcwtCisJ9kNQuLBFibYywv2Bgm9osw==} + caniuse-lite@1.0.30001786: + resolution: {integrity: sha512-4oxTZEvqmLLrERwxO76yfKM7acZo310U+v4kqexI2TL1DkkUEMT8UijrxxcnVdxR3qkVf5awGRX+4Z6aPHVKrA==} capital-case@1.0.4: resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} @@ -2602,8 +2602,8 @@ packages: resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} engines: {node: '>= 0.6'} - contentstack@3.26.4: - resolution: {integrity: sha512-NUe1Yz+NwmNJHTbSMr0tJ4YrerhHSaHPgptXFGxhTQkHG1d/2JDmjGeKocpA5ffO/x9JhgJmzrki+V4BsyQN4A==} + contentstack@3.27.0: + resolution: {integrity: sha512-2ZzVk1dO4AhgaiuPjLIzeDnQky/ElI02E4+tntX7xXQXgPEDWgogghoRMT0y0dFBcZthrZe1QChwYA9aCRSGpA==} engines: {node: '>= 10.14.2'} convert-source-map@1.9.0: @@ -2619,8 +2619,8 @@ packages: resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==} engines: {node: '>= 0.6'} - core-js-compat@3.48.0: - resolution: {integrity: sha512-OM4cAF3D6VtH/WkLtWvyNC56EZVXsZdU3iqaMG2B4WvYrlqU831pc4UtG5yp0sE9z8Y02wVN7PjW5Zf9Gt0f1Q==} + core-js-compat@3.49.0: + resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} core-util-is@1.0.3: resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} @@ -2791,8 +2791,8 @@ packages: resolution: {integrity: sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==} engines: {node: '>=0.3.1'} - diff@8.0.3: - resolution: {integrity: sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ==} + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} engines: {node: '>=0.3.1'} dir-glob@3.0.1: @@ -2838,8 +2838,8 @@ packages: engines: {node: '>=0.10.0'} hasBin: true - electron-to-chromium@1.5.307: - resolution: {integrity: sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==} + electron-to-chromium@1.5.331: + resolution: {integrity: sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==} elegant-spinner@1.0.1: resolution: {integrity: sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==} @@ -2858,8 +2858,8 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} - enhanced-resolve@5.20.0: - resolution: {integrity: sha512-/ce7+jQ1PQ6rVXwe+jKEg5hW5ciicHwIQUagZkp6IufBoY3YDgdTTY1azVs0qoRgVmvsNB+rbjLJxDAeHHtwsQ==} + enhanced-resolve@5.20.1: + resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==} engines: {node: '>=10.13.0'} entities@6.0.1: @@ -2942,8 +2942,8 @@ packages: resolution: {integrity: sha512-NNTyyolSmKJicgxtoWZ/hoy2Rw56WIoWCFxgnBkXqDgi9qPKMwZs2Nx2b6SHLJvCiWWhZhWr5V46CFPo3PSPag==} engines: {node: '>=18.0.0'} - eslint-config-oclif@6.0.146: - resolution: {integrity: sha512-x59Gopo4wQiuuGOUQ2D3HaIpU1LaeksPql3vTGBNnAM0dNmHWqchMvaYczoRVBx0tfGVljWGYqDA0I/355cF4Q==} + eslint-config-oclif@6.0.156: + resolution: {integrity: sha512-CA/h54WSdpGFU829gC6FRN0rcOZYe/+k/gRGZW3W1RZW8Jbb1mMZOXJCzMh0M2vyH7Bz60poRt6hsugiIAtwHQ==} engines: {node: '>=18.18.0'} eslint-config-xo-space@0.35.0: @@ -2964,8 +2964,8 @@ packages: peerDependencies: eslint: '>=9.33.0' - eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} + eslint-import-resolver-node@0.3.10: + resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} eslint-import-resolver-typescript@3.10.1: resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} @@ -3203,11 +3203,11 @@ packages: fast-uri@3.1.0: resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} - fast-xml-builder@1.0.0: - resolution: {integrity: sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==} + fast-xml-builder@1.1.4: + resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==} - fast-xml-parser@5.4.1: - resolution: {integrity: sha512-BQ30U1mKkvXQXXkAGcuyUA/GA26oEB7NzOtsxCDtyu62sjGw5QraKFhx2Em3WQNjPw9PG6MQ9yuIIgkSDfGu5A==} + fast-xml-parser@5.5.8: + resolution: {integrity: sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==} hasBin: true fastest-levenshtein@1.0.16: @@ -3288,8 +3288,8 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - flatted@3.3.4: - resolution: {integrity: sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} fn.name@1.1.0: resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} @@ -3410,8 +3410,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.6: - resolution: {integrity: sha512-shZT/QMiSHc/YBLxxOkMtgSid5HFoauqCE3/exfsEcwg1WkeqjG+V40yBbBrsD+jW2HDXcs28xOfcbm2jI8Ddw==} + get-tsconfig@4.13.7: + resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} git-hooks-list@3.2.0: resolution: {integrity: sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==} @@ -3502,8 +3502,8 @@ packages: peerDependencies: 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 - graphql@16.13.0: - resolution: {integrity: sha512-uSisMYERbaB9bkA9M4/4dnqyktaEkf1kMHNKq/7DHyxVeWqHQ2mBmVqm5u6/FVHwF3iCNalKcg82Zfl+tffWoA==} + graphql@16.13.2: + resolution: {integrity: sha512-5bJ+nf/UCpAjHM8i06fl7eLyVC9iuNAjm9qzkiu2ZGhM0VscSvS6WDPfAwkdkBuoXGM9FJSbKl6wylMwP9Ktig==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} has-ansi@2.0.0: @@ -4141,6 +4141,9 @@ packages: lodash@4.17.23: resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + log-symbols@1.0.2: resolution: {integrity: sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==} engines: {node: '>=0.10.0'} @@ -4174,8 +4177,8 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} - lru-cache@11.2.6: - resolution: {integrity: sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==} + lru-cache@11.3.0: + resolution: {integrity: sha512-sr8xPKE25m6vJVcrdn6NxtC0fVfuPowbscLypegRgOm0yXSqr5JNHCAY3hnusdJ7HRBW04j6Ip4khvHU778DuQ==} engines: {node: 20 || >=22} lru-cache@5.1.1: @@ -4269,8 +4272,8 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} - minimatch@10.2.4: - resolution: {integrity: sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==} + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} engines: {node: 18 || 20 || >=22} minimatch@3.1.5: @@ -4367,6 +4370,10 @@ packages: resolution: {integrity: sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==} engines: {node: '>= 10.13'} + node-exports-info@1.6.0: + resolution: {integrity: sha512-pyFS63ptit/P5WqUkt+UUfe+4oevH+bFeIiPPdfb0pFeYEu/1ELnJu5l+5EcTKYL5M7zaAa7S8ddywgXypqKCw==} + engines: {node: '>= 0.4'} + node-fetch@2.7.0: resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} engines: {node: 4.x || >=6.0.0} @@ -4383,8 +4390,8 @@ packages: resolution: {integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==} engines: {node: '>=8'} - node-releases@2.0.36: - resolution: {integrity: sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==} + node-releases@2.0.37: + resolution: {integrity: sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==} normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -4413,8 +4420,8 @@ packages: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - npm@10.9.4: - resolution: {integrity: sha512-OnUG836FwboQIbqtefDNlyR0gTHzIfwRfE3DuiNewBvnMnWEpB0VEXwBlFVgqpNzIgYo/MHh3d2Hel/pszapAA==} + npm@10.9.8: + resolution: {integrity: sha512-fYwb6ODSmHkqrJQQaCxY3M2lPf/mpgC7ik0HSzzIwG5CGtabRp4bNqikatvCoT42b5INQSqudVH0R7yVmC9hVg==} engines: {node: ^18.17.0 || >=20.5.0} hasBin: true bundledDependencies: @@ -4523,6 +4530,10 @@ packages: resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} engines: {node: '>= 0.4'} + object.entries@1.1.9: + resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} + engines: {node: '>= 0.4'} + object.fromentries@2.0.8: resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} engines: {node: '>= 0.4'} @@ -4535,8 +4546,8 @@ packages: resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} engines: {node: '>= 0.4'} - oclif@4.22.81: - resolution: {integrity: sha512-MO2bupt/3wWYqt05F8ZLwMYKN58YqDfRVdJxAvCdg/wZJg6/sDXVKoMSTSzwqsnIaJGjru2LBNvk8lH+p+1uMQ==} + oclif@4.22.96: + resolution: {integrity: sha512-aWM9cMb7Q3KW09qi5Mkw0Hq9sIM7DjVlyMAUl8Q2FP3+e5afBlUU9vmL3EJazVPhqcbg5u18E3z+6kCMk72KYw==} engines: {node: '>=18.0.0'} hasBin: true @@ -4680,6 +4691,10 @@ packages: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} + path-expression-matcher@1.2.1: + resolution: {integrity: sha512-d7gQQmLvAKXKXE2GeP9apIGbMYKz88zWdsn/BN2HRWVQsDFdUY36WSLTY0Jvd4HWi7Fb30gQ62oAOzdgJA6fZw==} + engines: {node: '>=14.0.0'} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -4703,8 +4718,8 @@ packages: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -4732,8 +4747,8 @@ packages: resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} engines: {node: '>=4'} - pnpm@10.30.3: - resolution: {integrity: sha512-yWHR4KLY41TsqlFmuCJRZmi39Ey1vZUSLVkN2Bki9gb1RzttI+xKW+Bef80Y6EiNR9l4u+mBhy8RRdBumnQAFw==} + pnpm@10.33.0: + resolution: {integrity: sha512-EFaLtKavtYyes2MNqQzJUWQXq+vT+rvmc58K55VyjaFJHp21pUTHatjrdXD1xLs9bGN7LLQb/c20f6gjyGSTGQ==} engines: {node: '>=18.12'} hasBin: true @@ -4780,8 +4795,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} psl@1.15.0: resolution: {integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==} @@ -4945,6 +4961,11 @@ packages: engines: {node: '>= 0.4'} hasBin: true + resolve@2.0.0-next.6: + resolution: {integrity: sha512-3JmVl5hMGtJ3kMmB3zi3DL25KfkCEyy3Tw7Gmw7z5w8M9WlwoPFnIvwChzu1+cF3iaK3sp18hhPz8ANeimdJfA==} + engines: {node: '>= 0.4'} + hasBin: true + responselike@3.0.0: resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} engines: {node: '>=14.16'} @@ -4983,8 +5004,8 @@ packages: engines: {node: 20 || >=22} hasBin: true - rollup@4.59.0: - resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} + rollup@4.60.1: + resolution: {integrity: sha512-VmtB2rFU/GroZ4oL8+ZqXgSA38O6GR8KSIvWmEFv63pQ0G6KaBH9s07PO8XTXP4vI+3UJUEypOfjkGfmSBBR0w==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true @@ -5121,8 +5142,8 @@ packages: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} - sinon@21.0.1: - resolution: {integrity: sha512-Z0NVCW45W8Mg5oC/27/+fCqIHFnW8kpkFOq0j9XJIev4Ld0mKmERaZv5DMLAb9fGCevjKwaEeIQz5+MBXfZcDw==} + sinon@21.0.3: + resolution: {integrity: sha512-0x8TQFr8EjADhSME01u1ZK31yv2+bd6Z5NrBCHVM+n4qL1wFqbxftmeyi3bwlr49FbbzRfrqSFOpyHCOh/YmYA==} slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} @@ -5280,8 +5301,8 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - strnum@2.2.0: - resolution: {integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==} + strnum@2.2.2: + resolution: {integrity: sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==} supports-color@2.0.0: resolution: {integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==} @@ -5314,8 +5335,8 @@ packages: symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} - tapable@2.3.0: - resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} + tapable@2.3.2: + resolution: {integrity: sha512-1MOpMXuhGzGL5TTCZFItxCc0AARf1EZFQkGqMm7ERKj8+Hgr5oLvJOVFcC+lRmR8hCe2S3jC4T5D7Vg/d7/fhA==} engines: {node: '>=6'} tar@7.5.13: @@ -5396,8 +5417,8 @@ packages: peerDependencies: typescript: '>=4.2.0' - ts-api-utils@2.4.0: - resolution: {integrity: sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==} + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} engines: {node: '>=18.12'} peerDependencies: typescript: '>=4.8.4' @@ -5507,12 +5528,12 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.56.1: - resolution: {integrity: sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==} + typescript-eslint@8.58.0: + resolution: {integrity: sha512-e2TQzKfaI85fO+F3QywtX+tCTsu/D3WW5LVU6nz8hTFKFZ8yBJ6mSYRpXqdR3mFjPWmO0eWsTa5f+UpAOe/FMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.0.0' + typescript: '>=4.8.4 <6.1.0' typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} @@ -5710,8 +5731,8 @@ packages: write-file-atomic@3.0.3: resolution: {integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==} - ws@8.19.0: - resolution: {integrity: sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==} + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} engines: {node: '>=10.0.0'} peerDependencies: bufferutil: ^4.0.1 @@ -5804,14 +5825,14 @@ packages: snapshots: - '@apollo/client@3.14.0(graphql@16.13.0)': + '@apollo/client@3.14.1(graphql@16.13.2)': dependencies: - '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.0) + '@graphql-typed-document-node/core': 3.2.0(graphql@16.13.2) '@wry/caches': 1.0.1 '@wry/equality': 0.5.7 '@wry/trie': 0.5.0 - graphql: 16.13.0 - graphql-tag: 2.12.6(graphql@16.13.0) + graphql: 16.13.2 + graphql-tag: 2.12.6(graphql@16.13.2) hoist-non-react-statics: 3.3.2 optimism: 0.18.1 prop-types: 15.8.1 @@ -5826,21 +5847,21 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.4 + '@aws-sdk/types': 3.973.6 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.4 + '@aws-sdk/types': 3.973.6 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-locate-window': 3.965.4 + '@aws-sdk/types': 3.973.6 + '@aws-sdk/util-locate-window': 3.965.5 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -5849,15 +5870,15 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-locate-window': 3.965.4 + '@aws-sdk/types': 3.973.6 + '@aws-sdk/util-locate-window': 3.965.5 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.4 + '@aws-sdk/types': 3.973.6 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -5866,450 +5887,452 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.973.4 + '@aws-sdk/types': 3.973.6 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-cloudfront@3.1001.0': + '@aws-sdk/client-cloudfront@3.1009.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.16 - '@aws-sdk/credential-provider-node': 3.972.15 - '@aws-sdk/middleware-host-header': 3.972.6 - '@aws-sdk/middleware-logger': 3.972.6 - '@aws-sdk/middleware-recursion-detection': 3.972.6 - '@aws-sdk/middleware-user-agent': 3.972.16 - '@aws-sdk/region-config-resolver': 3.972.6 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-endpoints': 3.996.3 - '@aws-sdk/util-user-agent-browser': 3.972.6 - '@aws-sdk/util-user-agent-node': 3.973.1 - '@smithy/config-resolver': 4.4.9 - '@smithy/core': 3.23.7 - '@smithy/fetch-http-handler': 5.3.12 - '@smithy/hash-node': 4.2.10 - '@smithy/invalid-dependency': 4.2.10 - '@smithy/middleware-content-length': 4.2.10 - '@smithy/middleware-endpoint': 4.4.21 - '@smithy/middleware-retry': 4.4.38 - '@smithy/middleware-serde': 4.2.11 - '@smithy/middleware-stack': 4.2.10 - '@smithy/node-config-provider': 4.3.10 - '@smithy/node-http-handler': 4.4.13 - '@smithy/protocol-http': 5.3.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - '@smithy/util-base64': 4.3.1 - '@smithy/util-body-length-browser': 4.2.1 - '@smithy/util-body-length-node': 4.2.2 - '@smithy/util-defaults-mode-browser': 4.3.37 - '@smithy/util-defaults-mode-node': 4.2.40 - '@smithy/util-endpoints': 3.3.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-retry': 4.2.10 - '@smithy/util-stream': 4.5.16 - '@smithy/util-utf8': 4.2.1 - '@smithy/util-waiter': 4.2.10 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/credential-provider-node': 3.972.29 + '@aws-sdk/middleware-host-header': 3.972.8 + '@aws-sdk/middleware-logger': 3.972.8 + '@aws-sdk/middleware-recursion-detection': 3.972.9 + '@aws-sdk/middleware-user-agent': 3.972.28 + '@aws-sdk/region-config-resolver': 3.972.10 + '@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.14 + '@smithy/config-resolver': 4.4.13 + '@smithy/core': 3.23.13 + '@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.28 + '@smithy/middleware-retry': 4.4.46 + '@smithy/middleware-serde': 4.2.16 + '@smithy/middleware-stack': 4.2.12 + '@smithy/node-config-provider': 4.3.12 + '@smithy/node-http-handler': 4.5.1 + '@smithy/protocol-http': 5.3.12 + '@smithy/smithy-client': 4.12.8 + '@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.44 + '@smithy/util-defaults-mode-node': 4.2.48 + '@smithy/util-endpoints': 3.3.3 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-retry': 4.2.13 + '@smithy/util-stream': 4.5.21 + '@smithy/util-utf8': 4.2.2 + '@smithy/util-waiter': 4.2.14 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-s3@3.1001.0': + '@aws-sdk/client-s3@3.1014.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.16 - '@aws-sdk/credential-provider-node': 3.972.15 - '@aws-sdk/middleware-bucket-endpoint': 3.972.6 - '@aws-sdk/middleware-expect-continue': 3.972.6 - '@aws-sdk/middleware-flexible-checksums': 3.973.2 - '@aws-sdk/middleware-host-header': 3.972.6 - '@aws-sdk/middleware-location-constraint': 3.972.6 - '@aws-sdk/middleware-logger': 3.972.6 - '@aws-sdk/middleware-recursion-detection': 3.972.6 - '@aws-sdk/middleware-sdk-s3': 3.972.16 - '@aws-sdk/middleware-ssec': 3.972.6 - '@aws-sdk/middleware-user-agent': 3.972.16 - '@aws-sdk/region-config-resolver': 3.972.6 - '@aws-sdk/signature-v4-multi-region': 3.996.4 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-endpoints': 3.996.3 - '@aws-sdk/util-user-agent-browser': 3.972.6 - '@aws-sdk/util-user-agent-node': 3.973.1 - '@smithy/config-resolver': 4.4.9 - '@smithy/core': 3.23.7 - '@smithy/eventstream-serde-browser': 4.2.10 - '@smithy/eventstream-serde-config-resolver': 4.3.10 - '@smithy/eventstream-serde-node': 4.2.10 - '@smithy/fetch-http-handler': 5.3.12 - '@smithy/hash-blob-browser': 4.2.11 - '@smithy/hash-node': 4.2.10 - '@smithy/hash-stream-node': 4.2.10 - '@smithy/invalid-dependency': 4.2.10 - '@smithy/md5-js': 4.2.10 - '@smithy/middleware-content-length': 4.2.10 - '@smithy/middleware-endpoint': 4.4.21 - '@smithy/middleware-retry': 4.4.38 - '@smithy/middleware-serde': 4.2.11 - '@smithy/middleware-stack': 4.2.10 - '@smithy/node-config-provider': 4.3.10 - '@smithy/node-http-handler': 4.4.13 - '@smithy/protocol-http': 5.3.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - '@smithy/util-base64': 4.3.1 - '@smithy/util-body-length-browser': 4.2.1 - '@smithy/util-body-length-node': 4.2.2 - '@smithy/util-defaults-mode-browser': 4.3.37 - '@smithy/util-defaults-mode-node': 4.2.40 - '@smithy/util-endpoints': 3.3.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-retry': 4.2.10 - '@smithy/util-stream': 4.5.16 - '@smithy/util-utf8': 4.2.1 - '@smithy/util-waiter': 4.2.10 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/credential-provider-node': 3.972.29 + '@aws-sdk/middleware-bucket-endpoint': 3.972.8 + '@aws-sdk/middleware-expect-continue': 3.972.8 + '@aws-sdk/middleware-flexible-checksums': 3.974.6 + '@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.9 + '@aws-sdk/middleware-sdk-s3': 3.972.27 + '@aws-sdk/middleware-ssec': 3.972.8 + '@aws-sdk/middleware-user-agent': 3.972.28 + '@aws-sdk/region-config-resolver': 3.972.10 + '@aws-sdk/signature-v4-multi-region': 3.996.15 + '@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.14 + '@smithy/config-resolver': 4.4.13 + '@smithy/core': 3.23.13 + '@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.28 + '@smithy/middleware-retry': 4.4.46 + '@smithy/middleware-serde': 4.2.16 + '@smithy/middleware-stack': 4.2.12 + '@smithy/node-config-provider': 4.3.12 + '@smithy/node-http-handler': 4.5.1 + '@smithy/protocol-http': 5.3.12 + '@smithy/smithy-client': 4.12.8 + '@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.44 + '@smithy/util-defaults-mode-node': 4.2.48 + '@smithy/util-endpoints': 3.3.3 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-retry': 4.2.13 + '@smithy/util-stream': 4.5.21 + '@smithy/util-utf8': 4.2.2 + '@smithy/util-waiter': 4.2.14 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/core@3.973.16': - dependencies: - '@aws-sdk/types': 3.973.4 - '@aws-sdk/xml-builder': 3.972.9 - '@smithy/core': 3.23.7 - '@smithy/node-config-provider': 4.3.10 - '@smithy/property-provider': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/signature-v4': 5.3.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 - '@smithy/util-base64': 4.3.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-utf8': 4.2.1 + '@aws-sdk/core@3.973.26': + dependencies: + '@aws-sdk/types': 3.973.6 + '@aws-sdk/xml-builder': 3.972.16 + '@smithy/core': 3.23.13 + '@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.8 + '@smithy/types': 4.13.1 + '@smithy/util-base64': 4.3.2 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@aws-sdk/crc64-nvme@3.972.3': + '@aws-sdk/crc64-nvme@3.972.5': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.14': + '@aws-sdk/credential-provider-env@3.972.24': dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/types': 4.13.0 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/types': 3.973.6 + '@smithy/property-provider': 4.2.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-http@3.972.16': - dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/types': 3.973.4 - '@smithy/fetch-http-handler': 5.3.12 - '@smithy/node-http-handler': 4.4.13 - '@smithy/property-provider': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 - '@smithy/util-stream': 4.5.16 + '@aws-sdk/credential-provider-http@3.972.26': + dependencies: + '@aws-sdk/core': 3.973.26 + '@aws-sdk/types': 3.973.6 + '@smithy/fetch-http-handler': 5.3.15 + '@smithy/node-http-handler': 4.5.1 + '@smithy/property-provider': 4.2.12 + '@smithy/protocol-http': 5.3.12 + '@smithy/smithy-client': 4.12.8 + '@smithy/types': 4.13.1 + '@smithy/util-stream': 4.5.21 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.14': - dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/credential-provider-env': 3.972.14 - '@aws-sdk/credential-provider-http': 3.972.16 - '@aws-sdk/credential-provider-login': 3.972.14 - '@aws-sdk/credential-provider-process': 3.972.14 - '@aws-sdk/credential-provider-sso': 3.972.14 - '@aws-sdk/credential-provider-web-identity': 3.972.14 - '@aws-sdk/nested-clients': 3.996.4 - '@aws-sdk/types': 3.973.4 - '@smithy/credential-provider-imds': 4.2.10 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 + '@aws-sdk/credential-provider-ini@3.972.28': + dependencies: + '@aws-sdk/core': 3.973.26 + '@aws-sdk/credential-provider-env': 3.972.24 + '@aws-sdk/credential-provider-http': 3.972.26 + '@aws-sdk/credential-provider-login': 3.972.28 + '@aws-sdk/credential-provider-process': 3.972.24 + '@aws-sdk/credential-provider-sso': 3.972.28 + '@aws-sdk/credential-provider-web-identity': 3.972.28 + '@aws-sdk/nested-clients': 3.996.18 + '@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 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-login@3.972.14': + '@aws-sdk/credential-provider-login@3.972.28': dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/nested-clients': 3.996.4 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/nested-clients': 3.996.18 + '@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 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-node@3.972.15': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.14 - '@aws-sdk/credential-provider-http': 3.972.16 - '@aws-sdk/credential-provider-ini': 3.972.14 - '@aws-sdk/credential-provider-process': 3.972.14 - '@aws-sdk/credential-provider-sso': 3.972.14 - '@aws-sdk/credential-provider-web-identity': 3.972.14 - '@aws-sdk/types': 3.973.4 - '@smithy/credential-provider-imds': 4.2.10 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 + '@aws-sdk/credential-provider-node@3.972.29': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.24 + '@aws-sdk/credential-provider-http': 3.972.26 + '@aws-sdk/credential-provider-ini': 3.972.28 + '@aws-sdk/credential-provider-process': 3.972.24 + '@aws-sdk/credential-provider-sso': 3.972.28 + '@aws-sdk/credential-provider-web-identity': 3.972.28 + '@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 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-process@3.972.14': + '@aws-sdk/credential-provider-process@3.972.24': dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 + '@aws-sdk/core': 3.973.26 + '@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 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.14': + '@aws-sdk/credential-provider-sso@3.972.28': dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/nested-clients': 3.996.4 - '@aws-sdk/token-providers': 3.1001.0 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/nested-clients': 3.996.18 + '@aws-sdk/token-providers': 3.1021.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 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-provider-web-identity@3.972.14': + '@aws-sdk/credential-provider-web-identity@3.972.28': dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/nested-clients': 3.996.4 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/nested-clients': 3.996.18 + '@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 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/middleware-bucket-endpoint@3.972.6': + '@aws-sdk/middleware-bucket-endpoint@3.972.8': dependencies: - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-arn-parser': 3.972.2 - '@smithy/node-config-provider': 4.3.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-config-provider': 4.2.1 + '@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 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.972.6': + '@aws-sdk/middleware-expect-continue@3.972.8': dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 + '@aws-sdk/types': 3.973.6 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.973.2': + '@aws-sdk/middleware-flexible-checksums@3.974.6': dependencies: '@aws-crypto/crc32': 5.2.0 '@aws-crypto/crc32c': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.973.16 - '@aws-sdk/crc64-nvme': 3.972.3 - '@aws-sdk/types': 3.973.4 - '@smithy/is-array-buffer': 4.2.1 - '@smithy/node-config-provider': 4.3.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-stream': 4.5.16 - '@smithy/util-utf8': 4.2.1 + '@aws-sdk/core': 3.973.26 + '@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.21 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.972.6': + '@aws-sdk/middleware-host-header@3.972.8': dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 + '@aws-sdk/types': 3.973.6 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.972.6': + '@aws-sdk/middleware-location-constraint@3.972.8': dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 + '@aws-sdk/types': 3.973.6 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.972.6': + '@aws-sdk/middleware-logger@3.972.8': dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 + '@aws-sdk/types': 3.973.6 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.972.6': + '@aws-sdk/middleware-recursion-detection@3.972.9': dependencies: - '@aws-sdk/types': 3.973.4 - '@aws/lambda-invoke-store': 0.2.3 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 + '@aws-sdk/types': 3.973.6 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.972.16': - dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-arn-parser': 3.972.2 - '@smithy/core': 3.23.7 - '@smithy/node-config-provider': 4.3.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/signature-v4': 5.3.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 - '@smithy/util-config-provider': 4.2.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-stream': 4.5.16 - '@smithy/util-utf8': 4.2.1 + '@aws-sdk/middleware-sdk-s3@3.972.27': + dependencies: + '@aws-sdk/core': 3.973.26 + '@aws-sdk/types': 3.973.6 + '@aws-sdk/util-arn-parser': 3.972.3 + '@smithy/core': 3.23.13 + '@smithy/node-config-provider': 4.3.12 + '@smithy/protocol-http': 5.3.12 + '@smithy/signature-v4': 5.3.12 + '@smithy/smithy-client': 4.12.8 + '@smithy/types': 4.13.1 + '@smithy/util-config-provider': 4.2.2 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-stream': 4.5.21 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.972.6': + '@aws-sdk/middleware-ssec@3.972.8': dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 + '@aws-sdk/types': 3.973.6 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.972.16': + '@aws-sdk/middleware-user-agent@3.972.28': dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-endpoints': 3.996.3 - '@smithy/core': 3.23.7 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/types': 3.973.6 + '@aws-sdk/util-endpoints': 3.996.5 + '@smithy/core': 3.23.13 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.13.1 + '@smithy/util-retry': 4.2.13 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.996.4': + '@aws-sdk/nested-clients@3.996.18': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.16 - '@aws-sdk/middleware-host-header': 3.972.6 - '@aws-sdk/middleware-logger': 3.972.6 - '@aws-sdk/middleware-recursion-detection': 3.972.6 - '@aws-sdk/middleware-user-agent': 3.972.16 - '@aws-sdk/region-config-resolver': 3.972.6 - '@aws-sdk/types': 3.973.4 - '@aws-sdk/util-endpoints': 3.996.3 - '@aws-sdk/util-user-agent-browser': 3.972.6 - '@aws-sdk/util-user-agent-node': 3.973.1 - '@smithy/config-resolver': 4.4.9 - '@smithy/core': 3.23.7 - '@smithy/fetch-http-handler': 5.3.12 - '@smithy/hash-node': 4.2.10 - '@smithy/invalid-dependency': 4.2.10 - '@smithy/middleware-content-length': 4.2.10 - '@smithy/middleware-endpoint': 4.4.21 - '@smithy/middleware-retry': 4.4.38 - '@smithy/middleware-serde': 4.2.11 - '@smithy/middleware-stack': 4.2.10 - '@smithy/node-config-provider': 4.3.10 - '@smithy/node-http-handler': 4.4.13 - '@smithy/protocol-http': 5.3.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - '@smithy/util-base64': 4.3.1 - '@smithy/util-body-length-browser': 4.2.1 - '@smithy/util-body-length-node': 4.2.2 - '@smithy/util-defaults-mode-browser': 4.3.37 - '@smithy/util-defaults-mode-node': 4.2.40 - '@smithy/util-endpoints': 3.3.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-retry': 4.2.10 - '@smithy/util-utf8': 4.2.1 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/middleware-host-header': 3.972.8 + '@aws-sdk/middleware-logger': 3.972.8 + '@aws-sdk/middleware-recursion-detection': 3.972.9 + '@aws-sdk/middleware-user-agent': 3.972.28 + '@aws-sdk/region-config-resolver': 3.972.10 + '@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.14 + '@smithy/config-resolver': 4.4.13 + '@smithy/core': 3.23.13 + '@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.28 + '@smithy/middleware-retry': 4.4.46 + '@smithy/middleware-serde': 4.2.16 + '@smithy/middleware-stack': 4.2.12 + '@smithy/node-config-provider': 4.3.12 + '@smithy/node-http-handler': 4.5.1 + '@smithy/protocol-http': 5.3.12 + '@smithy/smithy-client': 4.12.8 + '@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.44 + '@smithy/util-defaults-mode-node': 4.2.48 + '@smithy/util-endpoints': 3.3.3 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-retry': 4.2.13 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/region-config-resolver@3.972.6': + '@aws-sdk/region-config-resolver@3.972.10': dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/config-resolver': 4.4.9 - '@smithy/node-config-provider': 4.3.10 - '@smithy/types': 4.13.0 + '@aws-sdk/types': 3.973.6 + '@smithy/config-resolver': 4.4.13 + '@smithy/node-config-provider': 4.3.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.4': + '@aws-sdk/signature-v4-multi-region@3.996.15': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.16 - '@aws-sdk/types': 3.973.4 - '@smithy/protocol-http': 5.3.10 - '@smithy/signature-v4': 5.3.10 - '@smithy/types': 4.13.0 + '@aws-sdk/middleware-sdk-s3': 3.972.27 + '@aws-sdk/types': 3.973.6 + '@smithy/protocol-http': 5.3.12 + '@smithy/signature-v4': 5.3.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1001.0': + '@aws-sdk/token-providers@3.1021.0': dependencies: - '@aws-sdk/core': 3.973.16 - '@aws-sdk/nested-clients': 3.996.4 - '@aws-sdk/types': 3.973.4 - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 + '@aws-sdk/core': 3.973.26 + '@aws-sdk/nested-clients': 3.996.18 + '@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 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/types@3.973.4': + '@aws-sdk/types@3.973.6': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@aws-sdk/util-arn-parser@3.972.2': + '@aws-sdk/util-arn-parser@3.972.3': dependencies: tslib: 2.8.1 - '@aws-sdk/util-endpoints@3.996.3': + '@aws-sdk/util-endpoints@3.996.5': dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - '@smithy/util-endpoints': 3.3.1 + '@aws-sdk/types': 3.973.6 + '@smithy/types': 4.13.1 + '@smithy/url-parser': 4.2.12 + '@smithy/util-endpoints': 3.3.3 tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.4': + '@aws-sdk/util-locate-window@3.965.5': dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.972.6': + '@aws-sdk/util-user-agent-browser@3.972.8': dependencies: - '@aws-sdk/types': 3.973.4 - '@smithy/types': 4.13.0 + '@aws-sdk/types': 3.973.6 + '@smithy/types': 4.13.1 bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/util-user-agent-node@3.973.1': + '@aws-sdk/util-user-agent-node@3.973.14': dependencies: - '@aws-sdk/middleware-user-agent': 3.972.16 - '@aws-sdk/types': 3.973.4 - '@smithy/node-config-provider': 4.3.10 - '@smithy/types': 4.13.0 + '@aws-sdk/middleware-user-agent': 3.972.28 + '@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 tslib: 2.8.1 - '@aws-sdk/xml-builder@3.972.9': + '@aws-sdk/xml-builder@3.972.16': dependencies: - '@smithy/types': 4.13.0 - fast-xml-parser: 5.4.1 + '@smithy/types': 4.13.1 + fast-xml-parser: 5.5.8 tslib: 2.8.1 - '@aws/lambda-invoke-store@0.2.3': {} + '@aws/lambda-invoke-store@0.2.4': {} '@babel/code-frame@7.29.0': dependencies: @@ -6325,8 +6348,8 @@ snapshots: '@babel/generator': 7.29.1 '@babel/helper-compilation-targets': 7.28.6 '@babel/helper-module-transforms': 7.28.6(@babel/core@7.29.0) - '@babel/helpers': 7.28.6 - '@babel/parser': 7.29.0 + '@babel/helpers': 7.29.2 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/traverse': 7.29.0 '@babel/types': 7.29.0 @@ -6341,7 +6364,7 @@ snapshots: '@babel/generator@7.29.1': dependencies: - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.13 '@jridgewell/trace-mapping': 0.3.31 @@ -6351,7 +6374,7 @@ snapshots: dependencies: '@babel/compat-data': 7.29.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.28.1 + browserslist: 4.28.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -6379,19 +6402,19 @@ snapshots: '@babel/helper-validator-option@7.27.1': {} - '@babel/helpers@7.28.6': + '@babel/helpers@7.29.2': dependencies: '@babel/template': 7.28.6 '@babel/types': 7.29.0 - '@babel/parser@7.29.0': + '@babel/parser@7.29.2': dependencies: '@babel/types': 7.29.0 '@babel/template@7.28.6': dependencies: '@babel/code-frame': 7.29.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/types': 7.29.0 '@babel/traverse@7.29.0': @@ -6399,7 +6422,7 @@ snapshots: '@babel/code-frame': 7.29.0 '@babel/generator': 7.29.1 '@babel/helper-globals': 7.28.0 - '@babel/parser': 7.29.0 + '@babel/parser': 7.29.2 '@babel/template': 7.28.6 '@babel/types': 7.29.0 debug: 4.4.3(supports-color@8.1.1) @@ -6415,17 +6438,17 @@ snapshots: '@colors/colors@1.6.0': {} - '@contentstack/cli-audit@1.19.0(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-audit@1.19.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 - '@oclif/plugin-plugins': 5.4.56 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 + '@oclif/plugin-plugins': 5.4.59 chalk: 4.1.2 fast-csv: 4.3.6 fs-extra: 11.3.4 - lodash: 4.17.23 + lodash: 4.18.1 uuid: 9.0.1 winston: 3.19.0 transitivePeerDependencies: @@ -6439,8 +6462,8 @@ snapshots: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-config': 1.20.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 inquirer: 8.2.7(@types/node@14.18.63) mkdirp: 1.0.4 tar: 7.5.13 @@ -6449,47 +6472,47 @@ snapshots: - debug - supports-color - '@contentstack/cli-cm-branches@1.7.0(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-cm-branches@1.7.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 chalk: 4.1.2 just-diff: 6.0.2 - lodash: 4.17.23 + lodash: 4.18.1 transitivePeerDependencies: - '@types/node' - debug - '@contentstack/cli-cm-bulk-publish@1.11.0(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-cm-bulk-publish@1.11.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-config': 1.20.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 chalk: 4.1.2 dotenv: 16.6.1 inquirer: 8.2.7(@types/node@14.18.63) - lodash: 4.17.23 + lodash: 4.18.1 winston: 3.19.0 transitivePeerDependencies: - '@types/node' - debug - '@contentstack/cli-cm-clone@1.21.0(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-cm-clone@1.21.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@colors/colors': 1.6.0 - '@contentstack/cli-cm-export': 1.24.0(@types/node@14.18.63)(debug@4.4.3) - '@contentstack/cli-cm-import': 1.32.0(@types/node@14.18.63) + '@contentstack/cli-cm-export': 1.24.1(@types/node@14.18.63)(debug@4.4.3) + '@contentstack/cli-cm-import': 1.32.1(@types/node@14.18.63) '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 chalk: 4.1.2 inquirer: 8.2.7(@types/node@14.18.63) - lodash: 4.17.23 + lodash: 4.18.1 merge: 2.1.1 ora: 5.4.1 prompt: 1.3.0 @@ -6503,8 +6526,8 @@ snapshots: dependencies: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 fast-csv: 4.3.6 inquirer: 8.2.7(@types/node@14.18.63) inquirer-checkbox-plus-prompt: 1.4.2(inquirer@8.2.7(@types/node@14.18.63)) @@ -6513,17 +6536,17 @@ snapshots: - '@types/node' - debug - '@contentstack/cli-cm-export@1.24.0(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-cm-export@1.24.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@contentstack/cli-variants': 1.4.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 + '@contentstack/cli-variants': 1.4.1(@types/node@14.18.63)(debug@4.4.3) + '@oclif/core': 4.10.5 async: 3.2.6 big-json: 3.2.0 bluebird: 3.7.2 chalk: 4.1.2 - lodash: 4.17.23 + lodash: 4.18.1 merge: 2.1.1 mkdirp: 1.0.4 progress-stream: 2.0.0 @@ -6533,15 +6556,15 @@ snapshots: - '@types/node' - debug - '@contentstack/cli-cm-import-setup@1.8.0(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-cm-import-setup@1.8.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 + '@oclif/core': 4.10.5 big-json: 3.2.0 chalk: 4.1.2 fs-extra: 11.3.4 - lodash: 4.17.23 + lodash: 4.18.1 merge: 2.1.1 mkdirp: 1.0.4 winston: 3.19.0 @@ -6549,19 +6572,19 @@ snapshots: - '@types/node' - debug - '@contentstack/cli-cm-import@1.32.0(@types/node@14.18.63)': + '@contentstack/cli-cm-import@1.32.1(@types/node@14.18.63)': dependencies: - '@contentstack/cli-audit': 1.19.0(@types/node@14.18.63)(debug@4.4.3) + '@contentstack/cli-audit': 1.19.1(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@contentstack/cli-variants': 1.4.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 + '@contentstack/cli-variants': 1.4.1(@types/node@14.18.63)(debug@4.4.3) + '@oclif/core': 4.10.5 big-json: 3.2.0 bluebird: 3.7.2 chalk: 4.1.2 debug: 4.4.3(supports-color@8.1.1) fs-extra: 11.3.4 - lodash: 4.17.23 + lodash: 4.18.1 marked: 4.3.0 merge: 2.1.1 mkdirp: 1.0.4 @@ -6577,16 +6600,16 @@ snapshots: '@contentstack/cli-command': 1.7.2(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.17.4(@types/node@14.18.63)(debug@4.4.3) '@contentstack/json-rte-serializer': 2.1.0 - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 chalk: 4.1.2 collapse-whitespace: 1.1.7 jsdom: 20.0.3 jsonschema: 1.5.0 - lodash: 4.17.23 + lodash: 4.18.1 nock: 13.5.6 omit-deep-lodash: 1.1.7 - sinon: 21.0.1 + sinon: 21.0.3 transitivePeerDependencies: - '@types/node' - bufferutil @@ -6597,7 +6620,7 @@ snapshots: '@contentstack/cli-cm-seed@1.15.0(@types/node@14.18.63)(debug@4.4.3)': dependencies: - '@contentstack/cli-cm-import': 1.32.0(@types/node@14.18.63) + '@contentstack/cli-cm-import': 1.32.1(@types/node@14.18.63) '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) inquirer: 8.2.7(@types/node@14.18.63) @@ -6612,9 +6635,9 @@ snapshots: '@contentstack/cli-command@1.7.2(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-utilities': 1.17.4(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 - contentstack: 3.26.4 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 + contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' - debug @@ -6622,9 +6645,9 @@ snapshots: '@contentstack/cli-command@1.8.0(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 - contentstack: 3.26.4 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 + contentstack: 3.27.0 transitivePeerDependencies: - '@types/node' - debug @@ -6634,37 +6657,37 @@ snapshots: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/utils': 1.7.1 - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 - lodash: 4.17.23 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 + lodash: 4.18.1 transitivePeerDependencies: - '@types/node' - debug - '@contentstack/cli-launch@1.9.6(@types/node@14.18.63)(debug@4.4.3)(tslib@2.8.1)(typescript@4.9.5)': + '@contentstack/cli-launch@1.9.7(@types/node@14.18.63)(debug@4.4.3)(tslib@2.8.1)(typescript@4.9.5)': dependencies: - '@apollo/client': 3.14.0(graphql@16.13.0) - '@contentstack/cli-command': 1.7.2(@types/node@14.18.63)(debug@4.4.3) - '@contentstack/cli-utilities': 1.17.4(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 - '@rollup/plugin-commonjs': 28.0.9(rollup@4.59.0) - '@rollup/plugin-json': 6.1.0(rollup@4.59.0) - '@rollup/plugin-node-resolve': 16.0.3(rollup@4.59.0) - '@rollup/plugin-typescript': 12.3.0(rollup@4.59.0)(tslib@2.8.1)(typescript@4.9.5) + '@apollo/client': 3.14.1(graphql@16.13.2) + '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) + '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 + '@rollup/plugin-commonjs': 28.0.9(rollup@4.60.1) + '@rollup/plugin-json': 6.1.0(rollup@4.60.1) + '@rollup/plugin-node-resolve': 16.0.3(rollup@4.60.1) + '@rollup/plugin-typescript': 12.3.0(rollup@4.60.1)(tslib@2.8.1)(typescript@4.9.5) '@types/express': 4.17.25 '@types/express-serve-static-core': 4.19.8 - adm-zip: 0.5.16 + adm-zip: 0.5.17 chalk: 4.1.2 cross-fetch: 4.1.0 dotenv: 16.6.1 express: 4.22.1 form-data: 4.0.4 - graphql: 16.13.0 + graphql: 16.13.2 ini: 3.0.1 - lodash: 4.17.23 + lodash: 4.18.1 open: 8.4.2 - rollup: 4.59.0 + rollup: 4.60.1 winston: 3.19.0 transitivePeerDependencies: - '@types/node' @@ -6683,8 +6706,8 @@ snapshots: dependencies: '@contentstack/cli-command': 1.8.0(@types/node@14.18.63)(debug@4.4.3) '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 async: 3.2.6 callsites: 3.1.0 cardinal: 2.1.1 @@ -6702,8 +6725,8 @@ snapshots: dependencies: '@contentstack/management': 1.27.6(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.0(debug@4.4.3) - '@oclif/core': 4.8.3 - axios: 1.13.6(debug@4.4.3) + '@oclif/core': 4.10.5 + axios: 1.14.0(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 cli-progress: 3.12.0 @@ -6716,7 +6739,7 @@ snapshots: inquirer-search-list: 1.2.6 js-yaml: 4.1.1 klona: 2.0.6 - lodash: 4.17.23 + lodash: 4.18.1 mkdirp: 1.0.4 open: 8.4.2 ora: 5.4.1 @@ -6737,8 +6760,8 @@ snapshots: dependencies: '@contentstack/management': 1.27.6(debug@4.4.3) '@contentstack/marketplace-sdk': 1.5.0(debug@4.4.3) - '@oclif/core': 4.8.3 - axios: 1.13.6(debug@4.4.3) + '@oclif/core': 4.10.5 + axios: 1.14.0(debug@4.4.3) chalk: 4.1.2 cli-cursor: 3.1.0 cli-progress: 3.12.0 @@ -6751,7 +6774,7 @@ snapshots: inquirer-search-list: 1.2.6 js-yaml: 4.1.1 klona: 2.0.6 - lodash: 4.17.23 + lodash: 4.18.1 mkdirp: 1.0.4 open: 8.4.2 ora: 5.4.1 @@ -6768,12 +6791,12 @@ snapshots: - '@types/node' - debug - '@contentstack/cli-variants@1.4.0(@types/node@14.18.63)(debug@4.4.3)': + '@contentstack/cli-variants@1.4.1(@types/node@14.18.63)(debug@4.4.3)': dependencies: '@contentstack/cli-utilities': 1.18.0(@types/node@14.18.63)(debug@4.4.3) - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 - lodash: 4.17.23 + '@oclif/core': 4.10.5 + '@oclif/plugin-help': 6.2.43 + lodash: 4.18.1 mkdirp: 1.0.4 winston: 3.19.0 transitivePeerDependencies: @@ -6783,7 +6806,7 @@ snapshots: '@contentstack/json-rte-serializer@2.1.0': dependencies: array-flat-polyfill: 1.0.1 - lodash: 4.17.23 + lodash: 4.18.1 lodash.clonedeep: 4.5.0 lodash.flatten: 4.4.0 lodash.isempty: 4.4.0 @@ -6799,11 +6822,11 @@ snapshots: dependencies: '@contentstack/utils': 1.7.1 assert: 2.1.0 - axios: 1.13.6(debug@4.4.3) + axios: 1.14.0(debug@4.4.3) buffer: 6.0.3 form-data: 4.0.5 husky: 9.1.7 - lodash: 4.17.23 + lodash: 4.18.1 otplib: 12.0.1 qs: 6.15.0 stream-browserify: 3.0.0 @@ -6813,7 +6836,7 @@ snapshots: '@contentstack/marketplace-sdk@1.5.0(debug@4.4.3)': dependencies: '@contentstack/utils': 1.7.1 - axios: 1.13.6(debug@4.4.3) + axios: 1.14.0(debug@4.4.3) transitivePeerDependencies: - debug @@ -6829,18 +6852,18 @@ snapshots: enabled: 2.0.0 kuler: 2.0.0 - '@emnapi/core@1.8.1': + '@emnapi/core@1.9.2': dependencies: - '@emnapi/wasi-threads': 1.1.0 + '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.8.1': + '@emnapi/runtime@1.9.2': dependencies: tslib: 2.8.1 optional: true - '@emnapi/wasi-threads@1.1.0': + '@emnapi/wasi-threads@1.2.1': dependencies: tslib: 2.8.1 optional: true @@ -6848,7 +6871,7 @@ snapshots: '@es-joy/jsdoccomment@0.50.2': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/types': 8.58.0 comment-parser: 1.4.1 esquery: 1.7.0 jsdoc-type-pratt-parser: 4.1.0 @@ -6903,7 +6926,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/eslintrc@3.3.4': + '@eslint/eslintrc@3.3.5': dependencies: ajv: 6.14.0 debug: 4.4.3(supports-color@8.1.1) @@ -6919,7 +6942,7 @@ snapshots: '@eslint/js@8.57.1': {} - '@eslint/js@9.39.3': {} + '@eslint/js@9.39.4': {} '@eslint/json@0.13.2': dependencies: @@ -6954,9 +6977,9 @@ snapshots: lodash.isundefined: 3.0.1 lodash.uniq: 4.5.0 - '@graphql-typed-document-node/core@3.2.0(graphql@16.13.0)': + '@graphql-typed-document-node/core@3.2.0(graphql@16.13.2)': dependencies: - graphql: 16.13.0 + graphql: 16.13.2 '@humanwhocodes/config-array@0.13.0': dependencies: @@ -7014,7 +7037,7 @@ snapshots: '@inquirer/figures': 1.0.15 '@inquirer/type': 2.0.0 '@types/mute-stream': 0.0.4 - '@types/node': 22.19.13 + '@types/node': 22.19.17 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 cli-width: 4.1.0 @@ -7187,8 +7210,8 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.8.1 - '@emnapi/runtime': 1.8.1 + '@emnapi/core': 1.9.2 + '@emnapi/runtime': 1.9.2 '@tybys/wasm-util': 0.10.1 optional: true @@ -7206,7 +7229,28 @@ snapshots: '@nolyfill/is-core-module@1.0.39': {} - '@oclif/core@4.8.3': + '@oclif/core@4.10.5': + dependencies: + ansi-escapes: 4.3.2 + ansis: 3.17.0 + clean-stack: 3.0.1 + cli-spinners: 2.9.2 + debug: 4.4.3(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + lilconfig: 3.1.3 + minimatch: 10.2.5 + semver: 7.7.4 + string-width: 4.2.3 + supports-color: 8.1.1 + tinyglobby: 0.2.15 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + + '@oclif/core@4.9.0': dependencies: ansi-escapes: 4.3.2 ansis: 3.17.0 @@ -7218,7 +7262,7 @@ snapshots: indent-string: 4.0.0 is-wsl: 2.2.0 lilconfig: 3.1.3 - minimatch: 10.2.4 + minimatch: 10.2.5 semver: 7.7.4 string-width: 4.2.3 supports-color: 8.1.1 @@ -7227,25 +7271,25 @@ snapshots: wordwrap: 1.0.0 wrap-ansi: 7.0.0 - '@oclif/plugin-help@6.2.37': + '@oclif/plugin-help@6.2.43': dependencies: - '@oclif/core': 4.8.3 + '@oclif/core': 4.10.5 - '@oclif/plugin-not-found@3.2.74(@types/node@14.18.63)': + '@oclif/plugin-not-found@3.2.80(@types/node@14.18.63)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@14.18.63) - '@oclif/core': 4.8.3 + '@oclif/core': 4.10.5 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-plugins@5.4.56': + '@oclif/plugin-plugins@5.4.59': dependencies: - '@oclif/core': 4.8.3 + '@oclif/core': 4.10.5 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) - npm: 10.9.4 + npm: 10.9.8 npm-package-arg: 11.0.3 npm-run-path: 5.3.0 object-treeify: 4.0.1 @@ -7256,20 +7300,20 @@ snapshots: transitivePeerDependencies: - supports-color - '@oclif/plugin-warn-if-update-available@3.1.55': + '@oclif/plugin-warn-if-update-available@3.1.60': dependencies: - '@oclif/core': 4.8.3 + '@oclif/core': 4.10.5 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) http-call: 5.3.0 - lodash: 4.17.23 + lodash: 4.18.1 registry-auth-token: 5.1.1 transitivePeerDependencies: - supports-color - '@oclif/test@4.1.16(@oclif/core@4.8.3)': + '@oclif/test@4.1.18(@oclif/core@4.10.5)': dependencies: - '@oclif/core': 4.8.3 + '@oclif/core': 4.10.5 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) transitivePeerDependencies: @@ -7313,9 +7357,9 @@ snapshots: '@pnpm/network.ca-file': 1.0.2 config-chain: 1.1.13 - '@rollup/plugin-commonjs@28.0.9(rollup@4.59.0)': + '@rollup/plugin-commonjs@28.0.9(rollup@4.60.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) commondir: 1.0.1 estree-walker: 2.0.2 fdir: 6.5.0(picomatch@4.0.4) @@ -7323,114 +7367,114 @@ snapshots: magic-string: 0.30.21 picomatch: 4.0.4 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.1 - '@rollup/plugin-json@6.1.0(rollup@4.59.0)': + '@rollup/plugin-json@6.1.0(rollup@4.60.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.1 - '@rollup/plugin-node-resolve@16.0.3(rollup@4.59.0)': + '@rollup/plugin-node-resolve@16.0.3(rollup@4.60.1)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) '@types/resolve': 1.20.2 deepmerge: 4.3.1 is-module: 1.0.0 resolve: 1.22.11 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.1 - '@rollup/plugin-typescript@12.3.0(rollup@4.59.0)(tslib@2.8.1)(typescript@4.9.5)': + '@rollup/plugin-typescript@12.3.0(rollup@4.60.1)(tslib@2.8.1)(typescript@4.9.5)': dependencies: - '@rollup/pluginutils': 5.3.0(rollup@4.59.0) + '@rollup/pluginutils': 5.3.0(rollup@4.60.1) resolve: 1.22.11 typescript: 4.9.5 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.1 tslib: 2.8.1 - '@rollup/pluginutils@5.3.0(rollup@4.59.0)': + '@rollup/pluginutils@5.3.0(rollup@4.60.1)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 picomatch: 4.0.4 optionalDependencies: - rollup: 4.59.0 + rollup: 4.60.1 - '@rollup/rollup-android-arm-eabi@4.59.0': + '@rollup/rollup-android-arm-eabi@4.60.1': optional: true - '@rollup/rollup-android-arm64@4.59.0': + '@rollup/rollup-android-arm64@4.60.1': optional: true - '@rollup/rollup-darwin-arm64@4.59.0': + '@rollup/rollup-darwin-arm64@4.60.1': optional: true - '@rollup/rollup-darwin-x64@4.59.0': + '@rollup/rollup-darwin-x64@4.60.1': optional: true - '@rollup/rollup-freebsd-arm64@4.59.0': + '@rollup/rollup-freebsd-arm64@4.60.1': optional: true - '@rollup/rollup-freebsd-x64@4.59.0': + '@rollup/rollup-freebsd-x64@4.60.1': optional: true - '@rollup/rollup-linux-arm-gnueabihf@4.59.0': + '@rollup/rollup-linux-arm-gnueabihf@4.60.1': optional: true - '@rollup/rollup-linux-arm-musleabihf@4.59.0': + '@rollup/rollup-linux-arm-musleabihf@4.60.1': optional: true - '@rollup/rollup-linux-arm64-gnu@4.59.0': + '@rollup/rollup-linux-arm64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-arm64-musl@4.59.0': + '@rollup/rollup-linux-arm64-musl@4.60.1': optional: true - '@rollup/rollup-linux-loong64-gnu@4.59.0': + '@rollup/rollup-linux-loong64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-loong64-musl@4.59.0': + '@rollup/rollup-linux-loong64-musl@4.60.1': optional: true - '@rollup/rollup-linux-ppc64-gnu@4.59.0': + '@rollup/rollup-linux-ppc64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-ppc64-musl@4.59.0': + '@rollup/rollup-linux-ppc64-musl@4.60.1': optional: true - '@rollup/rollup-linux-riscv64-gnu@4.59.0': + '@rollup/rollup-linux-riscv64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-riscv64-musl@4.59.0': + '@rollup/rollup-linux-riscv64-musl@4.60.1': optional: true - '@rollup/rollup-linux-s390x-gnu@4.59.0': + '@rollup/rollup-linux-s390x-gnu@4.60.1': optional: true - '@rollup/rollup-linux-x64-gnu@4.59.0': + '@rollup/rollup-linux-x64-gnu@4.60.1': optional: true - '@rollup/rollup-linux-x64-musl@4.59.0': + '@rollup/rollup-linux-x64-musl@4.60.1': optional: true - '@rollup/rollup-openbsd-x64@4.59.0': + '@rollup/rollup-openbsd-x64@4.60.1': optional: true - '@rollup/rollup-openharmony-arm64@4.59.0': + '@rollup/rollup-openharmony-arm64@4.60.1': optional: true - '@rollup/rollup-win32-arm64-msvc@4.59.0': + '@rollup/rollup-win32-arm64-msvc@4.60.1': optional: true - '@rollup/rollup-win32-ia32-msvc@4.59.0': + '@rollup/rollup-win32-ia32-msvc@4.60.1': optional: true - '@rollup/rollup-win32-x64-gnu@4.59.0': + '@rollup/rollup-win32-x64-gnu@4.60.1': optional: true - '@rollup/rollup-win32-x64-msvc@4.59.0': + '@rollup/rollup-win32-x64-msvc@4.60.1': optional: true '@rtsao/scc@1.1.0': {} @@ -7449,263 +7493,258 @@ snapshots: dependencies: type-detect: 4.0.8 - '@sinonjs/fake-timers@15.1.1': + '@sinonjs/fake-timers@15.3.0': dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/samsam@8.0.3': + '@sinonjs/samsam@9.0.3': dependencies: '@sinonjs/commons': 3.0.1 type-detect: 4.1.0 - '@smithy/abort-controller@4.2.10': - dependencies: - '@smithy/types': 4.13.0 - tslib: 2.8.1 - - '@smithy/chunked-blob-reader-native@4.2.2': + '@smithy/chunked-blob-reader-native@4.2.3': dependencies: - '@smithy/util-base64': 4.3.1 + '@smithy/util-base64': 4.3.2 tslib: 2.8.1 - '@smithy/chunked-blob-reader@5.2.1': + '@smithy/chunked-blob-reader@5.2.2': dependencies: tslib: 2.8.1 - '@smithy/config-resolver@4.4.9': + '@smithy/config-resolver@4.4.13': dependencies: - '@smithy/node-config-provider': 4.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-config-provider': 4.2.1 - '@smithy/util-endpoints': 3.3.1 - '@smithy/util-middleware': 4.2.10 + '@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 tslib: 2.8.1 - '@smithy/core@3.23.7': - dependencies: - '@smithy/middleware-serde': 4.2.11 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-base64': 4.3.1 - '@smithy/util-body-length-browser': 4.2.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-stream': 4.5.16 - '@smithy/util-utf8': 4.2.1 - '@smithy/uuid': 1.1.1 + '@smithy/core@3.23.13': + 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.21 + '@smithy/util-utf8': 4.2.2 + '@smithy/uuid': 1.1.2 tslib: 2.8.1 - '@smithy/credential-provider-imds@4.2.10': + '@smithy/credential-provider-imds@4.2.12': dependencies: - '@smithy/node-config-provider': 4.3.10 - '@smithy/property-provider': 4.2.10 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 + '@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.8.1 - '@smithy/eventstream-codec@4.2.10': + '@smithy/eventstream-codec@4.2.12': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.13.0 - '@smithy/util-hex-encoding': 4.2.1 + '@smithy/types': 4.13.1 + '@smithy/util-hex-encoding': 4.2.2 tslib: 2.8.1 - '@smithy/eventstream-serde-browser@4.2.10': + '@smithy/eventstream-serde-browser@4.2.12': dependencies: - '@smithy/eventstream-serde-universal': 4.2.10 - '@smithy/types': 4.13.0 + '@smithy/eventstream-serde-universal': 4.2.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/eventstream-serde-config-resolver@4.3.10': + '@smithy/eventstream-serde-config-resolver@4.3.12': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/eventstream-serde-node@4.2.10': + '@smithy/eventstream-serde-node@4.2.12': dependencies: - '@smithy/eventstream-serde-universal': 4.2.10 - '@smithy/types': 4.13.0 + '@smithy/eventstream-serde-universal': 4.2.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/eventstream-serde-universal@4.2.10': + '@smithy/eventstream-serde-universal@4.2.12': dependencies: - '@smithy/eventstream-codec': 4.2.10 - '@smithy/types': 4.13.0 + '@smithy/eventstream-codec': 4.2.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.3.12': + '@smithy/fetch-http-handler@5.3.15': dependencies: - '@smithy/protocol-http': 5.3.10 - '@smithy/querystring-builder': 4.2.10 - '@smithy/types': 4.13.0 - '@smithy/util-base64': 4.3.1 + '@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.8.1 - '@smithy/hash-blob-browser@4.2.11': + '@smithy/hash-blob-browser@4.2.13': dependencies: - '@smithy/chunked-blob-reader': 5.2.1 - '@smithy/chunked-blob-reader-native': 4.2.2 - '@smithy/types': 4.13.0 + '@smithy/chunked-blob-reader': 5.2.2 + '@smithy/chunked-blob-reader-native': 4.2.3 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/hash-node@4.2.10': + '@smithy/hash-node@4.2.12': dependencies: - '@smithy/types': 4.13.0 - '@smithy/util-buffer-from': 4.2.1 - '@smithy/util-utf8': 4.2.1 + '@smithy/types': 4.13.1 + '@smithy/util-buffer-from': 4.2.2 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/hash-stream-node@4.2.10': + '@smithy/hash-stream-node@4.2.12': dependencies: - '@smithy/types': 4.13.0 - '@smithy/util-utf8': 4.2.1 + '@smithy/types': 4.13.1 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/invalid-dependency@4.2.10': + '@smithy/invalid-dependency@4.2.12': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 - '@smithy/is-array-buffer@4.2.1': + '@smithy/is-array-buffer@4.2.2': dependencies: tslib: 2.8.1 - '@smithy/md5-js@4.2.10': + '@smithy/md5-js@4.2.12': dependencies: - '@smithy/types': 4.13.0 - '@smithy/util-utf8': 4.2.1 + '@smithy/types': 4.13.1 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/middleware-content-length@4.2.10': + '@smithy/middleware-content-length@4.2.12': dependencies: - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/middleware-endpoint@4.4.21': + '@smithy/middleware-endpoint@4.4.28': dependencies: - '@smithy/core': 3.23.7 - '@smithy/middleware-serde': 4.2.11 - '@smithy/node-config-provider': 4.3.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 - '@smithy/url-parser': 4.2.10 - '@smithy/util-middleware': 4.2.10 + '@smithy/core': 3.23.13 + '@smithy/middleware-serde': 4.2.16 + '@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 tslib: 2.8.1 - '@smithy/middleware-retry@4.4.38': + '@smithy/middleware-retry@4.4.46': dependencies: - '@smithy/node-config-provider': 4.3.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/service-error-classification': 4.2.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-retry': 4.2.10 - '@smithy/uuid': 1.1.1 + '@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.8 + '@smithy/types': 4.13.1 + '@smithy/util-middleware': 4.2.12 + '@smithy/util-retry': 4.2.13 + '@smithy/uuid': 1.1.2 tslib: 2.8.1 - '@smithy/middleware-serde@4.2.11': + '@smithy/middleware-serde@4.2.16': dependencies: - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 + '@smithy/core': 3.23.13 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/middleware-stack@4.2.10': + '@smithy/middleware-stack@4.2.12': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/node-config-provider@4.3.10': + '@smithy/node-config-provider@4.3.12': dependencies: - '@smithy/property-provider': 4.2.10 - '@smithy/shared-ini-file-loader': 4.4.5 - '@smithy/types': 4.13.0 + '@smithy/property-provider': 4.2.12 + '@smithy/shared-ini-file-loader': 4.4.7 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/node-http-handler@4.4.13': + '@smithy/node-http-handler@4.5.1': dependencies: - '@smithy/abort-controller': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/querystring-builder': 4.2.10 - '@smithy/types': 4.13.0 + '@smithy/protocol-http': 5.3.12 + '@smithy/querystring-builder': 4.2.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/property-provider@4.2.10': + '@smithy/property-provider@4.2.12': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/protocol-http@5.3.10': + '@smithy/protocol-http@5.3.12': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/querystring-builder@4.2.10': + '@smithy/querystring-builder@4.2.12': dependencies: - '@smithy/types': 4.13.0 - '@smithy/util-uri-escape': 4.2.1 + '@smithy/types': 4.13.1 + '@smithy/util-uri-escape': 4.2.2 tslib: 2.8.1 - '@smithy/querystring-parser@4.2.10': + '@smithy/querystring-parser@4.2.12': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/service-error-classification@4.2.10': + '@smithy/service-error-classification@4.2.12': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 - '@smithy/shared-ini-file-loader@4.4.5': + '@smithy/shared-ini-file-loader@4.4.7': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/signature-v4@5.3.10': + '@smithy/signature-v4@5.3.12': dependencies: - '@smithy/is-array-buffer': 4.2.1 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-hex-encoding': 4.2.1 - '@smithy/util-middleware': 4.2.10 - '@smithy/util-uri-escape': 4.2.1 - '@smithy/util-utf8': 4.2.1 + '@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 tslib: 2.8.1 - '@smithy/smithy-client@4.12.1': + '@smithy/smithy-client@4.12.8': dependencies: - '@smithy/core': 3.23.7 - '@smithy/middleware-endpoint': 4.4.21 - '@smithy/middleware-stack': 4.2.10 - '@smithy/protocol-http': 5.3.10 - '@smithy/types': 4.13.0 - '@smithy/util-stream': 4.5.16 + '@smithy/core': 3.23.13 + '@smithy/middleware-endpoint': 4.4.28 + '@smithy/middleware-stack': 4.2.12 + '@smithy/protocol-http': 5.3.12 + '@smithy/types': 4.13.1 + '@smithy/util-stream': 4.5.21 tslib: 2.8.1 - '@smithy/types@4.13.0': + '@smithy/types@4.13.1': dependencies: tslib: 2.8.1 - '@smithy/url-parser@4.2.10': + '@smithy/url-parser@4.2.12': dependencies: - '@smithy/querystring-parser': 4.2.10 - '@smithy/types': 4.13.0 + '@smithy/querystring-parser': 4.2.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/util-base64@4.3.1': + '@smithy/util-base64@4.3.2': dependencies: - '@smithy/util-buffer-from': 4.2.1 - '@smithy/util-utf8': 4.2.1 + '@smithy/util-buffer-from': 4.2.2 + '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 - '@smithy/util-body-length-browser@4.2.1': + '@smithy/util-body-length-browser@4.2.2': dependencies: tslib: 2.8.1 - '@smithy/util-body-length-node@4.2.2': + '@smithy/util-body-length-node@4.2.3': dependencies: tslib: 2.8.1 @@ -7714,65 +7753,65 @@ snapshots: '@smithy/is-array-buffer': 2.2.0 tslib: 2.8.1 - '@smithy/util-buffer-from@4.2.1': + '@smithy/util-buffer-from@4.2.2': dependencies: - '@smithy/is-array-buffer': 4.2.1 + '@smithy/is-array-buffer': 4.2.2 tslib: 2.8.1 - '@smithy/util-config-provider@4.2.1': + '@smithy/util-config-provider@4.2.2': dependencies: tslib: 2.8.1 - '@smithy/util-defaults-mode-browser@4.3.37': + '@smithy/util-defaults-mode-browser@4.3.44': dependencies: - '@smithy/property-provider': 4.2.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 + '@smithy/property-provider': 4.2.12 + '@smithy/smithy-client': 4.12.8 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/util-defaults-mode-node@4.2.40': + '@smithy/util-defaults-mode-node@4.2.48': dependencies: - '@smithy/config-resolver': 4.4.9 - '@smithy/credential-provider-imds': 4.2.10 - '@smithy/node-config-provider': 4.3.10 - '@smithy/property-provider': 4.2.10 - '@smithy/smithy-client': 4.12.1 - '@smithy/types': 4.13.0 + '@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.8 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/util-endpoints@3.3.1': + '@smithy/util-endpoints@3.3.3': dependencies: - '@smithy/node-config-provider': 4.3.10 - '@smithy/types': 4.13.0 + '@smithy/node-config-provider': 4.3.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/util-hex-encoding@4.2.1': + '@smithy/util-hex-encoding@4.2.2': dependencies: tslib: 2.8.1 - '@smithy/util-middleware@4.2.10': + '@smithy/util-middleware@4.2.12': dependencies: - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/util-retry@4.2.10': + '@smithy/util-retry@4.2.13': dependencies: - '@smithy/service-error-classification': 4.2.10 - '@smithy/types': 4.13.0 + '@smithy/service-error-classification': 4.2.12 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/util-stream@4.5.16': + '@smithy/util-stream@4.5.21': dependencies: - '@smithy/fetch-http-handler': 5.3.12 - '@smithy/node-http-handler': 4.4.13 - '@smithy/types': 4.13.0 - '@smithy/util-base64': 4.3.1 - '@smithy/util-buffer-from': 4.2.1 - '@smithy/util-hex-encoding': 4.2.1 - '@smithy/util-utf8': 4.2.1 + '@smithy/fetch-http-handler': 5.3.15 + '@smithy/node-http-handler': 4.5.1 + '@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 tslib: 2.8.1 - '@smithy/util-uri-escape@4.2.1': + '@smithy/util-uri-escape@4.2.2': dependencies: tslib: 2.8.1 @@ -7781,18 +7820,17 @@ snapshots: '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 - '@smithy/util-utf8@4.2.1': + '@smithy/util-utf8@4.2.2': dependencies: - '@smithy/util-buffer-from': 4.2.1 + '@smithy/util-buffer-from': 4.2.2 tslib: 2.8.1 - '@smithy/util-waiter@4.2.10': + '@smithy/util-waiter@4.2.14': dependencies: - '@smithy/abort-controller': 4.2.10 - '@smithy/types': 4.13.0 + '@smithy/types': 4.13.1 tslib: 2.8.1 - '@smithy/uuid@1.1.1': + '@smithy/uuid@1.1.2': dependencies: tslib: 2.8.1 @@ -7803,7 +7841,7 @@ snapshots: '@stylistic/eslint-plugin@3.1.0(eslint@8.57.1)(typescript@4.9.5)': dependencies: - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.58.0(eslint@8.57.1)(typescript@4.9.5) eslint: 8.57.1 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -7813,10 +7851,10 @@ snapshots: - supports-color - typescript - '@stylistic/eslint-plugin@5.9.0(eslint@8.57.1)': + '@stylistic/eslint-plugin@5.10.0(eslint@8.57.1)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/types': 8.58.0 eslint: 8.57.1 eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -7858,7 +7896,7 @@ snapshots: '@types/express-serve-static-core@4.19.8': dependencies: '@types/node': 14.18.63 - '@types/qs': 6.14.0 + '@types/qs': 6.15.0 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -7866,7 +7904,7 @@ snapshots: dependencies: '@types/body-parser': 1.19.6 '@types/express-serve-static-core': 4.19.8 - '@types/qs': 6.14.0 + '@types/qs': 6.15.0 '@types/serve-static': 1.15.10 '@types/glob@7.2.0': @@ -7893,7 +7931,7 @@ snapshots: '@types/minimatch@6.0.0': dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 '@types/mkdirp@1.0.2': dependencies: @@ -7909,13 +7947,13 @@ snapshots: '@types/node@14.18.63': {} - '@types/node@22.19.13': + '@types/node@22.19.17': dependencies: undici-types: 6.21.0 '@types/normalize-package-data@2.4.4': {} - '@types/qs@6.14.0': {} + '@types/qs@6.15.0': {} '@types/range-parser@1.2.7': {} @@ -7938,7 +7976,7 @@ snapshots: '@types/node': 14.18.63 '@types/send': 0.17.6 - '@types/sinon@21.0.0': + '@types/sinon@21.0.1': dependencies: '@types/sinonjs__fake-timers': 15.0.1 @@ -7974,18 +8012,18 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/eslint-plugin@8.58.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/type-utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/parser': 8.58.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/type-utils': 8.58.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/utils': 8.58.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.58.0 eslint: 8.57.1 ignore: 7.0.5 natural-compare: 1.4.0 - ts-api-utils: 2.4.0(typescript@4.9.5) + ts-api-utils: 2.5.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -8003,22 +8041,22 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@4.9.5)': dependencies: - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@4.9.5) + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 typescript: 4.9.5 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.56.1(typescript@4.9.5)': + '@typescript-eslint/project-service@8.58.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@4.9.5) - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@4.9.5) + '@typescript-eslint/types': 8.58.0 debug: 4.4.3(supports-color@8.1.1) typescript: 4.9.5 transitivePeerDependencies: @@ -8034,12 +8072,12 @@ snapshots: '@typescript-eslint/types': 7.18.0 '@typescript-eslint/visitor-keys': 7.18.0 - '@typescript-eslint/scope-manager@8.56.1': + '@typescript-eslint/scope-manager@8.58.0': dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 - '@typescript-eslint/tsconfig-utils@8.56.1(typescript@4.9.5)': + '@typescript-eslint/tsconfig-utils@8.58.0(typescript@4.9.5)': dependencies: typescript: 4.9.5 @@ -8055,14 +8093,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.56.1(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/type-utils@8.58.0(eslint@8.57.1)(typescript@4.9.5)': dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@4.9.5) + '@typescript-eslint/utils': 8.58.0(eslint@8.57.1)(typescript@4.9.5) debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 - ts-api-utils: 2.4.0(typescript@4.9.5) + ts-api-utils: 2.5.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -8071,7 +8109,7 @@ snapshots: '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/types@8.56.1': {} + '@typescript-eslint/types@8.58.0': {} '@typescript-eslint/typescript-estree@6.21.0(typescript@4.9.5)': dependencies: @@ -8103,17 +8141,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.56.1(typescript@4.9.5)': + '@typescript-eslint/typescript-estree@8.58.0(typescript@4.9.5)': dependencies: - '@typescript-eslint/project-service': 8.56.1(typescript@4.9.5) - '@typescript-eslint/tsconfig-utils': 8.56.1(typescript@4.9.5) - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/visitor-keys': 8.56.1 + '@typescript-eslint/project-service': 8.58.0(typescript@4.9.5) + '@typescript-eslint/tsconfig-utils': 8.58.0(typescript@4.9.5) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/visitor-keys': 8.58.0 debug: 4.4.3(supports-color@8.1.1) - minimatch: 10.2.4 + minimatch: 10.2.5 semver: 7.7.4 tinyglobby: 0.2.15 - ts-api-utils: 2.4.0(typescript@4.9.5) + ts-api-utils: 2.5.0(typescript@4.9.5) typescript: 4.9.5 transitivePeerDependencies: - supports-color @@ -8143,12 +8181,12 @@ snapshots: - supports-color - typescript - '@typescript-eslint/utils@8.56.1(eslint@8.57.1)(typescript@4.9.5)': + '@typescript-eslint/utils@8.58.0(eslint@8.57.1)(typescript@4.9.5)': dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - '@typescript-eslint/scope-manager': 8.56.1 - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) + '@typescript-eslint/scope-manager': 8.58.0 + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/typescript-estree': 8.58.0(typescript@4.9.5) eslint: 8.57.1 typescript: 4.9.5 transitivePeerDependencies: @@ -8164,9 +8202,9 @@ snapshots: '@typescript-eslint/types': 7.18.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@8.56.1': + '@typescript-eslint/visitor-keys@8.58.0': dependencies: - '@typescript-eslint/types': 8.56.1 + '@typescript-eslint/types': 8.58.0 eslint-visitor-keys: 5.0.1 '@ungap/structured-clone@1.3.0': {} @@ -8273,7 +8311,7 @@ snapshots: acorn@8.16.0: {} - adm-zip@0.5.16: {} + adm-zip@0.5.17: {} agent-base@6.0.2: dependencies: @@ -8439,7 +8477,7 @@ snapshots: async@2.6.4: dependencies: - lodash: 4.17.23 + lodash: 4.18.1 async@3.2.3: {} @@ -8453,11 +8491,11 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.13.6(debug@4.4.3): + axios@1.14.0(debug@4.4.3): dependencies: follow-redirects: 1.15.11(debug@4.4.3) form-data: 4.0.5 - proxy-from-env: 1.1.0 + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug @@ -8465,7 +8503,7 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.10.0: {} + baseline-browser-mapping@2.10.15: {} big-json@3.2.0: dependencies: @@ -8521,13 +8559,13 @@ snapshots: browser-stdout@1.3.1: {} - browserslist@4.28.1: + browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.0 - caniuse-lite: 1.0.30001776 - electron-to-chromium: 1.5.307 - node-releases: 2.0.36 - update-browserslist-db: 1.2.3(browserslist@4.28.1) + baseline-browser-mapping: 2.10.15 + caniuse-lite: 1.0.30001786 + electron-to-chromium: 1.5.331 + node-releases: 2.0.37 + update-browserslist-db: 1.2.3(browserslist@4.28.2) buffer-from@1.1.2: {} @@ -8596,7 +8634,7 @@ snapshots: camelcase@6.3.0: {} - caniuse-lite@1.0.30001776: {} + caniuse-lite@1.0.30001786: {} capital-case@1.0.4: dependencies: @@ -8821,7 +8859,7 @@ snapshots: content-type@1.0.5: {} - contentstack@3.26.4: + contentstack@3.27.0: dependencies: '@contentstack/utils': 1.7.1 es6-promise: 4.2.8 @@ -8836,9 +8874,9 @@ snapshots: cookie@0.7.2: {} - core-js-compat@3.48.0: + core-js-compat@3.49.0: dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 core-util-is@1.0.3: {} @@ -8981,7 +9019,7 @@ snapshots: diff@5.2.2: {} - diff@8.0.3: {} + diff@8.0.4: {} dir-glob@3.0.1: dependencies: @@ -9024,7 +9062,7 @@ snapshots: dependencies: jake: 10.9.4 - electron-to-chromium@1.5.307: {} + electron-to-chromium@1.5.331: {} elegant-spinner@1.0.1: {} @@ -9036,10 +9074,10 @@ snapshots: encodeurl@2.0.0: {} - enhanced-resolve@5.20.0: + enhanced-resolve@5.20.1: dependencies: graceful-fs: 4.2.11 - tapable: 2.3.0 + tapable: 2.3.2 entities@6.0.1: {} @@ -9162,7 +9200,7 @@ snapshots: '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5) eslint-config-xo-space: 0.35.0(eslint@8.57.1) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-mocha: 10.5.0(eslint@8.57.1) eslint-plugin-n: 15.7.0(eslint@8.57.1) eslint-plugin-perfectionist: 2.11.0(eslint@8.57.1)(typescript@4.9.5) @@ -9186,25 +9224,25 @@ snapshots: transitivePeerDependencies: - eslint - eslint-config-oclif@6.0.146(eslint@8.57.1)(typescript@4.9.5): + eslint-config-oclif@6.0.156(eslint@8.57.1)(typescript@4.9.5): dependencies: '@eslint/compat': 1.4.1(eslint@8.57.1) - '@eslint/eslintrc': 3.3.4 - '@eslint/js': 9.39.3 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 '@stylistic/eslint-plugin': 3.1.0(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/parser': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.58.0(eslint@8.57.1)(typescript@4.9.5) eslint-config-oclif: 5.2.2(eslint@8.57.1) eslint-config-xo: 0.49.0(eslint@8.57.1) eslint-config-xo-space: 0.35.0(eslint@8.57.1) eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) eslint-plugin-jsdoc: 50.8.0(eslint@8.57.1) eslint-plugin-mocha: 10.5.0(eslint@8.57.1) eslint-plugin-n: 17.24.0(eslint@8.57.1)(typescript@4.9.5) eslint-plugin-perfectionist: 4.15.1(eslint@8.57.1)(typescript@4.9.5) eslint-plugin-unicorn: 56.0.1(eslint@8.57.1) - typescript-eslint: 8.56.1(eslint@8.57.1)(typescript@4.9.5) + typescript-eslint: 8.58.0(eslint@8.57.1)(typescript@4.9.5) transitivePeerDependencies: - eslint - eslint-import-resolver-webpack @@ -9226,16 +9264,16 @@ snapshots: dependencies: '@eslint/css': 0.10.0 '@eslint/json': 0.13.2 - '@stylistic/eslint-plugin': 5.9.0(eslint@8.57.1) + '@stylistic/eslint-plugin': 5.10.0(eslint@8.57.1) confusing-browser-globals: 1.0.11 eslint: 8.57.1 globals: 16.5.0 - eslint-import-resolver-node@0.3.9: + eslint-import-resolver-node@0.3.10: dependencies: debug: 3.2.7 is-core-module: 2.16.1 - resolve: 1.22.11 + resolve: 2.0.0-next.6 transitivePeerDependencies: - supports-color @@ -9244,34 +9282,34 @@ snapshots: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3(supports-color@8.1.1) eslint: 8.57.1 - get-tsconfig: 4.13.6 + get-tsconfig: 4.13.7 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.15 unrs-resolver: 1.11.1 optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-plugin-import: 2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 6.21.0(eslint@8.57.1)(typescript@4.9.5) eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-module-utils@2.12.1(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.58.0(eslint@8.57.1)(typescript@4.9.5) eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-node: 0.3.10 eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1) transitivePeerDependencies: - supports-color @@ -9289,7 +9327,7 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9299,8 +9337,8 @@ snapshots: debug: 3.2.7 doctrine: 2.1.0 eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -9318,7 +9356,7 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1): dependencies: '@rtsao/scc': 1.1.0 array-includes: 3.1.9 @@ -9328,8 +9366,8 @@ snapshots: debug: 3.2.7 doctrine: 2.1.0 eslint: 8.57.1 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) + eslint-import-resolver-node: 0.3.10 + eslint-module-utils: 2.12.1(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@4.9.5))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@6.21.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1) hasown: 2.0.2 is-core-module: 2.16.1 is-glob: 4.0.3 @@ -9341,7 +9379,7 @@ snapshots: string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.58.0(eslint@8.57.1)(typescript@4.9.5) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -9385,10 +9423,10 @@ snapshots: eslint-plugin-n@17.24.0(eslint@8.57.1)(typescript@4.9.5): dependencies: '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) - enhanced-resolve: 5.20.0 + enhanced-resolve: 5.20.1 eslint: 8.57.1 eslint-plugin-es-x: 7.8.0(eslint@8.57.1) - get-tsconfig: 4.13.6 + get-tsconfig: 4.13.7 globals: 15.15.0 globrex: 0.1.2 ignore: 5.3.2 @@ -9409,8 +9447,8 @@ snapshots: eslint-plugin-perfectionist@4.15.1(eslint@8.57.1)(typescript@4.9.5): dependencies: - '@typescript-eslint/types': 8.56.1 - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/types': 8.58.0 + '@typescript-eslint/utils': 8.58.0(eslint@8.57.1)(typescript@4.9.5) eslint: 8.57.1 natural-orderby: 5.0.0 transitivePeerDependencies: @@ -9428,7 +9466,7 @@ snapshots: indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.1.0 - lodash: 4.17.23 + lodash: 4.18.1 pluralize: 8.0.0 read-pkg-up: 7.0.1 regexp-tree: 0.1.27 @@ -9442,7 +9480,7 @@ snapshots: '@eslint-community/eslint-utils': 4.9.1(eslint@8.57.1) ci-info: 4.4.0 clean-regexp: 1.0.0 - core-js-compat: 3.48.0 + core-js-compat: 3.49.0 eslint: 8.57.1 esquery: 1.7.0 globals: 15.15.0 @@ -9586,7 +9624,7 @@ snapshots: methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.12 + path-to-regexp: 0.1.13 proxy-addr: 2.0.7 qs: 6.14.2 range-parser: 1.2.1 @@ -9614,8 +9652,8 @@ snapshots: '@types/chai': 4.3.20 '@types/lodash': 4.17.24 '@types/node': 14.18.63 - '@types/sinon': 21.0.0 - lodash: 4.17.23 + '@types/sinon': 21.0.1 + lodash: 4.18.1 mock-stdin: 1.0.0 nock: 13.5.6 stdout-stderr: 0.1.13 @@ -9647,12 +9685,15 @@ snapshots: fast-uri@3.1.0: {} - fast-xml-builder@1.0.0: {} + fast-xml-builder@1.1.4: + dependencies: + path-expression-matcher: 1.2.1 - fast-xml-parser@5.4.1: + fast-xml-parser@5.5.8: dependencies: - fast-xml-builder: 1.0.0 - strnum: 2.2.0 + fast-xml-builder: 1.1.4 + path-expression-matcher: 1.2.1 + strnum: 2.2.2 fastest-levenshtein@1.0.16: {} @@ -9731,13 +9772,13 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.3.4 + flatted: 3.4.2 keyv: 4.5.4 rimraf: 3.0.2 flat@5.0.2: {} - flatted@3.3.4: {} + flatted@3.4.2: {} fn.name@1.1.0: {} @@ -9858,7 +9899,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.13.6: + get-tsconfig@4.13.7: dependencies: resolve-pkg-maps: 1.0.0 @@ -9885,7 +9926,7 @@ snapshots: glob@13.0.6: dependencies: - minimatch: 10.2.4 + minimatch: 10.2.5 minipass: 7.1.3 path-scurry: 2.0.2 @@ -9967,12 +10008,12 @@ snapshots: graphemer@1.4.0: {} - graphql-tag@2.12.6(graphql@16.13.0): + graphql-tag@2.12.6(graphql@16.13.2): dependencies: - graphql: 16.13.0 + graphql: 16.13.2 tslib: 2.8.1 - graphql@16.13.0: {} + graphql@16.13.2: {} has-ansi@2.0.0: dependencies: @@ -10123,7 +10164,7 @@ snapshots: cli-cursor: 3.1.0 figures: 3.2.0 inquirer: 8.2.7(@types/node@14.18.63) - lodash: 4.17.23 + lodash: 4.18.1 rxjs: 6.6.7 inquirer-search-checkbox@1.0.0: @@ -10148,7 +10189,7 @@ snapshots: cli-width: 2.2.1 external-editor: 2.2.0 figures: 2.0.0 - lodash: 4.17.23 + lodash: 4.18.1 mute-stream: 0.0.7 run-async: 2.4.1 rx-lite: 4.0.8 @@ -10165,7 +10206,7 @@ snapshots: cli-cursor: 3.1.0 cli-width: 3.0.0 figures: 3.2.0 - lodash: 4.17.23 + lodash: 4.18.1 mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 @@ -10478,7 +10519,7 @@ snapshots: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 11.0.0 - ws: 8.19.0 + ws: 8.20.0 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -10633,6 +10674,8 @@ snapshots: lodash@4.17.23: {} + lodash@4.18.1: {} + log-symbols@1.0.2: dependencies: chalk: 1.1.3 @@ -10673,7 +10716,7 @@ snapshots: lru-cache@10.4.3: {} - lru-cache@11.2.6: {} + lru-cache@11.3.0: {} lru-cache@5.1.1: dependencies: @@ -10736,7 +10779,7 @@ snapshots: min-indent@1.0.1: {} - minimatch@10.2.4: + minimatch@10.2.5: dependencies: brace-expansion: 5.0.5 @@ -10830,6 +10873,13 @@ snapshots: transitivePeerDependencies: - supports-color + node-exports-info@1.6.0: + dependencies: + array.prototype.flatmap: 1.3.3 + es-errors: 1.3.0 + object.entries: 1.1.9 + semver: 6.3.1 + node-fetch@2.7.0: dependencies: whatwg-url: 5.0.0 @@ -10840,7 +10890,7 @@ snapshots: dependencies: process-on-spawn: 1.1.0 - node-releases@2.0.36: {} + node-releases@2.0.37: {} normalize-package-data@2.5.0: dependencies: @@ -10874,7 +10924,7 @@ snapshots: dependencies: path-key: 4.0.0 - npm@10.9.4: {} + npm@10.9.8: {} number-is-nan@1.0.1: {} @@ -10934,6 +10984,13 @@ snapshots: has-symbols: 1.1.0 object-keys: 1.1.1 + object.entries@1.1.9: + dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 + define-properties: 1.2.1 + es-object-atoms: 1.1.1 + object.fromentries@2.0.8: dependencies: call-bind: 1.0.8 @@ -10954,17 +11011,17 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.1.1 - oclif@4.22.81(@types/node@14.18.63): + oclif@4.22.96(@types/node@14.18.63): dependencies: - '@aws-sdk/client-cloudfront': 3.1001.0 - '@aws-sdk/client-s3': 3.1001.0 + '@aws-sdk/client-cloudfront': 3.1009.0 + '@aws-sdk/client-s3': 3.1014.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.8.3 - '@oclif/plugin-help': 6.2.37 - '@oclif/plugin-not-found': 3.2.74(@types/node@14.18.63) - '@oclif/plugin-warn-if-update-available': 3.1.55 + '@oclif/core': 4.9.0 + '@oclif/plugin-help': 6.2.43 + '@oclif/plugin-not-found': 3.2.80(@types/node@14.18.63) + '@oclif/plugin-warn-if-update-available': 3.1.60 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -10974,7 +11031,7 @@ snapshots: fs-extra: 8.1.0 github-slugger: 2.0.0 got: 13.0.0 - lodash: 4.17.23 + lodash: 4.18.1 normalize-package-data: 6.0.2 semver: 7.7.4 sort-package-json: 2.15.1 @@ -11147,6 +11204,8 @@ snapshots: path-exists@4.0.0: {} + path-expression-matcher@1.2.1: {} + path-is-absolute@1.0.1: {} path-key@3.1.1: {} @@ -11162,10 +11221,10 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.2.6 + lru-cache: 11.3.0 minipass: 7.1.3 - path-to-regexp@0.1.12: {} + path-to-regexp@0.1.13: {} path-type@4.0.0: {} @@ -11185,7 +11244,7 @@ snapshots: pluralize@8.0.0: {} - pnpm@10.30.3: {} + pnpm@10.33.0: {} possible-typed-array-names@1.1.0: {} @@ -11229,7 +11288,7 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} psl@1.15.0: dependencies: @@ -11388,6 +11447,15 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + resolve@2.0.0-next.6: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.1 + node-exports-info: 1.6.0 + object-keys: 1.1.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + responselike@3.0.0: dependencies: lowercase-keys: 3.0.0 @@ -11421,35 +11489,35 @@ snapshots: glob: 13.0.6 package-json-from-dist: 1.0.1 - rollup@4.59.0: + rollup@4.60.1: dependencies: '@types/estree': 1.0.8 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.60.1 + '@rollup/rollup-android-arm64': 4.60.1 + '@rollup/rollup-darwin-arm64': 4.60.1 + '@rollup/rollup-darwin-x64': 4.60.1 + '@rollup/rollup-freebsd-arm64': 4.60.1 + '@rollup/rollup-freebsd-x64': 4.60.1 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.1 + '@rollup/rollup-linux-arm-musleabihf': 4.60.1 + '@rollup/rollup-linux-arm64-gnu': 4.60.1 + '@rollup/rollup-linux-arm64-musl': 4.60.1 + '@rollup/rollup-linux-loong64-gnu': 4.60.1 + '@rollup/rollup-linux-loong64-musl': 4.60.1 + '@rollup/rollup-linux-ppc64-gnu': 4.60.1 + '@rollup/rollup-linux-ppc64-musl': 4.60.1 + '@rollup/rollup-linux-riscv64-gnu': 4.60.1 + '@rollup/rollup-linux-riscv64-musl': 4.60.1 + '@rollup/rollup-linux-s390x-gnu': 4.60.1 + '@rollup/rollup-linux-x64-gnu': 4.60.1 + '@rollup/rollup-linux-x64-musl': 4.60.1 + '@rollup/rollup-openbsd-x64': 4.60.1 + '@rollup/rollup-openharmony-arm64': 4.60.1 + '@rollup/rollup-win32-arm64-msvc': 4.60.1 + '@rollup/rollup-win32-ia32-msvc': 4.60.1 + '@rollup/rollup-win32-x64-gnu': 4.60.1 + '@rollup/rollup-win32-x64-msvc': 4.60.1 fsevents: 2.3.3 run-async@2.4.1: {} @@ -11620,12 +11688,12 @@ snapshots: signal-exit@4.1.0: {} - sinon@21.0.1: + sinon@21.0.3: dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers': 15.1.1 - '@sinonjs/samsam': 8.0.3 - diff: 8.0.3 + '@sinonjs/fake-timers': 15.3.0 + '@sinonjs/samsam': 9.0.3 + diff: 8.0.4 supports-color: 7.2.0 slash@3.0.0: {} @@ -11815,7 +11883,7 @@ snapshots: strip-json-comments@3.1.1: {} - strnum@2.2.0: {} + strnum@2.2.2: {} supports-color@2.0.0: {} @@ -11839,7 +11907,7 @@ snapshots: symbol-tree@3.2.4: {} - tapable@2.3.0: {} + tapable@2.3.2: {} tar@7.5.13: dependencies: @@ -11919,7 +11987,7 @@ snapshots: dependencies: typescript: 4.9.5 - ts-api-utils@2.4.0(typescript@4.9.5): + ts-api-utils@2.5.0(typescript@4.9.5): dependencies: typescript: 4.9.5 @@ -12055,12 +12123,12 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.56.1(eslint@8.57.1)(typescript@4.9.5): + typescript-eslint@8.58.0(eslint@8.57.1)(typescript@4.9.5): dependencies: - '@typescript-eslint/eslint-plugin': 8.56.1(@typescript-eslint/parser@8.56.1(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/parser': 8.56.1(eslint@8.57.1)(typescript@4.9.5) - '@typescript-eslint/typescript-estree': 8.56.1(typescript@4.9.5) - '@typescript-eslint/utils': 8.56.1(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/eslint-plugin': 8.58.0(@typescript-eslint/parser@8.58.0(eslint@8.57.1)(typescript@4.9.5))(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/parser': 8.58.0(eslint@8.57.1)(typescript@4.9.5) + '@typescript-eslint/typescript-estree': 8.58.0(typescript@4.9.5) + '@typescript-eslint/utils': 8.58.0(eslint@8.57.1)(typescript@4.9.5) eslint: 8.57.1 typescript: 4.9.5 transitivePeerDependencies: @@ -12113,9 +12181,9 @@ snapshots: '@unrs/resolver-binding-win32-ia32-msvc': 1.11.1 '@unrs/resolver-binding-win32-x64-msvc': 1.11.1 - update-browserslist-db@1.2.3(browserslist@4.28.1): + update-browserslist-db@1.2.3(browserslist@4.28.2): dependencies: - browserslist: 4.28.1 + browserslist: 4.28.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -12315,7 +12383,7 @@ snapshots: signal-exit: 3.0.7 typedarray-to-buffer: 3.1.5 - ws@8.19.0: {} + ws@8.20.0: {} xdg-basedir@4.0.0: {}